预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共28页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

(19)中华人民共和国国家知识产权局(12)发明专利申请(10)申请公布号CN109995506A(43)申请公布日2019.07.09(21)申请号201910280318.2(22)申请日2019.04.09(71)申请人司法鉴定科学研究院地址200063上海市普陀区光复西路1347号(72)发明人李岩施少培邱卫东付思豪卢启萌曾锦华(74)专利代理机构上海恒慧知识产权代理事务所(特殊普通合伙)31317代理人张宁展(51)Int.Cl.H04L9/06(2006.01)权利要求书4页说明书21页附图2页(54)发明名称Skinny算法优化实现方法、系统、终端、存储介质(57)摘要本发明提供了一种基于GPU的Skinny算法优化实现方法,Skinny加密算法的初始化优化,是对测试数据的处理、对明文和密钥的矩阵化优化、对轮密钥的扩展进行优化。Skinny加密算法的轮函数优化,是对字节替换、轮常量加、轮密钥加、行移位、列混淆及其用于解密的逆运算进行优化。对优化后的Skinny加密算法的实现,是对优化后的算法在CPU和GPU上实现。同时提供了一种实施上述方法的系统、终端及存储介质。本发明无论是在CPU上还是GPU上实现,优化后的Skinny加密算法的运算速度为正常速度的4倍以上。对于Skinny加密与解密算法的优化,其应用场景包括但不限于高性能密码计算和网络加密服务请求。CN109995506ACN109995506A权利要求书1/4页1.一种Skinny算法优化实现方法,其特征在于,包括:Skinny加密算法的初始化优化,对加密或解密的测试数据、明文和密钥的矩阵化以及轮密钥的扩展进行优化;Skinny加密算法的轮函数优化,对字节替换、轮常量加、轮密钥加、行移位、列混淆及其用于解密的逆运算进行优化;对经过初始化优化和轮函数优化后的Skinny加密算法分别在CPU和GPU上实现。2.根据权利要求1所述的Skinny算法优化实现方法,其特征在于,在Skinny加密算法的初始化优化中:-对加密或解密的测试数据处理进行优化的方法,包括:针对n=64bit的情形,将输入字符串中每个字符的ASCLL码拆成2个4bit的单元参与加密;针对n=128bit的情形,不进行处理;-对明文和密钥的矩阵化进行优化的方法,包括:输入的明文和密钥的16个单元直接使用长度为16个unsignedchar大小的一维向量进行操作;-对轮密钥的扩展进行优化的方法,包括:根据不同版本的skinny,先将上一轮轮密钥复制为N份,将这N份轮密钥分别向左或向右移位不同的值,得到的N份轮密钥再分别与一个根据skinny版本确定的数做按位与计算,得到N份数据,将这N份数据进行按位异或计算,最终得到的结果即为下一轮的轮密钥的值。3.根据权利要求2所述的Skinny算法优化实现方法,其特征在于,所述N取值为3。4.根据权利要求2所述的Skinny算法优化实现方法,其特征在于,对于skinny的版本:z=1时,密钥长度为16个单位;z=2时,密钥长度为32个单位;z=3时,密钥长度为48个单位;n=64bit时,一个单位长度为4bit;n=128bit时,一个单位长度为8bit;第一行密钥指的是,第0-15个单位的密钥;第二行密钥指的是,第16-31个单位的密钥;第三行密钥指的是,第32-47个单位的密钥;基于以上内容,根据不同版本的skinny,对轮密钥的扩展进行优化的方法,具体为:当skinny版本为z=1时,不做进一步的轮密钥扩展;当skinny版本为n=64bit、z>1时,对于第二行的16个单位密钥,分别将以下三部分运算得到的结果做异或生成新的密钥:-上一轮轮密钥向左移动1位再与15做与运算得到的结果;-上一轮轮密钥向右移动2位再与1做与运算得到的结果;-上一轮轮密钥向右移动3位再与1做与运算得到的结果;当skinny版本为n=64bit、z>2时,对于第三行的16个单位密钥,分别将以下三部分运算得到的结果做异或生成新的密钥:-上一轮轮密钥向右移动1位再与7做与运算得到的结果;-上一轮轮密钥与8做与运算得到的结果;-上一轮轮密钥与1做与运算再向左移动3位得到的结果;当skinny版本为n=128、z>1时,对于第二行的16个单位密钥,分别将以下三部分运算得到的结果做异或生成新的密钥:-上一轮轮密钥向左移动1位再与255做与运算得到的结果;2CN109995506A权利要求书2/4页-上一轮轮密钥向右移动5位再与1做与运算得到的结果;-上一轮轮密钥向右移动7位再与1做与运算得到的结果;当skinny版本为n=128、z>2时,对于第三行的16个单位密钥,分别将以下三部分运算得到的结果做异或生成新的密钥:-上一轮轮密钥向右移动1位再与127做与运算得到的结果;-上一轮轮密钥与6