데이터의 무결성을 검증하고 보안을 유지하는 데 해시 알고리즘은 필수적인 역할을 합니다. 그중 가장 널리 알려진 것이 바로 SHA와 MD5입니다. 이 글에서는 두 알고리즘의 개념과 특징을 살펴보고, 주요 차이점을 표로 정리해 비교해 드립니다.
SHA(Secure Hash Algorithm)란?
SHA는 'Secure Hash Algorithm(안전 해시 알고리즘)'의 약자로, 미국 국립표준기술연구소(NIST)가 개발한 암호화 해시 함수 계열입니다.
SHA-1은 최대 264비트 길이의 임의의 메시지를 입력으로 받아 160비트 길이의 메시지 다이제스트를 생성합니다. SHA는 SSH, SSL, IPsec, S/MIME(Secure Multi-purpose Mail Extension) 등 다양한 보안 프로토콜과 응용 프로그램에서 폭넓게 활용되고 있습니다.
MD5(Message Digest 5)란?
MD5는 로널드 리베스트(Ron Rivest)가 개발한 범용 해싱 알고리즘으로, 오늘날에도 여러 인터넷 응용 프로그램에서 사용되고 있습니다. 임의 길이의 문자열로부터 128비트 길이의 고정된 값을 만들어내는 암호화 해시 알고리즘이며, 보안상 취약점이 있음에도 불구하고 주로 파일 무결성 검사 목적으로 널리 배포되어 왔습니다.
MD5는 이전 버전인 MD4 알고리즘을 기반으로 하며, 블록 단위로 동작하는 압축 함수가 핵심 구조입니다. 임의 길이의 메시지를 입력받아 해당 메시지에 대한 128비트 '지문(fingerprint)', 즉 '메시지 다이제스트'를 출력합니다.
MD5는 MD4만큼 빠르지는 않지만 훨씬 향상된 정보 보안성을 제공하며, SSH, SSL, IPsec과 같은 보안 프로토콜 및 응용 프로그램에서 일반적으로 사용됩니다.
암호화 해시 함수로서 MD5의 주요 목적은 파일이 변조되지 않고 동일하게 유지되었는지 확인하는 것입니다. MD5는 두 데이터 집합 각각에 대해 체크섬을 생성한 뒤, 두 체크섬을 서로 비교함으로써 동일 여부를 검사합니다.
MD5 메시지 다이제스트 해싱 알고리즘은 데이터를 512비트 블록 단위로 처리하며, 각 블록은 32비트 워드 16개로 나뉩니다. 최종 출력값은 128비트 메시지 다이제스트입니다.
SHA와 MD5 비교
그렇다면 SHA와 MD5는 어떤 점에서 다를까요? 아래 표에서 두 알고리즘의 주요 특징을 한눈에 비교할 수 있습니다.
| SHA | MD5 |
|---|---|
| Secure Hash Algorithm(안전 해시 알고리즘)의 약자입니다. | Message Digest(메시지 다이제스트)의 약자입니다. |
| 미국 국립표준기술연구소(NIST)가 개발한 암호화 해시 함수 계열입니다. SSH, SSL, IPsec, S/MIME 등 다양한 응용 분야에서 널리 사용됩니다. | 론 리베스트(Ron Rivest)가 개발한 범용 해싱 알고리즘입니다. 임의 길이의 문자열로부터 128비트 값을 생성하며, 파일 무결성 검사가 주요 목적입니다. |
| SHA-1은 160비트 길이의 메시지 다이제스트를 생성합니다. | MD5는 128비트 길이의 메시지 다이제스트를 생성합니다. |
| MD5에 비해 구조가 더 복잡합니다. | SHA-1보다 처리 속도가 빠릅니다. |
| 20개의 라운드(round)로 구성됩니다. | 16개의 라운드(round)로 구성됩니다. |
| MD5에 비해 상대적으로 더 많은 연산 능력이 필요합니다. | SHA-1에 비해 상대적으로 적은 연산 능력으로 동작합니다. |
| 더 안전하며 암호분석 공격에 상대적으로 덜 취약합니다. | 보안성이 낮아 암호분석 공격에 더 취약합니다. |
참고: 현재의 보안 권고 사항
두 알고리즘 모두 현재는 충돌 공격(collision attack)에 취약한 것으로 알려져 있습니다. MD5는 2004년 실질적인 충돌 공격 방법이 발표되었고, SHA-1 역시 2017년 'SHAttered' 공격으로 안전성이 훼손되었습니다. 따라서 새로운 시스템을 설계할 때는 SHA-256, SHA-512 등 SHA-2 계열이나 SHA-3를 사용하는 것이 강력히 권장됩니다. MD5는 보안 목적이 아닌 단순 체크섬 용도로만 제한적으로 사용하는 것이 좋습니다.