すべての記事

PBKDF2:最も古い鍵ストレッチング標準

日本の個人情報保護法(APPI)は、個人データを扱う事業者に「安全管理のために必要かつ適切な措置」を求めていますが、特定のアルゴリズムまでは指定していません。実務では、CRYPTREC(電子政府推奨暗号リスト)がPBKDF2のような鍵導出関数を評価・掲載しており、日本の企業がパスワード保存の「適切な措置」を具体的に選ぶ際の参照先になっています。

鍵ストレッチングの原理

パスワードを一度だけハッシュ化する代わりに、PBKDF2は基本となるハッシュ関数(通常HMAC-SHA256)を何千回も連続して適用し、各反復の結果を次の入力として使用します。これは意図的に1つのハッシュの計算を遅くし、大量の総当たり攻撃を攻撃者にとって大幅にコストのかかるものにします。

Wi-FiにおけるPBKDF2:WPA2

PBKDF2の世界で最も広く使われている用途の1つが、WPA2-PSKにおけるWi-Fi暗号化鍵の導出です。ネットワークのパスワードはPBKDF2-HMAC-SHA1で4096回の反復にかけられ、ネットワーク名(SSID)をソルトとして256ビットの鍵が生成されます。これが、たった1回のハンドシェイクを傍受されただけで短いWi-Fiパスワードがオフラインの総当たり攻撃に弱くなる理由です。

このツールがHTTPSを必要とする理由

このツールは自前のJavaScript実装ではなく、ブラウザ内蔵のWeb Crypto APIを使ってPBKDF2を計算しています。ブラウザは「安全なコンテキスト」——HTTPS、または開発中のlocalhost——でしかcrypto.subtleを公開しないため、暗号化された接続がなければ、このツールもサイト内の他の暗号ツールも、デバイスの性能に関係なくまったく動作しません。

なぜこれが必要か

  • 暗号化のためにパスワードから暗号鍵を導出する(Wi-FiのWPA2/WPA3など)。
  • パスワード保存にPBKDF2を使用するレガシーシステムとの互換性を維持する。
  • 新しい標準バージョンで推奨反復回数が増え続ける理由を理解する。

基礎となるハッシュ関数の選択が重要な理由

古いPBKDF2の実装ではデフォルトでHMAC-SHA1が使われることがよくありました——SHA-1自体は直接のハッシュ化には暗号学的に弱いとされていますが、HMACの構造の中ではこの弱さは致命的な脆弱性にはなりません。とはいえ、現代の指針は明確にHMAC-SHA256やHMAC-SHA512を推奨しています——これはSHA-1が直接の脅威だからではなく、より長い出力とより新しい関数が、速度をほとんど損なうことなくより大きな安全マージンを提供するからです。

ツールを試す