9.5. Pre-Shared Key Recommendations (事前共有鍵の推奨事項)
9.5. 事前共有鍵の推奨事項
PSK モードと AuthPSK モードでは, PSK は少なくとも 32 バイトのエントロピーを持ち, Nh バイト以上の長さである必要があります。32 バイトより長いが Nh バイトより短い PSK の使用は許可されています。
HPKE は鍵導出関数として HKDF を使用するように指定されています。HKDF は辞書攻撃を遅くするように設計されていません ([RFC5869] を参照)。したがって, HPKE の PSK メカニズムは, PSK として低エントロピーパスワードを使用するのには適していません: 敵対者が KEM 共有秘密 shared_secret を知っており, 良い PSK と悪い PSK を区別するオラクルにアクセスできるシナリオでは, PSK 回復攻撃を実行できます。このオラクルは, キャプチャされた HPKE 暗号文の復号化操作, または間違った PSK を使用したときに明らかに異なる他の受信者の動作である可能性があります。敵対者は, 1人の参加者のすべての KEM 秘密鍵を知っている場合, KEM 共有秘密 shared_secret を知っています。PSK モードでは, 敵対者が送信者として行動する場合, これは自明に成り立ちます。
より低いエントロピーの PSK を回復するために, このシナリオの攻撃者は辞書攻撃を簡単に実行できます。可能な PSK 値の集合 S が与えられると, 攻撃者は S の各値に対して HPKE 暗号文を生成し, 結果の暗号文をオラクルに送信して受信者が使用している PSK を学習します。さらに, HPKE は鍵コミットメントを持たない AEAD スキームを使用しているため, 攻撃者は分割オラクル攻撃 [LGR20] を実行できます。この攻撃は, |S| = m*k である S 個の可能な PSK 値の集合から PSK を回復でき, 長さが k (ブロック内の最大メッセージ長) に比例する暗号文を使用して, オラクルへのおよそ m + log k 回のクエリで実行できます。([LGR20] からのマルチ衝突アルゴリズムを適用するには, 各候補鍵に対して適切なノンスを計算するアルゴリズムへの小さな適応が必要です。この変更により, 鍵ごとに HKDF への1回の呼び出しが追加されます。分割オラクルクエリの数は変わりません。) その結果, PSK は m + log k が攻撃者にとって禁止的になるように十分なエントロピーで選択されなければなりません (例えば, 2^128)。将来の仕様では, 鍵コミットメントを持つ新しい AEAD アルゴリズムを定義できます。