RIPEMD-160 편집하기

이동: 둘러보기, 검색

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 아이디(ID)으로 기록되고, 다른 장점도 있습니다.

편집을 되돌릴 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 저장해주세요.
최신판 당신의 편집
1번째 줄: 1번째 줄:
'''RIPEMD-160'''은 임의의 길이의 입력 값을 160[[비트]]로 압축하는 [[암호화]] [[해시함수]]이다. [[RIPEMD-128]]의 강화버전이며 주로 [[비트코인]] 표준에서 사용된다.
+
'''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]] 버전과는 다르게, 어떤 [[특허]]에도 제약을 받지 않는 것으로 알려져 있다.<ref name="RIPEMD160">비트코인위키, 〈[https://en.bitcoin.it/wiki/RIPEMD-160 RIPEMD-160]〉, 《비트코인위키》, 2014-06-30</ref>
+
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]]
  
{{암호 알고리즘|검토 필요}}
+
{{알고리즘|검토 필요}}

해시넷에서의 모든 기여는 다른 기여자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요. 만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다 (자세한 사항은 해시넷:저작권 문서를 보세요). 저작권이 있는 내용을 허가 없이 저장하지 마세요!

취소 | 편집 도움말 (새 창에서 열림)