一种基于延迟发生器的散列方法

文档序号:10538505阅读:439来源:国知局
一种基于延迟发生器的散列方法
【专利摘要】本发明公开了一种基于反馈步进延迟发生器的消息散列方法,消息散列过程由消息填充、消息注入、消息混淆和消息输出4个阶段组成。在消息注入、消息混淆和消息输出均采用轮函数对数据进行处理。轮函数交替采用基于线性反馈函数的m?序列延迟发生器,对消息进行反馈步进、循环移位等处理,快速获得可变长、抗碰撞的消息散列值。本发明可获得任意长度的消息散列值,具有较高的线性复杂度,算法结构简单,易于硬件实现。
【专利说明】
一种基于延迟发生器的散列方法
技术领域
[0001] 本发明属于信息加密领域,特别涉及一种基于延迟发生器的消息散列方法。
【背景技术】
[0002] 数据完整性是数据安全的一个重要方面。散列技术是保护数据完整性的关键技 术。目前国际上通用的数据散列技术如MD5、SHA-1、RIPEMD等主要基于MD4算法,采用压缩函 数对固定长度的数据分组进行多轮压缩处理,获得定长的散列值。但近几年来,上述国际标 准的数据散列方案已被中国密码学家破解,其可用性面临严峻的挑战。
[0003]线性反馈移位寄存器由串联的η个二元寄存器及1个反馈函数网络构成。每一时刻 移位寄存器的状态作为反馈函数的输入,其输出反馈至第一级移位寄存器以形成下一时刻 的状态,移位寄存器的功能由它的状态转移变换来确定,而它的状态转移变换又完全由反 馈布尔函数来决定。延迟发生器是一类基于本原多项式线性反馈的移位寄存器,通过对一 组延迟发生器进行组合,可以大大提高系统的线性复杂度,有效防范各种密码分析和恶意 攻击。

【发明内容】

[0004] 本发明的主要目的在于克服现有技术的缺点与不足,提供一种新的消息散列方 案,其能够基于延迟发生器对消息进行单向散列处理,以保证数据的完整性和可鉴别性,且 具有实现简单、处理速度快的优点。
[0005] 为了达到上述目的,本发明采用以下技术方案:
[0006] 本发明一种基于延迟发生器的散列方法,消息散列过程由消息填充、消息注入、消 息混淆和消息输出4个阶段组成,具体包括下述步骤:
[0007] S1、对待处理消息序列进行消息填充,并交替采用基于线性反馈函数的延迟发生 器构造一个轮函数;
[0008] S2、分别将轮函数应用于消息注入阶段、消息混淆阶段和消息输出阶段,对消息进 行反馈步进、循环移位处理,快速获得可变长、抗碰撞的消息散列值。
[0009] 作为优选的技术方案,步骤S1中,所述消息填充的方法是将待处理消息序列填充 至16的倍数字长,即512位的倍数长,具体方法是:如果消息序列长度等于16的倍数,不需要 添加;否则先添加一个1,然后填充若干个〇,使得整个消息串是16的倍数字长。
[0010] 作为优选的技术方案,在步骤S2中,消息注入的方法为如下的多轮迭代:
[0011] for i = 0to np-l
[0012]
[0013] S-R(S)
[0014] 其中S为状态值,存储中间过程数据,每个状态为512位,每一个状态的初值皆为0; FI为注入函数;R为轮变换函数;迭代轮数nP为填充后的消息字序列长度除以16。
[0015] 作为优选的技术方案,所述注入函数FI采用线性反馈变换,即使用基于线性反馈 函数 Xi = Xi-11+Xi-13+Xi-14+Xi-16 的延迟发生器将消息字序列{pi6i,pi6i+l,Pl6i+2,…,pi6i+15}反 馈步进16次。
[0016] 作为优选的技术方案,在注入阶段第i轮中,对消息字序列{Pl6l,Pl6l+1,Pl6l+2,…, p16l+15}使用注入函数FI进行处理后,将反馈步进16次后所得16字长消息字序列与状态S进 行逐位异或后存为状态S。
[0017] 作为优选的技术方案,在步骤S2中,所述消息混淆阶段采用轮函数R对前面生成的 状态S进一步进行nb轮变换:
[0018] for i = 0to nb-l:S-R(S)
[0019] 典型地,nb取值16。
[0020] 作为优选的技术方案,在步骤S2中,所述消息输出阶段输出n。个字长的消息散列 值,过程如下:
[0021] for i = 0to n〇:
[0022] ① S-R(S)
[0023] ②取每一轮状态S的第1个字构成加入散列值序列;
[0024]其中R为轮变换函数。
[0025]作为优选的技术方案,步骤S1中,所述轮函数R由如下三步构成:
[0026]①首先为线性反馈变换:采用基于线性反馈函数Xi = Xi-1Q+Xi-12+Xi-15+Xi-16的延迟 发生器对上一步运算所得状态S进行反馈步进16次,所得序列仍存为状态S;
[0027]②其次是循环移位变换:对状态S = {χο,χ?,χ2,…,Χ14,χ15}中每一个字,按旋转变 换Xi = :xi>>> (i (i+1 )/2mod 32)进行按位循环移位,仍存为状态S;
[0028]③再次为线性反馈变换:采用基于线性反馈函数Xi = Xi-8+Xi-9+Xi-11+Xi-16的延迟发 生器将S= {χ〇,:Χ1,Χ2,…,X14,X15}反馈步进16次,序列后仍存为状态S。
[0029] 本发明与现有技术相比,具有如下优点和有益效果:
[0030] 1、本发明采用线性反馈延迟发生器构造散列方案,执行效率、安全性能和硬件实 行性能优于采用传统方法构造的散列方案。
[0031] 2、本发明中采用基于m-序列的延迟发生器组合用于轮函数,具有良好的伪随机 型、较高的线性复杂度等特性,算法结构简单,易于硬件实现。
[0032] 3、本发明可以根据需要生成任意32位之倍数长度的消息散列值。
【附图说明】
[0033]图1是本发明的系统流程图。
[0034]图2是本发明的线性反馈变换1示意图。
[0035]图3是本发明的轮变换结构图。
[0036] 图4是本发明的线性反馈变换2示意图。
[0037] 图5是本发明的的循环移位变换示意图。
[0038] 图6是本发明的线性反馈变换3示意图。
【具体实施方式】
[0039]下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限 于此。
[0040] 实施例
[0041] 鉴于目前多数手机设备、PDA和智能卡等为32位处理器,本实施实例假设每一消息 字为32位。
[0042] 本发明实施过程包括消息填充、消息注入、消息混淆和散列值输出4个阶段。本发 明执行流程如附图1所示。
[0043] 1、消息填充阶段
[0044] 消息填充方案将待处理消息序列填充至16的倍数字长,亦即512位的倍数长。例如 对长度为1000个字的消息串,需要填充至1008个字。
[0045] 填充方法是:如果消息序列长度等于16的倍数,不需进行填充;否则先添加一个位 1,然后填充若干个位〇,使得整个消息串是16的倍数字长,亦即消息数据位长为512的整数 倍。例如对长度为1000个字的消息串,需要填充10000000000000000000000000000000、 00000000000000000000000000000000、00000000000000000000000000000000、 00000000000000000000000000000000、00000000000000000000000000000000、 00000000000000000000000000000000、00000000000000000000000000000000、 00000000000000000000000000000000 等 8 个字。
[0046] 经过填充后的消息序列为{列,户1,戶2,···,;%*]6-1 },其中nP为512位明文数据块的 数量。
[0047] 上面1000个字的消息序列,填充后长1008个字,共nP = 63个数据块。
[0048] 2、消息注入阶段
[0049] 在散列运算过程中,中间运算的每个512位(即16个32位字)称为一个状态,记为S =S= {χο,χ?,X2,…,X14,X15},每 一Xi 为一个 32 位字。
[0050] 对于个消息注入方案为如下的多轮迭代:
[0051] for i = 0to nn-l
[0052]
[0053] S-R(S)
[0054] 其中S为存储散列处理中间过程数据的状态值,每个状态为512位(或16个32位 字),每一个状态的初值皆为0; FI为注入函数;R为轮变换函数;迭代轮数nP为填充后的消息 字长除以16。
[0055] 其中注入函数FI采用基于线性反馈函数器Xi = Xi-ii+Xi-i3+Xi-i4+Xi-i6的延迟发生对 消息字序列{p16l,p16l+1,p16l+2,…,p16l+15}按字反馈步进16次。所采用延迟发生器的线性反 馈变换1如附图2所示。
[0056] 在注入阶段第i轮中,对消息字序列卜^口他+^他+:^…^他仙丨使用注入函数?! 进行处理后,将反馈步进16次后所得16字长消息字序列与状态S进行逐位进行异或运算后 存为状态S。
[0057] 其中轮函数R结构图如附图3所示。轮变换构成如下:
[0058] ①首先,采用基于线性反馈函数Xi = Xi-lQ+Xi-12+Xi-15+Xi-16的延迟发生器对上一步 运算所得状态S进行按字反馈步进16次,所得序列仍存为状态S。这里所采用延迟发生器的 线性反馈变换2如附图4所示。
[0059] ②其次,对状态S= { XQ,XI,X2,…,X14,X15 }中每一个字,按循环移位变换Xi = Xi>>> (i(i+l)/2mod 32)进行按位循环移位,仍存为状态S。循环移位变换如附图5所示。
[0000]③再次,采用基于线性反馈函数Xi = Xi-8+Xi-9+Xi-11+Xi-16的延迟发生器将S= {xo, X1,X2,…,X14,X15}线性反馈按字步进16次,仍存为状态S。采用延迟发生器的线性反馈变换3 如附图6所示。
[0061] 如果有特殊的安全要求,轮函数中线性反馈步进次数可以根据需要增加,如由16 次增加至24次、32次。延迟发生器可以采用同类基于线性反馈函数的延迟发生器,如Xl = Xi-11+Xi-12+Xi-13+Xi-16 或 Xi = Xi-8+Xi-11+Xi-13+Xi-14+Xi-15+Xi-16 〇
[0062] 3、消息混淆阶段
[0063] 采用轮函数R对前面生成的状态进一步进行多轮变换:
[0064] for i = 0to 15:S-R(S)
[0065] 如果有特殊的安全要求,轮函数也可增加到24轮甚至32轮,即:
[0066] for i = 0to 23:S^R(S)
[0067] 或
[0068] for i = 0to 31:S-R(S)
[0069] 4、散列输出阶段
[0070] 输出阶段输出256位的消息散列值,过程如下:
[0071 ] for i = 0to 7 :
[0072] ① S-R(S)
[0073] ②取每一轮状态S的第1个字构成加入散列值序列。
[0074]如此构造出一个256个字长的消息散列值。
[0075]同样,如上述循环4次可得到128位散列值,循环5次可得到160位散列值,循环6次 可得到192位散列值,循环7次可得到224位散列值,循环12次可得到384位散列值,循环η次 可构成任意的η*32位散列值。
[0076]上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的 限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化, 均应为等效的置换方式,都包含在本发明的保护范围之内。
【主权项】
1. 一种基于延迟发生器的散列方法,其特征在于,消息散列过程由消息填充、消息注 入、消息混淆和消息输出4个阶段组成,具体包括下述步骤: 51、 对待处理消息序列进行消息填充,并交替采用基于线性反馈函数的延迟发生器构 造一个轮函数; 52、 分别将轮函数应用于消息注入阶段、消息混淆阶段和消息输出阶段,对消息进行反 馈步进、循环移位处理,快速获得可变长、抗碰撞的消息散列值。2. 根据权利要求1所述的基于延迟发生器的散列方法,其特征在于,步骤Sl中,所述消 息填充的方法是将待处理消息序列填充至16的倍数字长,即512位的倍数长,具体方法是: 如果消息序列长度等于16的倍数,不需要添加;否则先添加一个1,然后填充若干个0,使得 整个消息串是16的倍数字长。3. 根据权利要求1所述的基于延迟发生器的散列方法,其特征在于,在步骤S2中,消息 注入的方法为如下的多轮迭代: for i = 0 to nP-l S^R(S)其中S为状态值,存储中间过程数据,每个状态为512位,每一个状态的初值皆为0 ;FI为 注入函数;R为轮变换函数;迭代轮数如为填充后的消息字序列长度除以16。4. 根据权利要求3所述的基于延迟发生器的散列方法,其特征在于,所述注入函数FI采 用线性反馈变换,即使用基于线性反馈函数Xi = Xi-ll+Xi-13+Xi-14+Xi-16的延迟发生器将消息 字序列{pi6i,Pl6i+1,Pl6i+2,…,Pl6i+15 }反馈步进 16次。5. 根据权利要求3所述的基于延迟发生器的散列方法,其特征在于,在注入阶段第i轮 中,对消息字序列{ρ16ι,ρ 16ι+1,ρ16ι+2,···,ρ16ι+15}使用注入函数FI进行处理后,将反馈步进16 次后所得16字长消息字序列与状态S进行逐位异或后存为状态S。6. 根据权利要求3所述的基于延迟发生器的散列方法,其特征在于,在步骤S2中,所述 消息混淆阶段采用轮函数R对前面生成的状态S进一步进行n b轮变换: for i = 0 to nb-l:S-R(S) 典型地,nb取值16。7. 根据权利要求1所述的基于延迟发生器的散列方法,其特征在于,在步骤S2中,所述 消息输出阶段输出η。个字长的消息散列值,过程如下: for i = 0 to n〇: ① S-R(S) ② 取每一轮状态S的第1个字构成加入散列值序列; 其中R为轮变换函数。8. 根据权利要求1所述的基于延迟发生器的散列方法,其特征在于,步骤Sl中,所述轮 函数R由如下三步构成: ① 首先为线性反馈变换:采用基于线性反馈函数Xi = Xi-lQ+Xi-12+Xi-15+Xi-16的延迟发生 器对上一步运算所得状态S进行反馈步进16次,所得序列仍存为状态S; ② 其次是循环移位变换:对状态S = { XQ,Xl,X2,…,X14,X15 }中每一个字,按旋转变换Xi = xi>>>(i (i+1 )/2mod 32)进行按位循环移位,仍存为状态S; ③再次为线性反馈变换:采用基于线性反馈函数Xl = Xl-8+Xl-9+Xl-n+ Xl-16的延迟发生器 将5={10,11,12,"_,114,115}反馈步进16次,序列后仍存为状态5。
【文档编号】H04L9/06GK105897404SQ201610374498
【公开日】2016年8月24日
【申请日】2016年5月30日
【发明人】梁英宏, 刘义春
【申请人】广东财经大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1