Chapter 10. 메시지 인증 코드(MAC : Message Authentication Code)¶
1절. 메시지 인증 코드
2절. 길이 확장 공격
3절. HMAC
4절. CBC-MAC
5절. CMAC
6절. 인증 암호(Authenticated Encryption)
1절. 메시지 인증 코드¶
MAC¶
-
메시지를 인증하고 메시지의 무결성과 진위성(정확성)을 보장하는 데 사용되는 짧은 정보
-
무결성 보장 : 우발적이거나 의도적인 메시지 변경 탐지
-
진위 보장 : 메시지의 출처 확인
기능¶
- 키 기반 암호학적 해시 함수(keyed(cryptographic) hash function)
- 암호학적 해시 함수는 MAC을 생성하는 방법 중 하나
- 입력값 : 비밀 키와 인증할 임의 길이의 메시지
- 출력값 : MAC(태그)
- MAC 값
- 메시지의 데이터 무결성과 진위 보호
- 검증자가(비밀 키를 소유한) 메시지 내용의 변경 여부를 확인 가능
알고리즘¶
- 키 생성 알고리즘
- 태그 생성 알고리즘 : \(T = Mac(K, M)\)
- 검증 알고리즘 : \(Vrfy(K, M, T) = 1/0\)
보안¶
- 선택 평문 공격에 대해 존재적 위조를 저항해야 안전
- 공격자가 비밀 키를 가지고 있고, 공격자가 선택한 메시지에 대해 MAC을 생성하는 오라클에 접근가능할 경우
- 공격자가 오라클을 쿼리하는 데 사용되지 않은 다른 메시지의 MAC을 추측할 수 없음
- 불가능할 정도의 계산을 수행 필요
구현¶
- 암호학적 원시 함수에서 구성
- 암호학적 해시 함수(HMAC의 경우)
- 블록 암호 알고리즘(CMAC의 경우)
2절. 길이 확장 공격¶
길이 확장 공격(Length Extension Attack)¶
- 공격자가 \(H(m_1)\)과 \(m_1\)의 길이를 사용하여 \(m_1\)의 내용은 알 필요 없이 공격자가 제어하는 \(m_2\)에 대해 \(H(m_1 ‖ m_2)\)를 계산할 수 있는 공격의 일종
- MD5, SHA-1, SHA-2와 같이 Merkle–Damgård 구조를 기반으로 한 알고리즘은 이러한 종류의 공격에 취약
- SHA-3 알고리즘 제외(안취약함)
3절. HMAC¶
HMAC (키 기반 해쉬 메시지 인증 코드 또는 해쉬 기반 메시지 인증 코드)¶
- SHA-2 또는 SHA-3와 같은 암호학적 해쉬 함수는 HMAC 계산에 사용
-
HMAC-X(X : 사용된 해쉬 함수)
-
HMAC-SHA256
-
HMAC-SHA3-256
-
두 번의 해쉬 계산을 사용
- 비밀 키 : 먼저 두 개의 키(내부 키와 외부 키)를 유도할 때 사용
- 첫 번째 패스 : 메시지와 내부 키에서 유도된 내부 해쉬 생성
- 두 번째 패스 : 내부 해쉬 결과와 외부 키에서 유도된 최종 HMAC 코드 생성
- 길이 확장 공격에 대해 더 나은 면역력을 제공
정의(RFC 2104)¶
\(HMAC(K, M) = H ( (K′ ⊕ opad) || H ((K′ ⊕ ipad) || M) )\)
- \(H\) : 암호학적 해쉬 함수
-
\(K′\) = {\(K\) : 해쉬 함수의 입력 블록 크기에 맞게 \(0\)으로 패딩} = {\(H(K)\) : 블록 크기보다 길 경우 \(H(K)\) 해쉬로의 대체}
-
\(M\) : 인증할 메시지
- \(||\) : 연결(concatenation)
- \(⊕\) : 배타적 논리합(XOR)
- opad : 외부 패딩(0x5c5c5c…5c5c, 하나의 블록 크기 길이의 16진수 상수)
- ipad : 내부 패딩(0x363636…3636, 하나의 블록 크기 길이의 16진수 상수)
- Example : MD5, SHA-1, SHA-224, SHA-256 해쉬 함수 = 블록 크기가 64바이트(512비트)
SHA-3 vs HMAC¶
- Keccak 해시 함수
- NIST가 SHA-3 경쟁의 승자로 선택
- 중첩된 접근 방식이 불필요
- 키를 메시지 앞에 추가하여 MAC을 생성
4절. CBC-MAC¶
CBC-MAC(암호 블록 연결 MAC)¶
- 메시지 M의 CBC-MAC을 계산하려면, 제로 IV(초기 벡터)로 CBC 모드에서 M을 암호화합니다.
- 고정 길이 메시지 : 안전
- 가변 길이 메시지 : 불안전
5절. CMAC¶
CMAC (암호 기반 MAC)¶
- 알고리즘
- Black과 Rogaway가 제안
- XCBC라는 이름으로 분석하여 NIST에 제출한 CBC-MAC의 변형
- 운영 모드
- CBC-MAC의 보안 결함 수정
- 고정 길이 메시지에 대해서만 안전
6절. 인증 암호(Authenticated Encryption)¶
인증 암호(Authenticated Encryption)¶
- 통신의 기밀성과 진위성(무결성)을 동시에 보호하는 암호화 시스템
- 작동 모드 : CCM & GCM