RIPEMD
1. 개요
RIPEMD는 1992년 유럽 연합의 RIPE 프로젝트에서 MD4 해시 함수를 기반으로 설계된 암호화 해시 함수이다. 1996년, 오리지널 RIPEMD의 보안 취약점이 발견된 후, RIPEMD-128, RIPEMD-160, RIPEMD-256, RIPEMD-320 등 강화된 변형이 발표되었다. RIPEMD-160은 160비트 해시를 생성하며, 40자리의 16진수로 표현된다. RIPEMD-160은 애벌랜치 효과를 보이며, 입력값의 작은 변화가 출력값에 큰 변화를 가져온다. 보탄, 바운시 캐슬, 크립트립, 크립토++ 등 다양한 암호화 라이브러리에서 RIPEMD를 지원한다.
| 이름 | RIPEMD |
|---|---|
| 종류 | 암호화 해시 함수 |
| 디자이너 | 한스 도베르틴, 안톤 보셀라에르스, 바트 프레네일 |
| 발표일 | 1992년 (RIPEMD), 1996년 |
| 기반 | 없음 (독자 설계) |
| 관련 | MD4, MD5, SHA-1 |
| 인증 | RIPEMD-160: CRYPTREC (모니터링 대상) |
| 다이제스트 크기 | 128, 160, 256, 320 비트 |
| 구조 | 머클-담가드 구조 |
| 라운드 수 | 불명 |
| 암호 분석 | 취약점 발견 (RIPEMD, MD4, MD5, HAVAL-128) |
2. 역사
1992년, 유럽 연합(EU)의 RIPE (RACE Integrity Primitives Evaluation) 프로젝트에서 RIPEMD가 처음 설계되었다. RIPEMD는 MD4 해시 함수를 기반으로 설계되었다. 1996년, 오리지널 RIPEMD의 보안 취약점이 발견되었다. 벨기에 루뱅 가톨릭 대학교 COSIC 연구 그룹의 한스 도베르틴, 안톤 보셀라어스, 바르트 프레넬은 RIPEMD-128, RIPEMD-160, RIPEMD-256, RIPEMD-320 등 네 가지 강화된 변형을 발표했다.
2004년, 오리지널 RIPEMD에 대한 충돌 공격이 보고되었으나, RIPEMD-160에는 적용되지 않았다.
RIPEMD-160에 대한 공격은 다음과 같이 발전하였다.
| 연도 | 학회 | 라운드 | 시간 복잡도 |
|---|---|---|---|
| 2019 | CRYPTO 2019 | 34/80 | 해당 없음 |
| 2023.02 | EUROCRYPT 2023 | 36/80 | 264.5 |
| 2023.12 | - | 40/80 | 249.9 |
3. RIPEMD-160 해시
160비트 RIPEMD-160 해시(RIPE 메시지 다이제스트라고도 함)는 일반적으로 40자리의 16진수로 표현된다. 다음은 43바이트 ASCII 입력과 해당 RIPEMD-160 해시의 예시이다.
* RIPEMD-160("The quick brown fox jumps over the lazy dog") = 37f332f68db77bd9d7edd4969571ad671cf9dd3b
RIPEMD-160은 암호화 해시 함수의 애벌랜치 효과를 보인다. 즉, 입력값의 작은 변화가 출력값에 큰 변화를 가져온다. 예를 들어 'd'를 'c'로 변경하면 다음과 같이 완전히 다른 해시가 생성된다.
* RIPEMD-160("The quick brown fox jumps over the lazy cog") = 132072df690933835eb8b6ad0b77e7b6f14acad7
길이가 0인 문자열의 해시는 다음과 같다.
* RIPEMD-160("") = 9c1185a5c5e9fc54612808977ee8f548b2258d31
4. 구현체
RIPEMD(특히 RIPEMD-160)를 지원하는 암호화 라이브러리는 다음과 같다.
| 라이브러리 |
|---|
| 보탄 |
| 바운시 캐슬 |
| 크립트립 |
| 크립토++ |
| 리브그크립트 |
| 엠베드 TLS |
| 네틀 |
| 오픈SSL |
| 울프SSL |