개념 사전 · 개념

HMAC

Hash-based Message Authentication Code · 해시 기반 메시지 인증 코드

은 공유 비밀키와 를 결합해 메시지의 무결성과 키 보유자에게서 왔음을 검증하는 방식이다. 공개 해시와 달리 검증값 생성에 키가 필요하지만 공유키 보유자들 사이의 부인방지는 제공하지 않는다.

밑줄 용어에 마우스를 올리거나, 키보드로 선택하거나, 터치하면 설명을 볼 수 있습니다.

01무엇이고, 어떤 일을 하나

  • 메시지·요청의 변경을 검출한다.
  • 공유키를 아는 송수신자 사이에서 메시지 인증을 수행한다.
  • 단순한 키와 메시지 연결 해시의 설계 오류를 피한다.

02어떤 순서로 동작하나

  1. 키 정규화

    해시의 블록 크기보다 긴 키는 먼저 해시하고, 짧은 키는 0을 덧붙여 블록 크기에 맞춘 K0로 만든다. 이 과정은 메시지 패딩과 구분한다.

  2. 내부 해시

    블록 크기만큼 반복된 0x36인 와 K0를 XOR한 뒤 메시지를 이어 붙여 해시한다. 메시지 바이트와 인코딩이 달라지면 내부 결과도 달라진다.

  3. 외부 해시

    0x5c 반복값인 와 K0를 XOR한 값에 내부 해시 결과를 이어 붙여 다시 해시한다. 이 중첩 구조가 태그를 만든다.

  4. 수신 검증

    수신자가 같은 키·해시·메시지로 계산한 태그와 받은 값을 비교한다. 유효한 태그라도 과거 메시지 재사용을 막으려면 별도의 시각·Nonce·요청 상태가 필요하다.

03먼저 알아둘 용어와 구성요소

비밀키로 메시지의 인증값을 만드는 일반적인 구조.
내부 해시에 사용하는 반복 패딩 상수.
외부 해시에 사용하는 다른 패딩 상수.
수신자가 다시 계산하여 비교하는 인증값.

04예제로 따라가기

  • 키가 없는 SHA-256 파일 해시는 공격자가 파일과 해시를 함께 바꾸면 출처 인증을 제공하지 못한다.
  • 공유키 K로 을 만든 요청은 수신자가 동일한 바이트와 K로 다시 계산해 비교한다.
  • 같은 본문이라도 공백·줄바꿈·인코딩이 달라지면 입력이 바뀌므로 요청 정규화 규칙을 일치시켜야 한다.

05혼동하기 쉬운 점과 확인 기준

  • 은 내용을 숨기지 않으므로 기밀성이 필요하면 암호화된 채널과 함께 사용한다.
  • 양쪽이 같은 키를 가지므로 어느 한쪽이 서명자였는지를 제3자에게 구분해 증명하는 과 다르다.

06상세 노트 · 실습 자료

헤더 구조, 설정 예시, 수치 계산과 수업 캡처는 아래 노트에서 이어집니다.

공식 문서 · 표준

기초 개념과 동작 설명을 대조한 자료입니다. 제품 버전과 실제 설정에 따른 차이는 본문 및 원문에서 확인하세요.