MAC · 블록 암호 NIST SP 800-38B RFC 4493 §4 검증됨

AES-CMAC

40바이트 메시지의 AES-CMAC을 계산하며 RFC 4493으로 검증했다.

앱에서 열기 .ncw 내려받기

개요 및 암호학적 배경

CMAC(Cipher-based Message Authentication Code)은 NIST SP 800-38B와 IETF RFC 4493에 규정된 방식입니다. 순수 CBC-MAC은 가변 길이 메시지 위조에 취약한데, CMAC은 블록 암호 키에서 유도한 두 비밀 서브키(K1, K2) 중 하나를 마지막 블록에 XOR해 이를 막습니다. 메시지 길이가 16바이트 블록 크기의 양의 배수이면 마지막 블록에 K1을 XOR합니다. 그렇지 않으면 마지막 부분 블록을 10* 패딩(0x80 0x00..., ISO/IEC 9797-1 방식 2)으로 채우고 K2를 XOR합니다.

이 워크플로우는 RFC 4493 §4 예제 3을 검증합니다. 40바이트 메시지(16바이트 완전 블록 둘과 8바이트 부분 블록 하나)를 128비트 AES 키로 인증하며, 10* 패딩과 K2 마스킹 경로를 지납니다. CMAC 내부에서 K1과 K2가 어떻게 만들어지는지 보려면 짝이 되는 CMAC 서브키 생성 워크플로우를 참고하십시오.

파이프라인 배선 구조와 단계별 흐름

Workflow Input (Key 16B, Message 40B) ──► CMAC Generator (cipher = AES) ──► Workflow Output (MAC 16B)
  1. 입력(Workflow Input): 16바이트 AES-128 키와 40바이트 NIST 시험 메시지를 공급합니다.
  2. 블록 암호 인증(CMAC Generator): cipher = "AES"로 설정합니다. 내부에서 서브키 (K1, K2)를 유도하고, 8바이트 꼬리 블록을 8000000000000000으로 16바이트까지 채운 뒤 K2를 XOR하고, IV가 0인 AES-128-CBC로 3개 블록을 처리합니다.
  3. 태그 출력(Workflow Output): 최종 16바이트(128비트) CMAC 태그를 내보냅니다.

노드 구성 및 설정

노드역할과 주요 매개변수개수
Workflow InputKey(16 B)와 Message(40 B) 공급1
CMAC Generatorcipher = "AES"로 설정1
Workflow Output16바이트 MAC 출력 수집1

노드 레퍼런스 → · NIST SP 800-38B 패딩 →

입출력 명세 및 시험 벡터 검증

검증 출처: RFC 4493 §4 (Example 3, len = 40)

입력

이름타입값 (Hex)
Keybytes (16 B)2b7e151628aed2a6abf7158809cf4f3c
Messagebytes (40 B)6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411

기대 출력

이름타입값 (Hex)
MACbytes (16 B)dfa66747de9ae63030ca32611497c827