1、r是奇数,则01序列si的一个周期内0的个数比1的个数多一个或少一个;若r是偶数,则0的个数与1的个数相等.在长度为r的周期内,长为1的游程的个数为游程总数的1/2,长为2的游程的个数占游程总数的1/22,长为c的游程的个数占总游程的1/2c.而且对于任意长度,0的游程个数和1的游程个数相等.例:0110111101中,4个游程长度为1,1个游程长度为2,1个游程长度为4第十一讲流密码技术的发展及分类序列密码是世界各国的军事和外交等领域中使用的主要密码体制之一2000年1月欧洲启动的NESSIE工程中,流密码算法的设计与分析也列上了公开征集评测的日程;6个流密码算法(Leviathan、UIi
2、一128、BMGL、SOBERt32、SOBERtl、SNOW)进入了第二阶段评估,但是因为他们都不符合NESSIE的征集准则而最终全部落选2003年3月,日本政府的密码研究与评估委员会(CRYPTREC)推荐了三个流密码算法:MUGI、MULTI-S01和RC4-128.ECRYPT是欧洲FP6下的IST 基金支持的一个为期四年的项目,该项目启动于2004年2月,STVL(Symmetric techniques virtual lab)正在进行流密码算法的公开征集评估活动.征集活动到2005 年4月29 日结束,征集到了34个流密码算法.2007年4月开始进入第三轮评估,16个算法进入第三
3、轮评估.http:/www.ecrypt.eu.org/stream/phase3list.html 2008年4月8个算法成为推荐算法.2008年8月更新为7个推荐算法.Profile 1(SW)Profile 2(HW)CryptMT(CryptMT Version 3)DECIM(DECIM v2 and DECIM-128)DragonEdon80HC(HC-128 and HC-256)F-FCSR(F-FCSR-H v2 and F-FCSR-16)LEX(LEX-128,LEX-192 and LEX-256)Grain(Grain v1 and Grain-128)NLS(NL
4、Sv2,encryption-only)MICKEY(MICKEY 2.0 and MICKEY-128 2.0)RabbitMoustiqueSalsa20Pomaranch(Pomaranch Version 3)SOSEMANUKTrivium流密码技术的发展及分类在同步流密码中,密(明)文符号是独立的,一个错误传输只会影响一个符号,不影响后面的符号。缺点:一旦接收端和发送端的种子密钥和内部状态不同步,解密就会失败,两者必须立即借助外界手段重新建立同步。k kc ci ik k密钥流密钥流密钥流密钥流生成器生成器生成器生成器密钥流密钥流密钥流密钥流生成器生成器生成器生成器信道信道信道信道
5、c ci iz zi immi iz zi immi iE E(z zi i,mmi i)E E(z zi i,mmi i)流密码技术的发展及分类自同步流密码的优点是即使接收端和发送端不同步,只要接收端能连续地正确地接受到n个密文符号,就能重新建立同步。因此自同步流密码具有有限的差错传播,且分析较同步流密码的分析困难得多 k kc ci ik k密钥流密钥流密钥流密钥流生成器生成器生成器生成器密钥流密钥流密钥流密钥流生成器生成器生成器生成器信道信道信道信道c ci iz zi immi iz zi immi iE E(z zi i,mmi i)E E(z zi i,mmi i)基于移位寄存器的
6、流密码算法挪威政府的首席密码学家Ernst Selmer 于1965年提出了移位寄存器理论移位寄存器理论,它是序列密码中研究随机密钥流的主要数学工具.移位寄存器是指有移位寄存器是指有n个寄存器个寄存器(称为n-级移位寄存器)r1,r2,rn从右到左排列,每个寄存器中能存放每个寄存器中能存放1位二进制位二进制数数,所有寄存器中的数可以统一向右(或向左)移动1位,称为进动1拍.即r1的值(b1)右移1位后输出,然后r2的值(b2)送r1,r3的值(b3)送r2,最后,rn的值(bn)送rn-1.bnrnbn-1rn-1b2r2b1r1基于移位寄存器的流密码算法反馈移位寄存器反馈移位寄存器(feed
7、back shift register,FSR)是由由n位的寄存器和反馈函数位的寄存器和反馈函数(feedback function)组成,如下图所示,n位的寄存器中的初始值称为移位寄存器的初态.工作原理:.反馈函数反馈函数f是是n个变元个变元(b1,b2,bn)的布尔函的布尔函数数.移位寄存器根据需要不断地进动m拍,便有m位的输出,形成输出序列a1,a2,am.bn nrn nbn n-1 1rn n-1 1b2 2r2 2b1 1r1 1输出位输出位输出位输出位o oi i反馈函数反馈函数f基于移位寄存器的流密码算法线性反馈移位寄存器LFSR(linear feedback shift r
8、egister)的反馈函数为线性函数反馈函数为线性函数 作为密钥流的序列ai的周期一定要大周期一定要大 否则密钥流的空间太小,利用穷举搜索可以得到密钥流ain级LFSR输出的序列的周期r不依赖于寄存器的初始值,而依赖于特征多项式p(x)基于移位寄存器的流密码算法初态为100放入寄存器,输出序列情况如下输出输出序列的周期为序列的周期为7目前大多数研究成果都是关于同步流密码的。滚动密钥生成器滚动密钥生成器滚动密钥生成器滚动密钥生成器 安全信道安全信道kkxiziyizixi图图3.20 3.20 同步流密码体制模型同步流密码体制模型流密码的结构典型的流密码每次加密一个字节的明文;密钥输入到一个伪随
9、机数发生器,产生一串随机的8比特数;发生器的输出称为密钥流;11001100 明文 01101100 密钥流 10100000 密文 解密使用相同的伪随机序列:10100000 密文 01101100 密钥流 11001100 明文 设计流密码需要考虑的主要因素:加密序列的周期要长。伪随机发生器实质上使用的是产生确定的比特流的函数。该比特流最终将出现重复。密钥流应该尽可能地接近于一个真正的随机数流的特征。如1和0的个数应近似相等,密钥流的随机特性越好,则密文越随机。图中伪随机发生器的输出取决于输入密钥的值。密钥应该足够长,应当保证不小于128位。流密码的优缺点和分组密码相比,速度更快,而且需要
10、编写的代码少;对不同的明文需要使用不同的流密钥,否则容易破解;适用于需要对数据流进行加密解密的应用,如通过一个数据通信信道或网页浏览连接;不适用于处理成块的数据:文件传输、电子邮件和数据库。流密码与分组密码区别:流密码几乎总是比分组密码快,通常使用的代码也比分组密码少得多。如最常用的流密码最常用的流密码 RC4,大概比最快的分组密码至少快两倍。RC4可以用30行代码写成,而大多数分组密码需要数百行代码。流密码和RC4流密码的结构RC4算法RC4RC4是Ron Rivest为RSA公司在1987年设计的一种流密码;是一个可变密钥长度,面向字节操作的流密码;算法以随机置换随机置换作为基础,密码的周
11、期大于10100。每输出一个字节的结果仅需要8条到16条机器操作指令。可能是应用最广泛的流密码,被应用于SSL/TLS标准。RC4算法主要包括两个步骤:密钥调度算法(KSA,Key-Scheduling Algorithm)伪随机生成算法(PRGA,Pseudo Random Generation Algorithm)密钥调度算法(KSA,Key-Scheduling Algorithm)设置内部状态(s0,s255)的随机排列。开始时,内部状态中的元素被初始化为0255,既si=i(i=0,255);密钥长度可变,设为L个字节(K0,KL-1);L一般为532之间,用L个字节不断重复填充,直
12、至得到K0,K255,用于对内部状态S进行随机化。j=0对对i=0,255做做 j=j+Si+Ki mod 256 互换互换si与与sj伪随机生成算法(PRGA,Pseudo Random Generation Algorithm)从内部状态中选取一个随机元素作为密钥流中的一个字节,并修改内部状态以便下一次选择。选取过程取决于索引值i和j,它们的初始值均为0。i=0j=0重复下述步骤,直至获得足够长度的密钥流:重复下述步骤,直至获得足够长度的密钥流:i=i+1 mod 256 j=j+Si mod 256 互换互换si与与sj t=Si+Sj mod 256 K=StRC4算法 密钥调度算法K
13、SA 然后利用如下循环构建实际的S数据表:j:=0;for i=0 to 7 do j:=(j+s(i)+k(i)mod 8;swap(S(i),S(j);该循环以j=0和i=0开始。使用更新公式后j为:j=(0+S(0)+K(0)mod 8=5 S数据表的第一个操作是将S(0)与S(5)互换。RC4RC4算法算法索引i加1后,j的下一个值为:j=(5+S(1)+K(1)mod 8=(5+1+6)mod 8=4即将S数据表的S(1)和S(4)互换:RC4算法伪随机数生成算法PRGA 这样数据表S就可以用来生成随机的密钥流序列。从j=0和i=0开始,RC4如下计算第一个密钥字:i=(i+1)mo
14、d 8=(0+1)mod 8=1 j=(j+s(i)mod 8=(0+s(1)mod 8=(0+4)mod 8=4 swap S(1)和S(4)RC4RC4算法算法RC4算法然后如下计算然后如下计算t t和和k:k:t=(S(j)+S(i)mod 8=(S(4)+S(1)mod t=(S(j)+S(i)mod 8=(S(4)+S(1)mod 8=(1+4)mod 8=58=(1+4)mod 8=5 k=S(t)=S(5)=6 k=S(t)=S(5)=6 第一个密钥字为第一个密钥字为6 6,其二进制表示为,其二进制表示为110110。反复。反复进行该过程,直到生成的二进制的数量等于明进行该过程,直到生成的二进制的数量等于明文位的数量。文位的数量。小结掌握RC4
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1