맨위로가기

MD2 (해시 함수)

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의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 정보
RFCRFC 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 테이블 값은 다음과 같다.

0x290x2E0x430xC90xA20xD80x7C0x010x3D0x360x540xA10xEC0xF00x060x13
0x620xA70x050xF30xC00xC70x730x8C0x980x930x2B0xD90xBC0x4C0x820xCA
0x1E0x9B0x570x3C0xFD0xD40xE00x160x670x420x6F0x180x8A0x170xE50x12
0xBE0x4E0xC40xD60xDA0x9E0xDE0x490xA00xFB0xF50x8E0xBB0x2F0xEE0x7A
0xA90x680x790x910x150xB20x070x3F0x940xC20x100x890x0B0x220x5F0x21
0x800x7F0x5D0x9A0x5A0x900x320x270x350x3E0xCC0xE70xBF0xF70x970x03
0xFF0x190x300xB30x480xA50xB50xD10xD70x5E0x920x2A0xAC0x560xAA0xC6
0x4F0xB80x380xD20x960xA40x7D0xB60x760xFC0x6B0xE20x9C0x740x040xF1
0x450x9D0x700x590x640x710x870x200x860x5B0xCF0x650xE60x2D0xA80x02
0x1B0x600x250xAD0xAE0xB00xB90xF60x1C0x460x610x690x340x400x7E0x0F
0x550x470xA30x230xDD0x510xAF0x3A0xC30x5C0xF90xCE0xBA0xC50xEA0x26
0x2C0x530x0D0x6E0x850x280x840x090xD30xDF0xCD0xF40x410x810x4D0x52
0x6A0xDC0x370xC80x6C0xC10xAB0xFA0x240xE10x7B0x080x0C0xBD0xB10x4A
0x780x880x950x8B0xE30x630xE80x6D0xE90xCB0xD50xFE0x3B0x000x1D0x39
0xF20xEF0xB70x0E0x660x580xD00xE40xA60x770x720xF80xEB0x750x4B0x0A
0x310x440x500xB40x8F0xED0x1F0x1A0xDB0x990x8D0x330x9F0x110x830x14


3. MD2 해시 값

128비트(16바이트) MD2 해시(또는 "메시지 다이제스트")는 일반적으로 32자리 16진법 숫자로 표현된다. MD2는 입력 메시지의 작은 변화가 해시 값에 큰 영향을 미치는 눈사태 효과를 보인다. 예를 들어, "The quick brown fox jumps over the lazy dog"에서 'd'를 'c'로 바꾸는 것처럼 단 하나의 문자만 변경되어도 해시 값은 완전히 달라진다. 길이가 0인 문자열의 해시 값도 구할 수 있다.

3. 1. 예시

128비트(16바이트) MD2 해시(또는 "메시지 다이제스트")는 일반적으로 32자리 16진법 숫자로 표현된다. 다음은 43바이트 ASCII 입력과 해당 MD2 해시를 보여주는 예시이다.

  • MD2("The quick brown fox jumps over the lazy dog") = 03d85a0d629d2c442e987525319fc471


MD2의 눈사태 효과의 결과로, 입력 메시지가 약간만 변경되어도 (압도적인 확률로) 완전히 다른 해시가 생성된다. 예를 들어 메시지에서 'd'를 'c'로 변경하면 다음과 같다.

  • MD2("The quick brown fox jumps over the lazy cog") = 6b890c9292668cdbbfda00a4ebf31f05


길이가 0인 문자열의 해시는 다음과 같다.

  • MD2("") = 8350e5a3e24c153df2275c9f80692773

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