公开/公告号CN104753662A
专利类型发明专利
公开/公告日2015-07-01
原文格式PDF
申请/专利权人 重庆重邮信科通信技术有限公司;
申请/专利号CN201310737971.X
申请日2013-12-27
分类号
代理机构北京律智知识产权代理有限公司;
代理人冯志云
地址 400065 重庆市南岸区黄桷垭堡上园1号
入库时间 2023-12-18 09:43:13
法律状态公告日
法律状态信息
法律状态
2019-09-20
授权
授权
2017-05-10
专利申请权的转移 IPC(主分类):H04L9/06 登记生效日:20170420 变更前: 变更后: 申请日:20131227
专利申请权、专利权的转移
2016-12-28
实质审查的生效 IPC(主分类):H04L9/06 申请日:20131227
实质审查的生效
2015-07-01
公开
公开
技术领域
本发明涉及通信领域,尤其涉及一种基于AES算法的加密密钥流产生方法。
背景技术
AES(Advanced Encryption Standard,高级加密标准)是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。目前,AES已然成为对称密钥加密中最流行的算法之一。
在LTE(Long Term Evolution,长期演进)系统中,无线接口层2中的PDCP(Packet Data Convergence Protocol,分组数据汇聚协议)层用于对用户平面和控制平面中的数据及信令进行加密,及对信令进行完整性保护。PDCP所采用的加解密及完整性保护/验证算法包括:AES,Snow3G及Zuc。其中,AES算法作为加解密算法被称为128-EEA2;作为完整性保护/验证算法被称为128-EIA2。
PDCP层采用的AES加密算法的基本流程为:通过对网络参数和加密密钥(Key)计算,算出一个加密密钥流(Keystream),再将该加密密钥流与明文的比特流进行异或,从而得到加密后的密文。
PDCP层使用AES算法作为完整性保护/验证算法的基本流程为:对一串不定长的信令进行AES相关计算,其中的计算步骤和加密算法相同,区别仅在于在最后阶段需要采用不同的计算方法,生成一个32位的MAC_I,用于完整性验证。
AES加密过程是在一个原始的4×4的字节矩阵上运作,原始的4×4的字节矩阵的各元素根据网络参数获取。作为一种基于迭代的加密算法,在生成加密密钥流的过程中需要很多轮的重复和变换,而每轮又包括下面4个阶段:
矩阵乘法转换(SubBytes)-通过一个非线性的替换函数,用查找表的方式把4×4的字节矩阵中的每个字节替换成查找表对应的字节;
矩阵行位移(ShiftRows)-将矩阵中的每一行进行循环式移位,即将矩阵中每一行的各个字节循环向左方位移;
列混合(MixColumns)-做矩阵中每一列的矩阵乘法,即与一个固定的4×4矩阵相乘;及
密钥二元加(AddRoundKey)-将矩阵中的每一个字节都与该轮的回合密钥(round key)做异或运算。
整个计算过程中,矩阵乘法转换阶段和列混合阶段都需要用到二元点乘和移位,且都需要调用大量查找表进行查表计算,尤其是在列混合计算中,128比特长度的区块中每个字节(8个比特)都要经过移位、异或及重新排列,才能计算出最后的加密密钥流。在实现上比较耗时,在芯片设计中需要例化更多的资源,并且在控制逻辑上调度也显得比较复杂。
发明内容
为了解决上述问题,本发明提供了一种基于AES算法的加密密钥流产生方法,从而简化算法,节约计算时间。
本发明的额外方面和优点将部分地在下面的描述中阐述,并且部分地将从描述中变得显然,或者可以通过本发明的实践而习得。
本发明提供了一种基于AES算法的加密密钥流产生方法,包括:获取与待计算的字节矩阵的各元素对应的新元素的表达式;对各新元素的表达式分别进行计算,以得到第一字节矩阵;以及对第一字节矩阵进行密钥二元加计算。
本发明实施例提供的基于AES算法的加密密钥流产生方法,直接对固定系数矩阵中的各元素与待计算的字节矩阵中对应的元素进行点乘获得各点乘积,通过一个步骤即可同时实现行位移和列混合运算,在硬件实现上面,不用单独进行行位移,也无需对行位移后的矩阵元素进行缓存,有效的提高了处理效率,同时减少了硬件成本。
在本发明的优选方案中,通过预先设置扩展查找表的方式,将所述矩阵乘法转换步骤用查表方式替代,无需进行所述点乘计算,进一步提高了处理效率。
附图说明
通过参照附图详细描述其示例实施方式,本发明的上述和其它特征及优点将变得更加明显。
图1为本发明的基于AES算法的加密密钥流产生方法的示意图。
图2为本发明实施例的基于AES算法的加密密钥流产生方法的流程图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的实施方式;相反,提供这些实施方式使得本发明将全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。在图中,为了清晰,夸大了区域和层的厚度。在图中相同的附图标记表示相同或类似的结构,因而将省略它们的详细描述。
所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本发明的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而没有所述特定细节中的一个或更多,或者可以采用其它的方法、组元、材料等。在其它情况下,不详细示出或描述公知结构、材料或者操作以避免模糊本发明的各方面。
需要说明的是,本发明是基于AES算法的加密密钥流产生方法,在AES算法中,根据美国国家标准与技术研究所在2001年11月26日发布的AES算法标准(NIST:“Advanced Encryption Standard(AES)(FIPSPUB197)”)的规定,在AES算法计算过程中:
1)点乘运算
如果点乘是0x02·乘数,判断乘数的最高位是否为1,如果为1,则将该乘数左移1位后与0x1b进行异或得到点乘积,否则,直接将该乘数左移1位得到点乘积;
如果点乘是0x01·乘数,则点乘积为乘数;
如果是用其他系数点乘乘数,将该其他系数数分解为0x02和0x01的组合,分别与乘数进行上述点乘后再进行异或得到点乘积,如:
2)加法运算
使用异或运算取代加法运算。
图1为本发明的基于AES算法的加密密钥流产生方法的示意图。如图1所示,本发明的基于AES算法的加密密钥流产生方法的基本流程为:将AES算法中计算加密密钥流每一轮计算中的矩阵行位移步骤和列混合步骤合并,并先于矩阵乘法转换步骤进行,得到与待计算的字节矩阵的各元素对应的新元素的表达式,并在矩阵乘法转换步骤中使用扩展查找表替代原始查找表进行元素查找,以完成优化的矩阵乘法转换步骤,该扩展查找表是基于对原始查找表进行扩展而生成,最后再进行密钥二元加步骤,完成加密密钥流一轮的计算。
本发明实施例提供的基于AES算法的加密密钥流产生方法,直接对固定系数矩阵中的各元素与待计算的字节矩阵中对应的元素进行点乘,获得各点乘积,通过一个步骤即可同时实现行位移和列混合运算,在硬件实现上面,不用单独进行行位移,也无需对行位移后的矩阵元素进行缓存,有效的提高了处理效率,同时减少了硬件成本。
在本发明的优选方案中,通过预先设置扩展查找表的方式,将所述矩阵乘法转换步骤用查表方式替代,无需进行所述点乘计算,进一步提高了处理效率。
图2为本发明实施例的基于AES算法的加密密钥流产生方法的流程图。如图2所示,该方法包括:
步骤S200,在进行加密密钥流计算之前,基于原始查找表生成扩展查找表。
在现有的计算密钥流的第一步矩阵乘法转换的计算中,AES算法协议会给出一个矩阵乘法转换的查找表,即原始查找表,如下表所示:
表1
按照从左到右,从上到下的顺序,将其排列为一个映射表,即当x=0且y=0时,对应0x63;当x=0且y=1时,对应0x7c;依次直到x=0xf且y=0xf时,对应0x16。整个表占有256个元素。
首先,判断第一个元素(8个比特)0x63的最高位(左边第一位)是否为1,如果为1,则左移一位,再与0x1b进行异或;如果最高位为0,则仅左移一位。显然,0x63(01100011)的最高位为0,则直接左移一位,得到0xc6(11000110),这就是扩展查找表中第一个元素的一次扩展元素;
然后将该一次扩展元素0xc6与第一个元素0x63进行异或,得到0xa5(10100101),这就是扩展查找表中第一元素的二次扩展元素;
由此,二次扩展元素、一次扩展元素及基础元素共同构成扩展查找表中的第一个元素0xa5c663。
按照同样的方法,对原始查找表中的第二个元素进行扩展计算,可得到扩展查找表中的第二个元素0x84f87c。
依次对原始查找表中的256个元素分别进行上述扩展计算,在此不再赘述。为了更好的示例说明本发明实施例,列出该扩展查找表中的前十个元素,分别为:
在加密密钥流生成的一轮计算中,分别执行下列步骤:
步骤S201,获取与待计算的字节矩阵的各元素对应的新元素的表达式,以同步完成矩阵行位移和列混合步骤。
需要说明的是,本发明中所提到的矩阵相乘操作与现有技术中的矩阵相乘操作不同,其具体的计算方法详见下述说明。
下面说明矩阵行位移及列混合同步进行的具体操作:
待计算的字节矩阵为:
>
经过矩阵行位移及与固定的字节矩阵相乘后得到的字节矩阵为:
>
以其中一列>的计算为例,其中c表示该列可以为该矩阵中的任一列,矩阵行位移及列混合同步计算如公式(1)所示:
>
公式(1)中所取的模数为待计算的字节矩阵的总列数减1,以该4×4字节矩阵为例,故模数为3。
中间矩阵元素包括0x01,0x02及0x03这三种,其具体计算受限于有限域GF(28)。
根据本发明一实施例,当该中间矩阵元素大于0x03时,仍可对其进行进一步分解,以0x0d为例,0x0d=0x08+0x04+0x01,将其中的加法运算替换为异或运算后,其可以进一步分解为公式(2):
>
其中Sx,y代表待计算的字节矩阵中的任一元素。
将上述待计算的字节矩阵中的每个元素进行如公式(1)中的计算,以其中一个元素为例,计算后得到的对应的新元素的表达式如公式(3)所示:
>
可扩展地,当待计算的字节矩阵为I×J,且与该待计算的字节矩阵相乘的I×J字节矩阵元素为xi,j时,对应的新元素的表达式为公式(4):
>
其中,i表示所述新元素的行号,j表示所述新元素的列号,I表示所述待计算的字节矩阵的总行数,J表示所述待计算的字节矩阵的总列数,xi,j表示不同的点乘系数,如上所述,xi,j包括0x01、0x02、0x03、及大于0x03的任一元素。
步骤S202,对步骤S201中生成的各新元素的表达式进行计算,以得到优化的矩阵乘法转换的结果。
需要说明的是,在下述的具体实施方式中,公式(3)中的实际乘数指S0,c,S1,c,S2,c及S3,c在原始查找表中的对应元素。以S0,c为例,说明如何查找其在原始查找表中的对应元素。如果S0,c等于0x53,即01010011,则其高位4个比特,如0101,表示扩展查找表中的x坐标值,而低位4个比特,如0011,则表示扩展查找表中y坐标值,即x=5,y=3。
根据本发明的优选实施例,通过查找扩展查找表进行计算。
具体地,以公式(3)中的元素为例,如果点乘的系数为0x02,则查询出原矩阵元素对应位置元素的一次扩展元素,用该一次扩展元素替代原矩阵元素与其系数的点乘乘积,如{0x02}·S0,c;如果点乘的系数为0x03,则查询出原矩阵元素对应位置元素的二次扩展元素,用该二次扩展元素替代原矩阵元素与其系数的点乘乘积,如{0x03}·S1,(c+1)mod3;如果点乘系数为0x01,则直接查询原矩阵元素对应位置元素的基础元素,并用该基础元素替代原矩阵元素与其系数的点乘乘积,如{0x01}·S2,(c+2)mod3或者{0x01}·S3,(c+3)mod3。
以S0,c为例,说明上述原矩阵元素的对应位置元素。如果S0,c为0x53,即01010011,则其高位4个比特,如0101,表示扩展查找表中的x坐标值,而低位4个比特,如0011,则表示扩展查找表中y坐标值,即x=5,y=3。
对各新元素进行查表计算后,得到最终的字节矩阵:
>
根据本发明的一个实施例,以步骤S202中公式(2)中的Sx,y·{0x02}·{0x02}为例,说明当中间矩阵元素大于0x03时的查表方法:先查询Sx,y在扩展查找表中对应位置的元素的一次扩展元素,替代Sx,y·{0x02},再对该一次扩展元素进行点乘{0x02}的操作,即移位操作,具体为:判断该一次扩展元素的最高位(左边第一位)是否为1,如果为1,则左移一位,再与0x1b进行异或;如果该一次扩展元素的最高位为0,则仅左移一位。
此外,也可以将扩展表中的一次扩展元素再次执行点乘{0x02}的操作,即移位操作,以得到三次扩展元素,使用一次扩展元素替代Sx,y·{0x02}后,再次查询对应的该三次扩展元素,以替代Sx,y·{0x02}·{0x02}。
上述操作通过预先设置扩展查找表的方式,将所述矩阵乘法转换步骤用查表方式替代,无需进行所述点乘计算,进一步提高了处理效率。
根据本发明的一个实施例,对上述各新元素的表达式进行计算的方法还可以不通过查找扩展查找表而进行。
具体地,如果点乘的系数为0x02,则在原始查找表中,查询出原矩阵元素对应位置的元素,对该对应位置的元素进行点乘0x02操作,即移位操作,具体地:判断该对应位置的元素的最高位(左边第一位)是否为1,如果为1,则左移一位,再与0x1b进行异或;如果该对应位置的元素的最高位为0,则仅左移一位,将移位操作后的结果替代原矩阵元素与其系数的点乘乘积,如{0x02}·S0,c;
如果点乘的系数为0x03,则在原始查找表中,查询出原矩阵元素对应位置的元素,对该对应位置的元素进行点乘0x02操作,即移位操作,具体地:判断该对应位置的元素的最高位(左边第一位)是否为1,如果为1,则左移一位,再与0x1b进行异或;如果该对应位置的元素的最高位为0,则仅左移一位,将移位操作后的结果再与该对应位置的元素进行异或,将该异或后的结果替代原矩阵元素与其系数的点乘乘积,如{0x03}·S1,(c+1)mod3;
如果点乘系数为0x01,则在原始查找表中,直接查询原矩阵元素对应位置的元素,并用该对应位置的元素替代原矩阵元素与其系数的点乘乘积,如{0x01}·S2,(c+2)mod3或者{0x01}·S3,(c+3)mod3。
步骤S203,将经过上述运算后得到的字节矩阵再进行密钥二元加计算。
在完成密钥二元加步骤后,即完成了加密密钥流的一轮计算。于之后,可根据需要重复下一轮的计算过程。
在实际验证过程中,经过软件流程和芯片流程两个通路的大随机数据量对比,输入输出结果完全一致。
本发明实施例提供的基于AES算法的加密密钥流产生方法,直接对固定系数矩阵中的各元素与待计算的字节矩阵中对应的元素进行点乘获得各点乘积,通过一个步骤即可同时实现行位移和列混合运算,在硬件实现上面,不用单独进行行位移,也无需对行位移后的矩阵元素进行缓存,有效的提高了处理效率,同时减少了硬件成本。
在本发明的优选方案中,通过预先设置扩展查找表的方式,将所述矩阵乘法转换步骤用查表方式替代,无需进行所述点乘计算,进一步提高了处理效率。
以上具体地示出和描述了本发明的示例性实施方式。应该理解,本发明不限于所公开的实施方式,相反,本发明意图涵盖包含在所附权利要求范围内的各种修改和等效置换。
机译: 使用伪随机排列组合串行密钥流输出以产生加密比特流并替换串行密钥流的字节的方法
机译: 基于AES算法的移动通信系统加密装置及方法
机译: 基于AES算法的移动通信加密装置及方法