해시 알고리즘 비교: MD5, SHA-1, SHA-256, 그리고 그 이상
암호학적 해시 함수는 현대 컴퓨팅의 기초입니다. 파일 무결성을 검증하고, 비밀번호를 보호하며, 메시지를 인증하고, 블록체인 기술을 뒷받침합니다. 하지만 모든 해시 알고리즘이 동일하게 만들어진 것은 아닙니다. 이 가이드에서는 가장 널리 사용되는 알고리즘을 비교하고 올바른 선택을 돕습니다.
해시 함수란?
해시 함수는 어떤 크기의 입력이든 받아 고정 길이의 출력("다이제스트" 또는 "해시")을 생성합니다. 좋은 해시 함수는 세 가지 핵심 속성을 가집니다:
- 결정론적: 같은 입력은 항상 같은 출력을 생성
- 눈사태 효과: 입력의 작은 변경이 출력을 완전히 변경
- 단방향: 해시를 원래 입력으로 되돌리는 것이 계산적으로 불가능
이러한 속성은 해시를 데이터 무결성 검증과 보안 응용에 매우 유용하게 만듭니다.
알고리즘 비교
| 알고리즘 | 출력 크기 | 속도 | 보안 상태 | 오늘 사용? |
|---|---|---|---|---|
| MD5 | 128 비트 | 매우 빠름 | 깨짐 | 체크섬만 |
| SHA-1 | 160 비트 | 빠름 | 깨짐 | 아니오 |
| SHA-256 | 256 비트 | 보통 | 안전 | 예 |
| SHA-384 | 384 비트 | 보통 | 안전 | 예 |
| SHA-512 | 512 비트 | 64비트에서 빠름 | 안전 | 예 |
| SHA-3-256 | 256 비트 | 보통 | 안전 | 예 |
| BLAKE2b | 256-512 비트 | 매우 빠름 | 안전 | 예 |
| BLAKE3 | 256 비트 | 극히 빠름 | 안전 | 예 |
MD5: 깨진 표준
MD5는 1991년 Ronald Rivest가 설계했으며, 128비트 해시를 생성합니다. 10년 이상 체크섬과 무결성 검증의 기본 선택이었습니다.
MD5가 깨진 이유: 2004년 연구자들이 실용적인 충돌 공격을 시연했습니다 — 같은 해시를 생성하는 두 개의 다른 입력을 찾는 것입니다. 2008년에는 MD5 충돌을 사용한 위조 CA 인증서가 만들어졌습니다. 오늘날 충돌은 소비자 하드웨어에서 몇 초 만에 발견됩니다.
MD5가 여전히 허용되는 경우: 변조가 우려되지 않는 파일 다운로드 확인과 같은 비보안 체크섬. 보안과 관련된 모든 것에는 MD5를 완전히 피하세요.
SHA-1: 폐기되었지만 잔존
SHA-1은 NSA가 설계하고 1995년에 공개했으며, 160비트 해시를 생성합니다. 수년간 MD5를 대체한 표준이었습니다.
SHA-1이 깨진 이유: Google과 CWI Amsterdam이 2017년에 실용적 충돌을 시연했습니다 ("SHAttered" 공격). 주요 브라우저는 2017년에 SHA-1 인증서 지원을 중단했습니다. Git은 원래 커밋 해시에 SHA-1을 사용했으며 SHA-256으로 전환 중입니다.
현재 상태: 모든 보안 목적에 대해 폐기됨. 레거시 시스템에서 SHA-1을 발견하면 SHA-256 또는 SHA-3으로의 마이그레이션 경로를 계획하세요.
SHA-256: 현재 표준
SHA-256은 NSA가 설계하고 2001년에 공개한 SHA-2 계열에 속합니다. 256비트 해시를 생성하며 오늘날 가장 널리 사용되는 안전한 해시 알고리즘입니다.
보안: SHA-256에 대한 실용적 공격은 발견되지 않았습니다. 128비트의 충돌 저항성을 제공하며, 이는 예상 가능한 미래에 충분한 것으로 간주됩니다.
성능: SHA-256은 MD5와 SHA-1보다 느리며, 이는 비밀번호 해싱에 사용될 때 실제로 장점입니다 (느릴수록 = 무차별 대입이 더 어려움). 하드웨어 가속 (SHA-NI 명령어)이 있는 최신 CPU에서는 성능이 우수합니다.
SHA-256 사용처:
- TLS/SSL 인증서
- 비트코인 채굴
- 디지털 서명
- 코드 서명
- 파일 무결성 검증
해시 생성기로 SHA-256 해시를 즉시 생성하세요.
SHA-3: 대안 표준
SHA-3는 Keccak 알고리즘에 기반하며, 2012년 NIST 해시 함수 경쟁에서 우승했습니다. SHA-2와 완전히 다른 내부 구조 (스펀지 구성)를 사용합니다.
SHA-3가 중요한 이유: 수학적 돌파구가 SHA-2를 무력화하면, SHA-3는 완전히 독립적인 대안을 제공합니다. 다른 설계는 SHA-2의 취약점이 SHA-3에 영향을 미칠 가능성이 낮다는 것을 의미합니다.
채택: SHA-2가 여전히 깨지지 않았기 때문에 SHA-3 채택은 예상보다 느렸습니다. 블록체인 응용과 심층 방어 아키텍처에서 보조 해시로 점점 더 많이 사용됩니다.
BLAKE2와 BLAKE3: 속도 챔피언
BLAKE2 (2012)와 BLAKE3 (2020)는 보안을 훼손하지 않으면서 성능을 위해 설계된 최신 해시 함수입니다.
BLAKE3 하이라이트:
- 최신 CPU에서 MD5보다 빠름
- 본질적으로 병렬 (CPU 코어에 따라 확장)
- 256비트 출력
- 키 해싱 및 키 도출을 위한 내장 지원
속도가 중요하고 NIST 표준에 제한되지 않는 응용에서 BLAKE3는 훌륭한 선택입니다.
올바른 알고리즘 선택
비밀번호 해싱용
위의 어떤 것도 직접 사용하지 마세요. 전용 비밀번호 해싱 함수를 사용하세요: Argon2id (비밀번호 해싱 경쟁 우승자), bcrypt, 또는 scrypt. 이들은 무차별 대입 공격에 저항하기 위해 의도적으로 느리고 메모리 집약적입니다. 비밀번호 보안 가이드에서 더 알아보세요.
파일 무결성용
SHA-256이 표준 선택입니다. 성능이 중요하고 양 끝점을 모두 제어하는 경우, BLAKE3가 안전하면서 더 빠릅니다.
디지털 서명용
필요한 보안 수준에 따라 SHA-256 또는 SHA-384. 정부 및 금융 응용은 종종 SHA-384 또는 SHA-512를 의무화합니다.
체크섬 (비보안)용
보안이 우려되지 않을 때 속도를 위해 CRC32 또는 xxHash. 암호학적 보장이 필요하면 SHA-256이 최소입니다.
블록체인 응용용
SHA-256 (비트코인), Keccak-256 (이더리움), 또는 BLAKE2b (Zcash). 선택은 특정 프로토콜 요구사항에 따라 달라집니다.
해시 충돌 설명
충돌은 두 개의 다른 입력이 같은 해시 출력을 생성할 때 발생합니다. 생일 역설은 충돌이 예상보다 훨씬 빨리 발견된다는 것을 의미합니다:
- 128비트 해시 (MD5)의 경우, 충돌에 약 2^64 연산이 필요
- 256비트 해시 (SHA-256)의 경우, 충돌에 약 2^128 연산이 필요
이 기하급수적 차이가 해시 길이를 두 배로 하는 것이 보안을 두 배 이상 제공하는 이유입니다.
실용적 예시
같은 입력이 다른 알고리즘에서 어떻게 보이는지:
Input: "Hello, World!"
MD5: 65a8e27d8879283831b664bd8b7f0ad4
SHA-1: 0a0a9f2a6772942557ab5355d76af442f8f65e01
SHA-256: dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f
해시 생성기에서 직접 생성해보세요. 모든 계산은 브라우저에서 이루어지며 — 데이터는 비공개로 유지됩니다.
자주 묻는 질문
SHA-256은 양자 내성인가요?
SHA-256은 양자 공격에 부분적으로 내성이 있습니다. Grover의 알고리즘은 사전 이미지 공격에 대해 유효 보안을 256비트에서 128비트로 줄일 수 있으며, 이는 여전히 안전한 것으로 간주됩니다. 충돌 저항에 대해서는 양자 컴퓨터가 덜 유리합니다. 포스트 양자 암호 표준은 해시 함수보다 암호화와 서명에 더 초점을 맞추고 있습니다.
추가 보안을 위해 SHA-256 대신 SHA-512를 사용해야 하나요?
대부분의 응용에서 SHA-256은 충분한 보안을 제공합니다. SHA-512는 내부 구조 때문에 64비트 프로세서에서 실제로 더 빠르므로 성능상의 이유로 좋은 선택이 될 수 있습니다. 추가 해시 길이는 추가적인 충돌 저항을 제공하지만 결정 요인인 경우는 드뭅니다.
관련 리소스
- 해시 생성기 — MD5, SHA-1, SHA-256, SHA-512 해시를 온라인으로 생성
- 비밀번호 보안 가이드 — 비밀번호 생성 및 저장 모범 사례
- JWT 토큰 설명 — 해시 알고리즘이 JSON Web Token을 보호하는 방법