CN101902332A - 基于耦合混沌映射系统的带密钥的散列方法 - Google Patents

基于耦合混沌映射系统的带密钥的散列方法 Download PDF

Info

Publication number
CN101902332A
CN101902332A CN2010102279143A CN201010227914A CN101902332A CN 101902332 A CN101902332 A CN 101902332A CN 2010102279143 A CN2010102279143 A CN 2010102279143A CN 201010227914 A CN201010227914 A CN 201010227914A CN 101902332 A CN101902332 A CN 101902332A
Authority
CN
China
Prior art keywords
message
key
integer
bits
sub
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN2010102279143A
Other languages
English (en)
Inventor
王世红
李达
胡岗
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing University of Posts and Telecommunications
Original Assignee
Beijing University of Posts and Telecommunications
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing University of Posts and Telecommunications filed Critical Beijing University of Posts and Telecommunications
Priority to CN2010102279143A priority Critical patent/CN101902332A/zh
Publication of CN101902332A publication Critical patent/CN101902332A/zh
Priority to CN 201010576336 priority patent/CN102082668B/zh
Pending legal-status Critical Current

Links

Images

Abstract

本发明的目的是设计一种带密钥的散列方法,也就是消息认证码的产生方法,散列值和密钥的长度都是256比特,消息分组长度是1024比特。基于耦合混沌映射系统的带密钥的散列方法,采用一维耦合混沌映射系统,输入消息与扩展子密钥作为混沌映射系统的参数,通过一维耦合混沌映射系统有限次的迭代操作,可以使消息和密钥达到足够的混乱与扩散,产生随机分布、不重复的散列值,保证了该散列方法具有强抗碰撞性和软件实现运算速度快的特性。

Description

基于耦合混沌映射系统的带密钥的散列方法
技术领域
本发明涉及信息安全技术领域,更确切地说是涉及用于消息认证的散列技术。
技术背景
散列方法,是一种把任意长度的输入消息转化成固定长度的输出消息摘要的一种方法。这个输出消息摘要为该消息的散列值(也称Hash值)。散列方法的特点是单向性,即由原文求散列值容易,由散列值求原文困难;抗碰撞性,即给定散列方法的描述,找到两个不同的输入消息散列到同一个值是计算上不可行的,或给定散列方法的描述和一个随机选择的消息,找到另一个与该消息不同的消息使得它们散列到一个值是计算上不可行的。
散列技术的一个重要用途是用于具有消息认证功能的数字签名。面对互联网中各种各样的威胁与攻击,信息的接收方有必要对其收到的信息进行消息认证。消息认证包括两层含义:一是消息的起源认证检测,即对消息的发送者的身份进行认证;二是消息的完整性检验,即验证消息在传送或存储过程中未被篡改、删除或插入等。由要认证的消息M得到散列值,作为消息认证的依据,假定通信双方A与B,A向B发送消息时计算散列值,然后消息和散列值一起被发送给B,B对收到的消息进行相同的散列运算,得到新的散列值,并将接收到的散列值与B计算出的散列值进行对比,如果相同则B可以确信消息的来源和未被篡改。
散列方法包含不带密钥和带密钥的两类,后者是指散列值由只有通信双方指定的一个密钥K来控制,在这种情况下,消息M的散列值也称为消息认证码(Message Authentication Code)。散列技术中常见的不带密钥的散列方法,如MD5、SHA-1方法的安全性受到了众多密码学家的质疑,而带密钥的散列方法因其在通信双方间增加了共享密钥的使用,所以被业界认为更为安全。在传统密码学中,带密钥的散列方法通常基于已有的散列方法,比如HMAC,也可以基于分组加密方法,或者基于泛散列函数族方法,因此其安全性常依赖于这些基础密码本身。
本发明特制了一个全新的、基于混沌耦合映射的、带密钥的散列方法,独立于已有的散列方法和加密方法,可用于消息认证中。其主要特点是采用一维耦合混沌映射系统,输入消息与密钥作为混沌映射系统的参数,通过一维耦合混沌映射系统有限次的迭代操作,可以使消息和密钥达到足够的混乱与扩散,产生随机分布、不重复的散列值,保证了该散列方法具有强抗碰撞性和软件实现运算速度快的特性。
发明内容
本发明的目的是设计一种带密钥的散列方法,散列值和密钥的长度都是256比特。一种基于耦合混沌映射系统的带密钥的散列方法,其过程特征在于以下处理步骤:
A1)消息预处理,包括确定初始值和消息整形;
A2)密钥扩展,是把256比特的密钥K扩展成1024比特的子密钥;
A3)参数生成,是输入消息和扩展子密钥,产生一维耦合映射系统的两组参数;
A4)压缩过程,是把输入的1024比特消息压缩,输出256比特,所述方法包括一维迭代耦合映射系统和非线性变换过程;
A5)散列值输出,包括依次处理所有消息分组和散列值输出变换。
在A1中,消息预处理包括确定初始值和消息整形两个步骤:
A1.1)确定初始值,是指散列双方需要约定初始变量H0,即确定8个初始变量h0(j)级联组成H0=h0(1)||h0(2)||...||h0(8)||,每个h0(j)都是一个属于[0,232)区间上的整数;
A1.2)消息整形,是指把消息通过填充补充位,添加原文长度信息,使整形消息长度为分组长度的整数倍;每组消息固定为1024比特,整形原文消息长度为1024t比特,t为整数;
所述的由原文消息生成整形消息的过程,进一步包括:
对输入的原始消息进行填充补位,以使其补位后的消息长度在对1024取模后的余数是896,补位是先补一个1再补0,直到长度满足对1024取模余数是896,补位至少补一位,最多补1024比特,即使长度已经满足对1024取模余数是896,补位也必须要进行;然后补长度,补一个128比特长度的数据来表示原始消息的长度,补到已经进行了补位操作的消息后面;最后整个消息按顺序分成一个个1024比特的消息分组数据块M1,M2,...,Mt,用t表示消息整形后的最终分组数目;每组消息Mi可用32个整数级联表示,Mi=m(1)||m(2)||...||m(32)||,每个m(j)(j=1,2,...,32)都是属于[0,232)区间上的整数。
在A2中,密钥扩展是把256比特的密钥K扩展成1024比特的子密钥。密钥K为256比特,用8个整数级联表示,K=k(1)||k(2)||...||k(8)||,每一个k(j)都是一个属于[0,232)区间上的整数;经过扩展变换得到总长为1024比特的子密钥,子密钥用32个整数来表示,ka(1),ka(2),...,ka(32),每一个ka(j)都是一个属于[0,232)区间上的整数;所述的密钥扩展具体实施步骤是:
步骤1:输入密钥值K,得到8个整数kk(j),即kk(j)=k(j),j=1,2,...,8;
步骤2:把8个整数kk(j)扩展成16个整数kk(j),即
kk ( j ) = kk ( j - 8 ) + ( kk ( j - 8 ) > > > 12 ) &CirclePlus; ( kk ( j - 5 ) > > > 11 ) + ( kk ( j - 3 ) < < < 11 ) , j=9,10,...,16操作
Figure BSA00000192324800042
是按比特位异或,操作+是模232加法,操作x>>>(<<<)y表示对x右(左)循环移位y比特;
步骤3:把扩展得到的16个整数kk(j)再压缩为新的8个整数kk(j),即
kk(j)=kk(j+8)+kk(9-j),j=1,2,...,8
重复执行步骤2和步骤3三次,输出8个整数kk(j),j=1,2,...,8,作为子密钥ka(j),j=1,2,...,8;再重复执行步骤2和步骤3三次,输出8个整数kk(j),j=1,2,...,8,作为子密钥ka(j),j=9,10,...,16;继续重复执行步骤2和步骤3三次,输出8个整数kk(j),j=1,2,...,8,作为子密钥ka(j),j=17,18,...,24;最后重复执行步骤2和步骤3三次,输出8个整数kk(j),j=1,2,...,8,作为子密钥ka(j),j=25,26,...,32;总计输出了总长为1024比特的子密钥,即ka(j),j=1,2,...,32。
在A3中,参数生成是由输入的分组消息Mi和扩展子密钥ka(j),产生一维耦合映射系统的两组参数,具体方法如下:
A3.1)第一组参数,通过线性变换可以把第i个消息分组Mi转化为32个双精度实数bi,j,i=1,2,3,4,j=1,2,...,8,即
bi,j=2.0+m((i-1)*8+j)/231,i=1,2,3,j=1,2,...,8;
b4,j=m(24+j)/232,j=1,2,...,8
A3.2)第二组参数,扩展得到的子密钥ka(j)与输入的消息分组Mi混合后,转化为另外一组32个双精度实数ai,j,i=1,2,3,4,j=1,2,...,8,即
a i , j = 2.0 + [ ka ( ( i - 1 ) * 8 + j ) &CirclePlus; ( m ( i - 1 ) * 8 + j ) > > > 8 ] / 2 31 , i=1,2,3,j=1,2,...,8
a 4 , j = [ ka ( 24 + j ) &CirclePlus; ( m ( 24 + j ) > > > 8 ) ] / 2 32 , j=1,2,...,8
其中操作
Figure BSA00000192324800045
是按比特位异或,操作x>>>y表示对x右循环移位y比特。
在A4中,压缩过程是把输入的1024比特消息压缩,输出256比特,所述方法包括一维迭代耦合映射系统和非线性变换:
A4.1)一维迭代耦合映射系统,其动力学系统表示为:
xn+1(j)=f1(a1,j,xn(j))+f1(a2,j+1,xn(j+1))+f1(a3,j-1,xn(j-1))
                                                                           (1)
+f2(a4,j+4,xn(j+4))+cj mod1,j=1,2,...,8
xn+2(j)=f1(b1,j,xn+1(j))+f1(b2,j+1,xn+1(j+1))+f1(b3,j-1,xn+1(j-1))  
                                                                           (2)
+f2(b4,j+4,xn+1(j+4))+cj mod1,j=1,2,...,8
其中n为离散时间迭代步数,j为格点坐标,格点长度为8,对所有参量使用周期边界条件;f1(a,x)=ax(1-x)是逻辑斯蒂映射,当a>3.57时,逻辑斯蒂映射是混沌的;f2(a,x)是分段线性映射,具体表示为
Figure BSA00000192324800051
c1=0.1,c2=0.2,对于其他格点j,cj=0;参数ai,j和bi,j,i=1,2,3,4,j=1,2,...,8,由步骤A3得到;依次执行式(1)、(2)r次得到输出变量x2r(j),j=1,2,...,8;当迭代次数不等于4和8次,即r≠4和r≠8时,输出变量x2r(j)直接反馈执行(1)、(2)迭代操作,当迭代次数等于4和8次,即r=4和r=8时,输出变量x2r(j)执行A4.2非线性变换;
所述的一维迭代耦合映射系统,进一步包括以下两种情况:
A4.1.1)对于第一个消息分组M1,式(1)、(2)的初始值定义为:
x0(j)=h0(j)/232,j=1,2,...,8
其中h0(j)是在步骤A1.1中散列双方约定的初始变量H0,即H0=h0(1)||h0(2)||...||h0(8)||;
A4.1.2)对于第i个消息分组Mi,式(1)、(2)的初始值定义为:
x0(j)=hi-1(j)/232,j=1,2,...,8,i=1,2,...,t
其中hi-1(j)是对第(i-1)个消息分组Mi-1压缩过程计算输出的中间变量Hi-1,即Hi-1=hi-1(1)||hi-1(2)||...||hi-1(8)||,每个hi-1(j)都是一个属于[0,232)区间上的整数;
A4.2)非线性变换,是把上述步骤A4.1中的模拟信号x2r(j)进行两次非线性变换,所述的非线性变换的过程,进一步包括:
A4.2.1)对于第4次迭代,即r=4时,依据以下公式对输出变量x2r(j)进行非线性操作:
x2r(j)=(x2r(j)×250 mod232)/232,j=1,2,...,8
所述上式首先把双精度实数x2r(j)放大250倍,然后取模232,得到32比特长的整数(模数转换),最后再转化为双精度实数;
A4.2.2)对于第8次迭代,即r=8时,依据以下公式对其进行非线性操作,并得到中间变量Hi=hi(1)||hi(2)||...||hi(8)||:
hi(j)=x2r(j)×250 mod232,j=1,2,...,8,i=1,2,...,t
所述上式首先把双精度实数x2r(j)放大250倍,然后取模232,得到32比特长的整数hi(j)。
在A5中,输出散列值包括依次处理所有消息分组和散列值输出变换两个过程:
A5.1)依次处理所有消息分组,是对所有分组M1,M2,...,Mt按分组顺序重复执行步骤A3、A4,直到最后一个消息分组Mt处理结束,得到Ht=ht(1)||ht(2)||...||ht(8)||,每一个ht(j),j=1,2,...,8,都是一个属于[0,232)区间上的整数;
A5.2)通过输出变换得到最终的散列值,所述输出变换的过程是把256比特的密钥K与256比特的Ht模232加后,按顺序如下输出:
h(K,M)=K+Ht=k(1)+ht(1)||k(2)+ht(2)||...||k(8)+ht(8)||
其中操作+是模232加法。
本发明具有以下技术效果:
1.散列方法基于混沌耦合映射结构,输入消息与扩展子密钥作为混沌系统的参数,使消息和密钥的比特流达到足够的混乱和扩散;对混沌变量采用非线性变换,增加了理论计算攻击的难度;
2.散列方法中浮点数计算包含线性与非线性映射,引入线性映射可以消除逻辑斯蒂映射的由初始条件引发的碰撞,并改善逻辑斯蒂映射的不均匀特性;
3.软件实现运算速度快。
附图说明
图1是基于耦合混沌映射系统的压缩过程示意图。
图2是输入消息的散列过程示意图。
图3是信息只改变一个比特位,散列值的变化。
图4是密钥只改变一个比特位,散列值的变化。
图5是初始值只改变一个比特位,散列值的变化。
具体实施方式
下面结合附图和实例对本发明作进一步详细说明,本散列方法的具体构造方法包括如下五个步骤:
B1)消息预处理,包括确定初始值和消息整形;
B2)密钥扩展,是把256比特的密钥K扩展成1024比特的子密钥;
B3)参数生成,是输入消息和扩展子密钥,产生一维耦合映射系统的两组参数;
B4)压缩过程,是把输入的1024比特消息压缩,输出256比特,所述方法包括一维迭代耦合映射系统和非线性变换过程;
B5)散列值输出,包括依次处理所有消息分组和散列值输出变换。
在B1中,消息预处理包括确定初始值和消息整形两个步骤:
B1.1)确定初始值,是指散列双方需要约定初始变量H0,确定8个初始变量h0(j)级联组成H0=h0(1)||h0(2)||...||h0(8)||,每个h0(j)都是一个属于[0,232)区间上的整数;
B1.2)消息整形,是指把消息通过填充补充位,添加原文长度信息,使整形消息长度为分组长度的整数倍过程;每组消息固定为1024比特,整形原文消息长度为1024t比特,t为整数;
所述的由原文消息生成整形消息的过程,进一步包括:
对输入的原始消息进行填充补位,以使其补位后的消息长度在对1024取模后的余数是896,补位是先补一个1再补0,直到长度满足对1024取模余数是896,补位至少补一位,最多补1024比特,即使长度已经满足对1024取模余数是896,补位也必须要进行;然后补长度,补一个128比特长度的数据来表示原始消息的长度,补到已经进行了补位操作的消息后面;最后整个消息按顺序分成一个个1024比特的消息分组数据块M1,M2,...,Mt,用t表示消息整形后的最终分组数目;每组消息Mi可用32个整数级联表示,Mi=m(1)||m(2)||...||m(32)||,每个m(j)(j=1,2,...,32)都是属于[0,232)区间上的整数。
在B2中,密钥扩展是把256比特的密钥K扩展成1024比特的子密钥。密钥K为256比特,用8个整数级联表示,K=k(1)||k(2)||...||k(8)||,每一个k(j)都是一个属于[0,232)区间上的整数;经过扩展变换得到总长为1024比特的子密钥,子密钥用32个整数来表示,ka(1),ka(2),...,ka(32),每一个ka(j)都是一个属于[0,232)区间上的整数。所述的密钥扩展具体实施步骤是:
步骤1:输入密钥值K,得到8个整数kk(j),即kk(j)=k(j),j=1,2,...,8;
步骤2:把8个整数kk(j)扩展成16个整数kk(j),即
kk ( j ) = kk ( j - 8 ) + ( kk ( j - 8 ) > > > 12 ) &CirclePlus; ( kk ( j - 5 ) > > > 11 ) + ( kk ( j - 3 ) < < < 11 ) , j=9,10,...,16操作是按比特位异或,操作+是模232加法,操作x>>>(<<<)y表示对x右(左)循环移位y比特;
步骤3:把扩展得到的16个整数kk(j)再压缩为新的8个整数kk(j),即
kk(j)=kk(j+8)+kk(9-j),j=1,2,...,8
重复执行步骤2和步骤3三次,输出8个整数kk(j),j=1,2,...,8,作为子密钥ka(j),j=1,2,...,8;再重复执行步骤2和步骤3三次,输出8个整数kk(j),j=1,2,...,8,作为子密钥ka(j),j=9,10,...,16;继续重复执行步骤2和步骤3三次,输出8个整数kk(j),j=1,2,...,8,作为子密钥ka(j),j=17,18,...,24;最后重复执行步骤2和步骤3三次,输出8个整数kk(j),j=1,2,...,8,作为子密钥ka(j),j=25,26,...,32;总计输出了总长为1024比特的子密钥,即ka(j),j=1,2,...,32。
在B3中,参数生成是由输入的分组消息和扩展子密钥产生一维耦合映射系统的两组参数,具体方法如下:
B3.1)第一组参数,通过线性变换可以把第i个消息分组Mi转化为32个双精度实数bi,j,i=1,2,3,4,j=1,2,...,8,即
bi,j=2.0+m((i-1)*8+j)/231,i=1,2,3,j=1,2,...,8
b4,j=m(24+j)/232,j=1,2,...,8
B3.2)第二组参数,扩展得到的子密钥ka(j)与输入的消息分组Mi混合后,转化为另外一组32个双精度实数ai,j,i=1,2,3,4,j=1,2,...,8,即
a i , j = 2.0 + [ ka ( ( i - 1 ) * 8 + j ) &CirclePlus; ( m ( i - 1 ) * 8 + j ) > > > 8 ] / 2 31 , i=1,2,3,j=1,2,...,8
a 4 , j = [ ka ( 24 + j ) &CirclePlus; ( m ( 24 + j ) > > > 8 ) ] / 2 32 , j=1,2,...,8
在B4中,压缩过程是把输入的1024比特消息压缩,输出256比特,所述方法包括一维迭代耦合映射系统和非线性变换过程(如图1所示):
B4.1)一维迭代耦合映射系统,其动力学系统表示为:
xn+1(j)=f1(a1,j,xn(j))+f1(a2,j+1,xn(j+1))+f1(a3,j-1,xn(j-1))        
                                                                           (3)
+f2(a4,j+4,xn(j+4))+cj mod1,j=1,2,...,8
xn+2(j)=f1(b1,j,xn+1(j))+f1(b2,j+1,xn+1(j+1))+f1(b3,j-1,xn+1(j-1))    
                                                                           (4)
+f2(b4,j+4,xn+1(j+4))+cj mod1,j=1,2,...,8
其中n为离散时间迭代步数,j为格点坐标,格点长度为8,对所有参数使用周期边界条件;f1(a,x)=ax(1-x)是逻辑斯蒂映射,当a>3.57时,逻辑斯蒂映射是混沌的;f2(a,x)是分段线性映射,具体表示为
Figure BSA00000192324800101
c1=0.1,c3=0.2,对于其他格点j,cj=0;参数ai,j和bi,j(i=1,2,3,4,j=1,2,...,8)由步骤B3得到;依次执行式(3)、(4)r次得到输出变量x2r(j),j=1,2,...,8;当迭代次数不等于4和8次,即r≠4和r≠8时,输出变量x2r(j)直接反馈执行(3)、(4)迭代操作,当迭代次数等于4和8次,即r=4和r=8时,输出变量x2r(j)执行非线性变换;
所述的一维迭代耦合映射系统,进一步包括以下两种情况:
B4.1.1)对于第一个消息分组M1,式(3)、(4)的初始值定义为:
x0(j)=h0(j)/232,j=1,2,...,8
其中h0(j)是在步骤B1.1中散列双方约定的初始变量H0,即H0=h0(1)||h0(2)||...||h0(8)||;
B4.1.2)对于第i个消息分组Mi,式(3)、(4)的初始值定义为:
x0(j)=hi-1(j)/232,j=1,2,...,8,i=1,2,...,t
其中hi-1(j)是第(i-1)个消息分组Mi-1输出的中间变量Hi-1,即Hi-1=hi-1(1)||hi-1(2)||...||hi-1(8)||,每个hi-1(j)都是一个属于[0,232)区间上的整数;
B4.2)非线性变换,是把上述步骤B4.1中的模拟信号x2r(j)进行两次非线性变换,所述的非线性变换的过程,进一步包括:
B4.2.1)对于第4次迭代,即r=4时,依据以下公式对输出变量x2r(j)进行非线性操作:
x2r(j)=(x2r(j)×250 mod232)/232,j=1,2,...,8
所述上式首先把双精度实数x2r(j)放大,然后取模232,得到32比特长的整数(模数转换),最后再转化为双精度实数;
B4.2.2)对于第8次迭代,即r=8时,依据以下公式对其进行非线性操作,并得到中间变量Hi=hi(1)||hi(2)||...||hi(8)||:
hi(j)=x2r(j)×250 mod232,j=1,2,...,8,i=1,2,...,t
所述上式首先把双精度实数x2r(j)放大,然后取模232,得到32比特长的整数hi(j)。
在B5中,输出散列值包括依次处理所有消息分组和散列值输出变换两个过程(如图2所示):
B5.1)依次处理所有消息分组,是对所有分组M1,M2,...,Mt按分组顺序重复执行步骤B3、B4,直到最后一个消息分组Mt处理结束,得到Ht=ht(1)||ht(2)||...||ht(8)||,每一个ht(j),j=1,2,...,8,都是一个属于[0,232)区间上的整数;
B5.2)通过输出变换得到最终的散列值,所述输出变换的过程是把256比特的密钥K与Ht模232加后,按顺序输出如下:
h(K,M)=K+Ht=k(1)+ht(1)||k(2)+ht(2)||...||k(8)+ht(8)||
其中操作+是模232加法。
下面结合一个具体消息,进一步说明本发明的技术方案,包括中间运算过程及部分结果。
1.确定初始值
散列操作前要约定初始值H0=h0(1)||h0(2)||...||h0(8)||,给定h0(1)到h0(8)(十六进制表示)为51ff5c  9044df76  317b9d08  cf0661f3  95c0d47e  7ad70a5159ab4ca9  e55a354b。
2.建立整形消息
以原文abc这三个字母为例,对应于十六进制表示的ASCII码值为61,62,63,得到整形消息为一个分组,即m(1)到m(32)分别为60616280 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 18(十六进制表示),其中末尾的四个数字0 0 0 18表示了消息的长度,即24比特长。
3.扩展密钥
给定密钥k(1)到k(8)为1 1 1 1 1 1 1 1(十六进制表示),得到扩展子密钥ka(1)到ka(32)为14a1645b 19ba6c2d 99260a39 830ea697 e2fcf1d3817789d1 c1681f28 5fe0a91c 9d2dd5bc feb86830 e31551d9 3d710ec3a5fdc73c a220ffbf 68e564cb 6e38ed8c 133abcfc 3378c729 576127e856bc9cd8 27894f4 454aad7 f4cbf12f e0fed5ee d41a7ab4 cd241afc7f47beb0 f0f383e0 95ea8b57 c20ba1d0 cc1553aa f435eae1。
4.计算参数
由消息和扩展子密钥产生的双精度参数bi,j和ai,j分别见表1和表2。
5.压缩过程计算
压缩过程计算得到输出变量H1,h1(1)到h1(8)分别为8e761553 138967d6cebda9b  10061124  329f6cff  41cd614b  e3ab4be2  24b8e673。
6.输出散列值(摘要)
h1(i)和密钥k(i)模232加法运算,得到256比特的散列值14a6622f 5e4994db64609c77 24861f0d 9992e091 eefcc35b c0cae526 58aa26c7。
仅改变信息“abc”到“abd”,密钥K和初值H0不变,得到256比特的散列值为94ccf47b a0f99c8a 919f22b6 c1242249 d98cd787 dd1232 ba5f5dde11dd6e23。为了更好地说明散列值的变化,对改变前后的散列值按比特位异或操作,得到806a9654 feb00851 f5ffbec1 e5a23d44 401e3716 ee21d1697a95b8f8 497748e,把上述结果用比特串表示(每个32比特按比特位从低到高排列)
0 0 1 0 1 0 1 0 0 1 1 0 1 0 0 1 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 1
1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 1 1 1 1 1
1 0 0 0 0 0 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1
0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 0 0 1 0 0 0 1 0 1 1 0 1 0 0 1 1 1
0 1 1 0 1 0 0 0 1 1 1 0 1 1 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0
1 0 0 1 0 1 1 0 1 0 0 0 1 0 1 1 1 0 0 0 0 1 0 0 0 1 1 1 0 1 1 1
0 0 0 1 1 1 1 1 0 0 0 1 1 1 0 1 1 0 1 0 1 0 0 1 0 1 0 1 1 1 1 0
0 0 1 0 0 1 1 1 0 0 0 1 0 0 1 0 1 1 1 0 1 1 1 0 1 0 0 1 0 0 1 0
图3显示了异或后的256比特值,约50%的比特位发生了变化,表明散列值具有很好的随机性。
仅改变密钥K中的k(1),其他密钥值不变,k(1)由“1”变到“0”,信息“abc”和初值H0不变,得到256比特的散列值30c6a2ca 32d3bed3 2d2acda74dee35ea a305cd0f f1e3695d fd2cc35b cd54973b,和图3类似,图4显示了散列值具有很好的随机性。
仅改变初值H0中的h0(1),其他初始值不变,h0(1)由“51ff5c”变到“51ff5d”,信息“abc”和密钥K不变,得到256比特的散列值a795e75b ae997df3 27dee000a8082571 52be11e 1bd0dcd4 c1a03381 20538d87,和图3类似,图5显示了散列值具有很好的随机性。
本发明方法提供了一种抗碰撞攻击的带密钥的散列方法,可用于软件编程实现,有较快的处理效率。
以上所述为本发明的较佳实施例而已,但本发明不应该局限于该实施例。所以凡是不脱离本发明所公开的精神下完成的等效或更改,都落入本发明保护的范围。
表1双精度浮点表示的参数bi,j
bi,j  1   2   3   4
1   2.752971947193146   2.000000000000000   2.000000000000000   0.000000000000000
2   2.000000000000000   2.000000000000000   2.000000000000000   0.000000000000000
3   2.000000000000000   2.000000000000000   2.000000000000000   0.000000000000000
4   2.000000000000000   2.000000000000000   2.000000000000000   0.000000000000000
5   2.000000000000000   2.000000000000000   2.000000000000000   0.000000000000000
6   2.000000000000000   2.000000000000000   2.000000000000000   0.000000000000000
7   2.000000000000000   2.000000000000000   2.000000000000000   0.000000000000000
8   2.000000000000000   2.000000000000000   2.000000000000000   0.000000005587935
表2双精度浮点表示的参数ai,j
  ai,j   1   2   3   4
  1   3.162140515167266   3.227961270138621   2.150230048224330   0.828529042191803
  2   2.201001665089279   3.990002654492855   2.402123351115733   0.801332174800336
  3   3.196473386604339   3.774088126141578   2.682652462273836   0.497188489884138
  4   3.023884605150670   2.480012746062130   2.677631001919508   0.941215746104717
  5   3.773344257380813   3.296807197853923   2.019304865971208   0.585610111942515
  6   3.011460520792753   3.266632049810141   2.033833842258900   0.757989991456270
  7   3.510990042239428   2.819500540848821   3.912473819684237   0.797200421337038
  8   2.749043596908450   2.861112302169204   3.757776967249811   0.922697715694085

Claims (7)

1.基于耦合混沌映射系统的带密钥的散列方法,其过程特征在于以下处理步骤:
A1)消息预处理,包括确定初始值和消息整形;
A2)密钥扩展,是把256比特的密钥K扩展成1024比特的子密钥;
A3)参数生成,是输入消息和扩展子密钥,产生一维耦合映射系统的两组参数;
A4)压缩过程,是把输入的1024比特消息压缩,输出256比特,所述方法包括一维迭代耦合映射系统和非线性变换过程;
A5)散列值输出,包括依次处理所有消息分组和散列值输出变换。
2.根据权利要求1所述的基于耦合混沌系统的带密钥的散列方法,其特征在于所述的步骤A1消息预处理包括确定初始值和消息整形两个步骤:
A1.1)确定初始值,是指散列双方需要约定初始变量H0,确定8个32比特初始变量h0(j)级联组成H0=h0(1)||h0(2)||...||h0(8)||,每个h0(j)都是一个属于[0,232)区间上的整数;
A1.2)消息整形,是指把消息通过填充补充位,添加原文长度信息,使整形消息长度为分组长度的整数倍过程;每组消息固定为1024比特,整形原文消息长度为1024t比特,t为整数;
所述的由原文消息生成整形消息的过程,进一步包括:
对输入的原始消息进行填充补位,以使其补位后的消息长度在对1024取模后的余数是896,补位是先补一个1再补0,直到长度满足对1024取模余数是896,补位至少补一位,最多补1024比特,即使长度已经满足对1024取模余数是896,补位也必须要进行;然后补长度,补一个128比特长度的数据来表示原始消息的长度,补到已经进行了补位操作的消息后面;最后整个消息按顺序分成一个个1024比特的消息分组数据块M1,M2,...,Mt,用t表示消息整形后的最终分组数目;每组消息Mi可用32个整数级联表示,Mi=m(1)||m(2)||...||m(32)||,每个m(j)(j=1,2,...,32)都是属于[0,232)区间上的整数。
3.根据权利要求1所述的基于耦合混沌系统的带密钥的散列方法,其特征在于所述的步骤A2密钥扩展是把256比特的密钥K扩展成1024比特的子密钥;密钥K为256比特,用8个整数级联表示,K= k(1)||k(2)||...||k(8)||,每一个k(j)都是一个属于[0,232)区间上的整数;经过扩展变换得到总长为1024比特的子密钥,子密钥用32个整数来表示,ka(1),ka(2),...,ka(32),每一个ka(j)都是一个属于[0,232)区间上的整数。
4.根据权利要求3所述的密钥扩展,其具体实施步骤是:
步骤1:输入密钥值K,得到8个整数kk(j),即kk(j)=k(j),j=1,2,...,8;
步骤2:把8个整数kk(j)扩展成16个整数kk(j),即
kk ( j ) = kk ( j - 8 ) + ( kk ( j - 8 ) > > > 12 ) &CirclePlus; ( kk ( j - 5 ) > > > 11 ) + ( kk ( j - 3 ) < < < 11 ) , j=9,10,...,16操作是按比特位异或,操作+是模232加法,操作x>>>(<<<)y表示对x右(左)循环移位y比特;
步骤3:把扩展得到的16个整数kk(j)再压缩为新的8个整数kk(j),即
kk(j)=kk(j+8)+kk(9-j),j=1,2,...,8
重复执行步骤2和步骤3三次,输出8个整数kk(j),j=1,2,...,8,作为子密钥ka(j),j=1,2,...,8;再重复执行步骤2和步骤3三次,输出8个整数kk(j),j=1,2,...,8,作为子密钥ka(j),j=9,10,...,16;继续重复执行步骤2和步骤3三次,输出8个整数kk(j),j=1,2,...,8,作为子密钥ka(j),j=17,18,...,24;最后重复执行步骤2和步骤3三次,输出8个整数kk(j),j=1,2,...,8,作为子密钥ka(j),j=25,26,...,32;总计输出了总长为1024比特的子密钥,即ka(j),j=1,2,...,32。
5.根据权利要求1所述的基于耦合混沌系统的带密钥的散列方法,其特征在于所述的步骤A3参数生成是由输入的分组消息Mi和扩展子密钥ka(j),产生一维耦合映射系统的两组参数,具体方法如下:
A3.1)第一组参数,通过线性变换可以把第i个消息分组Mi转化为32个双精度实数bi,j,i=1,2,3,4,j=1,2,...,8,即
bi,j=2.0+m((i-1)*8+j)/231,i=1,2,3,j=1,2,...,8;
b4,j=m(24+j)/232,j=1,2,...,8
A3.2)第二组参数,扩展得到的子密钥ka(j)与输入的消息分组Mi混合后,转化为另外一组32个双精度实数ai,j,i=1,2,3,4,j=1,2,...,8,即
a i , j = 2.0 + [ ka ( ( i - 1 ) * 8 + j ) &CirclePlus; ( m ( ( i - 1 ) * 8 + j ) > > > 8 ) ] / 2 31 , i=1,2,3,j=1,2,...,8
a 4 , j = [ ka ( 24 + j ) &CirclePlus; ( m ( 24 + j ) > > > 8 ) ] / 2 32 , j=1,2,...,8
其中操作
Figure FSA00000192324700033
是按比特位异或,操作x>>>y表示对x右循环移位y比特。
6.根据权利要求1所述的基于耦合混沌系统的带密钥的散列方法,其特征在于所述的步骤A4压缩过程是把输入的1024比特消息压缩,输出256比特,所述方法包括一维迭代耦合映射系统和非线性变换过程:
A4.1)一维迭代耦合映射系统,其动力学系统表示为:
xn+1(j)=f1(a1,j,xn(j))+f1(a2,j+1,xn(j+1))+f1(a3,j-1,xn(j-1))
                                                                    (1)
+f2(a4,j+4,xn(j+4))+cj mod1,j=1,2,...,8
xn+2(j)=f1(b1,j,xn+1(j))+f1(b2,j+1,xn+1(j+1))+f1(b3,j-1,xn+1(j-1))
                                                                    (2)
+f2(b4,j+4,xn+1(j+4))+cj mod1,j=1,2,...,8
其中n为离散时间迭代步数,j为格点坐标,格点长度为8,使用周期边界条件;f1(a,x)=ax(1-x)是逻辑斯蒂映射,当a>3.57时,逻辑斯蒂映射是混沌的;f2(a,x)是分段线性映射,具体表示为
Figure FSA00000192324700034
c1=0.1,c2=0.2,对于其他格点j,cj=0;参数ai,j和bi,j(i=1,2,3,4,j=1,2,...,8)由步骤A3得到;依次执行式(1)、(2)r次得到输出变量x2r(j),j=1,2,...,8;当迭代次数不等于4和8次,即r≠4和r≠8时,输出变量x2r(j)直接反馈执行(1)、(2)迭代操作,当迭代次数等于4和8次,即r=4和r=8时,输出变量x2r(j)执行下述A4.2非线性变换;
所述的一维迭代耦合映射系统,进一步包括以下两种情况:
A4.1.1)对于第一个消息分组M1,式(1)、(2)的初始值定义为:
x0(j)=h0(j)/232,j=1,2,...,8
其中h0(j)是在步骤A1.1中散列双方约定的初始变量H0,即H0=h0(1)||h0(2)||...||h0(8)||;
A4.1.2)对于第i个消息分组Mi,式(1)、(2)的初始值定义为:
x0(j)=hi-1(j)/232,j=1,2,...,8,i=1,2,...,t
其中hi-1(j)是对第(i-1)个消息分组Mi-1压缩(函数)方法计算输出的中间变量Hi-1,即Hi-1=hi-1(1)||hi-1(2)||...||hi-1(8)||,每个hi-1(j)都是一个属于[0,232)区间上的整数;
A4.2)非线性变换,是把上述步骤A4.1中的模拟信号x2r(j)进行两次非线性变换,所述的非线性变换的过程,进一步包括:
A4.2.1)对于第4次迭代,即r=4时,依据以下公式对输出变量x2r(j)进行非线性操作:
x2r(j)=(x2r(j)×250 mod232)/232,j=1,2,...,8
所述上式首先把双精度实数x2r(j)放大250倍,然后取模232,得到32比特长的整数(模数转换),最后再转化为双精度实数;
A4.2.2)对于第8次迭代,即r=8时,依据以下公式对其进行非线性操作,并得到中间变量Hi=hi(1)||hi(2)||...||hi(8)||:
hi(j)=x2r(j)×250 mod232,j=1,2,...,8,i=1,2,...,t
所述上式首先把双精度实数x2r(j)放大250倍,然后取模232,得到32比特长的整数hi(j)。
7.根据权利要求1所述的基于耦合混沌系统的带密钥的散列方法,其特征在于所述的步骤A5输出散列值包括依次处理所有消息分组和散列值输出变换两个过程:
A5.1)依次处理所有消息分组,是对所有分组M1,M2,...,Mt按分组顺序重复执行步骤A3、A4,直到最后一个消息分组Mt处理结束,得到Ht=ht(1)||ht(2)||...||ht(8)||,每一个ht(j),j=1,2,...,8,都是一个属于[0,232)区间上的整数;
A5.2)通过输出变换得到最终的散列值,所述输出变换的过程是把256比特的密钥K与256比特的Ht模232加后,按顺序如下输出:
h(K,M)=K+Ht=k(1)+ht(1)||k(2)+ht(2)||...||k(8)+ht(8)||
其中操作+是模232加法。
CN2010102279143A 2010-07-16 2010-07-16 基于耦合混沌映射系统的带密钥的散列方法 Pending CN101902332A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN2010102279143A CN101902332A (zh) 2010-07-16 2010-07-16 基于耦合混沌映射系统的带密钥的散列方法
CN 201010576336 CN102082668B (zh) 2010-07-16 2010-12-07 一种基于耦合混沌映射的消息完整性认证方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2010102279143A CN101902332A (zh) 2010-07-16 2010-07-16 基于耦合混沌映射系统的带密钥的散列方法

Publications (1)

Publication Number Publication Date
CN101902332A true CN101902332A (zh) 2010-12-01

Family

ID=43227555

Family Applications (2)

Application Number Title Priority Date Filing Date
CN2010102279143A Pending CN101902332A (zh) 2010-07-16 2010-07-16 基于耦合混沌映射系统的带密钥的散列方法
CN 201010576336 Expired - Fee Related CN102082668B (zh) 2010-07-16 2010-12-07 一种基于耦合混沌映射的消息完整性认证方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN 201010576336 Expired - Fee Related CN102082668B (zh) 2010-07-16 2010-12-07 一种基于耦合混沌映射的消息完整性认证方法

Country Status (1)

Country Link
CN (2) CN101902332A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102904715A (zh) * 2012-09-27 2013-01-30 北京邮电大学 基于耦合混沌映射系统的并行伪随机比特发生器
CN103283177A (zh) * 2010-12-23 2013-09-04 莫雷加系统股份有限公司 与分段密钥一起使用的密码学模块及其使用方法
CN103441968A (zh) * 2013-09-03 2013-12-11 上海交通大学 基于混沌随机相位的改进型Jakes信道估计方法
CN105391544A (zh) * 2015-11-19 2016-03-09 北京石油化工学院 一种适用于RFID认证系统的Hash函数构造方法
CN109412791A (zh) * 2018-11-29 2019-03-01 北京三快在线科技有限公司 密钥信息处理方法、装置、电子设备及计算机可读介质

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102016219926A1 (de) 2016-10-13 2018-04-19 Siemens Aktiengesellschaft Verfahren, Sender und Empfänger zum Authentisieren und zum Integritätsschutz von Nachrichteninhalten
CN111143247B (zh) * 2019-12-31 2023-06-30 海光信息技术股份有限公司 存储装置数据完整性保护方法及其控制器、片上系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005529364A (ja) * 2002-06-06 2005-09-29 クリプティコ・アクティーゼルスカブ 擬似乱数生成器の出力の予測不可能性を向上させる方法
EP1467512B1 (en) * 2003-04-07 2008-07-23 STMicroelectronics S.r.l. Encryption process employing chaotic maps and digital signature process
CN101741560B (zh) * 2008-11-14 2014-07-02 北京石油化工学院 基于整数非线性映射的散列函数构造方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103283177A (zh) * 2010-12-23 2013-09-04 莫雷加系统股份有限公司 与分段密钥一起使用的密码学模块及其使用方法
CN103283177B (zh) * 2010-12-23 2016-03-16 莫雷加系统股份有限公司 与分段密钥一起使用的密码学模块及其使用方法
CN102904715A (zh) * 2012-09-27 2013-01-30 北京邮电大学 基于耦合混沌映射系统的并行伪随机比特发生器
CN102904715B (zh) * 2012-09-27 2015-08-26 北京邮电大学 基于耦合混沌映射系统的并行伪随机比特发生器
CN103441968A (zh) * 2013-09-03 2013-12-11 上海交通大学 基于混沌随机相位的改进型Jakes信道估计方法
CN105391544A (zh) * 2015-11-19 2016-03-09 北京石油化工学院 一种适用于RFID认证系统的Hash函数构造方法
CN109412791A (zh) * 2018-11-29 2019-03-01 北京三快在线科技有限公司 密钥信息处理方法、装置、电子设备及计算机可读介质
CN109412791B (zh) * 2018-11-29 2019-11-22 北京三快在线科技有限公司 密钥信息处理方法、装置、电子设备及计算机可读介质

Also Published As

Publication number Publication date
CN102082668A (zh) 2011-06-01
CN102082668B (zh) 2013-06-19

Similar Documents

Publication Publication Date Title
CN102082668B (zh) 一种基于耦合混沌映射的消息完整性认证方法
Kanso et al. Keyed hash function based on a chaotic map
CA2792571C (en) Hashing prefix-free values in a signature scheme
Kanso et al. A fast and efficient chaos-based keyed hash function
CA2792572C (en) Hashing prefix-free values in a certificate scheme
Zong et al. Collision attacks on round-reduced Gimli-hash/ascon-xof/ascon-hash
WO2014136386A1 (ja) タグ生成装置、タグ生成方法およびタグ生成プログラム
WO2013065241A1 (ja) インクリメンタルmacタグ生成装置、方法及びプログラム並びにメッセージ認証装置
Tiwari et al. A secure and efficient cryptographic hash function based on NewFORK-256
CN103973439A (zh) 一种多变量公钥加密方法
Gorbenko et al. Post-quantum message authentication cryptography based on error-correcting codes
Wang et al. An attack on hash function HAVAL-128
Jiteurtragool et al. A topologically simple keyed hash function based on circular chaotic sinusoidal map network
CN103490876B (zh) 基于超混沌Lorenz系统构建Hash函数的数据加密方法
CN101414904A (zh) 具有单轮次抗碰撞性的散列函数方法
Souror et al. Security analysis for SCKHA algorithm: stream cipher algorithm based on key hashing technique
El Bakrawy et al. A fast and secure one-way hash function
CN107769911A (zh) 一种基于Sponge结构的轻量级哈希函数构造方法
CN114065233A (zh) 一种面向大数据和区块链应用的数字签名聚合方法
Elkamchouchi et al. A new Secure Hash Dynamic Structure Algorithm (SHDSA) for public key digital signature schemes
Khairallah Forgery attack on mixfeed in the nonce-misuse scenario
Nouri et al. The parallel one-way hash function based on Chebyshev-Halley methods with variable parameter
EP2356646B1 (en) Collision-resistant elliptic curve hash functions
Abad et al. Enhanced key generation algorithm of hashing message authentication code
Shin et al. A new hash function based on MDx-family and its application to MAC

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Open date: 20101201