MAC(Message Authentication Code)
MAC는 메시지의 무결성과 송신자의 인증을 보장하기 위해 사용하는 정보다.
MAC는 비밀 키를 사용해 생성되며, 수신자는 같은 비밀 키를 사용해 메시지가 변경되지 않았고, 송신자를 검증할 수 있다.
MAC의 주요 기능
- 무결성: 전송받은 메시지가 변조되지 않음을 검증
- 인증: 메시지가 신뢰할 수 있는 송신자로부터 온 것임을 증명
MAC의 생성, 전달, 검증
MAC은 다음과 같은 과정으로 만들어지고 검증에 쓰인다.
비밀 키 공유
송신자, 수신자는 MAC 생성에 쓰이는 비밀 키를 공유한다.
메시지 전송
송신자는 메시지를 전송할 때 비밀 키를 이용해 생성한 MAC을 같이 전송한다.
MAC 검증
수신자가 받은 메시지에 비밀 키를 사용하여 MAC을 생성한다. 그렇게 만든 MAC과 받은 MAC이 동일한지 검사한다.
이 과정을 통해 메시지의 위변조를 확인하고 MAC이 올바른 비밀 키로 생성되었는지 확인할 수 있다.
MAC의 구현
대중적으로 알려진 MAC의 구현에는 2가지가 있다.
- HMAC(Hash based MAC): SHA-256과 같은 해시 함수로 MAC을 생성
- CMAC(Cipher based MAC): AES와 같은 블록 암호를 사용해 MAC을 생성
MAC의 활용
IPSec, TLS와 같은 보안 프로트콜에서 사용된다.
MAC의 한계
MAC의 생성을 위해 필요한 비밀 키를 송/수신자가 부담해야 하는데, 이 비밀 키를 안전하게 공유하고 관리해야 할 부담이 있다.
또한, MAC 자체로는 부인 방지를 할 수 없다. 그러니까 수신자는 MAC를 통해 송신자로부터 온 메시지임을 확인할 수 있지만 송신자가 메시지를 송신했다는 사실을 부인하는 상황이 생길 수 있다.
왜냐하면 이론적으로는 수신자도 동일한 MAC을 생성할 수 있으므로 송신자가 메시지를 보냈다고 입증할 방법이 없기 때문이다. 추가로 송신자는 송신자가 MAC을 만든 것이라고 송신 부인을 할 수 있다.
한계를 개선하기 위한 방법들
위와 같은 한계를 극복하기 위해 송신자만 서명할 수 있는 디지털 서명을 사용할 수 있다.