920 likes | 1.26k Views
第二章 流密码. 本科生 必修课 《 现代密码学 》. 主讲教师 : 董庆 宽 副教授 研究方向 : 密码学与信息安全 电子邮件: qkdong@xidian.edu.cn 个人主页: http://web.xidian.edu.cn/qkdong/. 第二章 流密码. 内容提要. 1. 流密码的基本概念 2. 线性反馈移位寄存器 3. 非线性序列 4. 流密码算法. 第二章 流密码. 2.1 流密码的基本概念. 流密码 (stream cipher) ,也称为序列密码 (Sequence Cipher) ,是一种重要的密码体制
E N D
第二章 流密码 本科生必修课《现代密码学》 主讲教师:董庆宽 副教授 研究方向:密码学与信息安全 电子邮件:qkdong@xidian.edu.cn 个人主页:http://web.xidian.edu.cn/qkdong/
第二章 流密码 内容提要 • 1. 流密码的基本概念 • 2. 线性反馈移位寄存器 • 3. 非线性序列 • 4. 流密码算法
第二章 流密码 2.1 流密码的基本概念 • 流密码(stream cipher),也称为序列密码(Sequence Cipher),是一种重要的密码体制 • 明文消息按字符或比特逐位加密 • 流密码的基本思想 • 利用密钥k产生一个密钥流z=z0z1z2…, • 并使用如下规则对明文串x=x0x1x2…加密: y=y0 y1 y2…=Ez0(x0) Ez1(x1) Ez2(x2)… • 流密码与分组密码的区别:在于有无记忆性 • 流密码的密钥流是由已知记忆状态导出 当前状态与记忆元件初始状态、密钥k、 输入的明文和状态转换函数导出 • 分组密码对明文一组一组的加密,组间一般没有关系 流密码示意图 分组密码示意图
第二章 流密码 2.1 流密码的基本概念 • 流密码在50年代得到飞跃式发展 • 密钥流可以用移位寄存器电路来产生,因此基于硬件实现优势更明显 • 也有些算法是针对软件设计的,如Ecrypt计划中的算法,RC4等 • 主要用于专用和机密机构:军方,外交,银行等 • 资源受限环境(如RFID标签)、伪随机数生成器、链路加密等环境 • 加密速度快,实现简单,同步流密码不存在错误扩散问题,对一些有扰信道而言是良好的选择 • 流密码具有有效的数学分析工具 • 代数(如布尔代数)、有限域理论和谱分析理论、概率论等等 • 很多密码学家因流密码研究而成名:肖国镇,Massey,Berlikamp等。 • 参考资料: • 肖国镇著《伪随机序列及其应用》,《流密码学及其应用》
第二章 流密码:2.1 流密码的基本概念 2.1.1 同步流密码 • 流密码的滚动密钥流 • 由密钥流发生器 f 产生:zi=f(k,σi) • 内部记忆元件由一组移位寄存器构成,这里假设有n个移位寄存器 • σi是加密器中的记忆元件在时刻 i的状态,可表示为 • σi=(an, an-1, … , a1) • f 是由k, σi产生的函数 • 流密码的滚动密钥由函数f、密钥k和指定的初态σ0完全确定 • 此后由于输入加密器的明文可能影响加密器中的内部记忆元件的存储状态,因而σi(i>0)可能依赖于k,σ0,x0,x1,…,xi-1,即前 i个明文和密钥及初态 Feedback Shift Register, FSR
第二章 流密码:2.1 流密码的基本概念 2.1.1 同步流密码 • 流密码可按记忆元件存储状态分类 • 按照加密器中记忆元件的存储状态σi是否依赖于输入的明文字符流,流密码可进一步分成同步和自同步流密码两种 • σi独立于明文字符流的叫做同步流密码,否则叫做自同步流密码 • 由于自同步流密码的密钥流产生与明文有关,所以理论上难于分析。 • 好的密码算法应该在理论上或基于实践检验能够证明其是安全的或至少是没有明显漏洞的。 • 如果算法难于分析,则无法保证其安全性,也就无法放心使用,因此自同步流密码研究很少,很少采用。
第二章 流密码:2.1 流密码的基本概念 2.1.1 同步流密码 • 目前大多数研究成果都是关于同步流密码的 • 由于zi=f(k,σi)与明文无关,此刻的密文字符yi=Ezi(xi)也不依赖于此前的明文字符,这样可将同步流密码的加密器分成密钥流产生器和加密变换器两个部分。 • 设解密变换为xi=Dzi(yi)。同步流密码体制模型如下图
第二章 流密码:2.1 流密码的基本概念 2.1.1 同步流密码 • 加密变换Ezi可有多种选择,保证变换可逆性即可 • 比如明文流和密钥流对应位异或 • 实际数字保密通信系统一般都是二元的{0,1},在有限域GF(2)上讨论二元加法流密码是目前最常用的流密码体制 • 加密变换可表示为yi=zixi,加法流密码体制模型 • 同步流密码算法的设计主要是密钥流产生器的设计 • 密钥产生器目标是:使密钥k经其扩展成的密钥流序列z具有:极大的周期,良好的统计特性,抗差分分析,抗线性分析等性质
第二章 流密码:2.1 流密码的基本概念 2.1.2 有限状态自动机 • 流密码中任意时刻密钥流和密文的输出与状态密切相关。可以用有限状态自动机这一数学模型来表述 • 有限状态自动机是具有离散输入和输出(输入集和输出集均有限)的一种数学模型,由3部分组成: • 有限状态集S={si|i=1,2,…,l} 共有l个可能状态 • 有限输入字符集A1={Aj(1)| j=1,2,…,m}和有限输出字符集A2={Ak(2)| k=1,2,…,n}。 • 转移函数: • 输出转移函数:Ak(2)=f1(si,Aj(1)),状态转移函数:sh=f2(si,Aj(1)) • 即在状态为si,输入为Aj(1)时,输出为Ak(2),而状态转移为sh。
第二章 流密码:2.1 流密码的基本概念 2.1.2 有限状态自动机 • 【例2-1】 • S={s1,s2,s3}, • A1={A1(1),A2(1),A3(1)},A2={A1(2),A2(2),A3(2)},转移函数由表2-1给出。f1为输出转移函数,f2为状态转移函数
第二章 流密码:2.1 流密码的基本概念 2.1.2 有限状态自动机 • 有限状态自动机可用有向图表示,称为转移图 • 转移图的顶点对应于自动机的状态 • 若状态 si在输入Ai(1)时转为状态sj,且输出一字符Aj(2),则在转移图中,从状态si到状态sj有一条标有(Ai(1),Aj(2))的有向弧线,如图 • 在例2-1中,若 • 输入序列为A1(1)A2(1)A1(1)A3(1)A3(1)A1(1) • 初始状态为s1, • 则得到状态序列为: • 输出字符序列为: s1s2s2s3s2s1s2 A1(2)A1(2)A2(2)A1(2)A3(2)A1(2)
第二章 流密码:2.1 流密码的基本概念 2.1.3 密钥流产生器 • 同步流密码的关键是密钥流产生器(Key Generator) • 一般可将其看成一个参数为k的有限状态自动机,由一个输出符号集Z、一个状态集∑、两个函数φ和ψ以及一个初始状态σ0组成 • 状态转移函数φ:σi→σi+1,将当前状态σi变为一个新状态σi+1 • 输出函数ψ: σi→zi,当前状态σi变为输出符号集中的一个元素zi。 • 密钥流生成器设计的关键在于 • 找出适当的状态转移函数φ和输出函数ψ,使得输出序列z满足密钥流序列z应满足的几个条件,并且要求在设备上是节省的和容易实现的。为了实现这一目标,必须采用非线性函数
第二章 流密码:2.1 流密码的基本概念 2.1.3 密钥流产生器 • 由于具有非线性的φ的有限状态自动机理论很不完善,相应的密钥流产生器的分析工作受到极大的限制。 • 相反地,当采用线性的φ和非线性的ψ时,将能够进行深入的分析并可以得到好的生成器。 • 为方便讨论,可将这类生成器分成驱动部分和非线性组合部分 • 驱动部分控制生成器的状态转移,并为非线性组合部分提供统计性能好的序列; • 非线性组合部分要利用这些序列组合出满足要求的密钥流序列。
第二章 流密码:2.2 线性反馈移位寄存器 2.2.1 布尔函数简介 • n元布尔函数f(x1,…,xn)定义为f:F2nF2 • 表示方法有三种:逻辑关系式,真值表,多元多项式 • 多元多项式:如 f(x1,x2,x3,x4)=x1x2+x3+x4 • 异或 x1x2 x1+x2 (在GF(2)上的“+”(模2加) • 逻辑“与” x1x2 x1x2 (GF(2)上的“乘法”) • 逻辑“或” x1 x2 x1x2+x1+x2 其真值表为: • 非 1+x • 幂 xt=x·x…x=xt>0 • x0=1;布尔函数的高次项只有如下形式 • xi1xi2…xik
第二章 流密码:2.2 线性反馈移位寄存器 2.2.1 布尔函数简介 • 布尔函数的重量W(f):真值表中函数值列里”1”的个数 • f(x1,x2)=x1 x2 = x1x2+x1+x2的重量W(f)=3 • 布尔函数的次数 • f(x1,…,xn)=a0+ • 一个乘积项 的次数定义为r • 最大次数定义为布尔函数的次数 def(f),也称为代数次数 • def(f)=1时,称为仿射函数 :f(x1,…,xn)=a0+ • 若仿射函数的常数项a0=0,则称为线性函数 • def(f)>1时,称为非线性函数
第二章 流密码:2.2 线性反馈移位寄存器 2.2.2 线性反馈移位寄存器的结构与表示 • 移位寄存器(FSR)是序列密码产生密钥流的主要组成部分 • GF(2)上一个n 级反馈移位寄存器由n 个二元存储器与一个反馈函数f(a1,a2,…,an)组成,如图所示 • 移位寄存器的状态 • 每一存储器称为移位寄存器的一级,具有0和1两个状态 • 在任一时刻,这些级的内容构成该反馈移位寄存器的状态,可用GF(2)上的一个n维向量 (a1,a2,…,an)表示,其中ai是第i级存储器的内容。共有2n种可能的状态。 • 初始状态σ0由用户确定,属于密钥k的一部分
第二章 流密码:2.2 线性反馈移位寄存器 2.2.2 线性反馈移位寄存器的结构与表示 • 状态转换规则 • 根据FSR的工作原理,当第i个移位时钟脉冲到来时 • a1被移出,作为输出序列在第i时刻的输出bit • 其它每一级存储器ai都将其内容向下一级ai-1传递 • 同时,根据时钟脉冲到来前寄存器的状态a1,a2,…,an计算出的an=f(a1,a2,…,an)也移入最左边的寄存器 • 反馈函数f(a1,a2,…,an)是n元布尔函数 • 函数中的运算有逻辑与、逻辑或、逻辑补、或其它运算 • 最后的函数值为0或1。 • 可能是线性或非线性布尔函数
第二章 流密码:2.2 线性反馈移位寄存器 2.2.2 线性反馈移位寄存器的结构与表示 • 例:下图是一个3级反馈移位寄存器,其初始状态为(a1,a2,a3)=(1,0,1),输出可由表2.2求出 • 在一个一般n-FSR的状态图中,至少含有一个圈,且从任意状态出发进动若干拍后必定进入某一个圈!这时得到的输出序列虽不必是周期序列,但去掉其前若干项后即得到周期序列,也就是说这样的序列为终归周期序列 该3级反馈移位寄存器的状态和输出如下 即输出序列为101110111011…,周期为4
第二章 流密码:2.2 线性反馈移位寄存器 2.2.2 线性反馈移位寄存器的结构与表示 • 线性反馈移位寄存器LFSR • 如果反馈函数f(a1,a2,…,an)是a1,a2,…,an的线性函数(线性布尔函数),则称之为线性反馈移位寄存器(Linear Feedback Shift Register, LFSR),此时f可写为 f(a1,a2,…,an)=cna1cn-1a2…c1an • 二元情况下(GF(2)),常数ci=0或1,刚好可用开关的断开和闭合来实现 • 根据反馈函数输出序列{at}满足如下递推式 • an+t= cnatcn-1at+1…c1an+t-1,其中t为非负正整数。
第二章 流密码:2.2 线性反馈移位寄存器 2.2.2 线性反馈移位寄存器的结构与表示 • [例2-3]下图是一个5级线性反馈移位寄存器,其初始状态为(a1,a2,a3,a4,a5)=(1,0,0,1,1),可求出输出序列为 1001101001000010101110110001111100110… • 周期为31。 • 线性反馈移位寄存器因其实现简单、速度快、有较为成熟的理论等优点而成为构造密钥流生成器的最重要的部件之一
第二章 流密码:2.2 线性反馈移位寄存器 2.2.2 线性反馈移位寄存器的结构与表示 • LFSR的相关性质 • (1) 反馈系数 • 所有系统都为0,即c1=c2=…=cn=0,由于没有反馈,n个时钟脉冲后,状态变为全0,并一直下去 • 若c1,c2,…,cn中只有一个系数不为0,设仅有cj不为0,实际上是一种延迟装置。 • 若从cj开始cj,cj+1,…,cn都等于0,则是一种退化的LFSR, cj,cj+1,…,cn对应的移位寄存器相当于延迟装置,因此,我们讨论的LFSR总是假定cn=1 • 按照递推式,LFSR输出序列的性质由其反馈函数和初始状态决定,而其生成序列周期的性质主要由反馈函数决定
第二章 流密码:2.2 线性反馈移位寄存器 2.2.2 线性反馈移位寄存器的结构与表示 • LFSR的相关性质 • (2) LFSR的周期 • n级LFSR最多有2n个不同的状态。 • 若其初始状态为0,则其状态恒为0,即输出的是全0序列 • 若其初始状态非0,则其后继状态也不会为0。因此n级线性反馈移位寄存器的状态周期小于等于2n-1 • 根据LFSR的工作原理,每个状态输出一个确定的bit,因此其输出序列的周期与状态周期相等,也小于等于2n-1 • 只要选择合适的反馈函数便可使序列的周期达到最大值2n-1,周期达到最大值的线性序列称为m序列,或n级m序列 • m序列由于遍历了所有非全0状态, 其状态转移图是一个大圈
第二章 流密码:2.2 线性反馈移位寄存器 2.2.2 线性反馈移位寄存器的结构与表示 • LFSR的一元多项式表示 • 设n级线性移位寄存器的输出序列{ai}满足递推关系式 • an+k= c1an+k-1c2an+k-2…cnak(*) • 对任何k1成立。 • 这种递推关系可用一个一元高次多项式表示 p(x)=1+c1x+c2x2+…+cn-1xn-1+cnxn • 称这个多项式为LFSR的特征多项式。 • 特征多项式按如下方式获得: • 在(*)式中两边同时加上an+k有 • 0=1an+k c1an+k-1c2an+k-2…cnak
第二章 流密码:2.2 线性反馈移位寄存器 2.2.2 线性反馈移位寄存器的结构与表示 • 每一个时钟信号,寄存器中的内容从左向右移动一次,因此一个寄存器代表一次符号迟延,因而引入迟延算子D • D(an+k)=an+k-1表示迟延一位(一拍) • D2(an+k)=an+k-2表示迟延两位,即D2(an+k)=D(D(an+k))=D(an+k-1)=an+k-2 • 同理有Dn(an+k)=ak表示迟延n位。 • 并引入恒等算子I=D0,I(an+k) =an+k • 于是递推式0=1an+k c1an+k-1c2an+k-2…cnak可表示成 • 0=I(an+k)+c1D(an+k)+c2D2(an+k)+…+cnDn(an+k) • 即0=(I+c1D+c2D2+…+cnDn)an+k • 以x表示D,则有p(x)an+k=0 • 于是可知p(x)可以描述LFSR的全部特征,可以由p(x)来研究LFSR
第二章 流密码:2.2 线性反馈移位寄存器 2.2.2 线性反馈移位寄存器的结构与表示 • 设n级线性移位寄存器对应于递推关系(*) • 由于aiGF(2) (i=1,2,…,n),所以共有2n组初始状态,即有2n个递推序列,其中非恒零的有2n-1个。这里假定cn=1 • 记2n-1个非零序列的全体为G(p(x))。 • LFSR结构图、递推式与特征多项式p(x)是一一对应的 • 已知其中的任何一个,都能给出另外两个 • 注意,在依据特征多项式画移位寄存器结题图时,越往右迟延的拍数越多,对应的多项式的次数越高,系数ci的下标值i越大 • 最左边的反馈线为1,最右边的cn=1否则为退化寄存器
第二章 流密码:2.2 线性反馈移位寄存器 2.2.3 m序列产生器 • 反馈函数,也即特征多项式决定了LFSR输出序列的性质,本节将探讨特征多项式满足什么条件时LFSR能够产生具有最大周期的m序列,以及这种序列的安全性(即破译问题) • 为此,首先引入生成函数的概念,它是一种形式幂级数,其中的xi可以理解为延迟算子 • 定义2-1 给定序列{ai},幂级数 称为该序列的生成函数 • 定理2-1设p(x)=1+c1x+c2x2+…+cn-1xn-1+cnxn是GF(2)上的多项式,G(p(x))中任一序列{ai}的生成函数A(x)满足: ,其中
第二章 流密码:2.2 线性反馈移位寄存器 2.2.3 m序列产生器 • 移项整理得 • (1+c1x+c2x2+…+cn-1xn-1+cnxn) A(x) =(a1+a2x+…+anxn-1) +c1x(a1+a2x+…+an-1xn-2) +c2x2(a1+a2x+…+an-2xn-3) … +cn-1xn-1a1 • 即p(x)A(x)= = (x) • 证明: 由递推式不难得出 • an+1=c1anc2an-1…cna1 • an+2=c1an+1c2an…cna2 • … • 两边分别乘以xn,xn+1,…,再求和 • 左边=an+1xn+an+2xn+1+… =A(x)-(a1+a2x+…+anxn-1) • 右边逐列相加整理得 • 右边=c1x[A(x)-(a1+a2x+…+an-1xn-2)] • +c2x2[A(x)-(a1+a2x+…+an-2xn-3)] • … • +cnxnA(x)
第二章 流密码:2.2 线性反馈移位寄存器 2.2.3 m序列产生器 • ※ (x)的次数最大可能是n-1 • 因此(x)表达式共有n个系数,从而有2n-1个不同的非0表达式,并且由初始状态a1, a2,…,an完全确定 • 这样每一个初态对应一条不同的序列,而每一条序列的生成函数A(x)唯一确定一个(x),共有2n-1个初态 • 所以初始状态、(x)、G(p(x))中的序列{ai}三者之间一一对应
第二章 流密码:2.2 线性反馈移位寄存器 2.2.3 m序列产生器 • 定理2-2 p(x)|q(x)的充要条件是G(p(x))G(q(x)) • 证明:若p(x)|q(x),可设q(x)=p(x)r(x),因此 • = = • 而(x)次数小于等于n-1,r(x)次数为nq-n,其中nq是q(x)的次数 • 所以(x)r(x)次数小于等于nq-n+(n-1)=nq-1 • 根据定理2-1可知,(x)r(x)唯一对应一个q(x)生成的序列,而显然有 • q(x)A(x)=p(x)r(x)A(x)=(x)r(x),即该序列为A(x)。 • 所以若{ai}G(p(x)),则也有{ai}G(q(x)),即G(p(x))G(q(x))
第二章 流密码:2.2 线性反馈移位寄存器 2.2.3 m序列产生器 • 反之,若G(p(x))G(q(x)),则对于次数小于n的多项式(x),存在序列{ai}G(p(x)),以 为生成函数。 • 由于(x)和G(p(x))中的序列是一一对应的,当(x)=1时,当然也存在序列{ai}G(p(x))以 为生成函数 • 由于G(p(x))G(q(x)),序列{ai}G(q(x)),所以存在函数r(x),使得{ai}的生成函数也等于 , • 从而 ,即q(x)=p(x)r(x),所以p(x)|q(x) • 证毕
第二章 流密码:2.2 线性反馈移位寄存器 2.2.3 m序列产生器 • 定理2-2 说明可用n级LFSR产生的序列,也可用级数更多的LFSR来产生 • 反之一个LFSR序列的特征多项式可能有多个,需要的移位寄存器个数也不同 • 定义:二元序列的线性复杂度是指生成该序列的最短LFSR的级数,最短LFSR的特征多项式称为二元序列的极小特征多项式,显然它的次数就是序列的线性复杂度 • 定义2-2 设p(x)是GF(2)上的多项式,使p(x)|(xp-1)的最小p称为p(x)的周期或阶
第二章 流密码:2.2 线性反馈移位寄存器 2.2.3 m序列产生器 • 定理2-3 若序列{ai}的特征多项式p(x)定义在GF(2)上,p是p(x)的周期,则{ai}的周期r|p。 • 证明:(首先证明{ai}至少是以p为周期重复的,再证r是p的因子) • 由p(x)周期的定义得p(x)|(xp-1),因此存在q(x),使得 xp-1 =p(x)q(x), • 又由p(x)A(x)=(x)可得p(x)q(x)A(x)=q(x)(x) • 所以(xp-1)A(x)=q(x)(x)。由于q(x)的次数为p-n,(x)的次数不超过n-1,所以(xp-1)A(x)的次数不超过(p-n)+(n-1)=p-1。 • 对于任意的特征多项式为p(x)的A(x),xpA(x) - A(x)的次数低于p-1,也就是A(x)移位p次后对应位相等,从而相消去) • 这就证明了对于任意正整数i都有ai+p=ai • 设p=kr+t,0t<r,则ai+p=ai+kr+t=ai+t=ai,所以t=0,即r|p。(证毕)
第二章 流密码:2.2 线性反馈移位寄存器 2.2.3 m序列产生器 • 定理2-3 说明n级LFSR输出序列的周期r不依赖于初始条件,而依赖于特征多项式p(x)。 • 如果p(x)的周期有多种不同因子,那么,其产生序列的周期也有多种可能,则LFSR的状态转移图由多个互不相交的圈组成,每一个圈包含与周期相同的状态数,这时所有圈包含状态的总和为2n-1 ,不含全0状态 • 显然,初始状态对序列的周期有一定的影响,它属于哪一个圈,则对应产生序列的周期就是哪一个圈所包含的状态数。 • 我们感兴趣的是LFSR遍历2n-1个非零状态,这时序列的周期达到最大2n-1,状态转移图为一个大圈,这种序列就是m序列。这时不同初始状态生成的都是m序列,而且有状态转移图特点不能看出,所有这些m序列之间是相互移位的关系,本质上是同一个序列 • 即LFSR只要产生一条m序列,则产生的所有非0序列都是m序列 • 下面讨论特征多项式满足什么条件时,LFSR的输出序列为m序列。 • 定义2-3 仅能被非0常数或自身的常数倍除尽,但不能被其它的多项式除尽的多项式称为既约多项式或不可约多项式
第二章 流密码:2.2 线性反馈移位寄存器 2.2.3 m序列产生器 • 定理2-4 设p(x)是n次不可约多项式,周期为m,序列{ai}G(p(x)),则{ai}的周期为m。 • 证明:设{ai}的周期为r,由定理2.3 有r|m,所以rm。 • 设A(x)为{ai}的生成函数,A(x)=(x)/p(x),即p(x)A(x)=(x)≠0,(x)的次数不超过n-1。而 • A(x)= =a1+a2x+…+arxr-1+xr(a1+a2x+…+arxr-1) • +(xr)2(a1+a2x+…+arxr-1)+… • =(a1+a2x+…+arxr-1)/(1-xr) • =(a1+a2x+…+arxr-1)/(xr-1) • 于是A(x)=(a1+a2x+…+arxr-1)/(xr-1)=(x)/p(x), • 即 p(x)(a1+a2x+…+arxr-1)=(x)(xr-1) • 因p(x)是不可约的,所以gcd(p(x),(x)) =1,p(x)|(xr-1),因此mr • 综上r=m。(证毕)
第二章 流密码:2.2 线性反馈移位寄存器 2.2.3 m序列产生器 • p(x)是n次不可约多项式时的状态转移图: • 以r为周期的序列遍历其中的r个状态 • 由前面的分析,对应任意的p(x) 2n-1个状态的状态转移图由若干个不同的圈组成,所有圈遍历的状态之和正好是2n-1个 • 如果p(x)不可约,则所有可能序列的周期都是r,那么全部状态的状态转移图将是(2n-1)/r个圈
第二章 流密码:2.2 线性反馈移位寄存器 2.2.3 m序列产生器 • 定理2.5 n级LFSR产生的序列有最大周期2n-1的必要条件是其特征多项式为不可约的。 • 证明:设n级LFSR产生的序列周期达到最大2n-1,除0序列外,每一序列的周期由特征多项式惟一决定,而与初始状态无关。 • 注意:只要有一条序列为m序列,则所有非0序列都是m序列 • 设特征多项式为p(x),若p(x)可约,可设为p(x)=g(x)h(x),其中g(x)不可约,且次数k<n。由于G(g(x))G(p(x)),而G(g(x))中序列的周期一方面不超过2k-1,另一方面又等于2n-1,这是矛盾的,所以p(x)不可约。(证毕) • 该定理的逆不成立,即LFSR的特征多项式为不可约多项式时,其输出序列不一定是m序列。 • 由定理2-4易知,n次不可约多项式的周期不一定等于2n-1,可能是其一个因子
第二章 流密码:2.2 线性反馈移位寄存器 2.2.3 m序列产生器 • 判断一个多项式是否是不可约多项式是一个困难问题,像大数分解一样。用低于其次数的所有不可约多项式去除,如果都不能除尽则是不可约的,一些低次不可约多项式,比如 • x, x+1;x2+x+1;x3+x2+1,x3+x+1;x4+x3+1,x4+x+1,x4+x3+x2+x+1,… • 注意如果多项式p(x)是不可约的,则其互反多项式也是不可约的 • 【例2-4】: f(x)=x4+x3+x2+x+1为GF(2)上的不可约多项式,给定初始状态0001,则输出序列为? • 解:以f(x)为特征多项式的LFSR的输出序列可由递推式 • ak=ak-1ak-2ak-3ak-4 (k4) 和给定的初始状态求出,现在初始状态为0001,则有 • 输出序列为000110001100011…,周期为5,不是m序列。 • 这是因为 f(x)|(x5-1) 状态(a4,a3,a2,a1) 输出 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 1
第二章 流密码:2.2 线性反馈移位寄存器 2.2.3 m序列产生器 • 定义2-4:若n次不可约多项式p(x)的阶为2n-1,则称p(x)是n次本原多项式 • 定理2.6 设{ai}G(p(x)),{ai}为m序列的充要条件是p(x)为本原多项式。 • 证明: • 若p(x)是本原多项式,则其阶为2n-1,由定理2.4得{ai}的周期等于2n-1,即{ai}为m序列。 • 反之, • 若{ai}为m序列,即其周期等于2n-1,由定理2.5知p(x)是不可约的。 • 由定理2.3知{ai}的周期2n-1整除p(x)的阶,而p(x)的阶不超过2n-1,所以p(x)的阶为2n-1,即p(x)是本原多项式。(证毕)
第二章 流密码:2.2 线性反馈移位寄存器 2.2.3 m序列产生器 • 在有限状态机模型中,若某n-LFSR产生一个m-序列,则其状态图除了单点(00…0)构成的圈外,就是由F2n\{(00…0)}中所有点排列而成的一个大圈,因而其任何非全零的输出序列均是m-序列,故称之为m-序列生成器。 • 已经证明,对于任意的正整数n,至少存在一个n次本原多项式。所以对于任意的n级LFSR,至少存在一种连接方式使其输出序列为m序列。
第二章 流密码:2.2 线性反馈移位寄存器 2.2.3 m序列产生器 • 【例2-5】设p(x)=x4+x+1,由于p(x)|(x15-1),但不存在小于15的常数l,使得p(x)|(xl-1),所以p(x)的阶为15。p(x)的不可约性可由x,x+1,x2+x+1等都不能整除p(x)得到,所以p(x)是本原多项式。 • 若LFSR以p(x)为特征多项式,则输出序列的递推关系为 • ak=ak-1ak-4 (k4) • 若初始状态为1001,则输出为:100100011110101100100011110101… • 状态序列为: 1001,0100,0010,0001,1000,1100,1110,1111,0111,1011,0101,1010,1101,0110,0011,1001,0100,0010,0001…… • 可见,它是周期为24-1=15,即输出序列为m序列。
第二章 流密码:2.2 线性反馈移位寄存器 2.2.4 m序列的破译及B-M算法 • m序列虽然具有最大的周期,然而因它是线性序列而极其不安全,只要知道连续的2n个bit的序列就可以完全破译了。即可以求出m序列产生器特征多项式的n个系数。 • 因此线性反馈移位寄存器序列不能用作密钥流 • 之所以需要2n个比特,是因为唯一确定一个m序列生成器的参数包括n个比特的状态和n个系数 • 事实上如果我们知道LFSR是m序列产生器及其级数的话,那么cn=1就确定了,这时只要知道连续的2n-1个比特序列就可以破译 • 当然如果不知道序列的级数,甚至也不知道是否m序列时,我们有更一般的序列综合算法:B-M算法来求解
第二章 流密码:2.2 线性反馈移位寄存器 2.2.4 m序列的破译及B-M算法 • 一、已知m序列产生器的级数和连续的2n个密钥流比特,来破译m序列 • 这时由这2n个密钥流比特带入递推式可以得到n个关于特征多项式系数的方程,联立方程组后即可求解 • 下面我们将证明,一定有唯一解 • 有限域上的二元加法序列密码是目前最为常用的序列密码体制 • 设滚动密钥生成器是线性反馈移位寄存器,产生的密钥是m序列。又设Sh和Sh+1是序列中两个连续的n长向量(两个连续的状态),其中
第二章 流密码:2.2 线性反馈移位寄存器 2.2.4 m序列的破译及B-M算法 • 设序列{ai}满足线性递推关系 • ah+n=c1ah+n-1 c2ah+n-2…cnah • 可表示为: • 即Sh+1=M·Sh,M是其中矩阵 • 又设敌手知道一段长为2n的明密文对 • x=x1x2..x2n,y=y1y2..y2n • 于是由二元加法流密码加密变换变型算法zi=xiyi可得长为2n的密钥序列 z=z1z2..z2n
第二章 流密码:2.2 线性反馈移位寄存器 2.2.4 m序列的破译及B-M算法 • 由长为2n的密钥序列可推出LFSR连续的n+1个状态: • S1=(z1z2..zn)T记为 (a1a2..an)T (此处教材中少了转置符号) • S2=(z2z3..zn+1)T记为 (a2a3..an+1)T • … • Sn+1=(zn+1zn+2..z2n)T记为 (an+1an+2..a2n)T • 作矩阵X=(S1S2…Sn) • 则(an+1an+2..a2n)=(cncn-1..c1) =(cncn-1..c1)X • 若X可逆,则(cncn-1..c1)=(an+1an+2..a2n)X-1 • 即2n个元素构成一个行向量和一个矩阵,从而可以推导出密钥产生器的生成多项式
第二章 流密码:2.2 线性反馈移位寄存器 2.2.4 m序列的破译及B-M算法 • 而X是由S1S2…Sn作为列向量构成的,要证X可逆,只需证明这n个向量线性无关 • 证明: • 由序列递推式ah+n=c1ah+n-1 c2ah+n-2…cnah • 可得向量之间递推关系 Sh+n=c1Sh+n-1 c2Sh+n-2…cnSh • 在二元域上 Sh+n=c1Sh+n-1+c2Sh+n-2+…+cnSh • 对于n级m序列,n是生成该序列的最小级数 • 设m是使S1,S2,…,Sm线性相关的最小整数,即存在一组不全为0的系数l1,l2,…,lm,不妨设l1=1使得m个非零向量满足 • Sm+l2Sm-1+l3Sm-2+…+lmS1=0 • 即 Sm=l2Sm-1+l3Sm-2+…+lmS1(二元域加法)
第二章 流密码:2.2 线性反馈移位寄存器 2.2.4 m序列的破译及B-M算法 • 那么对于任意整数i有,方程两边同时左乘Mi得 • Sm+i=MiSm=Mi(l2Sm-1+l3Sm-2+…+lmS1) • =l2MiSm-1+l3MiSm-2+…+lmMiS1 • =l2Sm+i-1+l3Sm+i-2+…+lmSi+1 • 由于以上关系式对任意的i都成立,所以它也给出了密钥流的一个递推关系式 • am+i=l2am+i-1 l3am+i-2…lmai+1 • 即密钥流可以由m-1级LFSR生成,而由已知得m序列密钥流的级数最小为n,所以必有n<=m-1 • 而m是使得S1,S2,…,Sm线性相关的最小整数,现在n<m所以n个向量S1,S2,…,Sn必线性无关,即矩阵X可逆。
第二章 流密码:2.2 线性反馈移位寄存器 2.2.4 m序列的破译及B-M算法 • 【例2-6】设敌手得到密文串101101011110010和相应密文串011001111111001,并且假定敌手还知道密钥流是使用5级移位寄存器产生的,采用二元加法流密码。试破译该密钥流产生器,即求解出递推关系 • 解:由明密文串立即可得相应得密钥流为二者对应位异或,得110100100001011 • 由已知的移位寄存器的级数5,提取密钥流的前10个比特,建立如下方程: • STn+1=CX • (a6a7a8a9a10)=(c5c4c3c2c1) ,即(0 1 0 0 0)=(c5c4c3c2c1)
第二章 流密码:2.2 线性反馈移位寄存器 2.2.4 m序列的破译及B-M算法 • 而 = ,从而(c5c4c3c2c1)=(0 1 0 0 0) • 所以有(c5c4c3c2c1)=(10010) • 从而密钥流的递推关系为 • ai+5=c2ai+3c5ai=ai+3ai • 矩阵的逆满足A-1=A*/|A|等于A的伴随阵除以A的行列式 • 解方程组还可用克莱姆法则,ci=|D6-i|/|D|由于矩阵满秩,|D|=1 • 这种方法不容易确定所适用的LFSR的级数n,从而不能导致恰当规模的线性方程组;并且当上述n很大时,求解相应规模线性方程组也很困难。
第二章 流密码:2.2 线性反馈移位寄存器 2.2.4 m序列的破译及B-M算法 • (二) B-M算法 • 当不知道LFSR的特性和级数时,对于给定的N长的密钥流比特(a1,a2,…,aN),基于B-M算法可求解出产生该序列的最短的LFSR及其极小多项式 • B-M算法即著名的Berlekamp-Massey迭代算法,用于解决LFSR的综合问题 • LFSR的综合问题就在于根据序列的少量比特求出整个序列的线性复杂度n和极小多项式f(x) 。所以由m序列的2nbit肯定能求出生成多项式和级数 • 即如下问题: • 设a(N)=(a1,a2,…,aN)是一个长度为N的序列,fN(x)是一个能生成a(N)且级数最小的LFSR的特征多项式,lN是LFSR的级数,则把<fN(x),lN>称为a(N)的线性综合解 • 1969年Berlekamp和Massey给出了求解<fN(x),lN>的迭代算法
第二章 流密码:2.2 线性反馈移位寄存器 2.2.4 m序列的破译及B-M算法 注:在二元域上dndm-1=1