Message-Digest algorithm
MD4
The MD4 Message-Digest Algorithm is a cryptographic hash function developed by Ronald Rivest in 1990. The digest length is 128 bits. The algorithm has influenced later designs, such as the MD5, SHA-1 and RIPEMD algorithms.
MD5
MD5(Message-Digest algorithm 5)는 128비트 암호화 해시 함수이다. RFC 1321로 지정되어 있으며, 주로 프로그램이나 파일이 원본 그대로인지를 확인하는 무결성 검사 등에 사용된다. 1991년에 로널드 라이베스트가 예전에 쓰이던 MD4를 대체하기 위해 고안했다.
1996년에 MD5의 설계상 결함이 발견되었다. 이것은 매우 치명적인 결함은 아니었지만, 암호학자들은 해시 용도로 SHA-1와 같이 다른 안전한 알고리즘을 사용할 것을 권장하기 시작했다. 2004년에는 더욱 심한 암호화 결함이 발견되었고. 2006년에는 노트북 컴퓨터 한 대의 계산 능력으로 1분 내에 해시 충돌을 찾을 정도로 빠른 알고리즘이 발표되기도 하였다. 현재는 MD5 알고리즘을 보안 관련 용도로 쓰는 것은 권장하지 않으며, 심각한 보안 문제를 야기할 수도 있다. 2008년 12월에는 MD5의 결함을 이용해 SSL 인증서를 변조하는 것이 가능하다는 것이 발표되었다.
MD5 개념정리
MD5는 해쉬 함수의 일종으로 MD2, MD4, MD5로 발전되어 왔다. MD2, MD4, MD5 란 무엇인가? MD2, MD4, MD5는 Rivest가 개발한 메시지 요약 알고리즘이다.
그것들은 개인키로 사인하기 전에 안전한 방법으로 큰 메시지를 "압축"해야 하는 디지털 사인 응용프로그램을 위한 것이다. 모든 세 알고리즘은 변덕스러운 길이의 메시지를 가지고 128비트의 메시지 요약을 생성한다. 이 알고리즘의 구조가 약간 비슷하다고 하더라도, MD2의 설계는 MD4와 MD5의 설계화 매우 다르고, MD2는 8비트 컴퓨터용으로 최적화되었고, Md4와 Md5는 32비트 컴퓨터용으로 되어있다.
이 세 알고리즘에 대한 소스 코드와 설명서는 인터넷 RFCs 1319-1321에서 찾을 수 있다. MD2는 1989년에 Rivest에 의해 개발되었다. 메시지는 첫째로 이것의 길이가 16바이트로 나누어질 수 있도록 덧붙여 진다. 16바이트 검사 합(checksum)은 메시지에 붙여진다. 그리고 해쉬 값은 이 결과 메시지로 계산된다. Rogier와 Chauvaud는 만약 검사합의 계산이 생략된다면 MD2에서 충돌이 이루어 질 수 있다는 것을 발견하였다. 이것은 단지 MD2에만 알려진 공격 결과이다. MD4는 1990년 Rivest에 의해 개발 되었다. 메시지는 이것의 길이에 448비트를 더한 것이 512비트로 나누어질 수 있다는 것을 보장하도록 덧붙여 진다. 메시지의 진짜길이의 64비트 이진 표시는 그 메시지에 연결된다. 메시지는 Damgard/Markle 반복 구조에서 512비트 블록으로 처리되고, 각 블록은 3개의 구별되는 라운드에서 처리된다. Md4버전에서 첫 번째 또는 마지막 라운드에 대한 공격은 Den Boer와 Bosselaers와 다른 사람들에 의해서 빨리 개발 되었다. Dobbertin은 어떻게 PC에서 몇 분만에 MD4의 전체 버전에서 충돌이 발견할 수 있는지를 보여주었다. 확실하게, MD4는 깨졌다고 볼 수 있다.
MD5는 1991년에 Rivest에 의해 개발되었다. 이것은 "안전벨트"를 가진 MD4를 기본으로 한다. 그리고 이것이 MD4보다 약간 느릴지라도, 이것은 더 안전하다. 알고리즘은 MD4와 약간 다르게 설계된 네 개의 구별된 라운드로 이루어 진다. 메시지 요약 크기는 덧붙임이 필요한 만큼 같게 남는다. Den Boer 그리고 Bosselaers는 MD5에 대한 의사 충돌을 찾아냈지만, 알려진 공격 결과는 없다. Van Oorschot와 Wiener는 해쉬 함수에서 충돌을 찾기 위해서 전역공격을 생각하였다. 그리고 그들은 MD5용으로 특별히 설계된 충돌 탐지 기계가 평균적으로 24일에 MD5에서 충돌을 찾을 수 있다고 예측하였다. 일반적인 기술은 다른 해쉬 함수에 적용 될 수 있다.
JavaScript 해싱 속도 비교 MD5 vs SHA-256
- MD5는 SHA-256보다 느리며, 보안성이 낮다.
- MD5는 과거에 사용되던 해시 알고리즘으로, 현재는 암호학적으로 안전하지 않다.
- SHA-256은 256비트 해시 출력을 제공하며, 더 높은 보안성을 제공한다.
- 테스트 결과 SHA-256은 MD5보다 처리 속도에서도 더 우수하다.
- 테스트는 최신 자바스크립트 런타임을 사용하여 수행되었다.
- Bun 1.31과 Node.js 23 버전을 사용하여 ARM과 Intel 시스템에서 테스트가 진행되었다.
- Apple M2, Intel Ice Lake, Amazon Graviton 4 시스템에서의 성능이 비교되었다.
- SHA-256은 현대 프로세서에서 더 빠른 성능을 보인다.
- MD5는 Apple M2 시스템에서 0.7 GB/s, SHA-256은 2.6 GB/s의 처리 속도를 기록했다.
- Intel 및 ARM 기반 시스템에서도 SHA-256이 MD5보다 높은 성능을 보였다.
- 현대 프로세서는 SHA-256을 가속화하기 위한 암호화 확장을 제공한다.
- MD5는 실질적으로 사용하지 않는 것이 권장된다.
- 보안 문제가 있는 MD5를 대체할 강력한 대안으로 SHA-256을 사용하는 것이 더 안전하다.
- SHA-256은 안전성과 성능을 모두 제공하며, 암호화 및 데이터 무결성을 보장한다.