HMAC이란 무엇인가요?
HMAC(Hash-Based Message Authentication Code)은 암호화 해시 함수와 비밀 키를 결합하여 고정 크기 인증 코드를 생성하는 암호화 메커니즘으로, 수신자가 메시지의 무결성과 진본성을 모두 검증할 수 있게 한다.
다른 이름: Hash-Based Message Authentication Code, HMAC-SHA256
SHA-256 같은 일반 해시 함수는 데이터 무결성을 검증할 수 있다. 해시가 일치하면 데이터가 변경되지 않은 것이다. 그러나 해시만으로는 진본성을 검증할 수 없다. 누구나 해시를 계산할 수 있기 때문이다. HMAC은 비밀 키를 해싱 과정에 통합하여 이를 해결한다. 키를 보유한 당사자만 올바른 HMAC 값을 생성하거나 검증할 수 있어 단일 연산으로 무결성과 인증을 제공한다.
RFC 2104에 정의된 HMAC 구성은 특정 단계에서 키를 혼합하여 해시 함수를 두 번 적용한다. 이 이중 패스 구조는 길이 확장 공격과 키를 메시지와 단순히 연결한 후 해싱할 경우 발생하는 다른 취약점으로부터 보호한다. HMAC-SHA256(SHA-256을 기반 해시로 사용하는 HMAC)은 가장 일반적인 변형으로 256비트 인증 코드를 생성한다.
HMAC은 보안 프로토콜 전반에 광범위하게 사용된다. JWT 서명, API 인증, 웹훅 검증, TLS 레코드 보호, OAuth 모두 HMAC을 사용한다. 효율성 덕분에 비대칭 서명 방식이 허용할 수 없는 지연 시간을 도입하는 네트워크 패킷이나 API 요청 같은 고용량 데이터 인증에 실용적이다.
Sign a message with HMAC-SHA256
Edit either the key or the message and watch the signature change completely — the avalanche effect that makes HMAC forgery-resistant.
computing…
A verifier with the same key recomputes the HMAC over the received message; if it matches, the message was authored by someone who knows the key andwasn't modified in transit. Vaulted uses this exact construction to issue tamper-proof status-page tokens.
Vaulted가 HMAC을 사용하는 방법
Vaulted는 HMAC-SHA256을 사용하여 비밀 상태 페이지의 안전한 토큰을 생성한다. 비밀이 생성되면 서버 측 키를 사용하여 비밀 ID에 대한 HMAC이 계산된다. 이 HMAC 토큰은 상태 페이지 URL에 포함되어, 비밀 생성자가 조회를 소비하거나 암호화된 내용에 접근하는 방법을 제공하지 않으면서 비밀이 조회되었는지 또는 만료되었는지 확인할 수 있게 한다. HMAC은 또한 패스프레이즈에서 키를 파생할 때 PBKDF2의 유사 무작위 함수로 내부적으로 사용된다.