GHASH
GCMの内部にあるユニバーサルハッシュ。暗号文を多項式に変換し、秘密の点で評価する。
GHASHは、関連データ、暗号文、末尾の長さブロックを128ビットずつに分け、GF(2128)上の多項式の係数として扱う。この多項式をH = E_K(0¹²⁸)、つまり全ゼロのブロックにブロック暗号を適用した値で評価する。結果を暗号化したカウンタブロックとXORすると、認証タグが出力される。McGrewとViegaが2004年にGCMへ組み込み、Intelが2010年にPCLMULQDQ命令を搭載して以降、ハードウェアでほぼ無料になった。
落とし穴は、全てがHに懸かっていることだ。ノンスを再利用すると、攻撃者はHを導く方程式を立てられ、その後はタグを自在に偽造できる。ビット順序が反転する独特の形式も、歴代の実装者を悩ませてきた。GCM-SIVのPOLYVALは同じ発想で、人間が追えるバイト順にしたものである。