第4讲 序列密码
- 格式:ppt
- 大小:436.50 KB
- 文档页数:43
序列密码基本概念序列密码的加密⽤⼀个随机序列(密钥流)与明⽂序列按位叠加产⽣密⽂,⽤同⼀随机序列与密⽂序列叠加来恢复明⽂。
v由种⼦密钥通过密钥流发⽣器得到的密钥流为:K=k1k2...k n,则加密变换为:C=c1c2...c n其中c i=m i⊕k i i=1,2...n,那么解密变换就是m i=c i⊕k i i=1,2...n密码强度主要依赖于密钥流的安全性同步序列密码密钥序列的产⽣独⽴于明⽂消息和密⽂消息。
特点:⽆错误传播:各符号之间真正独⽴。
⼀个传播错误只影响⼀个符号,不会影响到后继的符号同步:发送⽅和接收⽅必须保持精确的、⽤同样的密钥并作⽤在同样的位置上,才能正确的解密⾃同步序列密码密钥序列是密钥及固定⼤⼩的以往密⽂的函数,依赖于密⽂。
特点:有限错误传播:设密钥序列产⽣器具有n位存储,则⼀个符号的传输错误只影响到后⾯n符号的解密⾃同步:只要接收⽅连续收到n个正确的密⽂符号,密钥序列产⽣器便会⾃动地恢复同步消除明⽂统计特性密钥流⽣成器和密钥流密钥流的要求极⼤的周期:随机序列是⾮周期的,⽽按任何算法产⽣的序列都是周期的,因此应要求密钥流具有尽可能⼤的周期良好的统计特性:随机序列有均匀的游程分布游程:指序列中相同符号的连续段,其前后均为异种符号。
例如:……0 111 0000 10……注意:计算游程的时候要⾸尾相连计算,头和尾的两个0合在⼀起构成长度为2的0游程。
有长为3的1游程、长为4的0游程、长为1的1游程,长为2的0游程。
⼀般要求其在周期内满⾜:同样长度的0游程和1游程的个数相等,或近似相等。
很⾼的线性复杂度:不能⽤级数较⼩的线性移位寄存器LFSR近似代替⽤统计⽅法由密钥序列k0k1k2…ki…提取密钥⽣成器结构或种⼦密钥在计算上不可⾏密钥流⽣成器密钥流⽣成器可以分为:驱动部分⾮线性组合部分驱动部分:控制⽣成器的状态序列,为⾮线性组合部分提供统计性能良好的序列周期很⼤分布较随机⾮线性部分:将驱动部分提供的序列组合成密码特性好的序列可隐蔽驱动序列与密钥k之间明显的依赖关系⽬前密钥流⽣成器⼤都基于移位寄存器FSR通常由线性移位寄存器(LFSR)和⼀个⾮线性组合函数即布尔函数组合,构成⼀个密钥流⽣成器(a)由⼀个线性移位寄存器和⼀个滤波器构成(b)由多个线性移位寄存器和⼀个组合器构成LSFR的优点:⾮常适合硬件实现能产⽣⼤的周期序列能产⽣统计特性好的序列能够应⽤代数⽅法进⾏很好的分析反馈移位寄存器GF(2)上⼀个n级反馈移位寄存器由n个⼆元存储器与⼀个反馈函数f(a1a2...a n)组成Processing math: 100%每个存储器称为移位寄存器的⼀级在任⼀时刻,这些级的内容构成该FSR的状态;对应于⼀个GF(2)上的n维向量,共有2n种可能的状态状态可⽤n长序列a1,a2,a3,…,a n或n维⾏向量(a1,a2,a3,…,a n)表⽰每⼀级存储器a i将其内容向下⼀级a i-1传递,并根据存储器当前状态计算f(a1,a2,a3,…,a n)作为a n下⼀时间的内容example:初始状态为(a1,a2,a3)=(1,0,1),输出可由上表求出,其输出序列为10111011101…,周期为4如果反馈函数f(a1,a2,…,a n)是a1,a2,…,a n的线性函数,则称为线性反馈移位寄存器(LFSR)n级LFSR最多有2n个不同的状态初始状态为零,则其状态恒为零若其初始状态⾮0,则其后继状态不会为0因此n级LFSR的状态周期≤2n−1输出序列的周期与状态周期相等,所以≤2n−1选择合适反馈函数可使序列周期达到最⼤值2n−1,周期达到最⼤值的序列称为m序列特征多项式表⽰:1是必须写的,c i的取值和上⾯⼀⼀对应定理:n级LFSR产⽣的序列有最⼤周期2n−1的必要条件是其特征多项式为不可约的定义:若n次不可约多项式p(x)的阶为2n-1,则称p(x)是n次本原多项式,使得p(x)|(x p−1)的最⼩p称为p(x)的阶定理:设{a i}∈G(p(x)),{a i}为m序列的充要条件是p(x)为本原多项式Java实现LSFRpublic class LSFR {public static void newLsfr(List<Integer> lst, int k, List<Integer> key){int temp=0;List<Integer> temp1 = new ArrayList<>(lst);List<Integer> temp2 = new ArrayList<>(key);for(int i = 0;i < k; ++i){boolean flag = false;Integer kOut=0;for (int j = 0;j < 20;++j){if(temp2.get(j).equals(1))kOut = (Integer) ((kOut + temp1.get(j) ^ temp2.get(j)) % 2);}temp1.remove(0);temp1.add(kOut);for(int q = 0;q < 20;q++){if (!temp1.get(q).equals(lst.get(q))) {flag = true;break;}}System.out.println(temp1.toString()+"第"+(i+1)+"次");if(!flag)temp = i+1;}if(temp!=0)System.out.println("周期是:"+temp);}对于m-序列(周期为2n−1),如果攻击者知道了2n位明密⽂对,则可确定反馈多项式的系数,从⽽确定该LFSR接下来的状态,也就能得到余下的密钥序列,具体过程如下:三个随机性公设:在⼀个周期内,0与1的个数相差⾄多为1—a i中0与1出现的概率基本上相同在⼀个周期内,长为1的游程占游程总数的1/2,长为2的游程占游程总数的1/22,……,长为i的游程占游程总数的1/2i,……,且等长的游程中0游程个数和1游程个数相等——0与1在序列中每⼀位置上出现的概率相同异相⾃相关函数是⼀个常数——通过对序列与其平移后的序列做⽐较,不能给出其它任何信息⾮线性部分Geffe发⽣器钟控发⽣器交错停⾛式发⽣器门限发⽣器常⽤流密码算法RC4基于⾮线性数组变换优点:易于软件实现,加密解密速度快,⽐DES快10倍A5基于LFSR。
密码学原理流密码前面的密码体制中,连续的明文元素使用相同的密钥K来加密。
y=y1y2...=e k(x1)e k(x2)...这种类型的密码体制称为分组密码与分组密码的区别需要设计复杂的加密函数以提高安全性经常需要对明文进行填充(padding)操作以确保分组长度完整密钥管理将明文看作字符串或比特串,并逐字符或者逐位进行加密。
为了防止密钥穷举,使用和明文信息一样长的密钥(无限)流z=z 1,z 2...进行加密。
这种密码体制称为流密码(或序列密码)•可以使用非常简单的加密算法(如简单的异或运算)•关键是如何生成密钥流流密码设计思路1212z 1z 2y =y y =e (x )e (x )弗纳姆(Vernam)密码1918年,Gillbert Vernam建议密钥与明文一样长并且没有统计关系的密钥内容,他采用的是二进制数据:加密:Ci =Pi⊕Ki解密:Pi =Ci⊕Ki关键:构造和消息一样长的随机密钥流密码的代表流密码特点运算简单实时性强安全性依赖与密钥流的产生方法流密码的分类按密钥的周期性分类周期流密码•存在某个固定的正整数r,使得密钥流每隔r个字符(或者比特)以后重复。
非周期流密码•对任何正整数密钥流都不重复•如一次一密乱码本流密码的分类按密钥的产生方式分类同步流密码•密钥流的产生独立于消息流;•例如分组密码的OFB(输出反馈)模式异步流密码•每一个密钥字符是由前面n个明文或密文字符推导出来的,其中n为定值。
•例如分组密码的CFB(密码反馈)模式同步流密码使用某种算法,由一个初始密钥变换出和明文串相互独立的密钥流。
定义如下:同步流密码是一个六元组(P,C,K,L,E,D)和一个函数g,且满足如下条件•P,C,K分别是明文、密文、密钥的有限集。
•L是密钥流字母表有限集。
•g是密钥流生成器,g使用密钥k∈K作为输入,产生无限长的密钥流Z=z1z2...,其中z i∈L。
•对任意的z∈L,都有一个加密规则(函数)e z:P→C∈E和相应的解密规则(函数)d z:C→P∈D,并且对每个明文x∈P满足d z(e z(x))=x。
旺旺:旺我旺:能我过能软过软考考主要内容序列密码的基本概念 序列密码的分类 线性移位寄存器序列 线性移位寄存器的输出序列求解旺旺:我能过软考序列密码的基本概念版权所有:我能过软考香农证明了“一次一密”不可破解。
用序列密码模仿“一次一密”密码。
为了安全,序列密码应使用尽可能长的密钥,但是,长密钥的存储、分配存在困难。
设计一个好的密钥序列产生算法,利用较短的种子密钥,产生长的密钥序列。
作为核心密码的主流密码3 旺旺:我能过软考序列密码的分类 同步序列密码自同步序列密码 1)同步序列密码 密钥序列产生算法与明密文无关 产生的密钥序列和明密文无关 在通信中,通信双方必须保持精确的同步 不存在错误传播版权所有:我能过软考输出反馈模式OFB4 旺旺:我能过软考同步序列密码的失步分析版权所有:我能过软考设密c=c1, c2, c4, c5…., cn-1, cn文⊕ k=k1, k2, k3, k4…., cn-1, cn失 步m=m1,m2, X,X…., X, X 可以检测插入、删除、重播等主动攻击(c3 丢失) (密钥正确)5 旺旺:我能过软考同步序列密码错误传播分析版权所有:我能过软考c=c1, c2, c3, c4…., cn-1, cn ⊕ k=k1, k2, k3,k4…., cn-1, cnm=m1,m2,X,m4 …,mn-1 ,mn-1 不存在错误传播(c3 错误) (密钥正确)6 旺旺:我能过软考自同步序列密码错误传播分析版权所有:我能过软考 ci错误只影响n个密钥,导致n位错误,有限的错误传播 同步丢失,会影响n位解密,然后重新建立同步, 如: 电视信号、手机通信 难于检测出主动攻击7 旺旺:我能过软考线性移位寄存器序列 1、移位寄存器如果反馈函数f(S0、 S1 、 … 、 Sn-1)是线性函数,则 称移位寄存器为线性移位寄存器;否则,称为非线性 移位寄存器。