MAC·HMAC과 메시지 인증
공유키 인증 태그와 HMAC 구조, 재전송 방지 및 AEAD의 차이를 이해합니다.
1. MAC은 공유 비밀키로 태그를 만든다
MAC(Message Authentication Code)은 키 K와 메시지 M으로 태그를 만든다. 수신자는 같은 키로 다시 계산해 받은 태그와 비교한다.
송신: M, MAC(K, M)
수신: MAC(K, 받은 M)을 계산하여 받은 태그와 비교
정상 태그는 키 보유자가 만든 메시지라는 근거와 무결성 보호를 제공한다. 일반 해시처럼 공격자가 변경된 메시지의 인증값을 공개 정보만으로 다시 만들 수 없어야 한다. 다만 위조 성공 가능성이 수학적으로 0이라는 뜻은 아니다.
MAC은 메시지를 숨기지 않으며, 공유키를 가진 송신자·수신자 모두 태그를 만들 수 있어 일반적인 제3자 부인방지도 제공하지 않는다. 여러 장치가 같은 키를 공유하면 어느 장치가 만들었는지까지 자동으로 구분되지 않는다.
2. HMAC의 두 겹 해시 구조
HMAC은 해시 함수로 만드는 MAC이다. 기반 함수를 붙여 HMAC-SHA-256처럼 부른다. ||는 바이트열 연결, XOR는 배타적 논리합이다.
내부 해시 = H((K0 XOR ipad) || M)
HMAC = H((K0 XOR opad) || 내부 해시)
K0는 키를 해시의 내부 블록 길이에 맞춘 값이다. 키가 블록보다 길면 먼저 해시하고, 필요한 만큼 0을 덧붙여 블록 길이를 맞춘다. ipad는 0x36, opad는 0x5C 바이트를 블록 길이만큼 반복한 값이다. 두 상수는 비밀키가 아니라 내부·외부 처리를 구별하는 공개 상수다.
일반 해시에 비밀키를 단순히 앞이나 뒤에 붙인 것과 HMAC은 다르다. 해시의 구조적 성질을 고려한 정해진 구성을 사용한다. 원래 RFC에 나오는 오래된 해시 예시를 현재의 신규 적용 권장값으로 그대로 해석하지 않는다.
3. 무결성과 메시지의 새로움
공격자가 정상 메시지와 태그를 그대로 다시 보내면 태그는 여전히 유효할 수 있다. MAC 검증만으로 현재 요청인지 판단하지 못하기 때문이다.
| 값 | 보호할 내용 | 검증자가 해야 할 검사 |
|---|---|---|
| 순서번호 | 메시지 순서와 식별 | 이미 사용한 번호·중복 거부 |
| 타임스탬프 | 생성 시각 | 허용 시간 범위와 필요한 중복 검사 |
| nonce·challenge | 현재 교환을 식별하는 일회성 값 | 발급값 일치·미사용 여부 |
MAC(K, 순서번호 || 메시지)
순서번호를 붙이기만 하고 인증 대상에서 빼면 공격자가 번호를 바꿀 수 있다. 타임스탬프가 유효기간 안이어도 같은 메시지를 여러 번 처리하면 중복 거래가 생길 수 있다. 인증 대상에 포함하는 것과 사용 이력을 검사하는 것이 함께 필요하다.
4. HMAC·CMAC·AEAD
| 구분 | 기반·역할 |
|---|---|
| HMAC | 해시 기반 메시지 인증 |
| CMAC | AES 같은 블록 암호 기반 메시지 인증 |
| GCM·CCM | 암호화와 인증을 결합하는 AEAD |
CMAC은 블록 암호를 사용해도 메시지를 숨기는 암호화 기능으로 분류하지 않는다. GCM·CCM은 기밀성과 인증을 함께 제공하므로 순수 MAC과 역할이 다르다. 부가 인증 데이터는 암호화되지 않을 수 있다.
태그를 t비트로 줄이면 이상적인 단일 무작위 추측의 성공 가능성은 대략 1/2^t다. 짧은 태그에 많은 시도가 허용되면 위험이 누적된다. 실제 허용 길이는 사용하는 규격에 따른다.
5. 상황별 판단
‘누구나 계산 가능한 요약값’이면 일반 해시, ‘같은 비밀키로 검증’이면 MAC, ‘개인키로 만들고 공개키로 검증’이면 전자서명이다. MAC이 정상인데 과거 거래가 다시 처리됐다면 메시지 위조보다 재전송 검사의 누락을 먼저 의심한다.
접근통제에서 MAC은 Mandatory Access Control을 뜻한다. 같은 약어이므로 문맥을 확인한다.
개념 확인 문제
문제를 누르면 바로 아래에서 정답과 해설을 확인할 수 있습니다.
01HMAC에서 ipad·opad와 비밀키는 같은 것인가?
아니다. ipad·opad는 공개된 서로 다른 패딩 상수다. 비밀키를 정규화한 K0와 각각 XOR하여 내부·외부 해시에 사용한다.
02과거 정상 메시지와 MAC이 다시 도착했을 때 태그 검증만으로 중복 거래를 막을 수 있는가?
막을 수 없다. 순서번호·nonce 등을 인증 대상에 포함하고 중복·사용 여부를 검사해야 한다. 유효 태그와 새로운 요청은 다른 조건이다.