Java を使用してパスワード Vault プログラムを実装しています。暗号化にはトリプル DES を、ハッシュには SHA256 をプログラムしました。
私の質問は、最初に生データ (パスワード) をハッシュしてから暗号化するか、最初にデータを暗号化 (パスワード) してから暗号化されたデータをハッシュする場合に違いがあるかということです。私が最も心配しているのは、セキュリティの面で深刻な変更が加えられるかどうかです。
ありがとう
Java を使用してパスワード Vault プログラムを実装しています。暗号化にはトリプル DES を、ハッシュには SHA256 をプログラムしました。
私の質問は、最初に生データ (パスワード) をハッシュしてから暗号化するか、最初にデータを暗号化 (パスワード) してから暗号化されたデータをハッシュする場合に違いがあるかということです。私が最も心配しているのは、セキュリティの面で深刻な変更が加えられるかどうかです。
ありがとう
あなたのコメントによると、メッセージ認証コードとしてハッシュだけを使用したくありません。このアプリケーションに適したハッシュベースの MAC (適切にはHMACと呼ばれます) があります。この場合、おそらく HMAC-SHA256 を使用する必要があります。また、MAC 用に別のキーが必要になることにも注意してください (暗号化と MAC に同じキーを使用することは絶対に避けてください)。
しかし、あなたの質問自体では、あなたの質問は、暗号化してからMACとMACから暗号化することに要約されます。このCrypto.SE answerによると、3DES以外の暗号化アルゴリズムを許可する場合はIVとアルゴリズム識別子を含む暗号文に関するすべてを確実にMACする限り、Encrypt-then-MACが最善の方法です。暗号文と平文の整合性が得られ、平文を検証するために復号化のプロセスを実行する必要はありません。