AES-CTR
AES-CTR とは何ですか?
AES-CTR増加するカウンタを AES で暗号化し、その出力を平文と XOR することで AES をストリーム鍵生成器として用いるモード。
AES-CTR(カウンタモード)は NIST SP 800-38A で標準化された機密性専用モードです。暗号は連続するカウンタブロック(通常は 96 ビット nonce と 32 ビットブロックカウンタを連結したもの)を暗号化し、得られた鍵ストリームを平文と XOR します。各ブロックは前のブロックではなくカウンタのみに依存するため、CTR は完全な並列暗号化/復号と暗号文へのランダムアクセスを可能にします。これらの特性により、CTR はディスク暗号化、IPsec ESP(RFC 3686)、および認証モードで包んだ TLS レコード保護の主力となっています。
CTR を特徴づける弱点は、完全性をまったく提供せず、可鍛性を持つことです。攻撃者が暗号文の 1 ビットを反転させると、まったく同じ平文ビットが検知されずに反転します。したがって常に MAC と組み合わせるか、GCM、EAX、CCM などの AEAD の内部エンジンとして用いなければなりません。第二のより危険な落とし穴は nonce/カウンタの再利用です。同じ鍵と同じ開始カウンタで 2 つのメッセージを暗号化すると鍵ストリームが重複し、2 つの暗号文を XOR すると鍵ストリームが打ち消され、平文同士の XOR が得られます。これは実在するシステムを破ってきた典型的な「ツータイムパッド」です。鍵ストリームはデータによらず同一なので、カウンタの再利用は異なるファイル間であっても致命的です。
実務では、保存データや伝送データに生の AES-CTR を決して用いないでください。AES-GCM または ChaCha20-Poly1305 を選びましょう。これらは同じカウンタモードのコアの上に認証を構築し、唯一の運用要件は nonce の一意性の保証だけになります。
flowchart LR
subgraph 鍵ストリーム生成
N[Nonce + カウンタ 0] --> E0[AES 暗号化] --> KS0[鍵ストリームブロック 0]
N1[Nonce + カウンタ 1] --> E1[AES 暗号化] --> KS1[鍵ストリームブロック 1]
N2[Nonce + カウンタ 2] --> E2[AES 暗号化] --> KS2[鍵ストリームブロック 2]
end
P0[平文 0] --> X0((XOR))
KS0 --> X0 --> C0[暗号文 0]
P1[平文 1] --> X1((XOR))
KS1 --> X1 --> C1[暗号文 1]
P2[平文 2] --> X2((XOR))
KS2 --> X2 --> C2[暗号文 2]
C0 --> MAC[MAC を追加 / GCM を使用<br/>完全性のため]● 例
- 01
AES-CTR は AES-GCM や AES-CCM の暗号化レイヤーである。
- 02
Linux dm-crypt は AES-CTR 系列をフルディスク暗号化に利用する。
● よくある質問
AES-CTR とは何ですか?
増加するカウンタを AES で暗号化し、その出力を平文と XOR することで AES をストリーム鍵生成器として用いるモード。 サイバーセキュリティの 暗号 カテゴリに属します。
AES-CTR とはどういう意味ですか?
増加するカウンタを AES で暗号化し、その出力を平文と XOR することで AES をストリーム鍵生成器として用いるモード。
AES-CTR からどのように防御しますか?
AES-CTR に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。
AES-CTR の別名は何ですか?
一般的な別名: カウンタモード, AES-128-CTR, AES-256-CTR。