MD5

MD5
MD5
일반
디자이너로널드 리베스트
초판1992년 4월
시리즈MD2, MD4, MD5, MD6
암호 상세
다이제스트 사이즈128비트
블록 크기512 비트
구조.메르클 담고드 건설
라운드4개[1]
최고의 퍼블릭 암호 분석
2013년 셰타오, 판바오 류, 덩궈펑의 공격으로 MD5 충돌 저항이 2회 만에18 깨집니다.이 공격은 일반 시스템에서 [2]1초 이내에 실행됩니다.MD5는 길이 확장 공격을 받기 쉽습니다.

MD5 메시지 다이제스트알고리즘은 암호로 깨졌지만 128비트 해시값을 생성하는 해시함수입니다.MD5는 당초 암호화 해시함수로 사용하도록 설계되었지만 광범위한 취약성에 시달리고 있습니다.데이터 무결성을 검증하기 위한 체크섬으로 사용할 수 있지만 의도하지 않은 파손에 대해서만 사용할 수 있습니다.이는 분할된 데이터베이스 내의 특정 키의 파티션을 판별하는 등 다른 비암호화 목적에도 적합하며 최신 Secure Hash [3]Algorithm보다 계산 요건이 낮기 때문에 선호될 수 있습니다.

MD5는 1991년 Ronald Rivest에 의해 이전의 해시함수 MD4를 [4]대체하기 위해 설계되었으며 1992년에 RFC 1321로 지정되었습니다.

암호화 해시 함수의 기본 요건 중 하나는 동일한 값으로 해시되는 두 개의 개별 메시지를 계산상 찾을 수 없다는 것입니다.MD5는 이 요건을 극적으로 충족하지 못합니다.일반 가정용 컴퓨터에서는 이러한 충돌이 몇 초 만에 발견됩니다.

2008년 12월 31일 CMU Software Engineering Institute는 MD5가 본질적으로 "암호화가 깨져 추가 사용에 적합하지 않다"[5]는 결론을 내렸습니다.MD5의 취약성은 현장에서 악용되고 있으며, 2012년 Flame 악성코드에 의해 가장 악의가 있습니다.MD5는 잘 문서화되어 있는 약점과 보안 [6]전문가의 추천에도 불구하고 2019년 현재도 널리 사용되고 있습니다.

이력 및 암호 분석

MD5는 MITRonald Rivest 교수가 설계한 일련의 메시지 다이제스트 알고리즘 중 하나입니다(Rivest, 1992).분석 결과 MD5의 이전 MD4가 불안정할 가능성이 높은 것으로 나타났을 때, Rivest는 1991년에 안전한 대체품으로 MD5를 설계했습니다.(Hans Dobbertin은 나중에 MD4의 약점을 발견했습니다.)

1993년, Den Boer와 Bosselaers는 MD5 압축 함수의 "의사 충돌"을 발견한, 비록 제한적이기는 하지만 초기 결과, 즉 동일한 다이제스트를 생성하는 두 개의 다른 초기화 벡터를 제공했다.

1996년, Dobbertin은 MD5의 압축 함수 충돌을 발표했다(Dobbertin, 1996).이는 MD5 해시함수 전체에 대한 공격은 아니었지만 암호학자들이 SHA-1(또한 손상)이나 RIPEMD-160과 같은 대체 기능으로 전환하는 것을 권장할 만큼 근접했습니다.

해시값의 크기(128비트)는 생일 공격을 고려하기에 충분히 작습니다.MD5CRK는 생일 공격을 사용하여 충돌을 발견함으로써 MD5가 실질적으로 안전하지 않다는 것을 보여주기 위해 2004년 3월에 시작된 분산 프로젝트입니다.

MD5CRK는 왕샤오윤, 덩궈펑, 라이쉐자, [7][8]홍보유에 의해 완전한 MD5를 위한 충돌이 발표된 2004년 8월 17일 직후 종료되었습니다.이들의 분석 공격은 IBM [9]p690 클러스터에서 1시간 밖에 걸리지 않는 것으로 보고되었습니다.

2005년 3월 1일 Arjen Lenstra, Xiaoyun Wang 및 Benne de Weger는 서로 다른 공개키와 동일한 MD5 해시값을 가진 2개의 X.509 증명서 구축을 시연했습니다.이것은 실제적인 [10]충돌입니다.이 구조에는 두 공개 키 모두에 대한 개인 키가 포함되어 있습니다.며칠 후 Vlastimil Klima는 1대의 노트북 컴퓨터에서 [11]몇 시간 만에 MD5 충돌을 구축할 수 있는 향상된 알고리즘에 대해 설명했습니다.2006년 3월 18일, Klima는 [12]1대의 노트북 컴퓨터에서 1분 이내에 충돌을 검출할 수 있는 알고리즘을 발표했습니다.이 알고리즘을 터널링이라고 부릅니다.

MD5와 관련된 다양한 RFC 에러타가 공개되어 있습니다.2009년, 미국 사이버 사령부는 그들의 임무 성명의 MD5 해시 값을 그들의 공식 [13]엠블럼의 일부로 사용했다.

2010년 12월 24일, 타오쉐와 덩궈펑은 최초로 공개된 단일 블록(512비트)[14] MD5 충돌을 발표했다(이전 충돌 발견은 멀티 블록 공격에 의존했다).셰와 펑은 "보안상의 이유"를 들어 새로운 공격 방법을 공개하지 않았다.이들은 암호 커뮤니티에 도전장을 내밀어 2013년 1월 1일 이전에 64바이트 충돌의 최초 발견자에게 US$10,000의 현상금을 걸었다.Marc Stevens는 이 도전에 대응하여 충돌하는 단일 블록 메시지와 구축 알고리즘 및 [15]소스를 공개했습니다.

2011년에는 MD5 및 HMAC-MD5의 [18]보안[17] 고려사항을 갱신하기 위해 정보 RFC 6151이[16] 승인되었습니다.

보안.

MD5 해시 함수의 보안이 심각하게 손상되었습니다.2.6GHz Pentium 4 프로세서(복잡도 [19]224.1)를 탑재한 컴퓨터에서는 몇 초 이내에 충돌을 검출할 수 있는 충돌 공격이 존재합니다.또한 시판 컴퓨팅 하드웨어(복잡도39 [20]2)를 사용하여 지정된 프레픽스를 가진2개의 입력에 대해 몇 초 이내에 콜리전을 발생시킬 수 있는 선택 프레픽스 충돌 공격도 있습니다.충돌을 찾는 기능은 시판 GPU를 사용함으로써 크게 도움이 되었습니다.NVIDIA GeForce 8400GS 그래픽 프로세서에서는 초당 1600만~1800만 개의 해시를 계산할 수 있습니다.NVIDIA GeForce 8800 Ultra는 초당 [21]2억 개 이상의 해시를 계산할 수 있습니다.

이러한 해시 및 충돌 공격은 문서 파일[22][23] 및 디지털 인증서 [24]충돌 등 다양한 상황에서 일반에 입증되었습니다.2015년 현재 MD5는 여전히 널리 사용되고 있으며, 특히 보안 조사 및 안티바이러스 [25]기업에 의해 가장 많이 사용되고 있습니다.

2019년 현재 널리 사용되는 콘텐츠 관리 시스템의 4분의 1이 여전히 비밀번호 [6]해시에 MD5를 사용하고 있는 것으로 보고되었습니다.

보안 문제의 개요

1996년 MD5의 설계에서 결함이 발견되어 당시에는 치명적인 약점으로 간주되지 않았지만 암호학자들은 SHA-1과 같은 다른 알고리즘의 사용을 권장하기 시작했고,[26] 이 알고리즘도 그 이후 취약하다는 것을 알게 되었다.2004년에 MD5는 충돌에 대한 [27]내성이 없다는 것이 밝혀졌습니다.따라서 MD5는 SSL 증명서디지털 서명 등의 디지털 보안을 위해 이 속성에 의존하는 애플리케이션에는 적합하지 않습니다.연구진은 MD5에서 더 심각한 결함을 발견하고 MD5에서 동일한 체크섬[7][28]생성하는 입력 쌍을 생성하는 방법인 실행 가능한 충돌 공격에 대해 설명했습니다.2005년, 2006년 및 [29]2007년에 MD5를 깨기 위해 한층 더 진일보했습니다.2008년 12월, 연구자 그룹은 이 기술을 사용하여 SSL 증명서[24][30]유효성을 위조했습니다.

2010년 현재 CMU Software Engineering Institute는 MD5를 "암호적으로 파손되어 향후 사용에 적합하지 않다"[31]고 간주하고 있으며, 현재 대부분의 미국 정부 애플리케이션은 SHA-2 해시 [32]함수 패밀리를 요구하고 있습니다.2012년 Flame 멀웨어는 MD5의 약점을 이용하여 Microsoft 디지털 [33]서명을 위조했습니다.

충돌 취약성

1996년 MD5의 압축 기능에 충돌이 발견되었으며, 한스 도버틴RSA Laboraties 기술 뉴스레터에서 다음과 같이 기술했습니다. "현재 제시된 공격은 MD5의 실용적 응용을 위협하지는 않지만, 향후 MD5를 더 이상 구현해서는 안 됩니다.이 경우 충돌 방지 해시 [34]함수가 필요합니다.

2005년에 연구자들은 동일한 해시를 가진 PostScript 문서[35] X.509 인증서[36] 쌍을 만들 수 있었다.그 해 말 MD5의 디자이너 Ron Rivest는 "md5와 sha1은 (충돌에 대한)[37] 내성이 확실히 깨졌다"고 썼다.

2008년 12월 30일, 제25회 카오스 커뮤니케이션 콩그레스에서 MD5의 [24]해시에 의해 확인되었을 때 정당하다고 생각되는 중간 인증국 증명서를 작성하기 위해 MD5의 충돌을 어떻게 사용했는지에 대해 연구자 그룹이 발표했습니다.연구진은 스위스[38] 로잔EPFL에서 PS3 클러스터를 사용하여 Rapid가 발급한 일반 SSL 인증서를 변경했습니다.해당 발급자에 대해 작동하는 CA 인증서로 SSL을 사용합니다. 그러면 RapidSSL에서 발급하고 합법적인 것으로 보이는 다른 인증서를 만드는 데 사용할 수 있습니다.Rapid 발행사 VeriSignSSL 증명서, Rapid 체크섬알고리즘으로 MD5를 사용하는 새로운 증명서 발급을 정지했다고 합니다.취약성이 [39]발표된 후 SSL.Verisign은 MD5를 사용하여 서명된 기존 인증서를 취소하는 것을 거부했지만, 이러한 응답은 악용의 저자인 Alexander [24]Sotirov, Marc Stevens, Jacob Appelbaum, Arjen Lensstra, David Molnar, Dag Arne Osvik 및 Benne Weger에 의해 적절하다고 판단되었습니다.브루스 슈나이어는 이번 공격에 대해 "우리는 MD5가 망가진 해시함수라는 것을 이미 알고 있었다"며 "누구도 MD5를 [40]더 이상 사용해서는 안 된다"고 썼다.SSL 조사원은 다음과 같이 쓰고 있습니다.「당사가 희망하는 영향은, 새로운 증명서의 발행에 있어서 MD5의 사용을 정지하는 것입니다.또, 다른 애플리케이션에서의 MD5의 사용도 [24]재검토해 주었으면 합니다」라고 말하고 있습니다.

Microsoft에 따르면 2012년 Flame 멀웨어 작성자는 MD5 충돌을 사용하여 Windows 코드 서명 [33]인증서를 위조했습니다.

MD5는 Merkle-Damgörd 구성을 사용하기 때문에 동일한 해시를 가진2개의 프레픽스를 구성할 수 있는 경우 공통 서픽스를 양쪽 모두에 추가하여 콜리전을 사용하는 어플리케이션이 유효한 데이터로 받아들일 가능성이 높아집니다.게다가 현재의 콜리젼 검색 기술에서는 임의의 프레픽스를 지정할 수 있습니다.공격자는 같은 내용으로 시작하는2개의 콜리젼 파일을 작성할 수 있습니다.공격자가 2개의 충돌 파일을 생성하기 위해 필요한 것은 128바이트의 데이터 블록이 64바이트 경계에 정렬된 템플릿 파일뿐이며 충돌 검색 알고리즘에 의해 자유롭게 변경할 수 있습니다.2개의 메시지가 6비트로 다른 MD5의 충돌 예를 다음에 나타냅니다.

dddd02c5e6ec4 693d9a0698aff95c 2fcab58712467eab 4004583eb8fb7f89 55ad 609f4b302 83e48832571415a 085125e8f7cdf99dbdf2803c5dp3cdp363f6a
d'dd02c5e6ec4 693d9a0698aff95c 2fcab50712467eab 4004583eb8fb7f89 55ad 609f4b302 83e4888325f1415a 085125e8f7cdb7cdb72803cdcd5aff6aff6aff6aff6c

둘 다 MD5 해시를 생성합니다.79054025255fb1a26e4bc422aef54eb4. 두 샘플의 차이점은 니블의 선행 비트가 플립되었다는 것입니다.[41]예를 들어, 상위 샘플 0x87의 20번째 바이트(오프셋 0x13)는 이진수로는 10000111입니다.바이트의 선두 비트(첫 번째 니블의 선두 비트도 마찬가지)가 플립되어 아래쪽 샘플에 표시된 것처럼 0x07인 00000111이 됩니다.

나중에 별도로 선택된 접두사를 사용하여 두 파일 간의 충돌을 구성할 수도 있음이 확인되었습니다.이 기술은 2008년 악성 CA 증명서 작성에 사용되었습니다.2014년 안톤 쿠즈넷소프는 MPI를 이용한 새로운 병렬 충돌 검색 방식을 제안했으며,[42] 이를 통해 컴퓨팅 클러스터에서 11시간 만에 충돌을 찾을 수 있었습니다.

사전 이미지 취약성

2009년 4월에는 MD5에 대한 공격이 발표되어 MD5의 초기 이미지 저항을 무너뜨렸습니다.이 공격은 이론적인 것일 뿐이며, 전체 초기 이미지에 [43][44]대한 계산 복잡도는 2입니다123.4.

적용들

MD5 다이제스트는 전송된 파일이 그대로 도착했음을 보증하기 위해 소프트웨어 세계에서 널리 사용되고 있습니다.예를 들어, 파일서버는 다운로드한 파일의 체크섬을 비교할 수 있도록 파일에 대해 미리 계산된 MD5(md5sum) 체크섬을 제공하는 경우가 많습니다.대부분의 UNIX 기반 운영 체제에는 배포 패키지에 MD5 sum 유틸리티가 포함되어 있습니다.Windows 사용자는 포함된 PowerShell 함수 "Get-FileHash"를 사용하거나 Microsoft [45][46]유틸리티를 설치하거나 서드파티 애플리케이션을 사용할 수 있습니다.Android ROM도 이러한 체크섬을 사용합니다.

Diagram showing use of MD5 hashing in file transmission

MD5 충돌은 쉽게 생성되므로 파일을 작성한 사람이 동일한 체크섬을 사용하여 두 번째 파일을 작성할 수 있으므로 이 기술은 어떤 형태의 악의적인 조작으로부터 보호할 수 없습니다.체크섬을 신뢰할 수 없는 경우가 있습니다(다운로드된 파일과 같은 채널을 통해 취득한 경우 등).이 경우 MD5는 오류 체크 기능만 제공합니다.이 경우 파손되거나 불완전한 다운로드는 더 큰 파일을 다운로드할 때 인식됩니다.

지금까지 MD5는 패스워드의 단방향 해시를 저장하기 위해 사용되었으며, 대부분의 경우 [47][48]키 스트레칭과 함께 사용되었습니다.NIST는 패스워드 스토리지 권장 해시 [49]목록에 MD5를 포함하지 않습니다.

MD5는 전자 검출 분야에서도 사용되며 법적 검출 프로세스 중에 교환되는 각 문서의 고유 식별자를 제공합니다.이 방법은 종이 문서를 교환하는 동안 수십 년 동안 사용되어 온 Bates 우표 번호 시스템을 대체하기 위해 사용할 수 있습니다.위와 같이 충돌 공격이 쉽기 때문에 이 사용은 권장되지 않습니다.

알고리즘.

그림 1MD5 조작 1회MD5는 이러한 조작 중 64개로 구성되어 있으며, 16개의 조작으로 이루어진4개의 라운드로 그룹화되어 있습니다.F는 비선형 함수이며 각 라운드에 하나의 함수가 사용됩니다.Mi 메시지 입력의 32비트 블록을 나타내고i K는 동작마다 다른 32비트 상수를 나타냅니다.<<s >는 장소별 왼쪽 비트 회전을 나타냅니다.는 동작마다 다릅니다. \boxplus 추가 모듈32 2를 나타냅니다

MD5는 가변 길이 메시지를 128비트의 고정 길이 출력으로 처리합니다.입력 메시지는 512비트 블록(66개의 32비트 워드)의 청크로 분할됩니다.메시지는 길이가 512로 분할되도록 패딩됩니다.패딩은 다음과 같이 동작합니다.첫 번째 1비트가 메시지 끝에 추가됩니다.메시지 길이를 512의 배수보다 최대 64비트 작게 하기 위해 필요한 수의 제로가 뒤따릅니다.나머지 비트는 원래 메시지 modulo64 2의 길이를 나타내는 64비트로 채워집니다.

메인 MD5 알고리즘은 128비트스테이트로 동작하며 A, B, CD라는4개의 32비트 워드로 나뉩니다.이러한 값은 특정 고정 상수로 초기화됩니다.메인 알고리즘은 각 512비트메시지 블록을 차례로 사용하여 상태를 변경합니다.메시지 블록의 처리는 라운드로 불리는 4개의 유사한 단계로 구성됩니다.각 라운드는 비선형 함수 F, 모듈러 덧셈 및 좌회전 등에 기초한 16개의 유사한 연산으로 구성됩니다.그림 1은 라운드 내의 1개의 조작을 나타내고 있습니다.4가지 기능이 있습니다.각 라운드에서 다른 기능이 사용됩니다.

,,, ,, , , , , , \oplus ,\,\,\neg)는 각각 XOR, AND, OR 및 NOT 연산을 나타냅니다.

유사 코드

MD5 해시는 이 [50]알고리즘에 따라 계산됩니다.모든 값은 little-endian으로 표시됩니다.

// : var int s[64], K[64] var int i // s는 라운드당 시프트량 s[0.15]를 지정합니다. := { 7, 12, 17, 22, 7, 12, 17, 7, 12, 22, 12, 17, 12, 17, 17, 17, 17, 17, 17, 17, 22, 22} s[16] s.31] : = { 5, 9, 14, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 20 }초[32 ]47] : = { 4, 11, 16, 23, 23, 11, 16, 23, 11, 16, 23, 23, 4, 11, 16, 23 }초 [48]63] := { 6, 10, 15, 21, 6, 10, 15, 21, 21, 6, 10, 15, 21 } // 정수(라디안)사인이진 정수 부분을 상수로 사용: 0 ~ 63 do K[i] : = 바닥 (232 × abs ( sin (i + 1)  (계산된 사용)K[ 0 . 3 ] : = { 0xd76a478 , 0xe8c7b756, 0x242070db , 0xc1bdceee } K[ 4 . 7 ] : = { 0 57 57c0faf , 0x4787c62a , 0xa8304613 , 0d469501 } K [ 8x ]15] : = { 0x6b901122, 0xa987193, 0xa679438e, 0x49b40821 } K[16..19] := { 0x61e2562, 0xc040bb9a51, 0xe9b6c7aa} K[20..23] : = { 0xd62f105d, 0x02441453, 0xd8a1e681, 0xe7d3fbc8}K[24..27] : = { 0x21e1cde6, 0xc33707d6, 0x4d50d87, 0x455a14ed}K [28..31] : = { 0xa9e3e905, 04cefa3f8, 0x676f02d9, 0x8d2a4c8a} K[32]35] : = { 0xfffa3942, 0x871f681, 0x6d9d6122, 04de5380c }K[36..39] := { 0xa4beea44, 0x4bdecfa9, 0µ6bb4b60, 0xbebfbc70} K[40]43] : = { 0x289b7ec6, 0xeaaaa fa, 0xd4ef3085, 0x04881d05 } K[44 . 47 ] : = { 0xd9d4d039, 0xe6db99e5, 0x1fa27cf8, 0xc4ac5665 } K[484]55] : = { 0x655b59c3, 0x8f0cc92, 0xffe47d, 0x85845dd1 }K[56..59] : = { 0x6fa87e4f, 0xfe2ce6e0, 0xa3014314, 0x4e0811a1}K[60]63] := { 04407537e82, 0xbd3af235, 0x2ad7d2b, 0xeb86d391 } // 변수 초기화: var int a0 : = 0x67452301 // A var int b0 : = 0xefcdab89 // B var int c0 : = 0x98badcfe 0xdfe d1 int d0: 0x d5201 int 0x d1 int d1 int 0x d1 int 0x0: 0x d0: 0x0첫 번째 비트는 [51]바이트의 최상위 비트입니다.// 전처리: 0사용패딩은 448(mod 512) // 위의 두 패딩 스텝완전한 바이트로만 동작하는 구현에서는 //0x80 // 및 0x00 바이트로 동작하여 메시지 길이가 56(mod 64)으로 원래 길이를 부가합니다.T가 모드 족인지 조차 264에 메시지//프로세스가 메시지에 연속적인512-bit 덩어리:각512-bit 부분의 패드를 넣은 메시지니 깨chunk에 16비트 단어 M[j], 0≤ j≤ 15을 끓여초기화 해시 값을 이 부분:var 강진 A:=a0을 만든다고 nativeB:=b0을 만든다고 nativeC:\c0을 만든다고 nativeD:=d0//주요 루프:나는 0km에서 63니 var int F,.g0 i i 15 15이면 F : = (B와 C) 또는 (B와 D가 아님) g : = i가 16 i i ( 31이면 F : = (DB가 아님) 또는 (D와 C가 아님) g : = (5×i + 1) mod 16이면 32 ≤ i ≤ 47이면 X 또는 C::= C xor (B 또는 (D가 아님) g := (7×i) mod 16 // a, b, c, d F := F + A + K [i] + M [g] // M [g] // M [g]는 32비트 블록 A := D := C = B:c0 : = c0 + C d0 : = d0 + D end for var char digest [ 16 ] : = a0 append b0 append c0 append d0 // (출력은 little-endian)

원래의 RFC 1321의 공식 대신에, 효율을 향상시키기 위해서 다음의 것을 사용할 수 있습니다(어셈블리 언어를 사용하는 경우 편리합니다).그렇지 않으면 컴파일러는 일반적으로 위의 코드를 최적화합니다.각 연산은 이러한 공식에서 다른 연산에 의존하기 때문에, 이는 종종 nand/및 병렬화할 수 있는 위의 방법보다 느립니다.

(0 i i 15 15):F : = D xor (B 및 (C xor D)) (16µi ≤ 31):F : = C xor (D 및 (B xor C))

MD5 해시

128비트(16바이트) MD5 해시(메시지 다이제스트라고도 불립니다)는 일반적으로 32자리 16진수의 시퀀스로 표시됩니다.다음으로 43바이트의 ASCII 입력과 대응하는 MD5 해시를 나타냅니다.

MD5("빠른 갈색 여우는 게으른 개를 뛰어넘는다") = 9e440d9d372bb6826bd81d3542a419d6

메시지를 조금만 변경해도(매우 높은 확률로) 눈사태의 영향으로 인해 해시가 거의 달라집니다.예를 들어, 문장 끝에 마침표를 추가합니다.

MD5("빠른 갈색 여우는 게으른 개를 뛰어넘는다") = e4d909cdd0fb1ca068ffaddf22cbd0

제로렝스 문자열의 해시는 다음과 같습니다.

MD5("") = d41d8cd98f00b (e9800998ecf8427e)

MD5 알고리즘은 임의의 수의 비트로 구성된 메시지에 대해 지정되며 8비트(옥텟, 바이트)의 배수로 제한되지 않습니다.md5sum 등의 일부 MD5 구현은 옥텟으로 제한되거나 처음에 길이가 정해지지 않은 메시지에 대해 스트리밍을 지원하지 않을 수 있습니다.

실장

다음은 MD5를 지원하는 암호화 라이브러리 목록입니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ Rivest, R. (April 1992). "Step 4. Process Message in 16-Word Blocks". The MD5 Message-Digest Algorithm. IETF. p. 5. sec. 3.4. doi:10.17487/RFC1321. RFC 1321. Retrieved 10 October 2018.
  2. ^ Xie Tao; Fanbao Liu; Dengguo Feng (2013). "Fast Collision Attack on MD5" (PDF). Cryptology ePrint Archive.
  3. ^ Kleppmann, Martin (2 April 2017). Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems (1 ed.). O'Reilly Media. p. 203. ISBN 978-1449373320.
  4. ^ Ciampa, Mark (2009). CompTIA Security+ 2008 in depth. Australia; United States: Course Technology/Cengage Learning. p. 290. ISBN 978-1-59863-913-1.
  5. ^ Chad R, Dougherty (31 December 2008). "Vulnerability Note VU#836068 MD5 vulnerable to collision attacks". Vulnerability notes database. CERT Carnegie Mellon University Software Engineering Institute. Retrieved 3 February 2017.
  6. ^ a b Cimpanu, Catalin. "A quarter of major CMSs use outdated MD5 as the default password hashing scheme". ZDNet. Retrieved 17 June 2019.
  7. ^ a b J. Black, M. Cochran, T.하이랜드: MD5 공격에 관한 연구: 통찰력개선점 2015년 1월 1일 Wayback Machine, 2006년 3월 3일 아카이브.2008년 7월 27일 취득.
  8. ^ Hawkes, Philip; Paddon, Michael; Rose, Gregory G. (13 October 2004). "Musings on the Wang et al. MD5 Collision". Cryptology ePrint Archive. Archived from the original on 5 November 2018. Retrieved 10 October 2018.
  9. ^ Bishop Fox (26 September 2013). "Fast MD5 and MD4 Collision Generators". BishopFox. Archived from the original on 26 April 2017. Retrieved 10 February 2014.
  10. ^ Lenstra, Arjen; Wang, Xiaoyun; Weger, Benne de (1 March 2005). "Colliding X.509 Certificates". Cryptology ePrint Archive. Retrieved 10 October 2018.
  11. ^ Klíma, Vlastimil (5 March 2005). "Finding MD5 Collisions – a Toy For a Notebook". Cryptology ePrint Archive. Retrieved 10 October 2018.
  12. ^ Vlastimil Klima:해시 함수의 터널: MD5의 1분충돌, 암호 ePrint 아카이브 보고서 2006/105, 2006년 3월 18일 2006년 4월 17일 개정.2008년 7월 27일 취득.
  13. ^ "Code Cracked! Cyber Command Logo Mystery Solved". USCYBERCOM. Wired News. 8 July 2010. Retrieved 29 July 2011.
  14. ^ Tao Xie; Dengguo Feng (2010). "Construct MD5 Collisions Using Just A Single Block Of Message" (PDF). Retrieved 28 July 2011.
  15. ^ "Marc Stevens – Research – Single-block collision attack on MD5". Marc-stevens.nl. 2012. Retrieved 10 April 2014.
  16. ^ Turner, Sean (March 2011). "RFC 6151 – Updated Security Considerations for the MD5 Message-Digest and the HMAC-MD5 Algorithms". Internet Engineering Task Force. Retrieved 11 November 2013.
  17. ^ Rivest, Ronald L. (April 1992). "RFC 1321 – The MD5 Message-Digest Algorithm". Internet Engineering Task Force. Retrieved 5 October 2013.
  18. ^ Krawczyk, Hugo; Bellare, Mihir; Canetti, Ran (February 1997). "RFC 2104 – HMAC: Keyed-Hashing for Message Authentication". Internet Engineering Task Force. Retrieved 5 October 2013.
  19. ^ M.M.J. Stevens (June 2007). On Collisions for MD5 (PDF) (Master's thesis).
  20. ^ Marc Stevens; Arjen Lenstra; Benne de Weger (16 June 2009). "Chosen-prefix Collisions for MD5 and Applications" (PDF). École Polytechnique Fédérale de Lausanne. Archived from the original (PDF) on 9 November 2011. Retrieved 31 March 2010.
  21. ^ "New GPU MD5 cracker cracks more than 200 million hashes per second".
  22. ^ Magnus Daum, Stefan Lucks. "Hash Collisions (The Poisoned Message Attack)". Eurocrypt 2005 rump session. Archived from the original on 27 March 2010.
  23. ^ Max Gebhardt; Georg Illies; Werner Schindler (31 October 2005). "A Note on the Practical Value of Single Hash Collisions for Special File Formats" (PDF). National Institute of Standards and Technology. Archived from the original (PDF) on 17 September 2008.
  24. ^ a b c d e Sotirov, Alexander; Marc Stevens; Jacob Appelbaum; Arjen Lenstra; David Molnar; Dag Arne Osvik; Benne de Weger (30 December 2008). "MD5 considered harmful today". Retrieved 30 December 2008. 제25회 혼돈 커뮤니케이션 콩그레스에서 발표.
  25. ^ "Poisonous MD5 – Wolves Among the Sheep Silent Signal Techblog". Retrieved 10 June 2015.
  26. ^ Hans Dobbertin (Summer 1996). "The Status of MD5 After a Recent Attack". CryptoBytes. Retrieved 22 October 2013.
  27. ^ Xiaoyun Wang; Hongbo Yu (2005). "How to Break MD5 and Other Hash Functions" (PDF). Advances in Cryptology – Lecture Notes in Computer Science. pp. 19–35. Archived from the original (PDF) on 21 May 2009. Retrieved 21 December 2009.
  28. ^ Xiaoyun Wang, Denguo, K., m., HAVAL-128 RIPEMD, Cryptology ePrint Archive Report 2004/199, 2004년 8월 16일 개정.2008년 7월 27일 취득.
  29. ^ Marc Stevens, Arjen Lenstra, Benne de Weger: MD5의 선택된 프리픽스 충돌에 대한 소프트웨어 무결성코드 서명 애플리케이션의 취약성, 2007년 11월 30일2008년 7월 27일 취득.
  30. ^ Stray, Jonathan (30 December 2008). "Web browser flaw could put e-commerce security at risk". CNET.com. Archived from the original on 28 August 2013. Retrieved 24 February 2009.
  31. ^ "CERT Vulnerability Note VU#836068". Kb.cert.org. Retrieved 9 August 2010.
  32. ^ "NIST.gov — Computer Security Division — Computer Security Resource Center". Csrc.nist.gov. Archived from the original on 9 June 2011. Retrieved 9 August 2010.
  33. ^ a b "Flame malware collision attack explained". Archived from the original on 8 June 2012. Retrieved 7 June 2012.
  34. ^ Dobbertin, Hans (Summer 1996). "The Status of MD5 After a Recent Attack" (PDF). RSA Laboratories CryptoBytes. 2 (2): 1. Retrieved 10 August 2010. The presented attack does not yet threaten practical applications of MD5, but it comes rather close. .... [sic] in the future MD5 should no longer be implemented... [sic] where a collision-resistant hash function is required.[영구 데드링크]
  35. ^ "Schneier on Security: More MD5 Collisions". Schneier.com. Retrieved 9 August 2010.
  36. ^ "Colliding X.509 Certificates". Win.tue.nl. Retrieved 9 August 2010.
  37. ^ "[Python-Dev] hashlib — faster md5/sha, adds sha256/512 support". Mail.python.org. Retrieved 9 August 2010.
  38. ^ "Researchers Use PlayStation Cluster to Forge a Web Skeleton Key". Wired. 31 December 2008. Retrieved 31 December 2008.
  39. ^ Callan, Tim (31 December 2008). "This morning's MD5 attack — resolved". Verisign. Archived from the original on 16 January 2009. Retrieved 31 December 2008.
  40. ^ Bruce Schneier (31 December 2008). "Forging SSL Certificates". Schneier on Security. Retrieved 10 April 2014.
  41. ^ Eric Rescorla (17 August 2004). "A real MD5 collision". Educated Guesswork (blog). Archived from the original on 15 August 2014. Retrieved 13 April 2015.
  42. ^ Anton A. Kuznetsov. "An algorithm for MD5 single-block collision attack using high performance computing cluster" (PDF). IACR. Retrieved 3 November 2014.
  43. ^ Yu Sasaki; Kazumaro Aoki (16 April 2009). "Finding Preimages in Full MD5 Faster Than Exhaustive Search". Advances in Cryptology - EUROCRYPT 2009. Lecture Notes in Computer Science. Vol. 5479. Springer Berlin Heidelberg. pp. 134–152. doi:10.1007/978-3-642-01001-9_8. ISBN 978-3-642-01000-2.
  44. ^ Ming Mao and Shaohui Chen and Jin Xu (2009). "Construction of the Initial Structure for Preimage Attack of MD5". 2009 International Conference on Computational Intelligence and Security. International Conference on Computational Intelligence and Security. Vol. 1. IEEE Computer Society. pp. 442–445. doi:10.1109/CIS.2009.214. ISBN 978-0-7695-3931-7. S2CID 16512325.
  45. ^ "Availability and description of the File Checksum Integrity Verifier utility". Microsoft Support. 17 June 2013. Retrieved 10 April 2014.
  46. ^ "How to compute the MD5 or SHA-1 cryptographic hash values for a file". Microsoft Support. 23 January 2007. Retrieved 10 April 2014.
  47. ^ "FreeBSD Handbook, Security – DES, Blowfish, MD5, and Crypt". Retrieved 19 October 2014.
  48. ^ "Synopsis – man pages section 4: File Formats". Docs.oracle.com. 1 January 2013. Retrieved 10 April 2014.
  49. ^ NIST SP 800-132 섹션 5.1
  50. ^ "Reference Source".
  51. ^ RFC 1321 섹션 2, "용어와 표기법", 페이지 2.

추가 정보

외부 링크