Choose a default theme

You can change your theme from the menu

HMAC

HMAC은 암호학적 해시 함수와 공유 비밀 키를 사용해 메시지 인증 코드를 만드는 구성이다. 키를 아는 상대가 메시지에 대한 태그를 계산하고 검증한다. 메시지 내용을 숨기는 암호화와는 역할이 다르다.

암호 알고리즘

암호화

AES · RSA

해시·인증

SHA-256 · HMAC

비밀번호 해싱

Argon2

분야

해시 기반 메시지 인증 코드

공유 키와 인증 태그

메시지와 키를 표준화된 내부·외부 해시 구조로 처리한다. HMAC-SHA-256처럼 이름 뒤에 사용하는 해시 함수를 붙여 구체적인 구성을 나타낸다. 단순히 비밀 문자열과 메시지를 이어 붙여 해시한 것을 HMAC이라고 부르지는 않는다.

웹훅 검증 예시

서비스가 웹훅의 원문 바이트에 대한 태그를 보내면 수신자는 같은 키로 다시 계산해 비교할 수 있다. JSON을 파싱한 뒤 공백과 필드 순서를 바꿔 재직렬화하면 원문 바이트와 달라질 수 있으므로 어떤 데이터를 서명 대상으로 정했는지 확인해야 한다.

재전송과 비교

올바른 태그는 그 메시지가 지금 처음 도착했다는 사실까지 보장하지 않는다. 재전송을 막아야 하는 프로토콜은 인증 대상에 시각이나 고유 식별자 등을 포함하고 수신 측 검증 규칙을 별도로 둔다. 태그 비교에는 사용하는 암호 라이브러리의 안전한 비교 기능을 활용한다.

전자서명과 구별

HMAC에서는 같은 비밀 키를 가진 검증자도 태그를 생성할 수 있다. 공개키만으로 검증하는 전자서명과 신뢰 구조가 다르다. RFC 2104는 구성 원리를 설명하는 역사적 문서이므로 당시 예시로 등장하는 해시 알고리즘을 현재의 권장 목록으로 그대로 받아들이지 않는다.

참고 자료