RIPEMD-160 편집하기
편집을 되돌릴 수 있습니다.
이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 저장해주세요.
최신판 | 당신의 편집 | ||
1번째 줄: | 1번째 줄: | ||
− | '''RIPEMD-160'''은 | + | '''RIPEMD-160'''은 머클-담골(Merkle-Damgård) 구축을 기반으로 하는 암호화 [[해시함수]]로, 주로 [[비트코인]] 표준에서 사용된다. 128비트 해시 다이제스트를 생성하는 [[RIPEMD]] 알고리즘의 강화 버전으로, RIPEMD-160 알고리즘은 160비트 출력을 생성한다. 다른 [[RIPEMD]] 버전과는 다르게, 어떤 [[특허]]에도 제약을 받지 않는 것으로 알려져 있다.<ref name="RIPEMD160">비트코인위키, 〈[https://en.bitcoin.it/wiki/RIPEMD-160 RIPEMD-160]〉, 《비트코인위키》, 2014-06-30</ref> |
== 개요 == | == 개요 == | ||
RIPEMD-160의 개발은 유럽의 RIPE(RACE Integrity Primitives Evaluation) 프로젝트 주관 하에 [[MD4]]와 [[MD5]]의 취약점을 분석했던 연구 그룹이 주도하였다. 이때 128비트의 [[RIPEMD]]을 개발했다. 그러나 1996년 [[뢰벤카톨릭대학교]](Katholieke Universiteit Leuven) 코식(COSIC)연구 그룹의 [[한스 도버틴]](Hans Dobbertin)은 [[RIPEMD-128]]에 대한 해독 가능성을 지적한 후, RIPE 개발 그룹에서는 한스 도버틴을 직접 참여시켜 160비트 해시함수인 RIPEMD-160을 다시 개발했다.<ref name="RIPEMD">jhh0712, 〈[https://blog.naver.com/vjhh0712v/221462303378 RIPEMD160 알고리즘]〉, 《네이버 블로그》, 2019-02-10</ref> 이것이 바로 RIPEMD-160이다. RIPEMD-160은 지금까지 알려진 공격들을 고려하여 출력 길이를 160비트로, 라운드 수를 5라운드로 늘리고 메시지 입력순서, 순환이동의 양, 부울 함수(boolean function)의 적용순서 등을 수정하여 기존의 RIPEMD를 강화하였다. | RIPEMD-160의 개발은 유럽의 RIPE(RACE Integrity Primitives Evaluation) 프로젝트 주관 하에 [[MD4]]와 [[MD5]]의 취약점을 분석했던 연구 그룹이 주도하였다. 이때 128비트의 [[RIPEMD]]을 개발했다. 그러나 1996년 [[뢰벤카톨릭대학교]](Katholieke Universiteit Leuven) 코식(COSIC)연구 그룹의 [[한스 도버틴]](Hans Dobbertin)은 [[RIPEMD-128]]에 대한 해독 가능성을 지적한 후, RIPE 개발 그룹에서는 한스 도버틴을 직접 참여시켜 160비트 해시함수인 RIPEMD-160을 다시 개발했다.<ref name="RIPEMD">jhh0712, 〈[https://blog.naver.com/vjhh0712v/221462303378 RIPEMD160 알고리즘]〉, 《네이버 블로그》, 2019-02-10</ref> 이것이 바로 RIPEMD-160이다. RIPEMD-160은 지금까지 알려진 공격들을 고려하여 출력 길이를 160비트로, 라운드 수를 5라운드로 늘리고 메시지 입력순서, 순환이동의 양, 부울 함수(boolean function)의 적용순서 등을 수정하여 기존의 RIPEMD를 강화하였다. | ||
− | RIPEMD-160이 발표될 당시, [[ISO]] 표준으로 채택된 RIPEMD가 많은 응용분야에서 사용되고 있었으므로 이것을 RIPEMD-160으로 대체하면 많은 부분을 수정해야 하기 때문에 출력 길이가 RIPEMD와 같은 RIPEMD-128이 함께 발표되었다. RIPEMD-160는 임의의 길이의 입력 값을 160비트로 압축하는 함수로 입력 값은 512비트 단위로 처리한다. 입력 값은 처리되기 전에 512비트의 배수가 되도록 패딩되어야 하는데 패딩 규칙은 SHA-1과 | + | RIPEMD-160이 발표될 당시, [[ISO]] 표준으로 채택된 RIPEMD가 많은 응용분야에서 사용되고 있었으므로 이것을 RIPEMD-160으로 대체하면 많은 부분을 수정해야 하기 때문에 출력 길이가 RIPEMD와 같은 RIPEMD-128이 함께 발표되었다. RIPEMD-160는 임의의 길이의 입력 값을 160비트로 압축하는 함수로 입력 값은 512비트 단위로 처리한다. 입력 값은 처리되기 전에 512비트의 배수가 되도록 패딩되어야 하는데 패딩 규칙은 SHA-1과 동일하다. |
* 출력 길이 : 160 비트 | * 출력 길이 : 160 비트 | ||
17번째 줄: | 17번째 줄: | ||
===패딩=== | ===패딩=== | ||
+ | |||
메시지를 512비트의 배수로 패딩하고 바이트 스크림 입력을 32비트 워드로 패딩해야 한다. 길이 연장 공격을 방지하기 위해 Merkle-Damgorrd 강화법을 사용한 패딩 방식은 [[MD4]]와 동일하다.이는 메시지 끝에 추가되는 하나와 블록 끝에 추가되는 메시지 길이(비트 단위)로 구성된다. 바이트는 먼저 low end라는 단어에 밀어 넣는다. | 메시지를 512비트의 배수로 패딩하고 바이트 스크림 입력을 32비트 워드로 패딩해야 한다. 길이 연장 공격을 방지하기 위해 Merkle-Damgorrd 강화법을 사용한 패딩 방식은 [[MD4]]와 동일하다.이는 메시지 끝에 추가되는 하나와 블록 끝에 추가되는 메시지 길이(비트 단위)로 구성된다. 바이트는 먼저 low end라는 단어에 밀어 넣는다. | ||
우측 표는 다른 메시지 길이에 대해 가능한 패턴을 보여주기 위해 단어에 패딩된 네 가지 메시지 예제이다. 그런 다음 메시지의 길이를 두 번째에서 마지막 요소까지 추가해야 한다.<ref name="RIPEMD160"></ref> | 우측 표는 다른 메시지 길이에 대해 가능한 패턴을 보여주기 위해 단어에 패딩된 네 가지 메시지 예제이다. 그런 다음 메시지의 길이를 두 번째에서 마지막 요소까지 추가해야 한다.<ref name="RIPEMD160"></ref> | ||
+ | |||
=== 압축함수 === | === 압축함수 === | ||
109번째 줄: | 111번째 줄: | ||
* [[RIPEMD]] | * [[RIPEMD]] | ||
− | {{ | + | {{알고리즘|검토 필요}} |