CoderTools

HKDF 鍵導出

RFC 5869 HMAC ベース抽出-拡張鍵導出

🔒 100% ローカル処理入力されたデータはすべてブラウザ内で処理されます。サーバーに送信されることはありません。
出力形式

HKDF ドキュメント

HKDF (HMAC ベース抽出-拡張鍵導出関数) は RFC 5869 で定義されています。抽出と拡張の 2 段階プロセスを使用して、入力鍵材料から暗号鍵を導出する堅牢な方法を提供します。

HKDF は TLS 1.3、Signal プロトコル、Noise プロトコルフレームワーク、SSH など、現代のセキュリティプロトコルで広く採用されています。抽出と拡張フェーズの明確な分離により、鍵階層の導出に特に適しています。

抽出フェーズ: HKDF-Extract(salt, IKM) → PRK

抽出フェーズは、入力鍵材料 (IKM) に分散している可能性のあるエントロピーを固定長の疑似乱数鍵 (PRK) に集中させます:

  • ソルト (オプション、デフォルトは HashLen 個のゼロ) と 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 プロトコル: 共有秘密からチェーン鍵とメッセージ鍵を導出
  • SSH 鍵交換: ECDH 後に暗号化鍵と完全性鍵を導出
  • 鍵階層: マスターシークレットから複数の目的別鍵を導出

HKDF vs PBKDF2

機能 HKDF PBKDF2
標準 RFC 5869 RFC 8018
入力タイプ 共有秘密、DH 出力 ユーザーパスワード
反復回数 シングルパス 多数 (10K-1M)
速度 高速 意図的に低速
Info パラメータ 対応 (コンテキストバインディング) 非対応
主な用途 高エントロピー入力 低エントロピーパスワード

セキュリティ上の考慮事項

  • HKDF は IKM に十分なエントロピーが含まれていることを前提としています;弱いパスワードには使用しないでください
  • info パラメータは鍵の意図された用途を一意に識別する必要があります (コンテキスト分離)
  • ソルトはオプションですが、同じ IKM から複数の鍵を抽出する場合は推奨されます
  • PRK は直接使用すべきではありません;常に拡張フェーズを使用して最終鍵を導出してください

技術リファレンス

関連ツール

クイックメニュー

最近のツールはありません