暗号モード(CBC/CTR/GCM)とは?AES暗号化の仕組みとセキュリティ対策を解説

暗号モード(CBC/CTR/GCM)は、AESなどのブロック暗号をデータ全体に適用するための動作方式です。CBC・CTR・GCMそれぞれの特徴、セキュリティ上の違い、認証暗号としてのGCMの優位性を詳しく解説します。

概要

暗号モード(Mode of Operation)とは、AESやDESなどのブロック暗号を用いて、固定長ブロック以上のデータを暗号化するための動作方式を指します。ブロック暗号は通常128ビットや256ビットといった固定長のデータブロックしか暗号化できないため、任意長のデータを安全に暗号化するには適切なモードの選択が不可欠です。

主要な暗号モードには、CBC(Cipher Block Chaining)、CTR(Counter)、GCM(Galois/Counter Mode)などがあり、それぞれ異なるセキュリティ特性と性能特性を持ちます。CBCは古典的なモードで各ブロックが前のブロックと連鎖して暗号化されます。CTRはカウンタを使ってストリーム暗号のように動作し、並列処理が可能です。GCMはCTRモードに認証機能を追加した認証付き暗号(AEAD)で、現代的なセキュリティ要件を満たします。

TLS 1.3やHTTPSなどの現代的なプロトコルでは、データの機密性だけでなく完全性も保証するGCMモードが標準として採用されています。暗号モードの選択ミスは深刻な脆弱性につながるため、用途に応じた適切なモード選択とパラメータ設定が重要です。

詳細解説

暗号モードの歴史は1970年代のDES(Data Encryption Standard)の標準化に遡ります。当初はECB(Electronic Codebook)やCBCといった基本的なモードが定義されましたが、セキュリティ研究の進展とともに多様なモードが開発されてきました。

CBC(Cipher Block Chaining)モードは1976年にIBMによって考案され、各平文ブロックを暗号化する前に直前の暗号文ブロックとXOR演算することで、同じ平文ブロックでも異なる暗号文を生成します。初期化ベクトル(IV)を必要とし、IVは予測不可能でなければなりません。ただし、CBCは順次処理しか行えず、パディングオラクル攻撃などの脆弱性が知られています。

CTR(Counter)モードは、カウンタ値を暗号化してキーストリームを生成し、平文とXOR演算することで暗号文を得ます。ブロック暗号をストリーム暗号のように使用でき、ランダムアクセスや並列処理が可能という利点があります。ノンス(Nonce)とカウンタの組み合わせで各ブロックを暗号化するため、ノンスの再利用は致命的な脆弱性となります。

GCM(Galois/Counter Mode)は2004年に標準化されたAEADモードで、CTRモードの暗号化にGalois体上の乗算を用いた認証タグ生成を組み合わせています。単一のパスで暗号化と認証を同時に行え、高速かつ並列処理可能です。TLS 1.2以降、IPsec、SSHなどで広く採用され、AES-GCMは現代的な暗号通信の事実上の標準となっています。認証タグにより改ざん検出が可能で、MAC-then-EncryptやEncrypt-then-MACといった従来の構成より安全性が高いとされています。

AI時代における暗号モード(CBC/CTR/GCM)の活用

AIモデル通信の保護

ChatGPTやClaude、Geminiなどの大規模言語モデルとのAPI通信では、HTTPSによるTLS 1.3が使用され、その内部でAES-GCMが暗号化モードとして採用されています。企業が独自AIモデルをデプロイする際も、機密データを含むプロンプトやレスポンスを保護するためGCMモードが推奨されます。認証機能により中間者攻撃や改ざんを防止し、高速処理でレイテンシを最小化できます。

機械学習モデルの暗号化保存

学習済みニューラルネットワークの重みパラメータやトレーニングデータは企業の重要資産です。これらをクラウドストレージやデータベースに保存する際、AES-GCMで暗号化することで機密性と完全性を同時に保証できます。GCMの認証タグにより、保存されたモデルファイルが改ざんされていないことを検証でき、サプライチェーン攻撃のリスクを軽減します。大容量データでもCTRベースのGCMなら並列処理で高速に暗号化可能です。

エッジAIデバイスのセキュア通信

IoTやエッジコンピューティング環境でAI推論を行うデバイスは、計算リソースが限られています。GCMモードはハードウェアアクセラレーション(AES-NI、ARMv8 Crypto Extension)に最適化されており、組み込みデバイスでも高速に動作します。監視カメラやドローン、自律走行車などがAIエッジサーバーと通信する際、AES-GCMを用いることで低レイテンシかつセキュアなデータ伝送が実現できます。

よくある質問(FAQ)

Q: CBCモードとGCMモードの違いは何ですか?

CBCモードは暗号化のみを提供し、各ブロックが前のブロックと連鎖する古典的な方式です。順次処理しか行えず、パディングが必要で、完全性保証のために別途HMACなどのMACが必要です。一方、GCMモードは暗号化と認証を同時に行うAEADで、並列処理が可能、パディング不要、認証タグにより改ざん検出ができます。現代的なセキュリティ要件ではGCMが推奨されます。

Q: 暗号モードを選択する際の注意点は?

最も重要なのはノンスやIVの適切な管理です。GCMやCTRモードではノンスの再利用は致命的で、同じ鍵で同じノンスを使うと暗号が完全に破られます。CBCではIVが予測可能だと攻撃を受ける可能性があります。また、データの完全性保証が必要ならGCMなどのAEADモードを選択し、並列処理や高速化が必要ならCTRベースのモードが適しています。古いECBモードは絶対に使用してはいけません。

Q: AES-GCMはなぜTLS 1.3で標準採用されているのですか?

AES-GCMは暗号化と認証を単一の処理で実現するため、Encrypt-then-MACなどの複雑な構成より安全性が高く実装ミスが少ないためです。また、並列処理可能で高速であり、AES-NIなどのハードウェアアクセラレーションにより非常に高いパフォーマンスが得られます。HTTPS通信のような大量データ転送でレイテンシを抑えつつセキュリティを保証できるため、TLS 1.3では主要な暗号スイートとして採用されています。

外部リンク

関連用語