0Pricing
Cryptology Academy · レッスン

ECBとCBC:パターンとIV

ECBのペンギン攻撃を示し、ランダムなIVを使ったCBCが必要な理由を学びます。

「ECBとCBC:パターンとIV」はCoddyKit上の無料Cryptology Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCryptology Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cryptology Academyコースには全4レッスンが含まれています。

ようこそ

ECBとCBCは、ブロック暗号の2つのモードです。ECBはパターンを漏えいするため、特に安全性が低いことで知られています。ランダムなIVを使うCBCは、はるかに強力です。ここでは両方を深く理解します。

ECBモード:Electronic Codebook

ECBは各ブロックを独立して暗号化します:Ci = AES(K, Pi)。同じ平文ブロックは、毎回同じ暗号文ブロックになります。1つのメッセージ内でも、複数のメッセージ間でも、内容が一致すればブロックは同一です。

ECBペンギン

「ECBペンギン」は、典型的なデモンストレーションです。LinuxのペンギンTuxのPNG画像をAES-ECBで暗号化します。出力は依然としてペンギンのように見えます。同じ色の領域が同じパターンに暗号化されるためです。

ECBの脆弱性:ブロックの再生

ECBモードでは、攻撃者は鍵を知らなくても暗号文ブロックを並べ替えられます: - ブロックは独立しています - ブロックを並べ替える → 復号後の平文も並べ替わります - ブロックを複製する → 内容も複製されます - ブロックを削除する → 内容が失われます

CBCモード:Cipher Block Chaining

CBCは、暗号化する前に各平文ブロックと直前の暗号文をXORします: C0 = AES(K, P0 XOR IV) Ci = AES(K, Pi XOR C(i-1)) 異なる位置にある同じ平文 → 異なる暗号文

初期化ベクトル(IV)

IVは最初のブロックに対する「C(-1)」です。次の条件を満たす必要があります: - メッセージごとにランダムで一意である - 秘密ではない(暗号文と一緒に送信する) - 同じ鍵で決して再利用しない 予測可能なIVはCBCの安全性を損ないます。

CBCの復号

Pi = AES_Dec(K, Ci) XOR C(i-1) P0 = AES_Dec(K, C0) XOR IV 注:ブロックiの復号に必要なのは、CiとC(i-1)だけです。暗号化とは異なり、ブロックは並列に復号できます。

CBCビットフリッピング攻撃

ブロックCiのビットiを反転すると、(1)Piが壊れ、(2)P(i+1)のビットiが予測可能な形で反転します。認証がなければ、攻撃者は位置を把握したうえで、特定の平文ビットを変更できます。

TLS 1.0へのBEAST攻撃(2011年)

BEASTは、予測可能なIVを使うTLS 1.0のCBCを悪用しました。あるレコードの最後のブロックが、次のレコードのIVとして使われていました。RizzoとDuongによって実証され、ブラウザーはTLS 1.1以降へのアップグレードを余儀なくされました。

CBCに認証が必要な理由

MACなしのCBC暗号化では、ビットフリッピング攻撃やパディングオラクル攻撃が可能になります。常にCBCとHMACを組み合わせてください(Encrypt-then-MAC)。または、認証機能を組み込んだAEADであるAES-GCMに切り替えてください。

Pythonでの実用的なCBC

from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes import os iv = os.urandom(16) key = os.urandom(32) cipher = Cipher(algorithms.AES(key), modes.CBC(iv)) enc = cipher.encryptor() ciphertext = enc.update(padded_plaintext) + enc.finalize()

クイックチェック

ECBモードでは、なぜ平文の構造に関する情報が漏えいするのですか?

まとめ

ECBは危険で、CBCはより安全ですが認証が必要です。次はCTRモードを学び、AESをストリーム暗号に変換します。

よくある質問

「ECBとCBC:パターンとIV」レッスンは無料ですか?

はい。「ECBとCBC:パターンとIV」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cryptology Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cryptology Academyコースには全4レッスンが含まれています。

「ECBとCBC:パターンとIV」で何を学びますか?

ECBのペンギン攻撃を示し、ランダムなIVを使ったCBCが必要な理由を学びます。 ブラウザで直接実行するハンズオンコードでCryptology Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Cryptology Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのCryptology Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「ECBとCBC:パターンとIV」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このCryptology Academyレッスンでコードを書いて実行できますか?

はい。すべてのCryptology Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. ブロック暗号の基礎とパディング
  2. ECBとCBC:パターンとIV
  3. CTRモードとストリーム暗号の動作
  4. GCMと認証付き暗号化
← Cryptology Academyに戻る