Galois/Counter Mode
Galois/Counter Mode(ガロア カウンター モード、GCM)は、ブロック暗号の暗号利用モードの一つであり、認証付き暗号の一つである。
GCMは認証付き暗号の一つであり、データ保護と認証(完全性確認)の両方の機能を提供する。GCMはブロック長128ビットのブロック暗号に適用可能である。Galois Message Authentication Code (GMAC) は、認証のみに特化したGCMの派生であり、メッセージ認証符号として利用できる。GCM、GMACのいずれも、任意長の初期化ベクトルを用いることが可能である。
同じブロック暗号であっても、暗号利用モードが異なればそのパフォーマンスや効率には大きな違いが生じる。GCMは並列処理が可能であり、また、その実装は命令パイプラインやハードウェアでのパイプラインを活用することが可能である。一方、CBCモードはしばしばパイプラインストール(英語版)(命令やユニット間の相互関係によってパイプラインが停止すること)に陥る。
68 cycles per byteを達成している。Daiらは、同じアルゴリズムでAES-NI(AES暗号化のハードウェアアクセラレーション)とPCLMULQDQ(GCMの高速化)を併用することで3.5 cycles per byteを報告している。Shay Gueron とVlad Krasnovは、Ivy Bridgeにおいて2.47 cycles per byteを達成している。OpenSSLおよびNSSに対しても、GCMの高速化のためのパッチが提出されている。
認証と暗号化の両方を必要とする場合には、ソフトウェアでの実装においてそれらの操作を重ね合わせることで高速化が可能である。認証と暗号化の操作を交互に重ねることで並列化を促進することで、パフォーマンスの向上が見込める。この過程はfunction stitchingと呼ばれ、原理上は任意のアルゴリズムの組み合わせにも適用可能であるが、特にGCMに適している。ManleyとGreggは、function stitchingを用いた最適化法を示した。