目前的数据加密技术根据加密密钥类型可分私钥加密(对称加密)系统和公钥加密(非对称加密)系统。对称加密算法是较传统的加密体制,通信双方在加/解密过程中使用他们共享的单一密钥,鉴于其算法简单和加密速度快的优点,目前仍然是主流的密码体制之一。对称加密中的分组密码具有速度快、易于标准化和便于软硬件实现等特点,通常是信息与网络安全中实现数据加密、数字签名、认证及密钥管理的核心体制,它在计算机通信和信息系统安全领域有着最广泛的应用。其中GCM是一种任二元Galois域使用泛散列提供认证加密的分组加密算法。

一、GCM基本结构

GCM是建立于128位比特分组密钥的基础t的。GCM是AES加密算法的运算模式。GCM利用计数器模式提供对保密的数据进行加密,同时利用定义在伽罗华域的泛散hash函数提供认证加密。特别的GCM也能提供对特殊数据进行鉴权加密。如果GCM的输入被限制在不是对数据加密,则GCM输出的数据叫做GMAC。GMAC足简单的鉴权模式。

GCM的两个操作叫做认证加密和认证解密。每一个操作都是高效并行处理的,同时大数据的输出应运在硬件或者软件实现上是可行的。

同时GCM还有一些很多特征:GCM是“实时”的,也就是需要保密的数据长度以及特别的和不需要保密的数据的长度都不用事先知道。相反,数据的长度在数据到达时就可以计算出来。GCM是一种有方向的分组加密,也就是反方向是不允许的。被保护的数据的鉴权能被独立的从解密形式中识别出来。如果一些不需要的加密的数据或者特别的数据是同定的。那么对应的GCM鉴权体系可以被事先计算。

1、GCM基本元素

GCM中包括两个基本的操作就是认证加密和认证解密,这两个操作构成了GCM全部的功能。这两个操作具体步骤如下:

认证加密操作由以下等式定义:

GHASH函数在网络加密算法GCM的应用

使用函数生incr()成连续的计数器值,它把变量中最右边的32比特视为右边最少的有效位的非负整数,增加以232为模的值。正常来讲,incr(F||I)的值是P||(I+1mod232)。

解密操作如下:

只是散列与加密的步骤顺序相反。正常情况下,它由以下方程定义:

GHASH函数在网络加密算法GCM的应用

解密操作计算出的标签r和标签r相比,与密文C相关联。如果两个标签匹配(长度和值),那么返回密文。否则返回特殊符号FAIL。

2、 GCM的输入与输出

认证加密操作有4个输入,每个输入都是一个比特串:

密钥K,它的长度匹配于根本的分组密码。

初始化向量IV,它可有1到264之间的任意比特数。对于固定值的密钥,每个IV值必须不同,但是不要求有相同的长度。96比特IV值处理起来更加有效,以至于该长度被推荐于在急需功效的状态时使用。

明文P,它可以具有0--239-256之间的任意比特数。附加认证数据(AAD),用A表示。数据可被认证,但不能被加密,它可以具有0-264之间的任意比特数。

附加认证数据(AAD),用A表示。数据可被认证,但不能被加密,它可以具有0-264之间的任意比特数。

认证解密操作有四个输入,每个输入部是一个比特串:

密文C,它的长度与明文P的长度相同。

认证标签T,它的长度可以是64至128之间的任何值。标签的长度表示为t,基于该部分提供适当的值进行指导。

明文P,它可以具有o~239-256之间的任意比特效。

FAIL,无论何时,只要输入不是通过具有相同密钥的加密操作生成的,认证解密操作都会有很高的概率返回FAIL符号。

二、 Ghash函数在GCM加密算法中的作用

GCM加密算法实现的关键在于AES算法的设计实现和GHASH函数的实现。因此Gbash是GCM加密算法最重要的一部分。值得注意的足GCM算法的GHASH函数基于GF(2128)域,由图1可见GCM硬件实现中Ghashi是其核心的模块。

GHASH函数在网络加密算法GCM的应用

GCM加密中的数据关系。因为流水线式结构的冷启动,对于重复式和流水线式AES实现都需要10个周期对用户密钥K计算Ho通常在给定的安全会话中,单个密钥用于全部信息包的处理。密钥由初始会话决定。因此密钥和在信息包传送前就已准备好。当接收到代表附加认证数据(A)的头文件时,GCM开始计算临时hash值。需要m个周期柬生成墨。然后hash计算将停止11+r个周期,直到生成第一个密文。根据IEEE和IETF建议标准,IV为96bit长时,可无延时生成Yo。否则,如果IV具有r个128bit消息,则还需要r各周期生成Yo。生成后的十个周期是GCM加密的密钥流。一旦AES ICM流水线全满,每周期将生成128bit密文CI。当CI生成后,hash计算最新开始。在最后的密文Cn和最后的hash值xm+n+1之间有一个周期用于计算(length(A) _length(C))H。

三、 Ghash函数逻辑描述

这里描述的Ghash函数以及算法是局限于GCM里的。

1、 Ghash算法描述前的符号解释

给定一个实数X,[X]表示取不小于X实数值的最小整数。比如[2.1]=3,[4J=4。

给定一个字符串X符号表示连接符,比如001 10111= 00110111。

X和y的相加表示为X+y。域中的加法相当于异或位运算操作,比如10011 0 10101=00110。

给定一个字符串X,Len(X)表示字符串的长度,比如Len(oooio)=5。

给定一个字符串X,和一个无符号数S。LSBs(X)表示取最右端的s位数,比如LSB3(111011010)=010,MSBs(X)表示取最左端s位教,比如MSB4(111011010)=1110。

给定一个字符串X,Len(X)表示字符串的长度,比如Len(oooio)=5。

给定一个字符串X,和一个无符号数S.LSBs(X)表示取最右端的s位数,比如LSB3(111011010)=010,MSBs(X)表示取最左端s位教,比如MSB4(111011010)=1110。

给定一个字符串X,>>右移或者<<左移符号比如0110111>>I=0011011。对于移位后的位数补零。在这里我们要定义伽罗华域的乘法X.Y,其定义如下:

输入字符串X,Y。

输出字符串X,Y。

步骤:

GHASH函数在网络加密算法GCM的应用

2、 Ghash函数的算法描述

首要条件

block H,the hash subkey.

输入

bit string X such tlw len(X)= 128m for some positive integcrm.

输出

block GHASHH (X).

步骤:

GHASH函数在网络加密算法GCM的应用

Ghash函数的详细步骤在下图中有说明:没有初始矩阵o,Yo和X1的异或运算并不改变X1的值。

GHASH函数在网络加密算法GCM的应用

由此可见Ghash函数在GCM加密算法中的作用是显然的。

小知识之伽罗华域

仅含有限多个元素的域。它首先由E.伽罗华所发现,因而又称为伽罗华域。它和有理数域、实数域比较,有着许多不同的性质。