パスワードから派生したキーで暗号化された多くのファイルがあります。標準的な方法に沿って、ランダムなソルトとパスワードを使用し、暗号化キーとIVを取得するためにPBKDF2を何度も繰り返します。次に、これを使用して、CBCモードのAES-256でデータを暗号化します。
すべてのプレーンテキストファイルの最初のバイトが「abcdef」などの固定文字列であることを仮想の攻撃者が知っている場合、データのセキュリティがどのように侵害される可能性がありますか?
平文の一部を知っていることが攻撃者に他の暗号化されたバイトまたはキー自体を推測または再計算する努力において利点を与える場合、これは暗号化アルゴリズムの重大な弱点と見なされます。 AESにはそのような弱点はありません。
上記の段落はいくつかの精度が必要です。確かに、私が攻撃者として、平文の一部のバイトが「Pope Bened.ct XVI is resigning」であり、「。」であるという知識が与えられた場合。攻撃者にとって未知のバイトであるため、未知のバイトが実際に「i」をエンコードしている可能性は比較的高いと推測できます。したがって、正しい定義は次のようになります。攻撃者がいくつかのプレーンテキストのバイトを知っている場合and暗号化されたファイル全体が失われたバイトを推測でき、同じ確率よりも成功する確率が高い場合同じ平文バイトを知っているがnot暗号化ファイルを知っている攻撃者は、暗号化アルゴリズムが壊れていると見なすことができます。 AESは壊れているとは見なされないため、問題ありません。
もう1つのポイントは、アクティブな攻撃についてです。攻撃者はmodify偽のデータを処理するように正直なシステムを誘導するためにデータを望んでいる可能性があります。 thatシステムの動作は、不明なバイトに関する多くの情報を提供する可能性があります(この攻撃の変種は SSL/TLSに対するBEAAST攻撃 で使用されるものです)。一部の平文バイトの知識は、そのような攻撃を容易にします。 AES-CBC自体は、アクティブな攻撃者から保護しません。アクティブな攻撃者を倒すには、 [〜#〜] mac [〜#〜] を適用する必要があります。暗号化とMACの組み合わせは 簡単ではありません ; CBCは、MACを含み、ハードワークを処理する暗号化モード(例 [〜#〜] gcm [〜#〜] または [〜#〜] eaxに置き換えてください。 [〜#〜] )。
(上記の定義は、攻撃者がプレーンテキストの一部を知っている「既知のプレーンテキスト攻撃」に関するものです。アクティブな攻撃については、攻撃者がchooseの一部に到達する「選択されたプレーンテキスト攻撃」について話しますプレーンテキスト、および「選択された暗号文攻撃」。攻撃者は暗号文を変更し、多かれ少なかれ直接復号化の結果を観察します。適切に適用および検証されたMACは、選択された暗号文攻撃に対して信頼できる保護を提供します。)
これは 既知の平文攻撃 の場合です。古い暗号が使用されている場合、この状況は悪用される可能性がありますが、AESにはこのタイプの既知の脆弱性はありません。
平文が毎回同じでも、IVは同じではありません。この特定のケースでは、ブルートフォースは速くありません。