PKCS#1はSHA1をデフォルトのハッシュ関数として定義し、すべての実装がこのハッシュ関数とSHA1に基づくマスク生成関数をサポートしています。一部の実装では、OAEPパディングに使用されるハッシュ関数を変更できます。
ランダムデータの暗号化(対称暗号化キー)でSHA1ハッシュを使用できますか、または別のハッシュ方法を使用する必要がありますか?
既知の攻撃または脆弱性はありますか?
他のハッシュ関数の利点は何ですか?
ハッシュ関数としてのSHA-1は、「わずかに不安定」であることが知られています。これは160ビットのハッシュ関数です(その出力は160ビットのシーケンスです)。そのため、2を提供する必要があります80 衝突への抵抗、その真の抵抗は2に近いようです61 とか、ぐらい。
ただし、OAEPはその基礎となるハッシュ関数に多くのことを求めません。暗号化システムのセキュリティを確保するために、衝突抵抗は実際にはまったく必要ないようです。詳細は この記事 を参照してください(少し技術的です)。
ボトムライン:SHA-1の弱点を利用してRSA-OAEPに対して機能する攻撃については知りません。そのような攻撃が存在する可能性があるかどうかさえもわかりません。その意味で、SHA-1から別のハッシュ関数RSA-OAEPのコンテキストでに切り替えることには、暗号化の観点からは既知の利点はありません。
ただし、現在の方法は、SHA-1を一目で撃ち、SHA-2機能(SHA-256またはSHA-512など)の1つに系統的に切り替えることを要求することです。したがって、SHA-256を使用することは広報活動に適しており、時間の節約になります。SHA-1に固執することは、多くの人に正当化する必要があるためです。
SHA-256の方が出力が大きい(256ビット)ことに注意してください。これにより、暗号化できるデータのサイズに下限が課せられます。 2048ビットのRSA公開鍵(256バイト)を使用する場合、RSA-OAEP + SHA-1の最大メッセージサイズは214バイト(1712ビット)ですが、RSA-OAEP +の場合は190バイト(1520ビット)になります。 SHA-256。暗号化するすべてが対称暗号化のキーである場合、これは実際には問題になりません。