CoderTools

HKDF 키 파생

RFC 5869 HMAC 기반 Extract-and-Expand 키 파생

🔒 100% 로컬 처리입력하신 데이터는 브라우저에서 완전히 처리되며, 서버로 전송되지 않습니다.
출력 형식

HKDF 문서

HKDF (HMAC 기반 Extract-and-Expand 키 파생 함수)는 RFC 5869에 정의되어 있습니다. 추출(Extract)과 확장(Expand)의 2단계 프로세스를 통해 입력 키 재료로부터 암호화 키를 파생하는 강력한 방법을 제공합니다.

HKDF는 TLS 1.3, Signal Protocol, Noise Protocol Framework, SSH 등 현대 보안 프로토콜에서 널리 채택되고 있습니다. 추출과 확장 단계의 명확한 분리는 키 계층 구조 파생에 특히 적합합니다.

추출 단계: HKDF-Extract(salt, IKM) → PRK

추출 단계는 입력 키 재료(IKM)에 분산되어 있을 수 있는 엔트로피를 고정 길이의 의사 랜덤 키(PRK)로 집중시킵니다:

  • 솔트 (선택, 기본값 HashLen 개의 0)와 IKM을 입력으로 받음
  • PRK = HMAC-Hash(salt, IKM) 계산
  • PRK 길이는 해시 출력 길이와 같음 (SHA-256의 경우 32바이트)
  • 솔트는 HMAC의 키로 작용하여 추출을 강화

확장 단계: HKDF-Expand(PRK, info, L) → OKM

확장 단계는 PRK를 원하는 길이의 출력 키 재료(OKM)로 늘립니다:

  • PRK, info (컨텍스트/라벨), 원하는 출력 길이 L을 받음
  • T(i) = HMAC-Hash(PRK, T(i-1) | info | counter)를 반복 계산
  • 결과 연결: OKM = T(1) | T(2) | ... | T(N)
  • 최대 출력 길이는 255 × HashLen 바이트

일반적인 사용 사례

  • TLS 1.3 키 스케줄: 트래픽 시크릿, 핸드셰이크 키, 애플리케이션 키 파생
  • Signal Protocol: 공유 비밀에서 체인 키와 메시지 키 파생
  • SSH 키 교환: ECDH 후 암호화 키와 무결성 키 파생
  • 키 계층 구조: 마스터 시크릿에서 여러 용도별 키 파생

HKDF vs PBKDF2

특징 HKDF PBKDF2
표준 RFC 5869 RFC 8018
입력 유형 공유 비밀, DH 출력 사용자 비밀번호
반복 횟수 단일 패스 다수 (10K-1M)
속도 빠름 의도적으로 느림
Info 매개변수 예 (컨텍스트 바인딩) 아니오
주요 사용 사례 고엔트로피 입력 저엔트로피 비밀번호

보안 고려사항

  • HKDF는 IKM에 이미 충분한 엔트로피가 있다고 가정합니다; 약한 비밀번호에 사용하지 마세요
  • info 매개변수는 키의 의도된 용도를 고유하게 식별해야 합니다 (컨텍스트 분리)
  • 솔트는 선택 사항이지만 동일한 IKM에서 여러 키를 추출할 때 권장됩니다
  • PRK는 직접 사용하면 안 됩니다; 항상 확장 단계를 사용하여 최종 키를 파생하세요

기술 참고자료

관련 도구

빠른 메뉴

최근 사용 도구 없음