MD2 (해시 함수)
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
MD2는 1989년 로널드 리베스트가 개발한 해시 함수로, 128비트 해시 값을 생성하기 위해 메시지를 패딩하고 16바이트 체크섬을 추가한다. 48바이트 보조 블록과 256바이트 S-테이블을 사용하며, S-테이블은 원주율의 소수 자릿수를 기반으로 생성된다. 1995년 이후 여러 보안 취약점이 발견되어 2009년 OpenSSL, GnuTLS, 네트워크 보안 서비스 등에서 비활성화되었다.
더 읽어볼만한 페이지
- 암호화 해시 함수 - RIPEMD
RIPEMD는 MD4를 기반으로 1992년 설계된 암호화 해시 함수로, 보안 취약점 보완을 위해 RIPEMD-128, RIPEMD-160, RIPEMD-256, RIPEMD-320 등의 변형이 개발되었으며, 특히 RIPEMD-160은 160비트 해시 값을 생성하고 다양한 라이브러리에서 지원되지만 보안성 우려가 제기되고 있다. - 암호화 해시 함수 - MD5
MD5는 로널드 리베스트 교수가 개발한 128비트 해시 값 생성 암호화 해시 함수이나, 보안 취약점으로 인해 현재는 보안이 중요한 분야에서는 사용이 중단되었다.
MD2 (해시 함수) | |
---|---|
MD2 | |
일반 정보 | |
종류 | 암호화 해시 함수 |
설계자 | 로널드 리베스트 |
발표 년도 | 1989년 8월 |
시리즈 | MD2, MD4, MD5, MD6 |
기반 | 해당 사항 없음 |
파생 | 해당 사항 없음 |
관련 | 해당 사항 없음 |
인증 | 해당 사항 없음 |
세부 정보 | |
다이제스트 크기 | 128비트 |
구조 | 해당 사항 없음 |
라운드 | 18 |
보안 | |
암호 분석 | 해당 사항 없음 |
RFC 정보 | |
RFC | RFC 1319 RFC 6149 |
기타 | |
비고 | 2014년 기준으로 일부 PKI에서 사용 중단됨. |
2. 설명
MD2는 임의의 메시지를 입력받아 128비트 해시값을 생성하는 해시 함수이다. 메시지는 먼저 128비트(16바이트)의 배수로 패딩되고, 16바이트 체크섬이 추가된다. 실제 계산에는 48바이트 보조 블록과 256바이트 S 테이블이 사용된다. S 테이블은 π(파이)의 소수 자릿수를 기반으로 한 의사 난수 생성기와 더스텐펠트 알고리즘의 변형을 사용하여 0부터 255까지의 정수를 섞어 생성되었다.[3]
2. 1. 알고리즘 작동 방식
MD2 해시 함수는 메시지를 128비트(16바이트)의 배수로 패딩하고, 16바이트 체크섬을 추가하여 128비트 해시 값을 계산한다.[3] 실제 계산에는 48바이트 보조 블록과 256바이트 S 테이블이 사용된다. S 테이블은 π(파이)의 소수 자릿수를 기반으로 한 의사 난수 생성기와 더스텐펠트 알고리즘의 변형을 사용하여 0부터 255까지의 정수를 섞어 생성되었다.알고리즘은 처리되는 16개의 입력 바이트마다 보조 블록의 각 바이트를 18번 치환하는 루프를 실행한다. 이렇게 하여 길어진 메시지의 모든 블록이 처리되면 보조 블록의 첫 번째 부분 블록이 메시지의 해시 값이 된다.
16진수로 표현된 S 테이블 값은 다음과 같다.
0x29 | 0x2E | 0x43 | 0xC9 | 0xA2 | 0xD8 | 0x7C | 0x01 | 0x3D | 0x36 | 0x54 | 0xA1 | 0xEC | 0xF0 | 0x06 | 0x13 |
0x62 | 0xA7 | 0x05 | 0xF3 | 0xC0 | 0xC7 | 0x73 | 0x8C | 0x98 | 0x93 | 0x2B | 0xD9 | 0xBC | 0x4C | 0x82 | 0xCA |
0x1E | 0x9B | 0x57 | 0x3C | 0xFD | 0xD4 | 0xE0 | 0x16 | 0x67 | 0x42 | 0x6F | 0x18 | 0x8A | 0x17 | 0xE5 | 0x12 |
0xBE | 0x4E | 0xC4 | 0xD6 | 0xDA | 0x9E | 0xDE | 0x49 | 0xA0 | 0xFB | 0xF5 | 0x8E | 0xBB | 0x2F | 0xEE | 0x7A |
0xA9 | 0x68 | 0x79 | 0x91 | 0x15 | 0xB2 | 0x07 | 0x3F | 0x94 | 0xC2 | 0x10 | 0x89 | 0x0B | 0x22 | 0x5F | 0x21 |
0x80 | 0x7F | 0x5D | 0x9A | 0x5A | 0x90 | 0x32 | 0x27 | 0x35 | 0x3E | 0xCC | 0xE7 | 0xBF | 0xF7 | 0x97 | 0x03 |
0xFF | 0x19 | 0x30 | 0xB3 | 0x48 | 0xA5 | 0xB5 | 0xD1 | 0xD7 | 0x5E | 0x92 | 0x2A | 0xAC | 0x56 | 0xAA | 0xC6 |
0x4F | 0xB8 | 0x38 | 0xD2 | 0x96 | 0xA4 | 0x7D | 0xB6 | 0x76 | 0xFC | 0x6B | 0xE2 | 0x9C | 0x74 | 0x04 | 0xF1 |
0x45 | 0x9D | 0x70 | 0x59 | 0x64 | 0x71 | 0x87 | 0x20 | 0x86 | 0x5B | 0xCF | 0x65 | 0xE6 | 0x2D | 0xA8 | 0x02 |
0x1B | 0x60 | 0x25 | 0xAD | 0xAE | 0xB0 | 0xB9 | 0xF6 | 0x1C | 0x46 | 0x61 | 0x69 | 0x34 | 0x40 | 0x7E | 0x0F |
0x55 | 0x47 | 0xA3 | 0x23 | 0xDD | 0x51 | 0xAF | 0x3A | 0xC3 | 0x5C | 0xF9 | 0xCE | 0xBA | 0xC5 | 0xEA | 0x26 |
0x2C | 0x53 | 0x0D | 0x6E | 0x85 | 0x28 | 0x84 | 0x09 | 0xD3 | 0xDF | 0xCD | 0xF4 | 0x41 | 0x81 | 0x4D | 0x52 |
0x6A | 0xDC | 0x37 | 0xC8 | 0x6C | 0xC1 | 0xAB | 0xFA | 0x24 | 0xE1 | 0x7B | 0x08 | 0x0C | 0xBD | 0xB1 | 0x4A |
0x78 | 0x88 | 0x95 | 0x8B | 0xE3 | 0x63 | 0xE8 | 0x6D | 0xE9 | 0xCB | 0xD5 | 0xFE | 0x3B | 0x00 | 0x1D | 0x39 |
0xF2 | 0xEF | 0xB7 | 0x0E | 0x66 | 0x58 | 0xD0 | 0xE4 | 0xA6 | 0x77 | 0x72 | 0xF8 | 0xEB | 0x75 | 0x4B | 0x0A |
0x31 | 0x44 | 0x50 | 0xB4 | 0x8F | 0xED | 0x1F | 0x1A | 0xDB | 0x99 | 0x8D | 0x33 | 0x9F | 0x11 | 0x83 | 0x14 |
128비트(16바이트) MD2 해시(또는 "메시지 다이제스트")는 일반적으로 32자리 16진법 숫자로 표현된다. MD2는 입력 메시지의 작은 변화가 해시 값에 큰 영향을 미치는 눈사태 효과를 보인다. 예를 들어, "The quick brown fox jumps over the lazy dog"에서 'd'를 'c'로 바꾸는 것처럼 단 하나의 문자만 변경되어도 해시 값은 완전히 달라진다. 길이가 0인 문자열의 해시 값도 구할 수 있다.
3. MD2 해시 값
3. 1. 예시
128비트(16바이트) MD2 해시(또는 "메시지 다이제스트")는 일반적으로 32자리 16진법 숫자로 표현된다. 다음은 43바이트 ASCII 입력과 해당 MD2 해시를 보여주는 예시이다.
MD2의 눈사태 효과의 결과로, 입력 메시지가 약간만 변경되어도 (압도적인 확률로) 완전히 다른 해시가 생성된다. 예를 들어 메시지에서 'd'를 'c'로 변경하면 다음과 같다.
길이가 0인 문자열의 해시는 다음과 같다.
4. 보안
MD2는 초기에 안전한 해시 함수로 설계되었지만, 시간이 지남에 따라 여러 보안 취약점이 발견되었다. 1995년에 압축 함수에 대한 충돌이 발견되었고, 2004년에는 원상 공격에 취약하다는 것이 밝혀졌다. 이후에도 지속적으로 개선된 공격 방법들이 발견되면서, 2009년에는 OpenSSL, GnuTLS, Network Security Services 등 주요 보안 라이브러리에서 MD2 사용이 중단되었다.[4]
4. 1. 보안 취약점
1995년 로지에(Rogier)와 쇼보(Chauvaud)는 MD2의 압축 함수에서 충돌을 발견했지만, 전체 MD2에 대한 공격에는 성공하지 못했다. 이 충돌은 1997년에 발표되었다.2004년, MD2는 2104번의 압축 함수 적용과 동일한 원상 공격에 취약한 것으로 나타났다. 저자는 "MD2는 더 이상 안전한 일방향 해시 함수로 간주될 수 없다"고 결론지었다.
2008년에는 273번의 압축 함수 평가와 273 메시지 블록의 메모리 요구 사항을 갖는 원상 공격이 개선되었다.
2009년, MD2는 263.3번의 압축 함수 평가와 252 해시 값의 메모리 요구 사항을 갖는 충돌 공격에 취약한 것으로 나타났다. 이는 265.5번의 압축 함수 평가가 필요한 생일 공격보다 약간 더 나은 성능이다.
2009년, OpenSSL, GnuTLS, Network Security Services에서 MD2를 비활성화하는 보안 업데이트가 발표되었다.[4]
참조
[1]
간행물
Privacy Enhancement for Internet Electronic Mail: Part III — Algorithms, Modes, and Identifiers
https://datatracker.[...]
IETF
1989-08
[2]
간행물
MD2 to Historic Status
https://datatracker.[...]
IETF
[3]
웹사이트
How is the MD2 hash function S-table constructed from Pi?
https://crypto.stack[...]
Stack Exchange
2014-08-02
[4]
CVE
CVE-2009-2409
https://cve.mitre.or[...]
[5]
간행물
Privacy Enhancement for Internet Electronic Mail: Part III—Algorithms, Modes, and Identifiers, Section 4.2
https://datatracker.[...]
1989-08
[6]
웹사이트
What are MD2, MD4, and MD5?
http://www.rsa.com/r[...]
RSA Laboratories
2011-04-29
[7]
논문
An improved preimage attack on MD2
http://eprint.iacr.o[...]
[8]
URL
http://www.springerl[...]
[9]
CVE
CVE-2009-2409
http://cve.mitre.org[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com