说明:以下章节写为第10章是为了和标准GB/T 36624-2018的章节对应
10. 机制5――GCM
GCM是一种有大吞吐能力的加密认证模式。其中主要适用了CRT模式和类似CBC模式的GHASH模式。CRT模式基本上没有大多变化,GHASH则是利用有限域上的乘法进行HASH,此运算可以通常预先计算和查表优化加速。
GCM两个基本模块 GHASH和GCTR。加解密和认证验证过程都离不开这两个模块。
参考文献
- NIST SP 800-38D
- The Galois Counter Mode of Operation (GCM)
GB/T 36624-2018的建议
10.1 GCTR
GCTRK (ICB, X)的流程
准备:
- 128比特的分组密钥CIPH
- 密钥K
输入:
- 初始计数块ICB;
- 任意长度的串X
输出:
- 串Y,长度为len(X).
步骤:
其中X1, X2,..., Xn-1是完整分块,而Xn*可能是完整分块也可能不是。
其中
- inc_32(x)就是:x的低32bit做 ++x mod 2^32;x的高bit不做变化
GCTR的流程图如下:
GCM中GCTR的流程图
10.2 GHASH
GHASHH (X)
准备:
- 块H
输入:
- 消息X,长度为分组长度的整数倍,即len(X) = 128m
输出:
- GHASHH (X).
步骤:
其中
- NIST SP 800-38D
- The Galois Counter Mode of Operation (GCM)
GHASH的流程图如下
GCM中GHASH的流程图
10.3 GCM认证加密方案
GCM-AEK (IV, P, A)
准备:
- 128比特分组密码 CIPH
- 密钥K
输入:
- 初始化向量IV
- 明文P
- 关联数据(additional authenticated data) A
输出:
- 密文C
- 认证值 T(长度t)
步骤:
If len(IV)=96, J0 = IV || 031 ||1.
If len(IV)≠96, s = ( 128 - ( len(IV) mod 128 ) ) mod 128,
J0=GHASHH( IV || 0s+64 || [len(IV)]64 ).
GCM认证加密的流程图如下:
GCM认证加密的流程图
10.4 GCM验证解密方案
GCM-ADK (IV, C, A, T)
准备:
- 128比特分组密码 CIPH
- 密钥K
输入
- 初始化向量IV
- 密文C
- 关联数据(additional authenticated data) A
- :认证值 T(长度t)
输出:
- 明文P (或者验证失败)
步骤:
If len(IV)=96, J0 = IV || 031 ||1.
If len(IV)≠96, s = ( 128 - ( len(IV) mod 128 ) ) mod 128,
GCM验证解密的流程图如下:
GCM验证解密的流程图
来源:51CTO
作者:网糸隹
链接:https://blog.csdn.net/samsho2/article/details/100659028