HKDF 키유도함수 (HMAC-based Key Derivation Function (HKDF))

정보보안학
한 줄 정의: HKDF는 HMAC을 기반으로 하나의 원천 키 재료로부터 여러 개의 독립적이고 안전한 하위 암호 키를 유도하는 키 유도 함수입니다.

쉽게 풀면

하나의 원재료로 여러 요리를 만드는 요리사를 떠올리면 됩니다. HKDF는 하나의 비밀 값(예: 키 교환으로 얻은 공유 비밀)을 재료로 삼아, 암호화용 키와 인증용 키처럼 서로 다른 용도의 여러 키를 안전하게 뽑아내는 도구입니다. 이렇게 하면 매번 새로운 랜덤 값을 만들 필요 없이, 하나의 안전한 비밀로부터 필요한 만큼 다양한 키를 파생시킬 수 있습니다.

왜 중요한가

키 교환 프로토콜에서 얻은 원천 값은 그 자체로 통계적 편향이 있을 수 있어 바로 암호 키로 쓰기에 적합하지 않은 경우가 많기 때문에, 정보보안학 분야에서는 TLS 1.3, Signal 프로토콜 등 최신 보안 프로토콜의 키 스케줄 설계에서 HKDF를 표준 구성 요소로 다루는 연구가 많습니다.

논문에서는 이렇게 쓰입니다

"TLS 1.3의 키 스케줄은 HKDF-Extract와 HKDF-Expand 단계를 반복적으로 적용하여 다양한 트래픽 키를 유도한다."

실제 프로토콜에서 HKDF가 단계별로 활용되는 방식을 설명하는 문맥입니다.

"본 연구는 Diffie-Hellman 키 교환으로 얻은 공유 비밀을 HKDF를 통해 AES 암호화 키와 HMAC 인증 키로 분리 유도하는 구조를 제안하였다."

하나의 공유 비밀에서 여러 용도의 키를 파생시키는 사례를 설명하는 문맥입니다.

조금 더 깊게 보면

HKDF는 Extract 단계와 Expand 단계 두 부분으로 구성됩니다. Extract 단계에서는 원천 키 재료를 HMAC으로 압축해 고정 길이의 의사난수 키(PRK)를 만들고, Expand 단계에서는 이 PRK와 문맥 정보를 이용해 원하는 길이만큼의 출력 키 재료(OKM)를 생성합니다. RFC 5869에 표준화되어 있으며 해시 함수로는 주로 SHA-256 등이 사용됩니다.

주의할 점

HKDF는 키를 안전하게 파생시키는 도구일 뿐, 원천 값 자체가 충분한 엔트로피를 갖추지 못했다면 안전한 키를 보장할 수 없다는 점에 유의해야 합니다.

관련 용어