메세지 인증을 사용하는 이유는
1. 메세지 무결성 보호
2. 개시자의 신원검증
3. 발신자가 누구인지 증명
세가지 함수들이 대신 사용될 수 있다.
1. hash function
2. message encryption
3. message authentication code (MAC)
<preview>
Symmetric Message Encryption (대칭 암호화)
암호화와 복호화에 동일한 비밀키를 사용하는 암호화 방식
ex) AES, DES 등
Public-key Message Encryption (비대칭 암호화)
암호화와 복호화에 서로 다른 공개키와 비밀키를 사용하여 암호화 하는 방식
ex) RSA, ECC, Elgamal 등
Why use a MAC?
1. 인증만 필요한 경우
암호화가 필요하지 않고, 메세지의 진위 여부만 확인하면 되는 경우
ex) Alice가 Bob이 보낸 메세지가 변조되지 않았음만 확인하고 싶을 때, Alice에게서 메세지가 왔음만 확인하고 싶을 때
2. 인증이 암호화보다 더 오래 지속되어야 하는 경우
ex) 안전한 파일 시스템에서, 파일이 항상 암호화되지는 않지만 장기 저장 동안 변조되지 않았는지 확인하기 위해 MAC을 사용
MAC Properties
MAC = k(M)
k = secret key
M = Message
입력 M의 길이에 상관없이 MAC은 항상 고정된 크기의 인증코드로 생성된다.
Is a many-to-one function.
다양한 메세지들이 하나의 MAC 값을 가질 수 있다는 뜻.
그래서? M과 MAC을 알아도, 같은 MAC값을 가지고 있는 메세지를 찾을 수 없어야 한다.
그래서? 균일하게 분배되어야하고, 모든 bit에 동등하게 depend해야한다.
HMAC
해시 함수와 비밀키를 결합하여 메세지의 무결성 인증을 제공하는 알고리즘
메시지가 전송되거나 저장될 때 데이터가 변경되지 않았음을 확인하고, 송신자와 수신자의 무단 접근을 방지하는 데 유용
CMAC
CMAC: Cipher-based Message Authentication Code
대칭 키를 사용하는 블록 암호 알고리즘(AES, 3DES 등) 을 기반으로 하는 메세지 인증 코드
두개의 서브 키(K1, K2)를 사용하여 마지막 블록에서 XOR 해준다.
CMAC과 HMAC의 차이점
| 기반 | 블록 암호 (AES, 3DES 등) | 해시 함수 (SHA-256, SHA-1 등) |
| 키 사용 | 대칭 키 | 대칭 키 |
| 안전성 의존 | 블록 암호의 안전성에 의존 | 해시 함수의 안전성에 의존 |
| 사용 사례 | 제한된 리소스 환경, IoT 등 | 웹 API 인증, 일반적인 데이터 인증 |
CCM
Counter with Cipher-block-chaining Message
AES encryption, CTR mode, CMAC을 사용
GCM
Galois Counter Message - Authentication Code
GMAC, GHASH, GCTR을 사용
GMAC(GCM과 달리 MAC전용 노트에서는 생략)