GCM (Galois/Counter Mode)
GCM(Galois/Counter Mode)は CTR 暗号と GHASH 認証を組み合わせた AEAD モードであり、機密性と完全性を同時に提供し、TLS 1.2/1.3 の推奨モードである。
目的
暗号化と認証を 1 パスで行い、CBC+HMAC の 2 段階のオーバーヘッドと実装上の落とし穴を避ける。
メカニズム
CTR モードで平文を暗号化する。GHASH は鍵 H = E_K(0^128) を用いて GF(2^128) 上で暗号文ブロックと AAD の多項式 MAC を計算し、128 ビットの認証タグを生成する。タグ検証に失敗した場合、暗号文は拒否される。
ユースケース
- TLS 1.2/1.3 の AES-GCM 暗号スイート
- IPsec ESP の保護
- WPA3 の無線通信
- ストレージ暗号化
例
- 入力
key + IV + plaintext + AADOutputciphertext + 16-byte tagAEAD
よくあるエラー
- IV/nonce reuse breaks both confidentiality and integrity
- Use a counter or random IV and never repeat it
関連用語
CTR (Counter Mode)
CTR モードはブロック暗号をストリーム暗号に変える: 増分カウンタを暗号化してキーストリームを生成し、平文と XOR する。並列処理とランダムアクセスを支えるが、完全性は提供しない。 用語集
CBC (Cipher Block Chaining)
CBC モードは、暗号化前に直前の暗号文ブロックと現在の平文ブロックを XOR するため、同一の平文ブロックも異なる暗号文になる。ランダムな IV が必要である一方、完全性の認証は提供しない。 用語集
Mode of Operation
運用モード(mode of operation)は、ブロック暗号を任意長のデータに適用するための方式で、暗号化時に複数の平文ブロックをどう連結するかを定義する。代表的なものにECB、CBC、CTR、GCMがある。 用語集
IV (Initialization Vector)
初期化ベクトル(IV、Initialization Vector)は、ブロック暗号モードにランダム性を注入する入力である。同じ平文でも暗号化ごとに異なる暗号文が生成される。 用語集
Nonce
ノンス(nonce、number used once)は暗号化で一度だけ使われる値である。IVと似るが、ランダム性よりも一意性を重視し、ストリーム暗号やAEADで広く使われる。 用語集