Rfc2898DeriveBytes に基づくパスワード ハッシュ メカニズムがあります (ここで詳しく説明されているコードに基づく: http://crackstation.net/hashing-security.htm )。内部的には、このクラスは SHA1 を使用します。CrackStation リンクは SHA1 が「古い」ことを示していますが、Rfc2898DeriveBytes は内部的に使用していますが、Rfc2898DeriveBytes は依然として適切なメカニズムであると述べています。
私の顧客のセキュリティ部門は、「SHA1 が侵害された」(具体的には、インターネット経由で送信するドキュメントに署名する目的で、特定の状況下で SHA1 が無効になったということを聞いています。この「脆弱性」という事実" はパスワード ハッシュには適用されず、セキュリティ部門にとって重要ではありません)。その結果、パスワード ハッシュ メカニズムを変更して SHA2 を採用するよう要求されました。
現在、.Net フレームワークには、内部で SHA2 (または SHA256 など) を使用する Rfc2898DeriveBytes に相当するものはありません。リフレクションを使用してこのクラスのソース コードを取得し、それを変更できることはわかっていますが、暗号化の最初のルールは「独自のものを作成しないこと」であると常に言われてきました。
これは主に私の顧客による政治的な要求であり、技術的な要求ではなく、Rfc2898DeriveBytes を実行する前に SHA2 ハッシュを介してパスワードを実行することで簡単に満たすことができます。しかし、私は暗号化について十分な知識がなく、これが悪い可能性があるかどうかを判断できません。実際には、客観的に安全性の低いパスワード ハッシュになる可能性があります。
SHA2 を使用する Rfc2898DeriveBytes と同等のクラスを知っている人はいますか? または、Rfc2898DeriveBytes の前に SHA2 ハッシュを介してパスワードを実行することが完全に安全かどうかを誰かが知っていますか?