-1

最近、私は AES に関するラボを読み、実行しています。128 ビット AES の場合、暗号化中に平文が 128 ビット未満の場合、すべて 0 のパディングが追加されます。復号化後、これらの 0 を削除できます。

エラー検出にパディングを使用することを考えています。平文が常に 16 ビットの場合、復号化後のテキストは (16 ビットのデータ + 112 ビットの 0) の形式になるはずです。この形式を「法的な平文」と呼びます。合計で 2^16 の正当な平文が存在する可能性があります。

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

これは合理的に聞こえますか?

(もちろん、攻撃者は i 番目の暗号を変更して、(i+1) 番目の平文で必要な結果を得ることができます)

4

2 に答える 2

1

エラー (または改ざん) を検出するために、GCMなどの適切に設計された認証済み暗号化モードがあります。

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

于 2016-04-12T22:54:49.523 に答える
0
  1. 0 (0x00) によるパディングは、0x00 バイトで終わるバイナリ データには機能しません。通常、 PKCS#7 (旧 PKCS#5) パディングが使用されます。

  2. パディングと暗号化認証を組み合わせることは、CBC モード暗号化のセキュリティ違反です。パディング oracleを参照してください。一般的には悪い考えです。暗号化認証とパディングを分けてください。

  3. IV は秘密とは見なされず、ベスト プラクティスとして、暗号化されたデータの前にランダムな値が追加されます。非ランダム IV の使用は設計上の欠陥です。

多くの暗号学者はパディングと暗号化認証を検討し、より良い方法にたどり着きました。これらの方法に従うのが最善です。

一般に、暗号化ドメインの専門家でない限り、非標準的な方法を考え出さないことが最善です。

「シュナイアーの法則」 : 最も無知なアマチュアから最高の暗号学者まで、誰でも、自分では破ることのできないアルゴリズムを作成できます。

于 2016-04-12T22:32:52.460 に答える