본문 바로가기

Security/암호

Message Authentication

메세지 인증을 사용하는 이유는

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전용 노트에서는 생략)