7. Security Considerations (セキュリティに関する考慮事項)
7. Security Considerations (セキュリティに関する考慮事項)
curve25519のセキュリティレベル (プリミティブに対するブルートフォース攻撃に必要な「操作」の数) は, 標準の128ビットレベルよりわずかに低くなっています。これは許容されます。なぜなら, 標準的なセキュリティレベルは主に, セキュリティレベルが自然に2の累乗になるはるかに単純な対称プリミティブによって駆動されるためです。非対称プリミティブの場合, 2の累乗のセキュリティレベルに厳密に従うには, 設計の他の部分で妥協が必要になりますが, これは拒否します。さらに, 複数のターゲットを同時に攻撃できる一般的な脅威モデルでは, プリミティブの種類間でセキュリティレベルを比較することは誤解を招く可能性があります [bruteforce]。
curve448の約224ビットのセキュリティレベルは, パフォーマンスとパラノイアの間のトレードオフです。大規模な量子コンピュータが作成されれば, curve25519とcurve448の両方が破られますが, 古典的コンピュータの能力の合理的な予測では, curve25519は完全に安全であると結論付けられます。ただし, 一部の設計では, パフォーマンス要件が緩和されており, 楕円曲線に対する分析的進歩に対するある程度のヘッジを望んでいるため, curve448も提供されています。
この文書で定義された曲線上でDiffie-Hellmanを使用するプロトコル設計者は, 「寄与動作」を仮定してはなりません。具体的には, 寄与動作とは, 両方の当事者の秘密鍵が結果の共有鍵に寄与することを意味します。curve25519とcurve448の補因子はそれぞれ8と4であるため, 小さい位数の入力点は他方の当事者の秘密鍵からの寄与を排除します。この状況は, セクション6で指定されているように, 実装が行ってもよい全ゼロ出力をチェックすることで検出できます。ただし, 多数の既存の実装はこれを行っていません。
これらの曲線を使用する設計者は, 各公開鍵に対して, それと同等の公開で計算可能な公開鍵がいくつか存在することに注意する必要があります。つまり, それらは同じ共有秘密鍵を生成します。したがって, 公開鍵を識別子として使用し, 共有秘密鍵の知識を所有権の証明として使用する (鍵導出に公開鍵を含めずに) と, 微妙な脆弱性につながる可能性があります。
設計者はまた, これらの曲線の実装が, この文書で指定されているモンゴメリはしごを使用しない場合があり, 代わりに汎用の楕円曲線ライブラリを使用する可能性があることにも注意する必要があります。これらの実装は, ツイスト上の点を拒否し, 非最小体要素を拒否する可能性があります。推奨されませんが, このような実装は, ここで指定されたモンゴメリはしごと相互運用しますが, それと簡単に区別できる場合があります。たとえば, 非正規値またはツイスト上の点を送信すると, このような実装では観測可能なエラーが発生する可能性がありますが, このテキストの設計に従う実装では, 共有鍵が正常に生成されます。