序列密码讲解及事例
- 格式:ppt
- 大小:1.96 MB
- 文档页数:67
序列密码序列密码引⾔序列密码⼜称流密码,它是将明⽂串逐位地加密成密⽂字符。
并有实现简单、速度快、错误传播少等特点。
密码按加密形式可分为:分组密码序列密码密码按密钥分为:对称密码(私钥密码)⾮对称密码(公钥密码)1. 加解密算法明⽂序列:m=m1m2……mn……密钥序列:k=k1k2……kn……加密:ci=mi+ki,i=1,2,3,……解密:mi=ci+ki,i=1,2,3,……注:+模2加,0+0=0,0+1=1,1+0=1,1+1=0例 m=101110011,c=m+k=111000110,m=c+k=101110011.1949年,Shannon证明了“⼀次⼀密”密码体制是绝对安全的。
如果序列密码使⽤的密钥是真正随机产⽣的,与消息流长度相同,则是“⼀次⼀密”体制。
但缺点是密钥长度要求与明⽂长度相同,现实情况中不可能实现,故现实中常采⽤较短的种⼦密钥,利⽤密钥序列⽣成器产⽣⼀个伪随机序列。
序列密码的原理分组密码与序列密码都属于对称密码,但两者有较⼤的不同:1. 分组密码将明⽂分组加密,序列密码处理的明⽂长度为1bit;2. 分组密码算法的关键是加密算法,序列密码算法的关键是密钥序列⽣成器。
3. 序列密码分类同步序列密码密钥序列的产⽣仅由密钥源及密钥序列⽣成器决定,与明⽂消息和密⽂消息⽆关,称为同步序列密码。
缺点:如果传输过程中密⽂位被插⼊或删除,则接收⽅与放送⽅之间产⽣了失步,解密即失败。
⾃动同步序列密码密钥序列的产⽣由密钥源、密钥序列⽣成器及固定⼤⼩的以往密⽂位决定,称为⾃同步序列密码(⾮同步密码)。
优点:如果密⽂位被删除或插⼊时,可以再失去同步⼀段时间后,⾃动重新恢复正确解密,只是⼀些固定长度的密⽂⽆法解密。
4. 密钥序列⽣成器的要求(key generation)种⼦密钥k的长度⾜够⼤,⼀般128bit以上,防⽌被穷举攻击;密钥序列{ki}具有极⼤的周期性现代密码机数据率⾼达10^8 bit/s,如果10年内不使⽤周期重复的{ki},则要求{ki}的周期T>=3*106或255;良好的统计特征。
第三章 序列密码在第二章中,咱们证明了理论上保密的密码体制是存在的,这种密码体制是利用随机的密钥序列∞=1}{i i k 对明文序列∞=1}{i i m 加密取得密文序列∞=1}{i i c 。
可是,由于随机的密钥序列∞=1}{i i k 必需与明文等长,因此其生成、分派、存储和利用都存在必然的困难,因这人们假想利用少量的真随机数按必然的固定规那么生成的“伪随机”的密钥序列代替真正的随机序列,这就产生了序列密码。
因此,序列密码脱胎于“一次一密”密码体制。
由于序列密码中的密钥序列是由少量的真随机数按必然的固定规那么生成的,因此不可能是真正随机的。
因此,如何刻画密钥序列的“伪随机性”,如何保证密钥序列的“伪随机性”可不能造成加密算法在实际中被破,是序列密码设计中需要解决的问题。
另外,由于序列密码只需分派和存储少量的真随机数就可对任意长度的明文加密,因此克服了完全保密的密码体制在实践中在密钥分派中碰到的难题。
序列密码中利用的少量真随机数确实是序列密码的密钥,有人也称之为“种子密钥”。
由于序列密码算法在公布资料中不多,而且所需的理论基础也较多,因此本章不对序列密码做过量介绍。
本章仅从伪随机序列的常规特性、序列密码的大体模型、理论基础、Walsh 谱理论、大体编码技术和具体实例动身,介绍序列密码的设计理论,同时也简单介绍对序列密码的分析方式。
为幸免序列密码的密钥与密钥序列的概念混淆,以下本书均称序列密码的由密钥产生的密钥序列为乱数序列。
在本书中,n Z 2和n }1,0{都表示所有二元n 维向量组成的集合和二元域上的n 维线性空间,并将12Z 简记为2Z ;)/(n Z 表示集合}1,,2,1,0{-n 和模n 剩余类环,)(q GF 表示q 元域。
本书有时也将n 维二元向量),,,(021x x x n n --不加说明地等同于)2/(n Z 中的元素011211222x x x x x n n n n ++++=---- 。
双序列比对案例
那我就来讲个双序列比对的超有趣案例。
想象一下,你有两条神秘的密码纸条(这就好比是我们的两个序列啦)。
一条纸条上写着“ABCDEFG”,另一条写着“ABCFEG”。
咱们现在要做双序列比对,就像是玩一个超级找茬兼连连看的游戏。
首先呢,我们一眼就看到开头的“AB”是一样的,这就像是两个老朋友一见面就热情拥抱,很容易就对上了。
然后呢,第一条纸条的“C”和第二条纸条的“C”也完美匹配,这就好比是两个小伙伴戴着相同的帽子,一下子就被认出来了。
可是,第一条纸条的“D”在第二条纸条里找不到对应的小伙伴,这就有点尴尬啦,就像一个人去参加聚会结果发现没有和自己同好的人。
再往后看,“E”在两条纸条里又对上了,就像失散的双胞胎又重逢了一样。
接着第一条纸条的“F”和第二条纸条的“F”也匹配上了。
但是第一条纸条的“G”和第二条纸条的“E”“G”顺序有点乱,这里就像是两个人跳舞跳错了步骤。
在这个简单的例子里,我们通过这样的比对,就能知道这两条“密码纸条”(序列)哪些部分是相似的,哪些部分是不一样的。
这在生物学里可有用啦,比如说比较不同生物的基因序列,看看哪些基因是保守的(就像那些容易匹配上的部分),哪些基因发生了变异(就像那些对不上的部分)。
这就像是在探索生物进化这个超级大迷宫里的小线索,是不是超级酷呢?。
分组密码和序列密码是两种不同的加密方法。
分组密码,也称为块加密,将明文消息编码表示后的数字序列划分成长度为n的组(可看成长度为n的矢量),每组分别在密钥的控制下变换成等长的输出数字序列。
在加密过程中,利用密钥产生一个密钥流,然后利用此密钥流依次对明文进行加密。
如ECB、CBC、CFB、OFB等都是分组加密的算法模式。
序列密码,也称为流加密,利用少量的密钥(制乱元素)通过某种复杂的运算(密码算法)产生大量的伪随机位流,用于对明文位流的加密。
序列密码是以一个元素作为基本的处理单元,具有转换速度快、低错误传播的优点,硬件实现电路更简单。
其缺点是低扩散、插入及修改的不敏感性。
总之,分组密码和序列密码的主要区别在于处理方式、基本单元和优缺点。
实验二 LFSR 及序列密码实验名称:LFSR 及序列密码实验类型: 验证性实验学 时:4适用对象: 信息安全专业、计算机网络一、实验目的通过软件模拟线性反馈移位寄存器,掌握反馈移位寄存器的工作原理,在此基础上实现非线性序列的输出,掌握序列密码基本算法和工作原理。
二、实验要求(1)掌握流密码原理;(2)理解m序列的产生;(3)能编程模拟线性反馈移位寄存器生成m序列。
三、实验原理一个简单的流加密法需要一个“随机”的二制位流作为密钥。
通过将明文与这个随机的密钥流进行XOR 逻辑运算,就可以生成密文。
将密文与相同的随机密钥进行XOR 逻辑运算即可还原明文。
该过程如图 3-1。
图3-1 流加密法 假设密钥流(二进制位流)存于字节序列k[0],…,k[L-1],共8*L bit 位,则采用C 语言循环加密的算法代码如下:void StreamEncrypt(char m[],int n,char key[],int L){//n 为需要加密或解密数据的字节数,L 为密钥长度(字节)int k=0; for(int i=0; i<n; i++){m[i]^=key[k++];if(k==L) k=0; // k%=L; (i.e. k=k%L;)}}明文要实现XOR逻辑运算很简单,正如上面所给的C程序。
当作用于位一级上时,这是一个快速而有效的加密法。
唯一的问题是必须解决如何生成随机密钥流。
这之所以是一个问题,是因为密钥流必须是随机出现的,并且合法用户可很容易再生该密钥流。
如果密钥流是重复的位序列,容易被记忆,但不很安全,如上面所给出的程序。
这就要求我们开发一个随机位密钥流所成器,它是基于一个短的种子密钥来产生密钥流的。
生成器用来产生密钥流,而用户只需记住如何启动生成器即可。
有多种产生密钥流生成器的方法。
最普遍的是使用一种称为线性反馈移位寄存器的硬件设备。
下面的图3-2中,在反馈系数决定的情况下,对于任何的初始状态,都可获得一个位流的输出。