1、1,2.1序列密码,流密码(也称序列密码):将被加密的消息m分成连续的符号(一般为比特串),m=m1m2m3;然后使用密钥流k=k1k2k3中的第i个元素ki对的第i个元素mi执行加密变换,i=1,2,3,;所有的加密输出连接在一起就构成了对m执行加密后的密文。,2,第二讲 序列密码,3,2.1.1 流密码简单结构,简单流密码 加密结构,解密结构,4,如何生成一个可以作为密钥流的“随机”比特序列,要求易于使用,但又不能太短以至于不安全 通常加、解密所需要的这种序列是由一个确定性(deterministic)的密钥流生成器(key generator)产生的,该生成器的输入是一个容易记住的密钥,
2、称之为密钥流生成器的初始密钥或种子(seed)密钥,流密码完整结构,5,安全性: 流密码的安全性完全取决于密钥的安全等级. 实用的流密码以少量的、一定长度的种子密钥经过逻辑运算产生周期较长、可用于加解密运算的伪随机序列。,6,2.1.2同步流密码与自同步流密码,同步流密码:密钥流的产生与明文消息流相互独立,密钥流与明文串无关,所以同步流密码中的每个密文ci 不依赖于之前的明文mi-1,m1。从而,同步流密码的一个重要优点就是无错误传播:在传输期间一个密文字符被改变只影响该符号的恢复,不会对后继的符号产生影响。,7,自同步流密码: 密钥流的产生与之前已经产生的若干密文有关,其加密过程形如:,8,
3、.3线性反馈移位寄存器,密钥流的生成方法: 有多种产生同步密钥流生成器的方法,最普遍的是使用一种称为线性反馈移位寄存器(linear feedback shift register, LFSR)。LFSR的结构非常适合硬件实现;LFSR的结构便于使用代数方法进行理论分析;产生的序列的周期可以很大;产生的序列具有良好的统计特性。,9,反馈移位寄存器 如图为一个反馈移位寄存器的流程图,信号从左到右。a_i表示存储单元,取值为0或1,a_i的个数n称为反馈移位寄存器的级。在某一时刻,这些级的内容构成该反馈移位寄存器的一个状态,共有个2n个可能的状态,每一个状态对应于与F2上的一个n维向量,用(a_1
4、, a_2,a_n)表示。函数f是一个n元布尔函数,称之为反馈函数。,反馈移位寄存器,10,线性反馈移位寄存器 如果反馈函数形如 :,这里的加法运算为模2加,乘法运算为普通乘法, 则称该反馈函数是a1, a2,an的线性函数, 对应的反馈移位寄存器称为线性反馈移位寄存器,用LFSR表示。 否则,称为非线性反馈移位寄存器 (non-linear feedback shift register, NLFSR),11,LFSR中反馈函数的系数取值的不同,这样的反馈函数有2n种。令表示t时刻第i级寄存器的内容,则第t+1时刻寄存器的内容为:,称多项式,为上述LFSR的联接多项式,12,例. 如图所示为
5、一4级线性反馈移位寄存器,状态转移关系为:,假设初始状态为(a1, a2, a3,a4)=(0,1,1,0),则可根据反馈函数计算出该线性反馈移位寄存器在 各时刻的所有状态,如表所示,13,在t=15时刻该寄存器的状态恢复至t=0时刻的状态, 因此之后的状态将开始重复。移位寄存器输出的序列 就是011001000111101 011001000111101 ,序列的 周期为15,也称该移位寄存器的周期为15(=24-1)。,14,图2-10 状态转移图,15,例2.2 如图所示是一个联接多项式为,的线性反馈移位寄存器,反馈函数为,设初始状态为 (a1, a2, a3)=(1,1,1), 其状态
6、转移图为:,16,从初始状态开始,沿着箭头所指示的路径依次取出最左边的分量便得到该LFSR的输出序列:1110100 1110100 ,周期为7(=23-1)。若以状态转移图中任一状态作为初始状态,沿箭头所指示的路径依次取出最左边的分量还可得到另外6个序列:1101001 1101001;1010011 1010011;0100111 0100111 ;1001110 1001110;0011101 0011101;0111010 0111010。全部7个序列取自同一个状态转移图上,将这7个序列之一经过适当的移位可以得到其余任一序列,称这7个序列是移位等价的。,17,例4. 如图为一个4级LF
7、SR,其联接多项式为,如取初始状态为(a1, a2, a3, a4)=(1,1,1,1)其状态转移图为:,输出序列为10001 10001,周期为5。,18,如取初始状态为(a1, a2, a3, a4)=(0,0,0,1),其状态转移图为:,对应的输出序列为01010 01010,周期为5。,19,如取初始状态为(a1, a2, a3, a4)=(1,0,1,0),其状态转移图为:,输出序列为01010 01010,周期为5。,以上15个状态连同状态(0,0,0,0,0)即为4级移位 寄存器所有可能的16个状态。,20,m序列与最大周期移位寄存器,根据LFSR的状态转移图可以看出,一个n级L
8、FSR序列的周期最大只能为2n-1 F(2)上n次多项式为联接多项式的n级LFSR所产生的非零序列的周期为2n-1,称这个序列是n级最大周期线性移位寄存器序列,简称m序列 . 如果一个n级LFSR产生了m序列,则该LFSR的状态转移图仅由2个圈构成,其中一个是由全零状态构成的长度为1的圈,另一个是由全部其余2n-1个状态构成的长度为2n-1的圈。,21,一个n级LFSR为最长移位寄存器的充要条件是它的联接多项式为F2上的n次本原多项式 2n-1为素数时,F2上的每一个n次不可约多项式均为n次本原多项式,22,2.1.4 伪随机序列,1. 随机序列 假定抛掷一枚硬币,倘若出现正面,就记为1,出现
9、反面则记为-1。反复抛掷硬币就得到一个二元随机变量序列:由于每次试验的结果与以前各次试验不发生任何关系,因此这种序列是独立试验的结果 性质: 1) 1出现的次数与-1出现次数近乎相等。用概率论的语言来说就是1与-1出现的概率是相等的,都是 2)联在一起的1的一段,它的两端都是-1,叫做1的游程 ,其中1的个数叫做游程的长度 .类似地,能够定义-1的游程 .类似可以定义长度为k的游程,23,Golomb随机性假设,在每一周期内,0的个数与1的个数近似相等; 在每一周期内,长度为i的游程数占游程总数的 定义自相关函数为这是一个二值函数:其值c为一个常数。,24,m序列的伪随机性 在n级m序列的一个
10、周期段内,1出现的次数恰为2n-1,0出现的次数恰为2n-1-1; 在n级m序列的一个周期段内,游程总数为2n-1;长为k(1kn-2)的0-游程(或1-游程)数为2n-2-k;长为n-1的游程只有1个,为0-游程;长为n的游程也只有1个,为1-游程; 自相关函数是二值的,且为 丁石孙,线性移位寄存器序列,上海科技出版社1982 肖国镇,梁传甲,王育民 伪随机序列及其应用,国防科技出版社1985年,25,2.线性复杂度,二元序列 : 线性复杂度 :能够输出该序列的最短线性移位寄存器的级数 。 例如,给定序列011 011,联接多项式为x2+x+1的LFSR可以生成该序列,联接多项式为x3+1的
11、LFSR也可以生成该序列。但联接多项式为x+1的LFSR则无法做到这一点,所以,该序列的线性复杂度为2 如果序列的线性复杂度为 ,则只要知道序列中任意相继的 位,就可确定整个序列 .,26,序列线性复杂度是流密码安全性的重要指标 安全的密钥流应该满足这样三个基本条件:周期充分长;随机统计特性好(即基本满足Golomb的随机性公设);大的线性复杂度。这里长周期一般指不少于1016,而线性复杂度为序列长度的一半是比较合适的,27,2.基于LFSR的伪随机序列生成器,如何生成好的伪随机序列? 在LFSR的基础上加入非线性化的手段,产生适合于流密码应用的密钥序列。这也是目前实现密钥流生成器的主流方法,
12、可进一步将这种方法分为三类:滤波生成器、组合生成器和钟控生成器。,28,滤波生成器 由一个n级线性移位寄存器和一个m(n)元非线性滤波函数组成,滤波函数的输出为密钥流序列,工作模式如下图:,g为一个m元布尔函数,29,组合生成器 若干个线性移位寄存器LFSRi(i=1,n)和一个非线性组合函数组成,组合函数的输出构成密钥流序列。组合生成器工作模式如下:,其中LFSRi(i=1,n)为n个级数分别为,的线性移位寄存器,相应的移位寄存器序列为,。函数,是n元布尔函数,30,31,钟控生成器 基本思想是:用一个或多个移位寄存器来控制另一个或多个移位寄存器的时钟,这样的序列生成器叫做钟控生成器(clo
13、ck-controlled generator),也叫停走生成器(stop and go generator),最终的输出被称为钟控序列,基本模型如图所示。假设LFSR1 和LFSR2分别输出序列ak和bk。当LFSR1输出1时,移位时钟脉冲通过与门使LFSR2进行一次移位,从而生成下一位。当LFSR1输出0时,移位时钟脉冲无法通过与门影响LFSR2,因此LFSR2重复输出前一位。 例如,假设LFSR1输出周期序列10101 10101,LFSR2输出周期为3的序列a0,a1,a2, a0,a1,a2,。则上述钟控生成器输出的钟控序列为a0, a0,a1, a1,a2, a0, a0, a1,
14、 a1, a2,,周期为5。,32,交错停走式生成器(一种钟控序列) 这个生成器使用了3个不同级数的移位寄存器,如图所示。当LFSR1的输出是1时,LFSR2被时钟驱动;当LFSR1的输出是0时,LFSR3被时钟驱动。最后,LFSR1的输出与LFSR2的输出做异或运算即为这个交错式停走生成器的输出,输出的序列具有长周期和大的线性复杂度,33,实用流密码2.,全球移动通信系统GSM的组成,一个GSM语音消息被转换成一系列的帧,每帧具有228比特。 每帧用A5算法加密。A5是GSM中执行加密运算的流密码算法, 它用于从用户手机到基站的连接加密。,34,A5中的钟控机制是:如果在某一时刻钟控单元中三
15、个值的 某两个或三个相同,则对应的移位寄存器在下一时刻被驱动, 而剩下的一个(或0个)值对应的移位寄存器则停走。,35,A5算法的效率很高,输出的序列统计性好, 能够通过所有的已知测试。但使用的移位寄存器太短, 极易受穷尽攻击。若A5采用级数较长的移位寄存器则会更安全。,36,37,RC4,RC4(Rivest Cipher)算法是Rivest在1987年为RSA数据安全公司开发的一种序列密码,该算法的密钥长度可变,且面向字节操作。设计出来时,RC4一直处于保密状态,直到1994年9月有人将其源代码匿名张贴到Cypherpunks邮件列表中,从而迅速传遍互联网。RC4是全球范围内使用最广泛的流
16、密码之一,已被应用于MS Windows、Lotus Notes、Oracle SQL以及使用安全套接字层SSL协议的Internet通信等方面。,38,RC4 参数,长为n的秘密内部状态(n数组),通常取n=8 . 对应的内部状态由256(=28)个元素 构成,每个元素都是0255间的一个数字 输入是一个可变长度的密钥,该密钥用于初始化内部状态。RC4的输出是状态中按照一定方式选出的某一个元素K,该输出构成密钥流的一个字节,加解密时这个字节K与一个明文/密文字节执行XOR运算。 每生成一个K值,内部状态中的元素会被重新置换一次,以便下次生成K值,39,密钥调度算法 用来设置内部状态 的随机排
17、列 开始时,内部状态被初始化为0255,即 密钥长度可变,假设为L个字节, , 一般L在532之间。 用这L个字节不断重复填充,直至得到 。数组K将被用于对内部状态S进行随机化,40,伪随机生成算法 它从内部状态中选取一个随机元素作为密钥流中的一个字节,并修改内部状态以便下一次选取。选取过程取决于两个索引值i和j,它们的初始值均为0。具体选取过程如下:,41,42,参考书 Signal Design for good correlation-for wireless communication crytography and radar, Solomon W.Golomb and Guang GONG, CAMBRIGE。 2. 伪随机序列及其应用,肖国镇等编著,国防出版社。,43,谢谢,