0Pricing
Cryptology Academy · レッスン

CTRモードとストリーム暗号の動作

カウンターモードを使って、ブロック暗号をキーストリーム生成器に変換します。

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

ようこそ

カウンター(CTR)モードは、任意のブロック暗号をストリーム暗号に変換します。並列化が可能で、パディングが不要であり、AES-GCMの基礎となっています。ここではCTRモードを習得します。

CTRモードの概念

連続するカウンター値を暗号化して、キーストリームを生成します: Keystream[i] = AES(K, Nonce || Counter_i) Ciphertext = Plaintext XOR Keystream ブロックごとにカウンターを増加させます。復号は暗号化と同じ処理です。

CTR と CBC の比較

CBC:逐次暗号化(各ブロックは直前のブロックに依存します)。CTR:完全に並列化できます(各ブロックは独立しています)。1 GB のファイルでは、CTR はすべての CPU コアを利用できますが、CBC は利用できません。

パディング不要

CTR は任意の長さのキーストリームを生成します。平文とバイト単位で XOR を取ります。100バイトのメッセージには100バイトのキーストリームを使うため、パディングは不要です。ストリーミングデータに最適です。

ノンス/カウンタ構造

128ビットの AES ブロックでは、次のように分割するのが一般的です。 - 64ビットのランダムなノンス(メッセージごとに一意) - 64ビットのカウンタ(ブロックごとにインクリメント) または、96ビットのノンス + 32ビットのカウンタ(GCM 標準)です。 ノンスの一意性は極めて重要です。同じ(ノンス、鍵)の組を決して再利用してはいけません。

CTR のノンス再利用攻撃

同じ(鍵、ノンス)を使った CTR は、同じキーストリームを生成します。異なる2つのメッセージを暗号化すると、C1 XOR C2 = P1 XOR P2 になります。多重ワンタイムパッド攻撃と同じです。情報が壊滅的に漏えいします。

CTR のランダムアクセス

CTR ではランダムアクセスが可能です。ブロック1000を復号するには、AES(K, Nonce || 1000) を直接計算します。前のブロックを復号する必要はありません。データベースやディスク暗号化(他のモードとの組み合わせ)に最適です。

CTR の Python 実装

from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes import os nonce = os.urandom(16) # Used as counter start cipher = Cipher(algorithms.AES(key), modes.CTR(nonce)) enc = cipher.encryptor() ciphertext = enc.update(plaintext) + enc.finalize()

CTR とエラー伝播

CTR モードでは、破損した暗号文の1ビットが、平文のちょうど1ビットだけを反転させます。エラーが他のブロックに伝播することはありません(CBC ではブロックが破損すると次のブロックも壊れます)。ノイズの多い通信路に適しています。

ノンス誤用耐性を持つ SIV モード

AES-SIV(Synthetic IV)はノンス誤用耐性を持ちます。ノンスが再利用されても、明らかになるのは平文が同一であることだけで、平文全体が漏れることはありません。ノンスの一意性を保証しにくい状況で使用されます。

CTR から GCM へ

AES-GCM = AES-CTR + GHASH による認証です。カウンタモードが暗号化を担当します。GHASH はガロア体上の乗算を使って認証タグを計算します。これらを組み合わせることで、認証付き暗号化を実現します。

確認問題

大量のデータを暗号化する場合、CBC モードに対する CTR モードの主な利点は何ですか?

まとめ

CTR モードを習得しました。次は CTR と認証を AES-GCM で組み合わせ、認証付き暗号化を実現します。

よくある質問

「CTRモードとストリーム暗号の動作」レッスンは無料ですか?

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

「CTRモードとストリーム暗号の動作」で何を学びますか?

カウンターモードを使って、ブロック暗号をキーストリーム生成器に変換します。 ブラウザで直接実行するハンズオンコードでCryptology Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「CTRモードとストリーム暗号の動作」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

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