Computer >> 컴퓨터 >  >> 프로그래밍 >> 프로그래밍

메시지 인증 코드(MAC)란? 작동 원리와 핵심 개념 총정리

메시지 인증 코드(MAC)의 기본 개념

메시지 인증 코드(Message Authentication Code, MAC)는 몇 바이트 크기의 데이터 블록으로, 메시지의 진위성을 검증하는 데 사용됩니다. 수신자는 이 블록을 확인하여 메시지가 전송 도중 제3자에 의해 변조되지 않았음을 확신할 수 있습니다.

MAC는 대칭 키(symmetric key)로 매개변수화된 암호학적 함수군입니다. 각 함수는 가변 길이의 입력 데이터(‘메시지’)를 받아 일정한 길이의 출력값을 생성하며, 이 출력값을 입력 메시지의 MAC라고 부릅니다.

MAC 알고리즘이 충족해야 할 보안 요건

공인된 MAC 알고리즘은 다음과 같은 보안 속성을 만족해야 합니다. 공격자가 동일한 키로 계산된 다른 메시지들의 MAC 값을 이미 여러 번 관찰했더라도, 키를 모르는 상태에서는 새로운 메시지의 MAC를 계산하는 것이 계산상 불가능해야 한다는 것입니다. 이러한 특성 덕분에 MAC는 데이터 원본 인증(data-origin authentication)데이터 무결성(data integrity) 보안을 함께 지원할 수 있습니다.

MAC를 구성하는 세 가지 알고리즘

MAC는 암호학적 프리미티브(primitive)로서, 그 정의에는 세 가지 알고리즘이 포함됩니다.

  • 키 생성(key-generation) 알고리즘: 입력으로 주어진 보안 매개변수(security parameter)에 따라 특정 ‘품질’, 즉 길이를 가진 키를 생성합니다.
  • 태깅(tagging) 알고리즘: 키와 메시지 두 가지를 입력으로 받으며, 그 결과물인 태그(tag) 하나를 출력합니다.
  • 검증(verification) 알고리즘: 키, 메시지, 태그 세 가지를 입력으로 받아, 해당 태그가 주어진 메시지와 키에 대해 유효한지를 나타내는 비트(bit)를 출력합니다.

MAC와 디지털 서명의 차이

MAC는 대칭형(symmetric) 프리미티브입니다. 따라서 메시지를 주고받는 두 당사자가 동일한 대칭 키를 사용합니다. 반면 디지털 서명(digital signature)은 비대칭형(asymmetric) 프리미티브로, 두 당사자가 서로 다르지만 수학적으로 연관된 키를 사용합니다.

이 차이는 간단한 명제로 요약됩니다. MAC의 경우, 검증할 수 있는 사람이라면 누구나 동일한 비밀 키로 MAC를 생성할 수도 있습니다.

반면 디지털 서명에서는 개인 서명 키(private signing key)를 보유한 주체만 서명을 생성할 수 있고, 누구나 공개된 검증 키(public verification key)로 서명을 확인할 수 있습니다. 디지털 서명이 더 강력한 프리미티브처럼 보이지만, 실제로는 MAC에 비해 계산 비용이 훨씬 큽니다. 그렇기 때문에 상황이 허용될 때는 여전히 MAC가 폭넓게 활용되고 있습니다.

데이터 통신에서 MAC의 역할

MAC는 데이터 통신에서 필수적인 역할을 수행합니다. 안전하지 않은 채널을 통해 전달되는 메시지는, 채널에 접근해 변조할 수 있는 침입자에 의한 메시지 위조(message forgery) 같은 공격을 막기 위해 반드시 인증되어야 합니다. 송신자와 수신자가 사전에 비밀 키를 공유하고 있다면, MAC를 통해 메시지의 진위성(authenticity)을 보장할 수 있습니다.

MAC 시스템에서 송신자는 메시지와 비밀 키의 함수로 태그를 생성한 뒤, 이 태그를 메시지에 붙여 채널을 통해 전송합니다. 수신자는 동일한 키로 태그를 재계산하여 일치 여부를 확인함으로써, 메시지가 중간에 변경되지 않았음을 검증하게 됩니다. 대표적인 MAC 방식으로는 HMAC, CMAC 등이 있으며, TLS나 IPsec 같은 보안 프로토콜에서도 널리 사용되고 있습니다.