一种面向字、带记忆的序列扰动方法及加密方法

文档序号:7750921阅读:187来源:国知局
专利名称:一种面向字、带记忆的序列扰动方法及加密方法
技术领域
本发明涉及一种信息传输与处理的方法,更确切地说是涉及一种面向字、带记忆 的序列扰动方法及加密方法。采用基于整字操作的混合型带记忆逻辑,以增强序列密码算 法的抗分析强度。
背景技术
密码技术历史悠久,在最初用于保护军事和外交通信安全,但是,随着通信网络和 计算机网络的普及,现代密码学的应用不再局限于政治、军事和外交,其商业价值和社会价 值得到了广泛的认同。保密是密码学的核心,而加密是获得信息保密的实用工具。密码算法分为公钥密码算法和私钥密码算法。私钥密码算法又分为分组密码算法 和序列密码算法。分组密码算法一般对消息进行分块加密,算法运行一次加密一个较大的 消息块。序列密码算法一般用一个短的密钥,用特定的密钥流生成算法,生成与要加密的消 息长度相当的密钥流序列,将密钥流序列与明文按位异或达到加密的目的。而解密方生成 同样的密钥流序列,与密文异或,即可得到明文。所以,序列密码算法的关键是设计安全快 速的密钥流生成算法。传统的密钥流生成算法每运行一次,只产生一个比特的密钥流。目前对序列密码算法的攻击,主要是寻找密钥流序列的安全缺陷,达到恢复加密 密钥,或将密钥流序列与真随机序列进行区分,或尝试生成密钥流序列的目的。主要的攻击 方法有代数攻击、区分攻击、猜测确定攻击、相关攻击、差分攻击等。从设计角度来看,最难 以抵御的是区分攻击,对序列密码算法的这种基于统计的分析,其成败在很大程度上依赖 于密钥流序列生成逻辑的设计。本技术领域普遍认为,加密算法中采用带记忆逻辑是强化密钥流生成逻辑的一种 基本措施,它可以增强算法抵抗线性区分攻击和差分分析的性能,因此带记忆逻辑的合理 运用很可能是抵抗区分攻击的最佳选择。随着通信网络和计算机网络的高速发展,传统的运行一次生成一个比特的密钥流 生成方法已经不能满足实现速度上的需要,尤其是软件实现方面。一些面向字的密钥流生 成方法逐渐被设计出来。即运行一次生成若干比特的密钥字,由密钥字组成密钥流序列。例 如SN0W3G算法、Rabbit算法。在序列密码算法设计中,将整字带记忆逻辑作为非线性变换组件已经成为近年来 的主流设计思想。纵观目前已公开的序列密码算法,整字带记忆逻辑的应用已经初具规模, 而且表现出很多种整字记忆形式。例如RC4算法其实是一种以搅拌器型整字带记忆逻辑 为核心的算法。SNOW中所采用的所谓有限自动机实质上是一种复杂的累加器型整字带记忆 逻辑。
专利CN1829142A发明了一种新的“基于字节操作、以带记忆为特征的序列扰乱方 法”。该方法让密钥流序列以字节为单位,通过一个扰乱器后再以字节为单位输出。该扰乱 器是一个强化字符序列的整字带记忆非线性逻辑,兼具搅拌器型和累加器型带记忆逻辑的 特征。其特征在于包括
步骤A,预置2m个记忆单元,0,1,2,……,2m_l,每个记忆单元中存放一个字节内 容;步骤B,对输入的字节序列Z= (x0, X1,…)中的每个字节Xi,做如下操作a)取Xi的高m比特的值h,h是小于2m的值;b)在已知h后,用第h个记忆单元中的内容yh与输入字节Xi进行异或操作,输出 经扰乱后的字节Zi,即z, 十凡;c)更新记忆单元,取出第h个记忆单元中的内容yh的低m比特的值t,t也是小于 2m的值。在已知t后,将第h个记忆单元中的内容yh更新为凡 SOO,yh — yh S{yt),将 第t个记忆单元中的内容yt更新为Λ 风X,),即只—y, S(Xi),其中S表示一个非线性函 数变换,是一个从字节到字节的置换。所述m的值为3或4或5或6。该发明的序列扰乱方法,在设计基于单字节输入输出、整字运算的带记忆逻辑时, 合理的加大了记忆单元规模,增强了该记忆逻辑在抗线性和差分分析方面的性能。但是,上述序列扰动方法生成的序列,平衡性不好,即随机序列经扰动后生成的序 列中的每一个元素取值在元素取值空间中分布不均勻。这将使得输出的序列有很大的安全 缺陷。

发明内容
本发明的目的在于克服现有技术的不足,提供一种面向字、带记忆的序列扰动方 法及加密方法。该序列扰动方法基于整字操作、以带记忆为特征,也就是说让序列以字为单 位输入,通过一个带记忆的扰乱器后再以字为单位输出。在序列密码设计中,通过增设该扰 乱器,提高密钥流序列的随机性和抗分析能力。如无特别说明,本发明中提到的字均为η比特字。为了达到上述发明目的,本方法包括2m个记忆单元,一个S盒。输入字序列,输出 经扰乱后的字序列,其特征在于包括步骤4,预置2°1个记忆单元0(),乃,"_,^-1),每个记忆单元中存放一个11比特字;m、 η为自然数;步骤B,对输入的字序列S= (x0, X1,…)中的每个字Xi,做如下操作a)取Xi的高m比特的值h ;b)在已知h后,用第h个记忆单元中的内容yh与输入字Xi进行异或操作,输出经 扰乱后的字Zi,即6 =X,十凡;c)更新记忆单元,取Xi的低m比特的值t。在已知t后,先计算乃=只十风Α),即 用只 更新第t个记忆单元的值。再计算凡=凡 SOO,即用已被更新过的yt经S盒 作用后与yh异或,更新第h个记忆单元的值。其中S表示一个从字到字的正形置换。S(Xi)、 S(yt)分别以Xi、yt为输入,计算S的函数值,该非线性函数的输入输出均为一个η比特字。所述步骤A、B中,η通常取8,也可以为6、4。所述步骤A中,用密码算法的初始密钥或初始向量或随机值或某组常数初始预置所述的2m个记忆单元中每个记忆单元的内容。所述步骤a中,取Xi的高m比特的值h,是对Xi做右移n-m位的操作,即h = Xi >> (n-m);
所述步骤c中,取Xi的低m比特的值t,是对Xi做模2m操作,即t = Xi mod 2m ;所述步骤c中,用Xi经过S盒变换的值与yt异或用于更新第t个记忆单元的内 容;所述步骤c中,用已被更新的第t个记忆单元的内容经过S盒变换的值与yh异或 用于更新第h个记忆单元的内容;所述步骤c中,除第t、h记忆单元的内容被更新,其余记忆单元内容不变。每输出 一个字后,一般要更新2-个记忆单元中的两个,但有时也会出现对同一个记忆单元更新两 次的情况。所述m的值为1到n-1之间的整数;所述S盒要求是正形置换,即函数S(X)和S(X)十Χ都是置换。本发明的另一目的在于提供一种加密方法,利用本发明提供的密钥流序列,对明 文数据流进行逐字加密,本发明的流密码算法结构示意图如图2所示。一种加密方法,其步骤包括1)消息发送方根据加密密钥和初始向量,生成密钥流,生成密钥流的方法如下1-1)利用线性反馈移位寄存器生成源序列;1-2)从源序列选取若干字,输入一个非线性变换单元,输出一个字;1-3)用本发明的强化乱源序列方法对步骤1-2)生成的字进行变换;1-4)将步骤1-3)的输出与移位寄存器的一个字异或生成密钥流字。
重复上述4步,可以得到密钥流字序列。2)得到的密钥流与原始消息按位异或,实现对原始消息加密,并将加密消息发送 到消息接收方;3)消息接收方拥有与加密密钥相同的解密密钥和初始向量,利用步骤1)生成密 钥流的方法,得到密钥流;4)得到的密钥流与加密消息按位异或,实现对加密消息的解密,得到原始消息。所述步骤1-2)中的非线性变换单元通常选用有限状态机或不带记忆的非线性函 数实现。记忆单元的规模对算法安全性具有重要影响,本发明的序列扰乱方法,改进了原 有技术扰动后的序列平衡性不好的缺陷。该方法在设计基于整字输入、输出整字运算的带 记忆逻辑时,合理的加大了记忆单元的规模,增强了该记忆逻辑在抗代数和差分分析方面 的性能,并且输出的序列具有良好的平衡性。与单比特带记忆逻辑相比,基于字的带记忆逻 辑不但易于加大记忆单元的规模,而且在应用效率上会成倍提高。本发明的基于整字操作 的混合型带记忆逻辑的序列扰乱方法,包括变换函数及S盒,它对输入的每一个字利用变 换函数及S盒进行扰乱后再按字输出。一条抗分析能力比较脆弱的密钥流序列,经过它的 扰乱,序列复杂度会得到增强。之所以说这类带记忆逻辑是混合型的,是因为它兼有累加器 型带记忆逻辑盒搅拌器型带记忆逻辑的双重特性。该方案可以方便的用于序列密码算法和 Hash函数的设计。与现有技术相比,本发明具有的积极效果为本发明的序列扰动方法,改进了原有技术扰动后序列不平衡的问题。本发明的加密方法,对明文消息逐字加密,提高了加密的软件实现速度。密钥流序列经扰乱,具有更强 的安全性。


图1为η = 8,m = 4时序列扰乱示意图;图2为流密码算法结构示意图。
具体实施例方式在实施本发明的技术方案时,首先,要选择适当的n、m。一般,η为偶数,m取η/2。 其次,要选择代数、差分、线性性质良好的正形置换作为S盒。S盒可以看作是系统密钥,也 可以不保密。实施可分为两个基本步骤步骤Α,对2m个的记忆单元的内容(凡,只,…,;^^)赋初值。依据具体的应用方式, 可以由密码算法的基本密钥或初始向量提供,也可以由随随机数或某组常数预置。步骤B,对输入字序列Z= (x0, X1,…)中的每个字Xi,做如下操作a) h = Xi > > (n_m);b)输出 ζ,.=x,十凡c)更新记忆单元,令t = Xi mod 2m。依次令^ =乃十风 ),凡=凡十风乃)。下面,结合附图1,对η取8,m取值为4时的具体实施方式
进行举例说明。此时输 入、输出及记忆单元均为8比特的字节。设输入序列X,输出序列ζ。S盒选取如下 注表格中数字均为16进制表示。在m = 4时共有16个记忆单元,设16个记忆单元被随机初始化为(Oxea,0x63,0xe6,0x57,0xa8,0xd6,0x54,0x2e,0x17,0x4f,0x98,0x40,0x2b, 0xfd,0xcl,0x9a)。如 ι = (0x4a,0x77,......)。x0 = 0x4a, h = 4,则输出的第一个字节为z。=0x4a十 0xa8=0xe2。t = 10,计算 ^10 二 只。θ =0x98 十 S(0x4a)=0x91 ,γ4 =γ4Φ 5(^10)=Oxa8 十 S(0x91)=0x23。则第 10 个
记忆单元被更新为0x91,第4个记忆单元被更新为0x23。此时,16个记忆单元被更新为(Oxea,0x63,0xe6,0x57,0x23,0xd6,0x54,0x2e,0x17,0x4f,0x91,0x40,0x2b, 0xfd,0xcl,0x9a)。每输出一个字节后,一般要更新16个记忆单元中的两个,但有时也会出现对同一 个记忆单元更新两次的情况。此时第一次的更新会被第二次更新覆盖。例如,X1 = 0x77,则h = t = 7。输出的第二个字节为& =0χ77θ 0x2e=0x59。计算 _y7 = J7 十 S(X1)=OxSe 十 S(0x77)=0x6f,^ = _y7 十 SO7) =0x6f十 S(0x6f)=0x60。则第7个记忆单元被更新为0x60,此时,16个记忆单元被更新为(Oxea,0x63,0xe6,0x57,0x23,0xd6,0x54,0x60,0x17,0x4f,0x91,0x40,0x2b, 0xfd,0xcl,0x9a)。
权利要求
一种面向字、带记忆的序列扰动方法,其步骤为1)预置2m个记忆单元对每个记忆单元的内容赋初值,存储一n比特字;m、n为自然数;2)对于输入的密钥流序列中的每个字xi依次进行如下步骤a)取当前字xi的高m比特的值h;其中每个字均为n比特字;b)利用第h个记忆单元的内容yh与输入字xi进行异或操作,输出经扰乱后的字zi;c)取当前字xi的低m比特的值t;d)将当前字xi经S盒变换的值与第t个记忆单元的内容yt进行异或,并用其输出结果更新yt;e)将步骤d)所更新过的yt经S盒变换的值与所述yh异或,并用其输出结果更新yh;3)将依次输出的字zi作为扰乱后的密钥流序列。FSA00000138193200011.tif
2.如权利要求1所述的方法,其特征在于根据加密算法的初始密钥或初始向量对每个 记忆单元的内容赋初值。
3.如权利要求1所述的方法,其特征在于利用随机数对每个记忆单元的内容赋初值。
4.如权利要求1所述的方法,其特征在于所述m的值为1到n-1之间的整数。
5.如权利要求4所述的方法,其特征在于所述步骤a)中,取当前字Xi的高m比特的值 h的方法为对Xi做右移n-m位的操作。
6.如权利要求4所述的方法,其特征在于所述步骤c)中,取当前字Xi的低m比特的值 t的方法为对\做模2m运算。
7.如权利要求1所述的方法,其特征在于所述S盒为正形置换。
8.一种加密方法,其步骤为1)消息发送方根据初始密钥和初始向量,生成密钥流;2)消息发送方将得到的密钥流与原始消息按位异或,实现对原始消息加密,并将加密 消息发送到消息接收方;3)消息接收方利用初始密钥和初始向量,生成密钥流;4)消息接收方将生成的密钥流与接收到的加密消息按位异或,实现对加密消息的解 密,得到原始消息;其中,所述生成密钥流的方法为预置2m个记忆单元O。,Mn2^1),对每个记忆单元的 内容赋初值,存储一η比特字,m、n为自然数;利用线性反馈移位寄存器生成源序列,并从每次 生成的源序列中选取若干字输入一个非线性变换单元,输出一个字Xi ;然后对每次输出的字 Xi依次进行如下步骤:a)取当前字Xi的高m比特的值h ;b)利用第h个记忆单元的内容yh与 输入Xi进行异或操作,输出经扰乱后的字Zi ;c)取当前字Xi的低m比特的值t ;d)将当前字 Xi经S盒变换的值与第t个记忆单元的内容yt进行异或,并用其输出结果更新yt ;e)将步骤 d)所更新过的yt经S盒变换的值与所述yh异或,并用其输出结果更新yh;f)将输出的^与 移位寄存器的一个字异或生成密钥流字;最后,根据依次输出的密钥流字得到密钥流序列。
9.如权利要求8所述的方法,其特征在于所述非线性变换单元为有限状态机或不带记 忆的非线性函数。
10.如权利要求8所述的方法,其特征在于所述S盒为正形置换;所述m的值为1到 n-1之间的整数。
全文摘要
本发明涉及一种面向字、带记忆的序列扰动方法及加密方法,属于信息处理与传输领域。其扰动方法为1)预置2m个记忆单元并赋初值;2)对于输入的每个字xi依次进行a)取xi高m比特的值h;设第h单元的内容yh,输出字b)取xi低m比特的值t;将xi经S盒变换值与第t单元的内容yt异或,结果更新yt;将更新过的yt经S盒变换值与yh异或,结果更新yh;3)将依次输出的字zi作为扰乱后的密钥流序列。本加密方法为1)消息发送方生成密钥流;然后将其与原始消息按位异或,加密原始消息并将其发送到消息接收方;2)消息接收方生成密钥流;然后其与接收到的加密消息按位异或,解密加密消息,得到原始消息。本发明提高了加密软件实现速度,且安全性更强。
文档编号H04L9/00GK101848079SQ20101019482
公开日2010年9月29日 申请日期2010年5月28日 优先权日2010年5月28日
发明者冯登国, 冯秀涛, 周春芳 申请人:中国科学院软件研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1