CMAC Generator
NIST SP 800-38B 암호 기반 MAC (AES-128/256 또는 3DES)
개요
NIST SP 800-38B 및 RFC 4493 표준에 따라 대칭 블록 암호 기반 메시지 인증 코드인 CMAC(Cipher-based MAC, OMAC1)을 계산한다.
블록 암호의 영(Zero) 블록 암호화 결과에서 GF($2^b$) 유한체 상의 두 서브키 $K_1, K_2$를 파생하여, 마지막 블록이 블록 크기로 나누어떨어지는지 여부에 따라 길이에만 의존하는(Length-dependent) 안전한 말미 블록 마스킹을 수행한다.
사용 시점
- AES 또는 Triple-DES 하드웨어/소프트웨어 프리미티브만 사용하는 금융·스마트카드·자동차(AUTOSAR SecOC)·임베디드 프로토콜에서 메시지 인증 코드를 생성할 때 사용한다.
- NIST SP 800-108 카운터 모드 KDF나 AES-SIV 구조의 구성 요소로 사용할 때 사용한다.
파라미터 설정
| 파라미터 (ID) | 타입 및 기본값 | 노출 조건 | 설명 및 옵션 |
|---|---|---|---|
기반 암호cipher |
select기본값: AES |
항상 노출 | CMAC 계산에 사용할 기반 대칭 블록 암호와 키 크기를 선택한다.
|
포트 입출력 명세
포트 연결 규칙, 데이터 타입별 색상, 가변 포트 생성 방식은 포트 및 연결 문서를 참고한다.
입력 포트
포트 성격: 고정 입력 포트 (총 2개).
| 포트 이름 | 포트 ID | 데이터 타입 | 필수 여부 | 노출 조건 | 설명 |
|---|---|---|---|---|---|
Cipher Key |
key |
Bytes |
필수 | 항상 노출 | 선택한 블록 암호에 맞는 정확한 길이의 대칭키 바이트 배열이다. |
Message |
data |
Bytes |
필수 | 항상 노출 | 인증할 메시지 바이트 배열(Uint8Array, 빈 배열 포함 임의 길이 가능)이다. |
출력 포트
포트 성격: 고정 출력 포트 (총 1개).
| 포트 이름 | 포트 ID | 데이터 타입 | 노출 조건 | 설명 |
|---|---|---|---|---|
CMAC Tag |
mac |
Bytes |
항상 노출 | 계산된 CMAC 태그(AES는 16바이트, TDES는 8바이트)이다. |
오류 케이스
실행 중 아래 조건이 발생하면 이 노드는 ERROR 상태가 되며, 출력 포트에 연결된 하위 노드는 실행되지 않는다.
| 오류 코드 | 기본 엔진 메시지 | 발생 조건 |
|---|---|---|
INVALID_KEY_LENGTH |
키 길이가 올바르지 않는다 | Key 길이가 선택한 암호(AES-128: 16B, AES-192: 24B, AES-256: 32B, TDES: 16B/24B)와 일치하지 않을 때 발생한다. |
활용 예시
RFC 4493 AES-128-CMAC 태그 계산하기
16바이트 AES 키로 메시지의 16바이트 CMAC 태그를 생성한다.
- CMAC Generator에서 블록 암호를
AES-128로 선택한다. - 16바이트
Secret Key와Data를 연결하여 16바이트CMAC Tag를 확인한다.