一种面向散列函数的卷积压缩方法技术

技术编号:19780577 阅读:73 留言:0更新日期:2018-12-15 11:57
本发明专利技术公开了一种面向散列函数的卷积压缩方法,将输入的消息依次经过消息预处理模块、消息填充模块、消息存储模块、初态填充模块、卷积压缩模块、字节替换模块、移位混淆模块和截断压缩模块处理。采用新的卷积压缩的方式,处理后的消息在进行迭代操作时,对存储状态会进行特殊的填充处理,改变了数据的宽度,破坏了内部结构的对称性;然后对内部数据存储状态进行卷积压缩,将处理后的数据进行字节替换、移位混淆,打破了数据在字节及三维位置上的规律。本发明专利技术增强了填充的效率,首次对存储状态进行填充、压缩操作,提高了存储数据的混淆性,并使得内部状态更加紧凑,以节约硬件面积,迭代过程设计简洁,适用于小信息的散列平台。

【技术实现步骤摘要】
一种面向散列函数的卷积压缩方法
本专利技术涉及到信息安全领域,具体是一种面向散列函数的卷积压缩方法。
技术介绍
目前,散列算法的研究发展迅速。鉴于MD5及SHA-1等主流散列算法被成功攻破,对称密码学学术界的关注点主要集中在NIST举办的SHA-3竞赛的获胜算法——Keccak算法上。Keccak算法由比利时密码研究组Bertoni等领衔设计,该算法基于新颖的海绵结构,在保证安全强度的同时,兼顾快速软、硬件实现的优势,该海绵结构包含4种截断输出:224、256、384和512。但由于散列算法的运行依赖于计算所需的存储器,尽管基于海绵结构的SHA-3具有很好的硬件实现能力,但为了在实践中避免通用的碰撞搜索,其数据长度为1600位,输出至少224位。这种输出规模在需要高水平和长期安全性的情况下很有意义,但在一些较小安全参数或需要面向硬件的情况下,这种输出规模的内部存储器尺寸又过大。为适应这些受限制的设备,如无源RFID标签,Guo等设计了面向硬件的散列函数族:PHOTON,其输入数据长度512位,输出长度80~256位。PHOTON算法对海绵结构进行了扩展,内部使用类AES的内部置换,保证足够安全强度的同时,灵活地降低了内部存储器的尺寸。但海绵结构在小信息散列情况下,存在挤压过程相对缓慢的问题,主要是挤压过程浪费了硬件面积和计算能力。目前,散列算法中并没有一种很好的结构可以避免浪费计算力,迫切需要一种新的结构,以进一步提高小信息散列的挤压速率。
技术实现思路
针对上述不足,本专利技术提供一种面向散列函数的新型压缩方法,设计了一种新型卷积压缩结构,对数据存储状态进行了三维线性压缩,降低了寄存器尺寸,以提高小信息散列的挤压速率。本专利技术一种面向散列函数的卷积压缩方法,包括消息预处理模块、消息填充模块、消息存储模块、初态填充模块、卷积压缩模块、字节替换模块、移位混淆模块和截断压缩模块等新模块,具体包含如下步骤:S1:利用消息预处理模块,借鉴白化密钥的思想,对输入的消息m进行预处理,生成消息块m1和块m2,预处理方法如下:将n比特消息m转换成16进制,分成消息块m1和消息块m2,m=m1||m2;若n为偶数,平均分成消息块m1和消息块m2;若n为奇数,消息块m2长度为(n-1)/2,消息块m1的长度为(n+1)/2。S2:利用消息填充模块,对预处理后的消息块m1和m2同时进行填充操作:在消息末尾补111000…01,使填充后的消息块m1‘=m1‘(1)||m1‘(2)||…||m1‘(i);m2‘=m2‘(1)||m2‘(2)||…||m2‘(i),其中,消息m1‘和m2‘均为27的整数倍,消息块m1‘(1),m1‘(2)…m1‘(i);m2‘(1),m2‘(2)…m2‘(i)长度均为27,i为正整数。S3:将S2填充后的消息块输入消息存储模块;先将S2填充后的消息块m1‘(1)、m2‘(1)存到初值为0的输入消息块r中,其中,消息块r是由64个消息块组成,r=p0||p1||…||pn,pn为长8比特的消息块,n∈[0,64),m1‘(1)、m2‘(1)的存入方式如下:定义消息块r1=p0||p1||…||p15、r2=p32||p33||…||p47,则新的消息块之后通过一个对应关系,将输入消息块r存入数组,得到新的三维数组B0[x][y][z],其对应关系为:p[4×(4x+y)+z]=B0[x][y][z],其中,x∈[0,4),y∈[0,4),z∈[0,4)。S4:将三维数组B0输入到初态填充模块;S4.1:针对消息块三维数组B0[4][4][z],通过一个对应关系,将三维数组B0[4][4][z]每一深度的二维数组B0[4][4]扩展为B1[6][6],得到新的三维数组B1[6][6][z],其对应关系为:B1[x+1][y+1]=B0[x][y],其中,消息块B1[x][0]、B1[x][5]、B1[0][y]、B1[5][y]为填充消息块;S4.2:更新三维数组B1[6][6][z],固定填充消息块B1[0][y][0]的比特值为长48比特的常数RCi,其他填充消息块置0,RCi表示由5级线性反馈移位寄存器得到的48比特轮常数,其多项式表达式为:RC0的初始状态:I0=18=10010(mod2),RCi的初始状态:Ii=(Ii-1+1)(mod2),则截取前48比特轮常数:RCi=MSB48f(Ii(mod2));其中,x∈[0,6),y∈[0,6),i∈[1,12],z=4或z=2。S5:将更新后的三维数组B1输入到卷积压缩模块;S5.1:使用参数矩阵A1、A2对三维数组B1[6][6][z]进行x-y层压缩操作,得到新的三维数组B2[4][4][z],x-y层压缩过程如下:参数矩阵A1对B1[x][y][0]、B1[x][y][2]进行x-y层压缩:参数矩阵A2对B1[x][y][1]、B1[x][y][3]进行x-y层压缩:其中,*表示矩阵内积操作,A1是一个上三角全1的3×3参数矩阵,A2是一个下三角全1的3×3参数矩阵,x∈[0,4),y∈[0,4);S5.2:若z=4,对B2[x][y][z]进行深度压缩操作,若z=2,则不进行深度压缩操作,深度压缩过程如下:其中,x∈[0,4),y∈[0,4),z∈[0,4)。S6:利用字节替换模块,针对B2[4][4][2]中的每一个8比特消息块使用非线性S盒做字节替换操作,得到新的三维数组B3[4][4][2],其中,字节替换的S盒为AES类的S盒新数组B3与数组B2的对应关系为:B3[x][y][z]=SBOX(B2[x][y][z]),其中,x∈[0,4),y∈[0,4),z∈[0,2)。S7:利用移位混淆模块,先定义S6得到的B3[4][4][2]的组成消息块为q0,q1,…,qn,则B3=q0||q1...||qn,其中,qn为长8比特的消息块,n∈[0,32);对消息块qn进行循环向右移31–Round位的操作,之后通过一个对应关系,将消息块qn存入数组,得到新的三维数组B4[4][4][2],其对应关系为:q[2×(4y+x)+z]=B4[x][y][z],其中,Round表示当前轮数,x∈[0,4),y∈[0,4),z∈[0,2)。S8:将新的三维数组B4[4][4][2]输入截断压缩模块,完成压缩;S8.1:S7得到的三维数组B4先进入迭代阶段:S8.1.1:S7得到的三维数组B4重新放置到S4中三维数组B0[4][4][4]中,B0其余比特置0:B0[x][y][0]=B4[x][y][0],B0[x][y][2]=B4[x][y][1],S8.1.2:重复S4~S7;S8.1.3:迭代第12轮后,将输出值放入消息块r中,将S2得到的m1‘(2)、m2‘(2)经过步骤S3后,作为新的输入;S8.1.4:重复S8.1.2,迭代12轮…直到S2得到的消息块m1‘(i)、m2‘(i)均完成加密,迭代完毕;S8.2:根据输出要求,对迭代后的三维数组B4[4][4][2]进行截断操作,并截取相应长度输出值fout:若输出长度为128:若输出长度为256:fout=B4[x][y][0]||B4[x][y][1]。本专利技术与现有技术相比,采本文档来自技高网...

【技术保护点】
1.一种面向散列函数的卷积压缩方法,包括消息处理模块、消息填充模块、消息存储模块、初态填充模块、卷积压缩模块、字节替换模块、移位混淆模块、截断压缩模块,其特征在于,卷积压缩方法包含如下步骤:S1:利用消息预处理模块,对输入的消息m进行预处理,生成消息块m1和m2;S2:利用消息填充模块,对预处理后的消息块m1和m2同时进行填充操作:在消息块末尾补111000…01,使填充后的消息块m1’=m1’(1)||m1’(2)||…||m1’(i);m2’=m2’(1)||m2’(2)||…||m2’(i),其中,消息m1’和m2’均为27的整数倍,消息块m1’(1),m1’(2)…m1’(i);m2’(1),m2’(2)…m2’(i)长度均为27,i为正整数;S3:将S2填充后的消息块输入消息存储模块;先将S2填充后的消息块m1’(1)、m2’(1)存到初值为0的输入消息块r中,其中,消息块r是由64个消息块组成,r=p0||p1||…||pn,pn为长8比特的消息块,n∈[0,64),m1’(1)、m2’(1)的存入方式如下:定义消息块r1=p0||p1||…||p15、r2=p32||p33||…||p47,则新的消息块...

【技术特征摘要】
1.一种面向散列函数的卷积压缩方法,包括消息处理模块、消息填充模块、消息存储模块、初态填充模块、卷积压缩模块、字节替换模块、移位混淆模块、截断压缩模块,其特征在于,卷积压缩方法包含如下步骤:S1:利用消息预处理模块,对输入的消息m进行预处理,生成消息块m1和m2;S2:利用消息填充模块,对预处理后的消息块m1和m2同时进行填充操作:在消息块末尾补111000…01,使填充后的消息块m1’=m1’(1)||m1’(2)||…||m1’(i);m2’=m2’(1)||m2’(2)||…||m2’(i),其中,消息m1’和m2’均为27的整数倍,消息块m1’(1),m1’(2)…m1’(i);m2’(1),m2’(2)…m2’(i)长度均为27,i为正整数;S3:将S2填充后的消息块输入消息存储模块;先将S2填充后的消息块m1’(1)、m2’(1)存到初值为0的输入消息块r中,其中,消息块r是由64个消息块组成,r=p0||p1||…||pn,pn为长8比特的消息块,n∈[0,64),m1’(1)、m2’(1)的存入方式如下:定义消息块r1=p0||p1||…||p15、r2=p32||p33||…||p47,则新的消息块之后通过一个对应关系,将输入消息块r存入数组,得到新的三维数组B0[x][y][z],其对应关系为:p[4×(4x+y)+z]=B0[x][y][z],其中,x∈[0,4),y∈[0,4),z∈[0,4);S4:将三维数组B0输入到初态填充模块,得到新的三维数组B1[6][6][z],并更新三维数组B1[6][6][z];S5:将更新后的三维数组B1[6][6][z]输入到卷积压缩模块,使用参数矩阵A1、A2对三维数组B1[6][6][z]进行x-y层压缩操作,得到新的三维数组B2[4][4][z];S6:利用字节替换模块,针对B2[4][4][2]中的每一个8比特消息块使用非线性S盒做字节替换操作,得到新的三维数组B3[4][4][2];S7:利用移位混淆模块,先定义S6得到的B3[4][4][2]的组成消息块为q0,q1,…,qn,则B3=q0||q1...||qn,其中,qn为长8比特的消息块,n∈[0,32);对消息块qn进行循环向右移31–Round位的操作,之后通过一个对应关系,将消息块qn存入数组,得到新的三维数组B4[4][4][2],其对应关系为:q[2×(4y+x)+z]=B4[x][y][z]其中,Round表示当前轮数,x∈[0,4),y∈[0,4),z∈[0,2);S8:将新的三维数组B4[4][4][2]输入截断压缩模块,完成压缩。2.根据权利要求1所述的面向散列函数的卷积压缩方法,其特征在于:S1所述预处理方法为:将n比特消息m转换成16进制,分成消息块m1和消息块m2,m=m1||m2;若n为偶数,平均分成消息块m1和消息块m2;若n为奇数,消息块m2长度为(n-1)/2,消息块m1的长度为(n+1)/2。3.根据权利要求1所述的面向散列函数的卷积压缩方法,其特征在于:S4具体包括如下步骤:S4.1:针对消息块三维数组B0[4][4][z],通过...

【专利技术属性】
技术研发人员:韦永壮刘晓强武小年
申请(专利权)人:桂林电子科技大学
类型:发明
国别省市:广西,45

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1