키 유도(KDF)
NIST SP 800-56C
RFC 5869 §A.1 검증됨
HKDF-SHA-256
입력 키 재료, 솔트, info로 42바이트를 유도하는 추출-확장 키 유도(RFC 5869).

개요 및 암호학적 배경
HKDF(HMAC-based Extract-and-Expand Key Derivation Function)는 RFC 5869에 정의되어 있으며 TLS 1.3, Noise, Signal, HPKE(RFC 9180)의 키 스케줄에 쓰이는 기본 연산입니다. 키 유도를 두 단계로 나눕니다.
- HKDF-Extract: PRK = HMAC-Hash(salt, IKM). 디피-헬만 공유 비밀처럼 균일하지 않을 수 있는 엔트로피를 고정 길이 의사난수 키(PRK)로 농축합니다.
- HKDF-Expand: T(i) = HMAC-Hash(PRK, T(i−1) ‖ info ‖ byte(i))를 반복해 PRK를 L바이트의 출력 키 재료(OKM)로 늘립니다. info로 용도를 구분하므로 같은 PRK에서도 서로 독립된 키를 얻습니다.
이 워크플로우는 SHA-256과 출력 길이 L = 42바이트를 쓰는 RFC 5869 부록 A.1(시험 사례 1)을 재현합니다. HMAC-SHA-256 확장 블록 2개(⌈42 / 32⌉ = 2)를 만든 뒤 42바이트로 잘라 냅니다.
파이프라인 배선 구조와 단계별 흐름
Workflow Input (IKM, Salt, Info)
──►
HKDF Key Derivation (SHA-256, 42 B)
──►
Workflow Output (OKM 42B)
- 키 재료와 문맥(
Workflow Input): 22바이트IKM, 13바이트 비밀이 아닌Salt, 10바이트 응용 문맥Info를 공급합니다. - 추출과 확장(
HKDF Key Derivation):hashAlgorithm = "SHA-256",keyLength = 42로 설정합니다. - 유도 키 출력(
Workflow Output): 42바이트OKM바이트열을 수집합니다.
노드 구성 및 설정
| 노드 | 역할과 주요 매개변수 | 개수 |
|---|---|---|
| Workflow Input | IKM, Salt, Info 공급 | 1 |
| HKDF Key Derivation | hashAlgorithm = "SHA-256", keyLength = 42로 설정 | 1 |
| Workflow Output | 42바이트 OKM 출력 | 1 |
입출력 명세 및 시험 벡터 검증
검증 출처: RFC 5869 §A.1 (Test Case 1, SHA-256, L=42)
입력
| 이름 | 타입 | 값 (Hex) |
|---|---|---|
IKM | bytes (22 B) | 0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b |
Salt | bytes (13 B) | 000102030405060708090a0b0c |
Info | bytes (10 B) | f0f1f2f3f4f5f6f7f8f9 |
기대 출력
| 이름 | 타입 | 값 (Hex) |
|---|---|---|
OKM | bytes (42 B) | 3cb25f25faacd57a90434f64d0362f2a2d2d0a90cf1a5a4c5db02d56ecc4c5bf34007208d5b887185865 |