메세지 인증 코드 (Message Authentication Code = MAC)
보안의 과제로는 메세지 무결성과 메세지 인증이 있다.
** 근데 자주 헷갈릴 수 있는 것은 메세지 무결성은 메세지가 변경되지 않았음을 증명하는 것이지 변경되지 못하도록 하는 것은 아니다.
** 또한 메세지 인증은 개체(사용자) 인증 (=entity/user authentica tion)과는 다르다
이 때 메세지 암호화를 사용할 수 없을까?
- 대칭키 암호화는 메세지 인증은 제공하지만 메세지 무결성(중간에 메세지 내용이 바뀌었는지 여부) 을 제공하지는 못한다. (하지만 인증은 가능.)
- 공개키 기반의 전자 서명 (digital signature) 은 메세지 인증과 무결성을 제공한다.
그래서 메세지 무결성과 인증을 위해 메세지 인증 코드(MAC) 를 사용한다.
MAC
- 메세지로 부터 계산된 해시값을 메세지 다이제스트(Massage Digest) 라고 부른다.
- 이 메세지 다이제스트가 메세지 이미지(내용)의 유일한 특성을 가지고 있다면 이 massage digest를 메세지 인증 코드 (message authentication code) 라고 한다.
송신자는 메세지의 특성을 살려서 MAC 을 계산한다. 그리고 메세지에 맥을 붙여서 보낸다.
수신자는 같은 해시 함수를 사용하여 메세지를 계산했을 때 송신자가 보낸 MAC 과 같은 값을 가져야 한다.
(→ 그렇게 메세지의 변경 여부를 확인할 수 있음)
그러면 이 MAC 을 어떻게 계산하느냐?
이를 암호화 해시 함수를 사용하는 것이다.
해시 함수와 맥
- 해시 함수의 주요 응용 중 하나는 MAC 을 계산하는데 사용하는 것이다.
- 해시 함수를 이용하여 맥을 계산하면 암호화 알고리즘을 사용할 필요없고 암호화 알고리즘보다 더 빠르게 계산할 수 있다.
- 하지만 이 MAC 과정은 메세지 암호화와는 상관없는 별개의 과정이다.
비밀값을 사용한 MAC
하지만 단순한 H(m) 해시함수를 MAC 으로 사용하는 것은 메세지 무결성을 보장하지 못한다.
만약 공격자가 어떤 해시함수를 사용하는지 알면 오염시킨 메세지를 해싱하여 새로운 MAC 을 붙여서 보내면 되기 때문이다.
- 송신자와 수신자는 서로만 알고 있는 비밀값을 공유하고 있다.
- 해시를 사용하여 MAC 을 계산할 때 메세지 m 과 비밀값 k을 입력으로 하여 계산해야 한다. (H(m, k)) ⇒ 이 방법을 keyed hash 라고 한다. (이 MAC key 는 암호화의 key 와는 다르다.)
- 공격자는 key 를 모르므로 오염시킬 수 없고 메세지 무결성을 증명할 수 있다.
- 또한 송신자를 확인할 수 있다고 한다(!)
HMAC
- HMAC 은 실제 가장 널리 사용되고 있는 인터넷 표준인 keyed hash 알고리즘이다.
- IPSef, SSL/TSL 등에서 사용
- 실제로는 이중 해시를 사용한다. $H(K|| H(K||x))$ , K=secret key, x=message
- || 는 concat 했다는 뜻!
- 그러면 HMAC 에서는 어떤 해시함수를 사용하는가
- HMAC 은 보통 MD5 를 해시함수로 사용한다.
- 하지만 md5 는 이미 안전하지 않은 해시함수로 알려져 있는데 왜 사용하는가?
- 왜냐하면 단순 md5 로 계산하는 것이 아니라 k 라는 비밀값이 있기 때문에 이를 찾아야 하므로 더 안전하다!
'암호학' 카테고리의 다른 글
전자 서명 : 정보 보안 - 암호학 (0) | 2024.09.30 |
---|---|
암호 해시 함수 : 정보 보안 - 암호학 (0) | 2024.09.29 |
AES ; 블록 암호 : 정보 보안 - 암호학 (0) | 2024.09.27 |
블록 암호 : 정보 보안 - 암호학 (1) | 2024.09.26 |
암호 기초 : 정보 보안 - 암호학 (0) | 2023.09.11 |