
Message Authentication Code (MAC)

🔹 목적
- 다음과 같은 공격을 방지:
- 가장 공격(Masquerade): 위장한 발신자
- 내용/순서/타이밍 변경(Content, sequence, timing modification)
🔹 기능
- MAC은 메시지와 비밀 키를 입력으로 받아 고정 길이 인증 태그를 생성.
- 이 태그로 메시지 무결성과 송신자 인증을 검증.
Figure 12.4 – MAC 사용 예시

🔹그림의 흐름과 각 요소 설명
- M: 전송하려는 원본 메시지
- K 또는 K₁, K₂: 공유 비밀 키 (MAC 생성과 검증에 사용)
- C: MAC 생성 함수 (Message Authentication Code)
- ||: 메시지와 MAC을 묶는 함수 또는 인터페이스
- E, D: 암호화(Encryption), 복호화(Decryption) 과정
- Compare: 수신자가 계산한 MAC과 전송된 MAC을 비교하는 과정
🔹각 시나리오 간단 정리
| 시나리오 | 설명 |
| (a) 단순 MAC | - 메시지 M과 비밀 키 K로 MAC C를 생성 - M과 C를 전송 - 수신자는 K와 받은 M으로 MAC을 다시 계산해서 C와 비교 -> 메시지 무결성 확인 |
| (b) MAC + 평문 전송 | - 평문 M에 대해 MAC C 생성 - M과 C를 함께 암호화 (예: E_K(M || C)) - 수신자는 복호화한 뒤 MAC을 검증 -> 기밀성 + 무결성 |
| (c) MAC + 암호문 전송 | - M을 먼저 암호화해 C₁ = E_K(M) - 암호문 C₁에 대해 MAC C₂ = MAC_K(C₁) 생성 - C₁과 C₂ 전송 - 수신자는 C₁에 대해 MAC을 다시 계산해 C₂와 비교 -> 통과하면 복호화 진행 |
🔹추가 설명
- (a)는 MAC만으로 무결성 확인 가능하지만, 메시지 내용은 암호화하지 않음
- (b)는 무결성과 기밀성을 동시에 제공하려고 평문과 MAC을 같이 암호화
- (c)는 메시지를 먼저 암호화해서 기밀성 보장, 그 암호문에 MAC을 붙여 무결성 보장
HMAC (Hash-based MAC)

🔹 동기
- MD5, SHA처럼 해시 기반 알고리즘은 블록 암호보다 빠르고 구현이 간편
- HMAC은 IP 보안에서 표준으로 채택됨 (FIPS 198-1)
HMAC의 구조

🔹 주요 요소
- ipad와 opad는 HMAC에서 사용하는 두 가지 고정된 바이트 값(0x36, 0x5C 반복)
- HMAC은 키 K를 해시 함수의 블록 크기에 맞게 조정한다
🔹 처리 절차 :
- 키가 블록보다 길면 해시로 압축
- ipad, opad와 키를 XOR해 준비
- 내부 해시: H(K ⊕ ipad || 메시지)
- 외부 해시: H(K ⊕ opad || 내부 해시 결과)
- 최종 결과가 MAC
| 단계 | 설명 (표) | 흐름도 (그림) |
| 1~3 | 키 K를 블록 크기에 맞게 정리 (K0 생성) | Determine K0 |
| 4 | K0와 ipad XOR | K0 ⊕ ipad |
| 5 | K0 ⊕ ipad 뒤에 메시지(text) 붙임 | `(K0 ⊕ ipad) |
| 6 | 내부 해시 함수 적용 | `H((K0 ⊕ ipad) |
| 7 | K0와 opad XOR | K0 ⊕ opad |
| 8 | XOR 결과와 내부 해시 결과 결합 | `(K0 ⊕ opad) |
| 9 | 최종 해시 함수 적용 → HMAC 완성 | `H((K0 ⊕ opad) |
🔹 표준화 현황
- FIPS 198-1은 HMAC의 초기 표준.
- 현재는 NIST SP 800-224로 전환 중:
- 최신 해시 함수 시리즈인 SHA-3 블록 크기 반영
- 해시 출력 길이를 줄이는 트렁케이션(truncation) 같은 논의 포함
⇒ HMAC(K, M) = H( (K ⊕ opad) || H((K ⊕ ipad) || M) )
두 번 해시 + 패딩 처리로 안전성을 높임
✅ HMAC의 두 가지 패딩
| 구분 | 위치 | 역할 | 내용 |
| 1. 키 패딩 (외부) | Step 2~3 | 키 길이 맞추기 | 키 K를 블록 크기 B에 맞게 0으로 패딩 (짧을 경우) |
| 2. 메시지 패딩 (내부) | Step 6, 9에서 H(...) | 해시 보안 유지 | SHA 등 해시 함수가 자동으로 수행하는 Merkle–Damgård 패딩 (1 + 0 + 길이) |
DAA (FIPS PUB 113): DES 기반 데이터 인증 알고리즘

- DES 암호화를 기반으로 한 데이터 인증 알고리즘 흐름
- K: 비밀 키, D₁, D₂, ...는 데이터 블록
- 각 단계마다 이전 출력과 다음 데이터를 XOR하여 암호화
- 최종 DAC 값은 메시지 인증 코드로 사용됨
Cipher-based MAC: CMAC

🔹 기존 DAA(Data Authentication Algorithm)의 문제점
- 특정 방식으로 메시지 변조하면 MAC이 같게 나올 수 있음
🔹 CMAC 개선점
- 마지막 블록에 유도 키(K1, K2)를 XOR하여 보안 강화
- 메시지 길이를 입력에 포함하여 위조 방지 강화
🔹CMAC는 CBC-MAC의 한계를 보완한 강화 버전
- CMAC는 CBC-MAC을 기반으로 하지만 파생키를 사용해 보안성과 실용성을 강화한 표준 MAC 방식이다.
- CBC-MAC은 기본 구조, CMAC은 실제 실무에서 쓰기 안전하게 보완한 표준 구현이다.
- CCM (Counter with CBC-MAC) = CBC-MAC (무결성/인증) + CTR 모드 (기밀성/암호화)
CMAC 구조 (Figure 12.8)

🔹 키 유도
- L = E(K, 0^b)를 기반으로 파생 키 K1, K2 생성
🔹 처리 방식
- 각 메시지 블록을 블록 암호(CIPHK)로 암호화
- 마지막 블록에는 K1 또는 K2를 XOR
- 최종 출력 블록에서 MSB 일부를 잘라서 인증 태그 T 생성
Authenticated Encryption (AE)

🔹 개념
- 기밀성(confidentiality)과 무결성(authenticity)을 동시에 보장하는 암호 시스템
🔹 대표 방식
- Authenticate then Encrypt → 대표: CCM
- Encrypt then Authenticate → 대표: GCM (Galois/Counter Mode)
- Encrypt & Authenticate 별도로 → ❌ 안전하지 않음
⇒ 두 방식 모두 복호화와 검증이 간단함
CCM (Counter with CBC-MAC)

🔹 정의
- AES + CTR 모드 + CBC-MAC를 조합한 인증된 암호화 방식
- WiFi 보안 (IEEE 802.11i)를 위해 표준화 (NIST SP 800-38C, RFC 3610)
- 키 K 하나로 암호화와 인증 모두 수행
🔹 구성 요소
- AES: 대칭키 암호
- CTR 모드: 기밀성 제공 (스트림 암호화처럼 동작)
- CBC-MAC: 메시지 인증을 위한 MAC
🔹 인증 과정
- CBC-MAC으로 암호화 전 평문에 대한 MAC 생성
- 이 MAC은 나중에 검증을 위해 같이 전송됨
🔹 암호화 과정
- CTR 모드로 평문을 암호화하여 기밀성 제공
- CBC-MAC은 메시지 길이도 인코딩하여 위조 방지 강화
CCM 구조

🔹(a) 인증 (Authentication)
- 입력: 평문 M, 그 외 부가 정보 (nonce, 길이 등 포함)
- 처리:
- CBC-MAC 방식으로 평문 M과 관련 길이 정보를 포함하여 처리
- 결과: 태그 T (Message Authentication Code) 생성
- 즉: T = CBC-MAC(M, 길이 등)
🔹(b) 암호화 (Encryption)
- CTR(카운터) 모드 사용:
- 평문 M을 CTR 모드로 암호화 -> 암호문 C 생성
C = Encrypt_CTR(M) - 위에서 생성한 태그 T도 CTR 모드로 암호화 -> T_enc
T_enc = Encrypt_CTR(T)
- 평문 M을 CTR 모드로 암호화 -> 암호문 C 생성
- 결과적으로 전송: C || T_enc (암호문 + 암호화된 인증 태그)
🔹정리:
| 단계 | 입력 | 출력 |
| 인증 | M, 길이 등 | 인증 태그 T |
| 암호화 | M -> CTR, T -> CTR | 암호문 C, 암호화된 태그 T_enc |
💡 중요 포인트:
- CBC-MAC은 메시지의 정합성을 보장하고, CTR은 메시지와 태그를 안전하게 암호화함
-> 이중 보안 효과: 기밀성 + 무결성 보장
난수 생성기 DRBG – SP 800-90Ar1

🔹 DRBG = Deterministic Random Bit Generator
🔹 종류:
- Hash_DRBG
- 내부에 해시 함수 사용 (예: SHA-256)
- 엔트로피 입력을 해시하여 초기값 V, 상수 C 설정
- 반복적으로 해시하여 무작위 비트 스트림 생성
- HMAC_DRBG
- HMAC을 기반으로 동작
- 키(K)와 상태값(V)를 설정하고
- HMAC을 반복하여 무작위 비트 생성
🔹 공통 특징
- 입력 엔트로피가 적거나 고정되더라도 예측 불가능한 난수를 생성
- 업데이트 단계에서 내부 상태 갱신 → 안전성 유지
전체 요약: 인증, 암호화, 난수 생성
| 항목 | 설명 |
| MAC (Message Authentication Code) | 메시지와 비밀 키로부터 고정 길이의 인증값을 생성. 무결성과 송신자 인증 보장 |
| ┗ HMAC | 해시 함수(MD5, SHA 등)를 기반으로 한 MAC. 구현이 간편하고 소프트웨어에서 빠름 |
| ┗ CMAC | 블록 암호(DES, AES 등)를 기반으로 한 MAC. 보안 강화를 위해 K₁/K₂ 키 사용 |
| AE (Authenticated Encryption) | 인증과 암호화를 동시에 수행. 대표 방식: CCM, GCM |
| ┗ CCM | AES-CTR + CBC-MAC 조합. 평문 인증 후 암호화. WiFi 등에서 사용 |
| DRBG (Deterministic Random Bit Generator) | 예측 불가능한 난수 생성기. PRNG로 사용됨 |
| ┗ Hash_DRBG | 해시 함수 기반 DRBG (예: SHA-256) |
| ┗ HMAC_DRBG | HMAC을 이용한 DRBG. 내부 상태 갱신 구조 포함 |
'컴퓨터 보안' 카테고리의 다른 글
| 10장-기타 공개키 암호 시스템 (1) | 2025.05.27 |
|---|---|
| 9장-공개키 암호 & RSA (0) | 2025.05.13 |
| 11장-암호학 해시함수 (0) | 2025.05.11 |
| 8장-난수와 스트림암호 (0) | 2025.04.22 |
| 7장-Block Cipher Operation (0) | 2025.04.22 |