CMAC (Cipher-based Message Authentication Code (CMAC))
쉽게 풀면
편지 봉투에 도장을 찍어 위조 여부를 확인하는 것과 비슷합니다. 메시지를 블록 암호로 여러 번 암호화하며 마지막 블록에서 특별한 보정 과정을 거쳐 짧은 값(태그)을 만들어냅니다. 이 태그는 메시지와 함께 전송되고, 수신자는 같은 키로 동일한 계산을 반복해 값이 일치하는지 확인합니다. 값이 다르면 메시지가 중간에서 변조되었거나 위조된 것으로 판단합니다. 별도의 해시 함수 없이 이미 사용 중인 블록 암호만으로 인증 기능을 구현할 수 있다는 점이 특징입니다.
왜 중요한가
정보보안학에서는 데이터 무결성 보장이 기밀성 못지않게 중요한 과제로 다뤄집니다. CMAC은 HMAC처럼 해시 기반 방식이 아니라 블록 암호 기반이기 때문에, 이미 AES 등을 사용하는 시스템에서 별도의 해시 알고리즘 없이 효율적으로 인증을 추가할 수 있어 임베디드 환경이나 경량 프로토콜 연구에서 자주 인용됩니다. 또한 표준화된 안전성 증명이 있어 신뢰성 있는 대안으로 평가받습니다.
논문에서는 이렇게 쓰입니다
자원이 제한된 IoT 기기에서 해시 함수 대신 이미 구현된 블록 암호를 재사용해 인증 기능을 구현한 사례입니다.
펌웨어 배포 과정에서 파일이 전송 중 조작되지 않았음을 확인하는 데 CMAC이 활용된 예입니다.
조금 더 깊게 보면
CMAC은 CBC-MAC의 취약점을 보완하기 위해 고안된 방식으로, 메시지 길이에 따라 서로 다른 부속키(subkey)를 사용하는 방식으로 가변 길이 메시지에 대한 위조 공격을 방지합니다. NIST에서 표준으로 채택되었으며, AES-CMAC이 대표적인 구현 형태로 널리 쓰입니다.
주의할 점
CMAC은 기밀성을 제공하지 않으므로 암호화와 별도로 사용해야 하며, 인증만으로는 데이터 노출을 막을 수 없다는 점에 유의해야 합니다. 또한 키 관리가 부실하면 아무리 안전한 알고리즘이라도 무력화될 수 있습니다.