RIPEMD-128 편집하기
최신판 | 당신의 편집 | ||
1번째 줄: | 1번째 줄: | ||
− | + | == 등장배경 == | |
− | + | 1996년, 기존의 RIPEMD에서 발견된 보안적 취약점에 대응해 벨기에의 루벤에 위치한 Katholieke UniversitLeuven의 COSIC연구 그룹의 Hans Dobbertin, Antoon Bosselaers, Bart Preenel이 만든 보안 강화 버전중 하나로, 기존의 [[RIPEMD]]의 대체품으로 도입되었다. | |
− | + | ||
+ | == 문제점 == | ||
+ | |||
+ | 오리지널 [[RIPEMD]]의 드롭 인 대체품으로 의심스러운 보안이 존재한다는 것으로 판명되었다. | ||
== 특징 == | == 특징 == | ||
16번째 줄: | 19번째 줄: | ||
임의의 입력 메시지에 대해 해시 함수는 128비트 해시 값, 즉 메시지 요약을 생성한다. 이 알고리즘은 [[MD4]] 해싱 알고리즘을 기반으로 한다. MD4 해싱은 비선형 부울 함수의 사용을 포함하는 48개의 연산으로 구성되며, 각 연산은 3회 반복된다. RIPEMD-128의 알고리즘은 라운드 수를 4로 증가시킨다. 또한 다른 부울 함수와 상수 값이 사용된다. 알고리즘은 병렬로 두 줄(스트림)으로 실행되며, 일반적으로 왼쪽과 오른쪽으로 나뉜다. 알고리즘은 몇 가지 기본 단계로 구성된다. | 임의의 입력 메시지에 대해 해시 함수는 128비트 해시 값, 즉 메시지 요약을 생성한다. 이 알고리즘은 [[MD4]] 해싱 알고리즘을 기반으로 한다. MD4 해싱은 비선형 부울 함수의 사용을 포함하는 48개의 연산으로 구성되며, 각 연산은 3회 반복된다. RIPEMD-128의 알고리즘은 라운드 수를 4로 증가시킨다. 또한 다른 부울 함수와 상수 값이 사용된다. 알고리즘은 병렬로 두 줄(스트림)으로 실행되며, 일반적으로 왼쪽과 오른쪽으로 나뉜다. 알고리즘은 몇 가지 기본 단계로 구성된다. | ||
− | ===누락 된 비트 추가=== | + | === 1. 누락 된 비트 추가 === |
+ | |||
알고리즘은 512 비트 길이의 데이터 블록으로 작동하며 입력 메시지는 필요한 크기로 미리 전달된다. 우선, 메시지의 초기 길이에 관계없이, 1비트가 추가되고, 수신 된 시퀀스의 길이가 모듈로 512가 되는 448비트가 될 때까지 비트0이 추가된다. 512비트까지 확장하면 수정 된 메시지의 길이는 64비트가 된다. 이 단계에서 1~512비트가 추가 될 수 있다. | 알고리즘은 512 비트 길이의 데이터 블록으로 작동하며 입력 메시지는 필요한 크기로 미리 전달된다. 우선, 메시지의 초기 길이에 관계없이, 1비트가 추가되고, 수신 된 시퀀스의 길이가 모듈로 512가 되는 448비트가 될 때까지 비트0이 추가된다. 512비트까지 확장하면 수정 된 메시지의 길이는 64비트가 된다. 이 단계에서 1~512비트가 추가 될 수 있다. | ||
− | ===메시지 길이 추가하기=== | + | === 2. 메시지 길이 추가하기 === |
+ | |||
다음 단계에서는 원래 메시지의 길이가 64 비트 표현으로 (첫 번째 단계를 적용하기 전에) 448 비트의 수신 메시지에 추가된다. 초기 메시지의 길이가 2⁶⁴비트를 초과하는 경우, 하위 64비트만이 비트 길이로 사용된다. 또한 원본 메시지의 길이는 두 개의 32비트 단어 형식으로 추가된다. 먼저 낮은 32비트가 추가 된 다음 높은 비트가 추가된다. 이 단계가 끝나면 수정 된 메시지의 길이는 512비트가 된다. 16비트, 32비트 워드 형식으로도 표현 할 수가 있다. | 다음 단계에서는 원래 메시지의 길이가 64 비트 표현으로 (첫 번째 단계를 적용하기 전에) 448 비트의 수신 메시지에 추가된다. 초기 메시지의 길이가 2⁶⁴비트를 초과하는 경우, 하위 64비트만이 비트 길이로 사용된다. 또한 원본 메시지의 길이는 두 개의 32비트 단어 형식으로 추가된다. 먼저 낮은 32비트가 추가 된 다음 높은 비트가 추가된다. 이 단계가 끝나면 수정 된 메시지의 길이는 512비트가 된다. 16비트, 32비트 워드 형식으로도 표현 할 수가 있다. | ||
− | ===함수및 상수 정의=== | + | === 3. 함수및 상수 정의 === |
− | ==== 메시지의 단어 순서 ==== | + | |
+ | ==== a. 메시지의 단어 순서 ==== | ||
메시지에서 32비트 워드의 순서를 결정하기 위해 각 라운드에서 다양한 순열 함수 조합이 사용된다. | 메시지에서 32비트 워드의 순서를 결정하기 위해 각 라운드에서 다양한 순열 함수 조합이 사용된다. | ||
94번째 줄: | 100번째 줄: | ||
|} | |} | ||
− | ==== 부울 함수 ==== | + | ==== b.부울 함수 ==== |
각 라운드에서 특정 부울 함수가 각 행에 적용된다. | 각 라운드에서 특정 부울 함수가 각 행에 적용된다. | ||
150번째 줄: | 156번째 줄: | ||
|} | |} | ||
− | ===해싱 실행 === | + | === 4.해싱 실행 === |
모든 소스 함수 및 상수를 설정하고 메시지를 필요한 크기로 줄이면 알고리즘 샐행으로 진행할 수 있다. 이 알고리즘은 두 개의 병렬 경로(선)를 따라 실행된다. 메시지 처리는 32비트의 16단어로 이루어진다. | 모든 소스 함수 및 상수를 설정하고 메시지를 필요한 크기로 줄이면 알고리즘 샐행으로 진행할 수 있다. 이 알고리즘은 두 개의 병렬 경로(선)를 따라 실행된다. 메시지 처리는 32비트의 16단어로 이루어진다. | ||
158번째 줄: | 164번째 줄: | ||
<math>{\displaystyle A:=(A+f(B,C,D)+X+K)^{<<s}}</math> | <math>{\displaystyle A:=(A+f(B,C,D)+X+K)^{<<s}}</math> | ||
− | 여기서는 위치의 순환 시프트를 나타낸다.<math>{\displaystyle ^{<<s}}</math><ref>위키피디아, [https://ru.wikipedia.org/wiki/RIPEMD-128#cite_note-Cryptanalysis_of_Full_RIPEMD-128-1 RIPEMD-128]</ref> | + | 여기서는 위치의 순환 시프트를 나타낸다.<math>{\displaystyle ^{<<s}}</math><ref>위키피디아, [https://ru.wikipedia.org/wiki/RIPEMD-128#cite_note-Cryptanalysis_of_Full_RIPEMD-128-1 RIPEMD-128], 2019-02-06</ref> |
{{각주}} | {{각주}} | ||
164번째 줄: | 170번째 줄: | ||
== 참고 자료 == | == 참고 자료 == | ||
− | * | + | * 〈[https://ru.wikipedia.org/wiki/RIPEMD-128#cite_note-Cryptanalysis_of_Full_RIPEMD-128-1]〉, 《위키피디아》 |
== 같이 보기 == | == 같이 보기 == | ||
+ | |||
* [[RIPEMD]] | * [[RIPEMD]] | ||
− | {{ | + | {{알고리즘|토막글}} |