메시지 인증 코드(MAC)란?
MAC(Message Authentication Code, 메시지 인증 코드)는 발신자가 수신자에게 보내는 메시지에 덧붙이는 보안 코드 또는 태그입니다. 이를 통해 메시지의 인증(authentication)과 무결성(integrity), 즉 메시지가 전송 중 변조되지 않았음을 보장할 수 있습니다.
MAC는 메시지 다이제스트(Message Digest, MD)와 유사하지만, 메시지를 인증하기 위해 대칭 키 암호화 방식이 필요하다는 점에서 차이가 있습니다. 즉, 발신자와 수신자가 동일한 비밀 키를 공유해야 합니다. 이러한 특성 때문에 MAC는 '키드 해시 함수(keyed hash function)'라고도 불리며, 암호학적 체크섬(Cryptographic Checksum)으로 정의되기도 합니다.
MAC 알고리즘의 작동 원리
MAC 알고리즘은 인증 대상 메시지와 발신자·수신자만 아는 비밀 키를 입력받아 MAC 값을 출력으로 생성합니다. 수신자는 이 MAC 값을 활용해 메시지의 무결성과 진위 여부, 즉 메시지가 올바른 발신자로부터 전송된 것인지 확인할 수 있습니다. 다만 MAC는 부인 방지(Non-Repudiation) 기능은 지원하지 않는다는 한계가 있습니다.
MAC는 일반적으로 다음의 세 가지 알고리즘으로 구성됩니다.
키 생성 알고리즘: 비밀 키를 무작위로 선택합니다.
서명 알고리즘: 키와 메시지가 주어지면 태그(tag)를 생성하여 전송합니다.
검증 알고리즘: 키와 태그가 주어지면 메시지의 진위 여부를 확인합니다. 메시지와 태그가 정확하고 서로 일치하면 '수락(accepted)'을 반환하고, 그렇지 않으면 '거부(rejected)'를 반환합니다.
메시지 인증 코드(MAC)의 주요 요구 사항
메시지 인증 코드(MAC)는 일반적으로 전자 자금 이체(EFT)에서 정보 무결성을 보장하기 위해 사용됩니다. MAC를 통해 메시지가 실제로 명시된 발신자로부터 온 것이며, 전송 경로에서 어떠한 변경도 겪지 않았음을 검증할 수 있습니다.
비밀 키를 함께 보유하고 있는 검증자(verifier)는 이를 활용하여 해당 메시지 내용의 변경 여부를 식별할 수 있습니다.
메시지 인증 코드는 모든 유형의 금융 계좌에 접근할 때 일반적으로 요구됩니다. 은행, 증권사, 신탁 회사, 그리고 온라인 접속 서비스를 제공하는 예금·투자·보험 회사 등이 이러한 코드를 사용할 수 있으며, MAC는 금융 암호학(financial cryptography)의 핵심 구성 요소입니다.
공격자가 메시지 M과 C(K, M)를 관찰했더라도, C(K, M') = C(K, M)를 만족하는 새로운 메시지 M'을 만드는 것이 계산상 불가능해야 합니다.
C(K, M)는 균등하게 분포되어야 합니다. 즉, 무작위로 선택된 두 메시지 M과 M'에 대해 C(K, M) = C(K, M')일 확률은 2-n이어야 하며, 여기서 n은 MAC의 비트 수를 의미합니다.
M'이 M에 대한 알려진 변환 결과, 즉 M' = f(M)과 같다고 가정할 때, 예를 들어 f가 하나 이상의 특정 비트를 반전시키는 변환이라면 PR[C(K, M) = C(K, M')] = 2-n이 성립해야 합니다.