MAC · 키 해시
FIPS 198-1 / RFC 2104
RFC 4231 §4.3 검증됨
HMAC-SHA-256
키로 메시지의 인증 코드를 계산하며 RFC 4231로 검증했다.

개요 및 암호학적 배경
HMAC(Hash-based Message Authentication Code)은 RFC 2104와 NIST FIPS 198-1로 표준화되어 있으며, 키가 없는 암호 해시 함수 H로 의사난수 함수와 메시지 인증 코드를 만듭니다. 안쪽 패드(0x36)와 바깥쪽 패드(0x5c)를 XOR한 키로 해시를 두 번 겹쳐 계산합니다.
HMAC(K, m) = H( (K' ⊕ opad) ‖ H( (K' ⊕ ipad) ‖ m ) )
SHA-256 같은 머클-담고르(Merkle-Damgård) 해시는 H(K ‖ m)처럼 단순하게 쓰면 길이 확장 공격에 취약합니다. HMAC은 안쪽 32바이트 다이제스트를 한 번 더 해시하므로, 공격자가 K를 모른 채 데이터를 덧붙일 수 없습니다. 이 워크플로우는 RFC 4231 §4.3(시험 사례 2)을 재현합니다. 4바이트 ASCII 키 "Jefe"(SHA-256 블록 크기 64바이트에 맞춰 내부에서 0으로 채움)로 ASCII 문장 "what do ya want for nothing?"을 인증합니다.
파이프라인 배선 구조와 단계별 흐름
Workflow Input (Key, Data)
──►
HMAC Generator (algorithm = SHA-256)
──►
Workflow Output (MAC 32B)
- 키와 메시지 입력(
Workflow Input): 비밀Key(4바이트,4a656665)와 메시지Data(28바이트)를 공급합니다. - 키 해시 계산(
HMAC Generator):algorithm = "SHA-256"으로 설정합니다. 키가 64바이트보다 짧거나 길면 RFC 2104에 따라 노드가 자동으로 정규화한 뒤 32바이트 태그를 계산합니다. - MAC 출력(
Workflow Output): 32바이트(256비트) 인증 코드를MAC출력 포트로 내보냅니다.
노드 구성 및 설정
| 노드 | 역할과 주요 매개변수 | 개수 |
|---|---|---|
| Workflow Input | Key와 Data 바이트열 공급 | 1 |
| HMAC Generator | algorithm = "SHA-256"으로 설정 | 1 |
| Workflow Output | 32바이트 MAC 출력 수집 | 1 |
입출력 명세 및 시험 벡터 검증
검증 출처: RFC 4231 §4.3 (Test Case 2, HMAC-SHA-256)
입력
| 이름 | 타입 | 값 (Hex) |
|---|---|---|
Key | bytes (4 B, ASCII "Jefe") | 4a656665 |
Data | bytes (28 B, ASCII "what do ya want for nothing?") | 7768617420646f2079612077616e7420666f72206e6f7468696e673f |
기대 출력
| 이름 | 타입 | 값 (Hex) |
|---|---|---|
MAC | bytes (32 B) | 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843 |