GCM是分组加密算法(NIST的AES,我国国标SM4)的一种操做模式算法
须要选择分组加密算法两个函数中的一个做为向前函数函数
两个GCM函数成为authenticated encryption 和 authenticated decryption加密
authenticated encryption进行数据加密运算,并计算出一个authentication tag3d
authenticated decryption验证authentication tag,解密。component
当输入数据限定为非机密数据时,这种变种GCM成为GMACblog
相应的authenticated encryption 和 authenticated decryption变成了对非机密数据的authentication tag的产生和验证ip
对于给定的分组块和密钥,认证加密函数有3组输入:ci
1. 明文,成为Prem
2. 额外的认证信息,称为AADit
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表示
给定IV,AAD,C,T的值,认证解密函数输出为以下其中之一:
1. 解密后的明文
2. 错误代码
输出明文则代表T是正确的关于IV,A,C的authentication tag,不然输出错误代码,
TBD....