Galois/Counter Mode
名称が示すように、GCMは暗号化としてCTRモードを、認証として新しいGalois modeを組み合わせたものである。鍵となるのは認証に用いられるガロア体 (Galois field)における乗法であり、並列計算が可能であることからCBCモードのように連鎖モードを用いる認証アルゴリズムよりも高速化が可能である。利用される GF(2) 有限体は以下の多項式で定義される。
x 128 + x 7 + x 2 + x + 1 {\displaystyle x^{128}+x^{7}+x^{2}+x+1}
認証タグはGHASH関数にデータブロックを与えることで構成され、その結果は暗号化される。GHASH関数は以下のように定義される。
GHASH ( H , A , C ) = X m + n + 1 {\displaystyle {\text{GHASH}}(H,A,C)=X_{m+n+1}}
ここで H は128個のゼロから成る文字列をブロック暗号によって暗号化したもの、A は認証のみ行う(暗号化はしない)データ、C は暗号文、m は A に含まれる128ビットのブロックの数、nは C に含まれる128ビットのブロックの数である(A および C の最終ブロックは128ビットちょうどである必要はない)。i = 0, ..., m + n + 1 に対する Xi は以下のように定義される。