web-dev-qa-db-ja.com

NISTのホワイトペーパー「パスワードベースのキー導出の推奨」に必要な説明

NISTがサポートしているサンプルユースケースは何ですか このポリシー/ホワイトペーパーで PBKDF2について==

この勧告は、電子的に保存されたデータの保護またはデータ保護キーの保護のためにパスワードまたはパスフレーズから暗号化キーを導出するためのパスワードベースのキー導出関数(PBKDF)のファミリーを指定します。

対象となるアプリケーションのリストから暗黙的に除外されているものを知っていれば、この段落を理解する可能性が高くなります。

範囲内と範囲外の具体的な例は非常に役立ちます。

5

キー導出関数 は、一部の秘密データをより多くの秘密データに変え、適切なサイズを持たない他のキーから適切なサイズのキーを作成するために使用されます。 KDFの例は SSL/TLS 内の「PRF」と呼ばれるものです。クライアントとサーバー間で構築された共有キー(RSA暗号化またはDiffie-Hellmanを使用)を対称キーに変換するために使用されますその後、確立された接続で対称暗号化と整合性チェックに使用されます。

パスワードベースのKDF(したがって「PBKDF」という名前)は、ソースマテリアルが「パスワード」、つまり人間の脳に保持され、(通常)キーボードで入力されるデータであるKDFです。脳の所有者によって。これはSSLの場合ではありません。パスワードベースのKDFは、パスワードによって「ロック」されたデータ暗号化を実行する場合に常に使用されます。たとえば、パスワードでファイルを「暗号化」する場合(たとえば、Wordの「パスワード保護」、パスワードで保護されたZipアーカイブ、または「パスフレーズ保護」のファイルに保存されたPGPキーリングまたはSSH秘密鍵)、パスワードベースのKDFが含まれていたことを確認できます。

パスワードベースのKDFの役割は次のとおりです。

  1. 入力として文字(半任意の長さ)のシーケンスを受け入れ、目的の暗号化アルゴリズムに適した長さ(128など)のビットのシーケンスを出力しますAES暗号化のビット);
  2. パスワードを辞書攻撃から「保護」するには、速度とコストを適切に(攻撃者は潜在的なパスワードを試してパスワードを推測しようとする可能性があります。各試行は彼にとって重くて高価であることを望みます)、ソルトを使用します(そのため2つの暗号化されたファイルを攻撃することは、1つを攻撃することの2倍の費用がかかります。

PBKDF2 は、構成可能な「反復回数」とソルトによって2番目のプロパティを保証します(両方のパラメーターは通常、暗号化されたファイルのパブリックヘッダーに格納されます)。

PBKDF2の不正ですが一般的な使用法は、パスワードをハッシュすることです。これは、PBKDF2出力をパスワード検証トークンとして使用することです。 PBKDF2からの導出で同じ値が得られる場合は、パスワードが受け入れられます。 PBKDF2は最初はそのために設計されていませんが、 bcrypt の方が間違いなく優れています( この答え を参照)。

2
Thomas Pornin