AES暗号化と既知のキーとプレーンテキストを使用して、攻撃者は異なるキーとプレーンテキストを作成して同じ暗号文を作成できますか?
要するに:AES暗号化で、攻撃者は、新たなKEY2とplaintext2を作成することができAESようにキー1(plaintext1)= AES KEY2(plaintext2)
もしそうなら、例えばAES-GCMのようなMACまたはSHA256 HMACを備えたAES-CTRを適用するだけで解決できますか?
対象アプリケーション:ファイルの暗号化。キーを持つすべてのクライアントは、ファイルを復号化できます。暗号化されたファイルは、SHA256ハッシュによってサーバーによって(キーを知らずに)盲目的に処理されます。新しいクライアントがホストされたファイルとともに偽のキーを渡された場合、彼はそれが間違ったキーであることを検出できるはずです。その結果、同じ暗号化ファイルから他の(ノイズの多い)バイナリを取得しません。偽のキーを配信する攻撃者は、元のキー、暗号文、したがって平文にもアクセスできることに注意してください。
(同じファイルを異なるキーで暗号化するオプションがあるはずです。したがって、確定的暗号化は私の意図ではありません)
私が考えたもう1つの簡単な解決策は、秘密鍵のハッシュを暗号化されたファイルと一緒にサーバーに保存し、それをクライアントに送信して確認することです。しかし、私は実際には、私が思いついたものではなく、よく知られているすぐに使えるソリューションを使用することを好みます。指定された暗号文で1つのキー結果のみを保証するのに十分なMAC / HMACを適用しています。
私の意図が明確であり、知識のある人が私を正しい方向に向けることができることを願っています。
回答
基本的なAESの場合、この方法で2つのキーを簡単に見つけることができます。いずれかを取る$key1$ そして $plaintext1$ と計算 $c=AES_{key1}(plaintext1)$。次に、$key2$ と計算 $plaintext2 = AES^{-1}_{key2}(c)$。その結果$AES_{key1}(plaintext1) = AES_{key2}(plaintext2)$。そうは言っても、AESがMACを使用した認証付き暗号化モードで使用されている場合、これが必ずしも可能であるとは限りません。そうでないという保証はなく、そのようなことを証明する必要があることを強調したいと思います。特に、(異なるキーを使用して)標準のencrypt-then-MACを実行した場合、「暗号化」部分は変更されないため、これはまったく同じ方法で脆弱になります。結論として、これは達成可能であるはずですが、それは確かに保証されておらず、多くの場合、まったく当てはまりません。