12장-MAC

2025. 5. 11. 17:56·컴퓨터 보안

 

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를 해시 함수의 블록 크기에 맞게 조정한다

🔹 처리 절차 :

  1. 키가 블록보다 길면 해시로 압축
  2. ipad, opad와 키를 XOR해 준비
  3. 내부 해시: H(K ⊕ ipad || 메시지)
  4. 외부 해시: H(K ⊕ opad || 내부 해시 결과)
  5. 최종 결과가 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)을 동시에 보장하는 암호 시스템

🔹 대표 방식

  1. Authenticate then Encrypt → 대표: CCM
  2. Encrypt then Authenticate → 대표: GCM (Galois/Counter Mode)
  3. 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(카운터) 모드 사용:
    1. 평문 M을 CTR 모드로 암호화 -> 암호문 C 생성
      C = Encrypt_CTR(M)
    2. 위에서 생성한 태그 T도 CTR 모드로 암호화 -> T_enc
      T_enc = Encrypt_CTR(T)
  • 결과적으로 전송: C || T_enc (암호문 + 암호화된 인증 태그)

🔹정리:

단계 입력 출력
인증 M, 길이 등 인증 태그 T
암호화 M -> CTR, T -> CTR 암호문 C, 암호화된 태그 T_enc

 

💡 중요 포인트:

  • CBC-MAC은 메시지의 정합성을 보장하고, CTR은 메시지와 태그를 안전하게 암호화함

-> 이중 보안 효과: 기밀성 + 무결성 보장


난수 생성기 DRBG – SP 800-90Ar1

🔹 DRBG = Deterministic Random Bit Generator

 

🔹 종류:

  1. Hash_DRBG
    • 내부에 해시 함수 사용 (예: SHA-256)
    • 엔트로피 입력을 해시하여 초기값 V, 상수 C 설정
    • 반복적으로 해시하여 무작위 비트 스트림 생성
  2. 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
'컴퓨터 보안' 카테고리의 다른 글
  • 10장-기타 공개키 암호 시스템
  • 9장-공개키 암호 & RSA
  • 11장-암호학 해시함수
  • 8장-난수와 스트림암호
samsam031
samsam031
samsam031 님의 블로그 입니다.
  • samsam031
    samsam031 님의 블로그
    samsam031
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 디지털포렌식
      • 드림핵 문제풀이
      • 대외활동
      • 개발 실습
      • 컴퓨터 보안
      • 클라우드
      • 자격증
      • 자연어처리
      • 백엔드
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
samsam031
12장-MAC
상단으로

티스토리툴바