GB/T 36624-2018《可鉴别的加密机制》笔记――6. 机制5:GCM

匿名 (未验证) 提交于 2019-12-02 23:59:01

说明:以下章节写为第10章是为了和标准GB/T 36624-2018的章节对应

10. 机制5――GCM

GCM是一种有大吞吐能力的加密认证模式。其中主要适用了CRT模式和类似CBC模式的GHASH模式。CRT模式基本上没有大多变化,GHASH则是利用有限域上的乘法进行HASH,此运算可以通常预先计算和查表优化加速。

GCM两个基本模块 GHASH和GCTR。加解密和认证验证过程都离不开这两个模块。

参考文献

  1. NIST SP 800-38D
  2. The Galois Counter Mode of Operation (GCM)

GB/T 36624-2018的建议

10.1 GCTR

GCTRK (ICB, X)的流程

准备:

  1. 128比特的分组密钥CIPH
  2. 密钥K

输入:

  1. 初始计数块ICB;
  2. 任意长度的串X

输出:

  1. 串Y,长度为len(X).

步骤:

其中X1, X2,..., Xn-1是完整分块,而Xn*可能是完整分块也可能不是。

其中

  1. inc_32(x)就是:x的低32bit做 ++x mod 2^32;x的高bit不做变化

GCTR的流程图如下:

GCM中GCTR的流程图

10.2 GHASH

GHASHH (X)

准备:

  1. 块H

输入:

  1. 消息X,长度为分组长度的整数倍,即len(X) = 128m

输出:

  1. GHASHH (X).

步骤:

其中

    • NIST SP 800-38D
    • The Galois Counter Mode of Operation (GCM)

GHASH的流程图如下

GCM中GHASH的流程图

10.3 GCM认证加密方案

GCM-AEK (IV, P, A)

准备:

  1. 128比特分组密码 CIPH
  2. 密钥K

输入:

  1. 初始化向量IV
  2. 明文P
  3. 关联数据(additional authenticated data) A

输出:

  1. 密文C
  2. 认证值 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)

准备:

  1. 128比特分组密码 CIPH
  2. 密钥K

输入

  1. 初始化向量IV
  2. 密文C
  3. 关联数据(additional authenticated data) A
  4. :认证值 T(长度t)

输出:

  1. 明文P (或者验证失败)

步骤:

If len(IV)=96, J0 = IV || 031 ||1.

If len(IV)≠96, s = ( 128 - ( len(IV) mod 128 ) ) mod 128,

GCM验证解密的流程图如下:

GCM验证解密的流程图

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!