1. Elements of GCM
Block Cypher
GCM是分组加密算法(NIST的AES,我国国标SM4)的一种操作模式
需要选择分组加密算法两个函数中的一个作为向前函数
Two GCM Functions
两个GCM函数成为authenticated encryption 和 authenticated decryption
authenticated encryption进行数据加密运算,并计算出一个authentication tag
authenticated decryption验证authentication tag,解密。
当输入数据限定为非机密数据时,这种变种GCM成为GMAC
相应的authenticated encryption 和 authenticated decryption变成了对非机密数据的authentication tag的产生和验证
Authenticated Encryption Function
对于给定的分组块和密钥,认证加密函数有3组输入:
1. 明文,成为P
2. 额外的认证信息,称为AAD
3. 初始化向量,称为IV
GCM需要确保明文和AAD的真实性,保证明文的保密性,不保护AAD的保密性;如AAD可以是一些端口,地址等非秘密信息
信息长度要求:
len(P) ≤ 2^39-256;
len(A) ≤ 2^64-1;
1 ≤ len(IV) ≤ 2^64-1.
明文,AAD以及IV应当是8bit的整数倍长度
函数的输出如下:
1. 加密后的密文,长度同明文,用C表示
2. authentication tag,用T表示
Authenticated Decryption Function
给定IV,AAD,C,T的值,认证解密函数输出为如下其中之一:
1. 解密后的明文
2. 错误代码
输出明文则表明T是正确的关于IV,A,C的authentication tag,否则输出错误代码,
2. Mathematical components of GCM
Incrementing Function
Multiplication Operation on Blocks
GHASH Function
GCTR Function
TBD....
GCM Specification