"RIPEMD-128"의 두 판 사이의 차이
fshiel8165 (토론 | 기여) (→a. 메시지의 단어 순서) |
fshiel8165 (토론 | 기여) (→a. 메시지의 단어 순서) |
||
87번째 줄: | 87번째 줄: | ||
!align=center|라운드 4 | !align=center|라운드 4 | ||
|- | |- | ||
− | + | |align=center|왼쪽 | |
− | + | |align=center|<math>i</math> | |
− | + | |align=center|<math>\rho</math> | |
− | + | |align=center|<math>\rho^2</math> | |
− | + | |align=center|<math>\rho^3</math> | |
|- | |- | ||
!오른쪽 | !오른쪽 |
2019년 7월 3일 (수) 13:39 판
목차
등장배경
1996년, 기존의 RIPEMD에서 발견된 보안적 취약점에 대응해 벨기에의 루벤에 위치한 Katholieke UniversitLeuven의 COSIC연구 그룹의 Hans Dobbertin, Antoon Bosselaers, Bart Preenel이 만든 보안 강화 버전중 하나로, 기존의 RIPEMD의 대체품으로 도입되었다.
문제점
오리지널 RIPEMD의 드롭 인 대체품으로 의심스러운 보안이 존재한다는 것으로 판명할 수 있다.
특징
- 출력비트 수 : 128
- 내부상태 크기 : 128
- 블록 크기 : 512
- 길이 크기 : 64
- 문자열 크기 : 32
알고리즘
임의의 입력 메시지에 대해 해시 함수는 128비트 해시 값, 즉 메시지 요약을 생성한다. 이 알고리즘은 MD4 해싱 알고리즘을 기반으로 한다. MD4 해싱은 비선형 부울 함수의 사용을 포함하는 48개의 연산으로 구성되며, 각 연산은 3회 반복된다. RIPEMD-128의 알고리즘은 라운드 수를 4로 증가시킨다. 또한 다른 부울 함수와 상수 값이 사용된다. 알고리즘은 병렬로 두 줄(스트림)으로 실행되며, 일반적으로 왼쪽과 오른쪽으로 나뉜다. 알고리즘은 몇 가지 기본 단계로 구성된다.
1. 누락 된 비트 추가
알고리즘은 512 비트 길이의 데이터 블록으로 작동하며 입력 메시지는 필요한 크기로 미리 전달된다. 우선, 메시지의 초기 길이에 관계없이, 1비트가 추가되고, 수신 된 시퀀스의 길이가 모듈로 512가 되는 448비트가 될 때까지 비트0이 추가된다. 512비트까지 확장하면 수정 된 메시지의 길이는 64비트가 된다. 이 단계에서 1~512비트가 추가 될 수 있다.
2. 메시지 길이 추가하기
다음 단계에서는 원래 메시지의 길이가 64 비트 표현으로 (첫 번째 단계를 적용하기 전에) 448 비트의 수신 메시지에 추가된다. 초기 메시지의 길이가 2⁶⁴비트를 초과하는 경우, 하위 64비트만이 비트 길이로 사용된다. 또한 원본 메시지의 길이는 두 개의 32비트 단어 형식으로 추가된다. 먼저 낮은 32비트가 추가 된 다음 높은 비트가 추가된다. 이 단계가 끝나면 수정 된 메시지의 길이는 512비트가 된다. 16비트, 32비트 워드 형식으로도 표현 할 수가 있다.
3. 함수및 상수 정의
a. 메시지의 단어 순서
메시지에서 32비트 워드의 순서를 결정하기 위해 각 라운드에서 다양한 순열 함수 조합이 사용된다.
- 함수 정의 ρ:
i 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ρ(i) 7 14 13 1 10 6 15 3 12 0 9 5 2 14 11 8
- 함수 정의 : π
π(i) = 9i + 5(mod16)
각 라운드에서 순서는 다음과 같이 결정된다.
선 라운드 1 라운드 2 라운드 3 라운드 4 왼쪽 오른쪽
|