1.一种基于Sponge结构的轻量级哈希函数构造方法,其特征在于,该Sponge结构为迭代结构,其内部操作为压缩函数,具体方法为:将预处理后的消息通过多轮压缩函数迭代完成吸收操作,即将不定长的消息变为定长的中间状态;再将中间状态通过多轮压缩函数迭代,每轮输出一个子串,拼接成定长的消息摘要。
2.根据权利要求1所述的一种基于Sponge结构的轻量级哈希函数构造方法,其特征在于,所述Sponge结构的具体参数设置为:吞吐率r=8bit,容量c=56bit,置换长度b=
64bit,消息摘要长度为64bit,拥有64bit的内存状态。
3.根据权利要求2所述的一种基于Sponge结构的轻量级哈希函数构造方法,其特征在于,所述具体方法按照以下步骤实施:步骤1、消息预处理
首先将输入的文本消息转换为对应的ASCII码,再将对应的ASCII码转换为对应的二进制数据,然后进行填充操作:在消息后面填充一个1,然后填充若干个0,使消息长度为r的最小整数倍,并将内存状态的初始值设为0;
步骤2、消息吸收处理
将经步骤1预处理后的消息通过压缩函数的多轮迭代完成吸收,具体为:步骤2.1、首先将预处理后的消息分为r=8bit一组,共S组,第一个分组的r=8bit位数据与初始内存状态的前r=8bit位0进行异或运算,与剩下初始内存状态的c=56bit位0拼接在一起通过压缩函数运算得到64bit中间状态;
步骤2.2、将中间状态的前8位与预处理消息的第二个分组进行异或运算,与剩下中间状态的56bit数据拼接在一起再次通过压缩函数进行运算,依次进行计算直到S组预处理消息运算完毕,完成吸收操作,将不定长的消息变为定长的中间状态;
步骤3、压缩函数处理
每轮压缩处理时首先将输入的定长的中间状态与产生的轮密钥进行轮密钥加Substitution(·)操作,再通过非线性置换层Substitution(·)进行非线性置换,然后进行移位操作RotateNibbles(·),再通过线性置换层Permutation(·)进行线性置换,最后将轮密钥与本轮轮数通过密钥生成算法进行轮密钥的更新,本轮处理结束,进入下轮迭代,依次迭代i轮,i表示轮数,完成压缩函数处理,得到经压缩函数处理的中间状态;
步骤4、消息挤压处理
将经过步骤2消息吸收处理后的定长的中间状态取前r=8bit数据为第一个子串H0,然后将经过步骤3处理得到的经压缩函数处理的中间状态再次取前8bit数据为第二个子串H1,依次进行处理得到8个子串,拼接到一起即为最后的64bit消息摘要。
4.根据权利要求3所述的一种基于Sponge结构的轻量级哈希函数构造方法,其特征在于,步骤3中所述的轮密钥的生成算法采用典型的Feistel结构,将迭代轮数Nr作为变量参与运算,密钥更新流程如下:ski+1[0]=ski[5];
ski+1[1]=ski[6];
ski+1[2]=ski[7]⊕Nr;
ski+1[3]=ski[4];
ski+1[4]=ski[1]⊕ski[5];
ski+1[5]=sbox[ski[2]⊕ski[6]];
ski+1[6]=sbox[ski[3]⊕ski[7]];
ski+1[7]=ski[0]⊕ski[4];
其中,ski[n]表示第i轮密钥的第n个字节,⊕表示异或运算,sbox[·]表示用s盒对数据进行非线性变换。
5.根据权利要求4所述的一种基于Sponge结构的轻量级哈希函数构造方法,其特征在于,所述轮密钥加后的定长的中间状态通过Substitution(·)层进行非线性置换,所述Substitution(·)层采用16个并行相同的s盒,s盒为Klein中的4位s盒。
6.根据权利要求5所述的一种基于Sponge结构的轻量级哈希函数构造方法,其特征在于,所述RotateNibbles(·)操作是将通过Substitution(·)层的数据左移16bit。
7.根据权利要求5所述的一种基于Sponge结构的轻量级哈希函数构造方法,所述Permutation(·)层使用位排列置换。