基于单字节操作、以带记忆为特征的序列扰乱方法

文档序号:7615596阅读:156来源:国知局
专利名称:基于单字节操作、以带记忆为特征的序列扰乱方法
技术领域
本发明涉及一种信息传输与处理的安全技术,更确切地说是涉及一种强化乱源序列或密钥流序列的方法。采用基于字节操作的混合型带记忆逻辑,以增强序列密码算法的抗分析强度。
背景技术
序列密码的设计一般都是以计算保密为前提,即依据当前的计算力,让任何可预料得到的攻击手段变得徒劳无益。然而,序列密码设计者一般不能完全预料到攻击者会使用什么技巧,如果攻击者通过研究加密算法的逻辑结构、密钥流序列与用户密钥间的关系、以及密文与明文间的关系,找到了某种可供利用的规律,就有可能使攻击的难度大大降低。由于设计者往往不能事先将各种可供利用的规律都认识清楚,因而为了提高加密算法的潜在抗分析性能,就应尽可能地使变换逻辑复杂化。
目前人们对序列密码进行攻击的前提条件是密钥流序列已知,且该序列很长,可通过统计分析对加密算法达成攻击。其攻击结果一般分为密钥恢复(KeyRecovery);密钥预测(Prediction)和密钥区分(Distingwishing)三种。从设计角度来看,最难以抵御的是区分攻击。不过,对序列密码算法的这种基于统计的分析,其成败在很大程度上依赖于密钥流序列生成逻辑的设计。
本技术领域普遍认为,加密算法中采用带记忆逻辑是强化密钥流生成逻辑的一种基本措施,它可以增强算法抵抗线性分析和差分分析的性能,因此带记忆逻辑的合理运用很可能是抵御区分攻击的最佳选择。
随着电子计算机和微电子技术的迅猛发展和信息时代的到来,人们对信息传输和信息处理的能力不断提出更高要求。基于单个比特的逻辑操作将被逐渐淘汰,在密码设计方面,由于单比特记忆越来越难以适应信息时代对密码产品高效性的要求,因而必定要采用整字带记忆逻辑。与单比特带记忆逻辑相比,基于字节的带记忆逻辑不但易于加大记忆单元的规模,增强抵抗线性和差分分析方面的性能,而且易于保证效率(所谓”字”主要指8比特、16比特、32比特、64比特这四种字,本发明只涉及整字为8比特的情形)。
其实,在序列密码算法设计中,将整字带记忆逻辑作为非线性变换组件已经成为近年来的主流设计思想,因为带记忆逻辑具有很强的抗分析性能。纵观目前已公开的序列密码算法,整字带记忆逻辑的应用已经初具规模,而且表现出很多种具体的整字记忆形式。RC4和ISAAC算法其实是一种以搅拌器型整字带记忆逻辑为核心的算法。WAKE算法的主体是简单的四级串联组合型(或称级联记忆式)整字带记忆逻辑。MUGI算法属于基于整字带记忆的PANAMA类密钥流发生器。SNOW中所采用的所谓有限自动机实质上是一种复杂的累加器型整字带记忆逻辑。
研究整字带记忆逻辑的分类、各类整字带记忆逻辑在抗分析方面的强点与弱点及易实现性,对一些序列密码算法的分析与设计极其重要,这无疑会成为序列密码设计者们必须了解和钻研的课题。另外,整字带记忆逻辑的研究成果也可应用于Hash函数、消息认证码、身份识别和分组密码算法的分析与设计中。
整字带记忆逻辑,既来自于密码算法设计实践,又运用于指导密码算法设计,有着极强的实用性,其研究成果可直接应用于最新的密码算法设计。但目前整字带记忆逻辑的理论研究,还是一个比较新的课题,这方面的研究成果和产品都比较少。但正是由于整字带记忆逻辑有着广阔的应用前景,需要通过深入研究,而设计一种具有独特设计思想、良好抗分析性能、较高数据处理效率和可嵌入性灵活的密钥流序列的产品。

发明内容
本发明的目的是设计一种基于单字节操作、以带记忆为特征的序列扰乱方法,也就是说让密钥流序列以字节为单位输入,通过一个扰乱器后再以字节为单位输出,该扰乱器是一个强化字符序列的整字带记忆非线性逻辑。在序列密码设计中,通过增设该扰乱器,使密钥流序列的抗分析能力从脆弱变得坚强。
实现本发明目的的技术方案是这样的一种基于单字节操作、以带记忆为特征的序列扰乱方法,输入字节序列,输出经扰乱后的字节序列,其特征在于包括A.预置2m个记忆单元,0,1,2,……2m-1,每个记忆单元中存放一个字节内容;B.对输入的字节序列x=(x0,x1,x2,……)中的每个字节xi,做如下操作a.取xi的高m比特的值h,h是小于2m的值;b.在已知h后,用第h个记忆单元中的内容yh与输入字节xi作异或操作,输出经扰乱后的字节zi,即zi=yhxi;c.更新记忆单元,取出第h个记忆单元中的内容yh的低m比特的值t,t是小于2m的值,在已知t后,将第h个记忆单元中的内容yh更新为yhS(yt),即yh←yhS(yt),将第t个记忆单元中的内容yt更新为ytS(xi),即yt←ytS(xi),其中S表示一个非线性函数变换,是一个从字节到字节的置换,S(yt)、S(xi)分别是以yt、xi为输入,计算S的函数值,该非线性函数变换的输入输出均为8比特字符。
所述步骤A中,用密码算法的基本密钥或初始向量初始预置所述的2m个记忆单元中每个记忆单元初始存放的字节内容。
所述步骤a中,取xi的高m比特的值为h,是对字节xi做右移(8-m)位的操作,即h=xi>>(8-m);所述步骤c中,计算的低m比特的值为t,是用第h个记忆单元的内容yh模2m,即t=yhmod 2m。
所述的m为3或4或5或6。
记忆单元的规模对算法安全性具有重要影响,本发明的序列扰乱方法,在设计基于单字节输入输出、整字运算的带记忆逻辑时,合理地加大了记忆单元规模,增强了该记忆逻辑在抗线性和差分分析方面的性能。与单比特带记忆逻辑相比,基于字节的带记忆逻辑不但易于加大记忆单元的规模,而且在应用效率上会成倍提高。本发明的基于字节操作的混合型带记忆逻辑(根据Byte-oriented memorial mixer的英文表达可缩写成BOMM算法)的序列扰乱方法,包括变换函数及S盒,它对输入的每一个字节利用变换函数及S盒进行扰乱后再按字节输出。一条抗分析能力比较脆弱的密钥流序列,经过它的扰乱,序列复杂度会得到增强。之所以说这类带记忆逻辑是混合型的,是因为它兼有累加器型带记忆逻辑和搅拌器型带记忆逻辑的双重特性。


图1是m=4时的16个记忆单元分布示意图;图2是在输入字符0x4B时该16个记忆单元中的内容;图3是在输入0x4B,经过扰乱输出字符0x56后,更新16个记忆单元中的内容;图4是在又输入字符0xB8,并输出经扰乱后的字符0xFF后更新16个记忆单元中的内容;图5是在再输入字符0x4D,并输出经扰乱后的字符0x39后更新16个记忆单元中的内容;图6是实施例所使用的S盒部分代替表示意图;图7是本发明产品的一种简单型应用举例;图8是本发明产品的一种组合型应用举例。
具体实施例方式
在实施本发明的技术方案时,当选择的S盒质量较好,基于字节操作的混合型带记忆逻辑在抗击相关攻击、分别征服攻击、相关密钥攻击和区分攻击等方面都有很好的性能。可以方便地用于序列密码算法和Hash函数的设计,只要与一个基于字节运算的乱源序列相联就行了。
本发明内容涉及到变换函数及S盒,2m个字节记忆单元内容的初始预置,依据具体应用方式,可以由密码算法的基本密钥提供,也可以由随意产生的随机数-初始向量预置。S盒的设置可以看作是系统密钥,也可以在某些情形下不保密。m可为3-6中的任一个数,例如在m=4时有24共16个记忆单元0,1,2,……15;输入字符序列x,输出字符序列为z,输出字符序列z的随机性与抗分析性优于输入字符序列x;每输出一个字符后,一般要更新16个记忆单元中的两个记忆单元的内容,但有时也会出现对同一个记忆单元更新两次的情况。
下面用m=4的例子并结合附图对本发明的方法进行详细描述。
参见图1,16个记忆单元0,1,2,……,15(也可以表示成0,1,2,…,A,…,F)排列成4×4图框式结构。在每个图框中存放一个字节内容,表示为y1,y2,……,y15,图框中字节内容随着对输入字符序列x的扰乱处理而不断更新。
例如,当存放在图框0,1,2,……,E,F中的字符内容如图2所示,输入字符序列x=0x4B,假设所选择的S盒的部分代替表如图6所示。
首先计算h的值(因为m=4,因此h是小于24的数)。取0x4B(01001011)中的高m比特(即高4比特),得到h=4,该操作可通过对4B作右移4(即8-m)位的操作而获得h=4(00000100);然后用图2中图框第4记忆单元中的内容1D(00011101)与输入字节4B(01001011)作异或操作,获得结果z=0x1D0x4B=0x56(01010110)。如图中所示输入0x4B,输出经扰乱后的0x56。
取图2中图框第4记忆单元中内容1D(00011101)的低m比特(即低4比特),得到t=13(1101),该操作可通过0x1D模24求出,t=0x1D mod 16=13(因为m=4,因此t是小于24的数)。
获得t=13后就可对记忆单元进行更新了,更新结果如图3的图框中所示。
其更新过程是将S盒中输入为第13(即D)记忆单元中内容0xA0(即X=0xA0)的置换结果S
=0x69(01101001)取出(查询图6中代替表),再与第4记忆单元中内容1D(00011101)作异或操作,获得操作结果0x74(01110100),然后将0x74更新在第4记忆单元中,即新的y4=0x1DS
=0x1D0x69=0x74。
由于上述操作动用了第13记忆单元中的内容,故还需对该记忆单元作更新,其更新过程是将S盒中输入为0x4B的置换结果S
=0X09(00001001)取出(查询图6中代替表),再与第13(即D)记忆单元中内容A0(10100000)作异或操作,获得操作结果0xA9(10101001),然后将0xA9更新在第13记忆单元中,即新的y13=0xA0S
=0xA00x09=0xA9。图3中用斜体字74、A9表示的就是更新的字节内容。
若接下来输入的字符序列x中的字节是0xB8,参见图3。
首先计算h的值。取0xB8(10111000)中的高m比特(即高4比特),得到h=11,该操作可通过对B8作右移4(即8-m)位的操作而获得h=11(00001011);然后用图3中图框第11(B)记忆单元中的内容47(01000111)与输入字节B8(10111000)作异或操作,获得结果z=0x470xB8=0xFF(11111111)。如图3中所示即输入0xB8,输出经扰乱后的0xFF。
取图3中图框第11记忆单元中内容47(01000111)的低m比特(即低4比特),得到t=7(0111),该操作可通过0x47模24求出,t=0x47 mod 16=7。
获得t=7后就可对记忆单元进行更新了,更新结果如图4中所示。
其更新过程是将S盒中输入为第7记忆单元中内容0x12(X=0x12)的置换结果S
=0X35(00110101)取出(查询图6中代替表),再与第11记忆单元中内容47(01000111)作异或操作,获得操作结果0x72(01110010),然后将0x72更新在第11记忆单元中,即新的Y11=0x47S
=0x470x35=0x72。
由于上述操作动用了第7记忆单元中的内容,故还需对该记忆单元作更新,其更新过程是将S盒中输入为0xB8(X=0xB8)的置换结果S
=0x19(00011001)取出(查询图6中代替表),再与第7记忆单元中内容12(00010010)作异或操作,获得操作结果0x0B(00001011),然后将0x0B更新在第7记忆单元中,即新的y7=0x12S
=0x120x19=0x0B,图4中用斜体字72、0B表示的就是更新后的内容。
若接下来输入的字符序列x中的字节是0x4D,参见图4。
首先计算h的值。取0x4D(01001101)中的高m比特(即高4比特),得到h=4,该操作可通过对4D作右移4(即8-m)位的操作而获得h=4(00000100);然后用图4中图框第4记忆单元中的内容74(01110100)与输入字节4D(01001101)作异或操作,获得结果z=0x740x4D=0x39(00111001)。如图中所示输入0x4D,输出经扰乱后的0x39。
取图4中图框第4记忆单元中内容74(01110100)的低m比特(即低4比特),得到t=4(1011),该操作可通过0x74模24求出,t=0x74 mod 16=4。
获得t=4后就可对记忆单元进行更新了,更新结果如图5中所示。
其更新过程是将S盒中输入为第4记忆单元中内容0x74(X=0x74)的置换结果S
=0X31(00110001)取出(查询图6中代替表),再与第4记忆单元中内容74(01110100)作异或操作,获得操作结果0x45(01000101),然后将0x45更新在第4记忆单元中,即新的Y4=0x74S
=0x740x31=0x45。
由于m=t,故还需对该记忆单元再作更新,其更新过程是将S盒中输入为0x4D(X=0x4D)的置换结果S
=0x48(01001000)取出(查询图6中代替表),再与第4记忆单元中内容45(01000101)作异或操作,获得操作结果0x0D(00001101),然后将0x0D更新在第4记忆单元中,即新的y4=0x45S
=0x450x48=0x0D,图5中用斜体字0D表示的就是更新的内容。本例中对同一个记忆单元-第4记忆单元中的字节内容进行了两次更新。
下面给出两个采用本发明的基于字节操作的混合型带记忆逻辑的序列密码算法示例。包括图7所示的简单型应用及图8所示的组合型应用。
参见图7,当算法中用于状态变换的S盒不公开时,输入到记忆单元中的字符序列的复杂度可以稍低一点。将字符序列输入本发明的产品10中,输出K序列。
产品10入口序列αi是一条由GF(28)域上9级本原线性反馈移位寄存器合成的非线性组合序列,如果不设置本发明的产品10,当攻击者已知αi序列时,就容易求出9级移位寄存器的初态。但是,当设置了本发明的产品10后,在仅仅已知K序列的情况下,如果不采用穷举方法,无法求出9级移位寄存器的初态。此时即使已知了S盒,仍然很难求出9级移位寄存器的初态。
参见图8,为了加强密码算法的抗分析强度,可将两个(或多个)基于字节操作的混合型带记忆逻辑20、21并行组合起来。输出的K序列拥有很高的复杂度,在攻击者已知K序列和S盒的情况下,求取基于字节操作的混合型带记忆逻辑20中各记忆单元中内容Y0,Y1,…,Y15和基于字节操作的混合型带记忆逻辑21中各记忆单元中内容L0,L1,…,L15及9级移位寄存器的状态是非常困难的。即使进入两个基于字节操作的混合型带记忆逻辑20、21的序列是线性序列(省去图中f函数和g函数),仍然有很好的抗分析强度。因此,并行组合的基于字节操作的混合型带记忆逻辑可以做为一个逻辑插件,与一个由两条字符序列为输出的任意乱源生成器相接。
本发明的方法适用于m为3或4或5或6的情况,当m=3时设置23=8个记忆单元,计算的h、t值都是小于8的数;当m=5时设置25=32个记忆单元,计算的h、t值都是小于32的数,依次类推。单字节输入输出带记忆逻辑部件,对密钥流字符序列进行扰乱处理,输入字符序列x,输出字符序列z,z序列的随机性和抗分析性优于x序列。
权利要求
1.一种基于单字节操作、以带记忆为特征的序列扰乱方法,输入字节序列,输出经扰乱后的字节序列,其特征在于包括A.预置2m个记忆单元,0,1,2,……2m-1,每个记忆单元中存放一个字节内容;B.对输入的字节序列x=(x0,x1,x2,……)中的每个字节xi,做如下操作a.取xi的高m比特的值h,h是小于2m的值;b.在已知h后,用第h个记忆单元中的内容yh与输入字节xi作异或操作,输出经扰乱后的字节zi,即zi=yhxi;c.更新记忆单元,取出第h个记忆单元中的内容yh的低m比特的值t,t是小于2m的值,在已知t后,将第h个记忆单元中的内容yh更新为yhS(yt),即yh←yhS(yt),将第t个记忆单元中的内容yt更新为ytS(xi),即yt←ytS(xi),其中S为一个非线性函数变换,是一个从字节到字节的置换,S(yt)、S(xi)分别是以yt、xi为输入,计算S的函数值,该非线性函数变换的输入输出均为8比特字符。
2.根据权利要求1所述的方法,其特征在于所述步骤A中,用密码算法的基本密钥或初始向量初始预置所述的2m个记忆单元中每个记忆单元初始存放的字节内容。
3.根据权利要求1所述的方法,其特征在于所述步骤a中,取xi的高m比特的值为h,是对字节xi做右移(8-m)位的操作,即h=xi>>(8-m);所述步骤c中,计算的低m比特的值为t,是用第h个记忆单元的内容yh模2m,即t=yhmod 2m。
4.根据权利要求1或2或3所述的方法,其特征在于所述的m为3或4或5或6。
全文摘要
本发明涉及一种基于单字节操作、以带记忆为特征的序列扰乱方法,可增强序列的抗分析能力。输入字节序列x=(x
文档编号H04L9/00GK1829142SQ20051005117
公开日2006年9月6日 申请日期2005年3月2日 优先权日2005年3月2日
发明者冯登国, 张玉安 申请人:中国科学院软件研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1