개념 사전 · 개념
HMAC
Hash-based Message Authentication Code · 해시 기반 메시지 인증 코드
은 공유 비밀키와 를 결합해 메시지의 무결성과 키 보유자에게서 왔음을 검증하는 방식이다. 공개 해시와 달리 검증값 생성에 키가 필요하지만 공유키 보유자들 사이의 부인방지는 제공하지 않는다.
밑줄 용어에 마우스를 올리거나, 키보드로 선택하거나, 터치하면 설명을 볼 수 있습니다.
01무엇이고, 어떤 일을 하나
- 메시지·요청의 변경을 검출한다.
- 공유키를 아는 송수신자 사이에서 메시지 인증을 수행한다.
- 단순한 키와 메시지 연결 해시의 설계 오류를 피한다.
02어떤 순서로 동작하나
- 키 정규화
해시의 블록 크기보다 긴 키는 먼저 해시하고, 짧은 키는 0을 덧붙여 블록 크기에 맞춘 K0로 만든다. 이 과정은 메시지 패딩과 구분한다.
- 내부 해시
블록 크기만큼 반복된 0x36인 와 K0를 XOR한 뒤 메시지를 이어 붙여 해시한다. 메시지 바이트와 인코딩이 달라지면 내부 결과도 달라진다.
- 외부 해시
0x5c 반복값인 와 K0를 XOR한 값에 내부 해시 결과를 이어 붙여 다시 해시한다. 이 중첩 구조가 태그를 만든다.
- 수신 검증
수신자가 같은 키·해시·메시지로 계산한 태그와 받은 값을 비교한다. 유효한 태그라도 과거 메시지 재사용을 막으려면 별도의 시각·Nonce·요청 상태가 필요하다.
03먼저 알아둘 용어와 구성요소
- 비밀키로 메시지의 인증값을 만드는 일반적인 구조.
- 내부 해시에 사용하는 반복 패딩 상수.
- 외부 해시에 사용하는 다른 패딩 상수.
- 수신자가 다시 계산하여 비교하는 인증값.
04예제로 따라가기
- 키가 없는 SHA-256 파일 해시는 공격자가 파일과 해시를 함께 바꾸면 출처 인증을 제공하지 못한다.
- 공유키 K로 을 만든 요청은 수신자가 동일한 바이트와 K로 다시 계산해 비교한다.
- 같은 본문이라도 공백·줄바꿈·인코딩이 달라지면 입력이 바뀌므로 요청 정규화 규칙을 일치시켜야 한다.
05혼동하기 쉬운 점과 확인 기준
- 은 내용을 숨기지 않으므로 기밀성이 필요하면 암호화된 채널과 함께 사용한다.
- 양쪽이 같은 키를 가지므로 어느 한쪽이 서명자였는지를 제3자에게 구분해 증명하는 과 다르다.
06상세 노트 · 실습 자료
헤더 구조, 설정 예시, 수치 계산과 수업 캡처는 아래 노트에서 이어집니다.
공식 문서 · 표준
기초 개념과 동작 설명을 대조한 자료입니다. 제품 버전과 실제 설정에 따른 차이는 본문 및 원문에서 확인하세요.