-1

最近、私はAESでラボを読んで研究しています。 128ビットAESの暗号化中に、平文が128ビット未満の場合は、すべての0のパディングが追加されます。復号後、これらの0は取り除くことができます。AESに特定のパディングパターンを使用してエラーを検出できますか?

平文が常に16ビットの場合、復号化後のテキストは(16ビットのデータ+ 112ビットの0の)形式である必要があります。このフォームを「法的平文」と呼びます。完全に2^16の法的平文が存在する可能性があります。

攻撃者がキーとIVを知らない場合、暗号を変更することによって、復号化された平文はどのような形式でもよい。彼/彼女は(2^16)/(2^128)= 2 ^( - 112)の確率をもってそれを正当な平文にする。これは非常に小さなチャンスである。

これは合理的ですか? 0と

(もちろん、攻撃者がまだ平文番目)は、(i + 1で希望の結果を得るために、i番目の暗号を変更することによって、ビット反転を行うことができます)

+0

これは、キーチェック値(KCV)の変形です。 [ここにいくつかの推論があります](http://crypto.stackexchange.com/a/1933/13022)なぜこの努力に値するものではありません。代わりに認証された暗号化を使用してください。 –

答えて

0
  1. パディング($ 00)になるも0x00バイトで終わるバイナリデータのための仕事。一般にPKCS#7néePKCS#5パディングが使用されます。

  2. パディングと暗号化認証を組み合わせることは、CBCモード暗号化のセキュリティ違反です(padding oracleを参照)。一般的には悪い考えです。暗号化認証とパディングを別々にしておきます。

  3. IVは秘密ではなく、ベストプラクティスは暗号化されたデータの先頭にランダムな値があるためです。非ランダムIVの使用は設計上の欠陥です。

多くの暗号化技術者がパディングと暗号化の認証を検討しており、より良い方法が週に到着しています。

一般に、暗号化ドメインの専門家でない限り、非標準的な方法を試してみることはお勧めしません。

"Schneier's Law":誰よりも、最も無知なアマチュアから最高の暗号技術者まで、彼自身が壊すことのできないアルゴリズムを作成することができます。

+0

私は1と3を得ました。あなたは2をもっと詳しく説明できますか?復号化された平文を認証チェックに適法にするために暗号を変更することは非常に難しいはずです。 (私はそれがビットフリップで次の平文にすることができると理解しています) – adieux

1

のように、GCM,のように、エラー(または改ざん)を検出するために設計されています。

あなたのスキームにモードを明示的に指定するのではなく、CBCを提案しているようです。もしそうなら、それはまったく保護を全く提供しません。攻撃者は暗号テキストの最初の16ビットのいずれかを反転させて、有効な平文を残すことができます。

+0

現在の暗号の最初の16ビットを反転すると、次の平文のブロックが有効になりますか?現在の暗号から解読されたプレーンテキストはまだ有効ではありません。 – adieux

+0

@adieuxそうですね。現在のブロックの変更を検出して停止します。それでもセキュリティの確信は得られていませんし、GCMははるかに効率的ですから、この計画には何が動いていますか? – erickson

+0

ありがとうございます。私がこれを持ち上げた理由は、私たちのチャンネルは非常に遅く、メッセージは3秒ごとに送信されます。ですから、毎回このような簡単な方法で十分だと思います。ここに潜在的な問題がありますか? – adieux

関連する問題