키 없이 누구나 동일한 결과를 생성할 수 있습니다. 데이터 변조 여부만 확인합니다.
HMAC: Hash-based Message Authentication Code
비밀키를 포함하여 계산합니다. 키 없이는 같은 결과를 만들 수 없어 발신자 인증까지 보장합니다.
HMAC(Key, Message) 구조로, 2회 해싱을 통해 키와 메시지를 결합하여 계산합니다.
| 항목 | 일반 Hash | HMAC |
|---|---|---|
| 키 필요 | ❌ 없음 | ✅ 비밀키 필수 |
| 무결성 검증 | ✅ | ✅ |
| 발신자 인증 | ❌ | ✅ |
| Length Extension Attack | ⚠ SHA-2 취약 | ✅ 구조적 차단 |
| 속도 | 빠름 | 약간 느림 (2회 해싱) |
| 대표 사용처 | 파일 체크섬 | JWT, API 서명, OAuth, 쿠키 |
일반 Hash는 "이 데이터가 변조됐는가?"만 확인합니다.
HMAC은 "이 데이터가 변조됐는가?" + "믿을 수 있는 발신자가 보낸 것인가?"를 동시에 보장합니다.
네트워크를 통해 데이터를 주고받는 모든 인증 시나리오에서는 일반 Hash 대신 HMAC을 사용하세요.
Hash-based Message Authentication Code — 비밀키 기반 메시지 인증 테스트 도구
키는 서버와 클라이언트가 사전에 공유한 비밀값입니다.