利索能及
我要发布
收藏
专利号: 2018107540028
申请人: 桂林电子科技大学
专利类型:发明专利
专利状态:已下证
更新日期:2025-10-14
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

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) (i) 7’ …m2’ 长度均为2,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],通过一个对应关系,将三维数组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。

4.根据权利要求1所述的面向散列函数的卷积压缩方法,其特征在于:S5具体包括如下步骤: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)。

5.根据权利要求1所述的面向散列函数的卷积压缩方法,其特征在于: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)。

6.根据权利要求1所述的面向散列函数的卷积压缩方法,其特征在于:S8具体包括如下步骤: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;

(2) (2)

S8.1.3:迭代第12轮后,将输出值放入消息块r中,将S2得到的m1’ 、m2’ 经过步骤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]。