1.66k likes | 1.98k Views
序列密码. 《 现代密码学 》 第 5 章. 本章主要内容. 1 、序列密码的基本概念 2 、线性反馈移位寄存器 3 、线性移位寄存器的一元多项式表示 4 、 m 序列的伪随机性 5 、 M 序列的特性 6 、 m 序列密码的破译 7 、非线性序列 8 、 欧洲 NESSIE 工程及其征集的 Lili-128 候选算法 9 、习题. 1. 序列密码的基本概念. 序列密码的基本思想是利用密钥 k 产生一个密钥流 z=z 0 z 1 … ,并使用如下规则对明文串 x=x 0 x 1 x 2 … 加密:
E N D
序列密码 《现代密码学》第5章
本章主要内容 • 1、序列密码的基本概念 • 2、线性反馈移位寄存器 • 3、线性移位寄存器的一元多项式表示 • 4、m序列的伪随机性 • 5、M序列的特性 • 6、m序列密码的破译 • 7、非线性序列 • 8、欧洲NESSIE工程及其征集的Lili-128 候选算法 • 9、习题
1. 序列密码的基本概念 序列密码的基本思想是利用密钥k产生一个密钥流z=z0z1…,并使用如下规则对明文串x=x0x1x2…加密: y=y0y1y2…=Ez0(x0)Ez1(x1)Ez2(x2)…。 密钥流由密钥流发生器f产生: zi=f(k,σi),这里σi是加密器中的记忆元件(存储器)在时刻i的状态,f是由密钥k和σi产生的函数。
1. 序列密码的基本概念 分组密码与序列密码的区别就在于有无记忆性(如图)。序列密码的滚动密钥z0=f(k,σ0)由函数f、密钥k和指定的初态σ0完全确定。此后,由于输入加密器的明文可能影响加密器中内部记忆元件的存储状态,因而σi(i>0)可能依赖于k,σ0,x0,x1,…,xi-1等参数。
序列密码的例子: 设 对 定义 取K=8 明文为rendezvous 明文对应的整数序列为 17 4 13 3 4 25 21 14 20 18 密钥流为: 8 17 4 13 3 4 25 21 14 20 密文对应的整数序列为 25 21 17 16 7 3 20 9 8 12 密文为:zvrqhdujim 怎样解密?
1.1 同步序列密码 根据加密器中记忆元件的存储状态σi是否依赖于输入的明文字符,序列密码可进一步分成同步和自同步两种。 σi独立于明文字符的叫做同步序列密码,否则叫做自同步序列密码。由于自同步序列密码的密钥流的产生与明文有关,因而较难从理论上进行分析。目前大多数研究成果都是关于同步序列密码的。
1.1 同步序列密码 • 在同步序列密码中,由于zi=f(k,σi)与明文字符无关,因而此时密文字符yi=Ezi(xi)也不依赖于此前的明文字符。因此,可将同步序列密码的加密器分成密钥流产生器和加密变换器两个部分。 • 如果与上述加密变换对应的解密变换为xi=Dzi(yi),则可给出同步序列密码体制的模型如下图所示。
K K 安全信道 …… …… 滚动密钥生成器 滚动密钥生成器 同步序列密码体制模型
1.1 同步序列密码 同步序列密码的加密变换Ezi可以有多种选择,只要保证变换是可逆的即可。 实际使用的数字保密通信系统一般都是二元系统,因而在有限域CF(2)上讨论的二元加法序列密码(如下图)是目前最为常用的序列密码体制,其加密变换可表示为 yi=zi xi。
K K 安全信道 …… …… 滚动密钥生成器 滚动密钥生成器 加法序列密码体制模型
1.1 同步序列密码 一次一密密码是加法序列密码的原型。事实上,如果(即密钥用作滚动密钥流),则加法序列密码就退化成一次一密密码。 实际使用中,密码设计者的最大愿望是设计出一个滚动密钥生成器,使得密钥经其扩展成的密钥流序列具有如下性质:极大的周期、良好的统计特性、抗线性分析、抗统计分析。
1.2 有限状态自动机 有限状态自动机是具有离散输入和输出(输入集和输出集均有限)的一种数学模型,由以下3部分组成: ① 有限状态集 ② 有限输入字符集 和有限输出字符集 。 ③ 转移函数 即在状态为si,输入为Aj(1)时,输出为Ak(2),而状态转移为sk。
有限状态自动机可用有向图表示,称为转移图。转移图的顶点对应于自动机的状态,若状态si在输入A(1)i时转为状态sj,且输出一字符A(2)j,则在转移图中,从状态si到状态sj有一条标有(A(1)i,A(2)j)的弧线,见下图。有限状态自动机可用有向图表示,称为转移图。转移图的顶点对应于自动机的状态,若状态si在输入A(1)i时转为状态sj,且输出一字符A(2)j,则在转移图中,从状态si到状态sj有一条标有(A(1)i,A(2)j)的弧线,见下图。
S1 S2 S3 有限状态自动机的转移图
例: 转移函数由下表给出:
1.2 有限状态自动机 上例中,若输入序列为 ,初始状态为s1,则得到状态序列 s1s2s2s3s2s1s2 输出字符序列 思考题:如果上面的输入序列变为: 则上面的结果为什么?
2. 密钥序列生成器(KG) • 我们知道,序列密码的关键在于密钥 • 序列生成器KG的设计。一般来说,KG的输 • 入——种子密钥k是较短的,人们却希望它 • 的输出——密钥序列k对不知情的人来说象 • 是随机的。 • 到底该从哪些角度把握随机性等、才 • 使所设计出来的KG能够具有我们需要的安 • 全程度?
密钥序列生成器(KG)基本要求 • 人们就目前的想象和预见,对KG提出 • 了以下基本要求: • 种子密钥k的变化量足够大,一般应 在2128以上; • KG产生的密钥序列k具极大周期,一 般应不小于255; • k具有均匀的n-元分布,即在一个周 期环上,某特定形式的n-长bit串与其求反, 两者出现的频数大抵相当(例如,均匀的游 程分布);
密钥序列生成器(KG)基本要求 • k不可由一个低级(比如,小于106级) 的LFSR产生,也不可与一个低级LFSR产生 的序列只有比率很小的相异项; • 利用统计方法由k提取关于KG结构或 K的信息在计算上不可行; • 混乱性. 即k的每一bit均与k的大多 数bit有关; • 扩散性. 即k任一bit的改变要引起k 在全貌上的变化。
同步序列密码密钥流产生器 同步序列密码的关键是密钥流产生器。一般可将其看成一个参数为k的有限状态自动机,由一个输出符号集Z、一个状态集∑、两个函数φ和ψ以及一个初始状态σ0组成(如下图)。 状态转移函数φ:σi→σi+1,将当前状态σi变为一个新状态σi+1, 输出函数ψ:σi→zi,当前状态σi变为输出符号集中的一个元素zi。
k k k 作为有限状态自动机的密钥流生成器
作为有限状态自动机的密钥流生成器 • 这种密钥流生成器设计的关键在于找出适当的状态转移函数φ和输出函数ψ,使得输出序列z满足密钥流序列z应满足的几个条件,并且要求在设备上是节省的和容易实现的。 • 为了实现这一目标,必须采用非线性函数。
同步序列密码密钥流产生器 由于具有非线性的φ的有限状态自动机理论很不完善,相应的密钥流产生器的分析工作受到极大的限制。相反地,当采用线性的φ和非线性的ψ时,将能够进行深入的分析并可以得到好的生成器。为方便讨论,可将这类生成器分成驱动部分和非线性组合部分(如下图)。 驱动部分控制生成器的状态转移,并为非线性组合部分提供统计性能好的序列;而非线性组合部分要利用这些序列组合出满足要求的密钥流序列。
k k 驱动子 系统 非线性 组合子 系统 密钥流生成器的分解
LFSR LFSR1 F F F ……… LFSR2 …… F LFSRn 常见的两种密钥流产生器 目前最为流行和实用的密钥流产生器如图所示,其驱动部分是一个或多个线性反馈移位寄存器。
KG结构分解示意图 种子密钥k 驱动子系统 f (可线性) 非线性组合 子系统 F …… k=k0k1k2 KG的一般结构 • 通常,人们总是把KG设计得具有一定 • 的结构特点,从而可以分析和论证其强度,以增加使用者的置信度。一般有以下模式:
KG的一般结构 在上图中, • f ——一般由m-序列(或M-序列)生 成器构成,提供若干周期大、统计特性 好的序列 (称为驱动序列)。 • F ——就是把f产生的多条驱动序 列综合在一起的一些非线性编码手段, 目的是有效地破坏和掩盖多条驱动序列 中存在的规律或关系,提高线性复杂度。
N1-LFSR N2-LFSR F x ( , ) , x x , L k 1 2 t Nt-LFSR F的设计:两种典型的基本编码手段 • 非线性组合生成器 • 一个非线性组合生成器的图示如下: F是一个t元非线性布尔函数,一般要求: 具有较高的非线性次数;是平衡的。
F的设计:两种典型的基本编码手段 • 一个有关的结果是: • 若对一切i=1,2,,t,Ni-LFSR都是m- • 序列生成器,且ij(Ni,Nj)=1,则 • p(k)=(2N1-1)(2N2-1)(2Nt-1), • (k)=F*(N1,N2,,Nt),这里F*是 • 把F在F2上的多项式表示作为整数环Z上的 • 多项式来计算而得的函数。
N-LFSR k F的设计:两种典型的基本编码手段 • 非线性组合生成器的一个特殊情形是 • 所谓的非线性滤波生成器,或也称为前馈 • 网络,它的图示如下:
N-LFSR作速度因子控制器 时刻i be-1 b1 b0 输出指针初始位 置n00随意选定 (缺省值为0) D=be-1 ·2e-1++ b1·2+ b0+c 滑动 位 此时刻输出指针位置 下一时刻输出指针位置 { x } x x x L L L + 1 n n n n + i i i i 1 N x ni+1=ni+D 被钟控序列 1 x 0 F的设计:两种典型的基本编码手段 • 钟控序列生成器 • 一个钟控序列生成器的图示如下:
时钟脉冲 n-LFSR1 k m-LFSR2 F的设计:两种典型的基本编码手段 • 一个特殊情形就是“停停走走”(Stop- • and-Go)生成器,它的图示如下: • 一个有关的结果是: • 若n-LFSR1与m-LFSR2都是m-序列生成器, • 且n|m或2n-1为素数,则 p(k)=(2n-1)(2m-1), • (k)至少为[m,n](2(m,n)-1)。
输出序列 …. 2. 线性反馈移位寄存器 移位寄存器是序列密码产生密钥流的一个主要组成部分。GF(2)上一个n级反馈移位寄存器由n个二元存储器与一个反馈函数f(a1,a2,…,an)组成,如图所示。
GF(2)上的n级反馈移位寄存器 每一存储器称为移位寄存器的一级,在任一时刻,这些级的内容构成该反馈移位寄存器的状态,每一状态对应于GF(2)上的一个n维向量,共有2n种可能的状态。每一时刻的状态可用n长序列 a1,a2,…,an 或n维向量 (a1,a2,…,an) 表示,其中ai是第i级存储器的内容。
GF(2)上的n级反馈移位寄存器 初始状态由用户确定,当第i个移位时钟脉冲到来时,每一级存储器ai都将其内容向下一级ai-1传递,并根据寄存器此时的状态a1,a2,…,an计算f(a1,a2,…,an),作为下一时刻的an。 反馈函数f(a1,a2,…,an)是n元布尔函数,即n个变元a1,a2,…,an可以独立地取0和1这两个可能的值,函数中的运算有逻辑与、逻辑或、逻辑补等运算,最后的函数值也为0或1。
输出序列 GF(2)上的n级反馈移位寄存器 例:下图是一个3级反馈移位寄存器,其初始状态为(a1,a2,a3)=(1,0,1),输出可由表2.2求出。 一个3级反馈移位寄存器
状态(a1,a2,a3) 输出 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 0 1 1 1 0 一个3级反馈移位寄存器的状态和输出
线性反馈移位寄存器 即输出序列为101110111011…,周期为4。 如果移位寄存器的反馈函数f(a1,a2,…,an)是a1,a2,…,an的线性函数,则称之为线性反馈移位寄存器LFSR(linear feedback shift register)。 此时f可写为 f(a1,a2,…,an)=cna1cn-1a2…c1an 其中常数ci=0或1,是模2加法。ci=0或1可用开关的断开和闭合来实现,如下图所示。
输出序列 练习: 下图为3级反馈移位寄存器,其初始状态为 试写出其输出序列,同时考虑如果初始状态不同,输出序 列是否相同,序列的周期是否相同?
输出序列 … … GF(2)上的n级线性反馈移位寄存器
线性反馈移位寄存器 输出序列{at}满足 an+t=cnatcn-1at+1…c1an+t-1 其中t为非负正整数。或者{an}: 线性反馈移位寄存器因其实现简单、速度快、有较为成熟的理论等优点而成为构造密钥流生成器的最重要的部件之一。
输出序列 例: 一个5级线性反馈移位寄存器 例:下图是一个5级线性反馈移位寄存器,其初始状态为(a1,a2,a3,a4,a5)=(1,0,0,1,1),可求出输出序列为 1001101001000010101110110001111100110… 周期为31。
输出序列 练习: 下图为一个5级线性反馈移位寄存器,其初始状态为 则其输出序列为?
线性反馈移位寄存器 在线性反馈移位寄存器中总是假定c1,c2,…,cn中至少有一个不为0,否则f(a1,a2,…,an)≡0,这样的话,在n个脉冲后状态必然是00…0,且这个状态必将一直持续下去。 若只有一个系数不为0,设仅有cj不为0,实际上是一种延迟装置。 一般对于n级线性反馈移位寄存器,总是假定cn=1。
线性反馈移位寄存器 线性反馈移位寄存器输出序列的性质完全由其反馈函数决定。n级线性反馈移位寄存器最多有2n个不同的状态。若其初始状态为0,则其状态恒为0。若其初始状态非0,则其后继状态不会为0。因此n级线性反馈移位寄存器的状态周期小于等于2n-1。其输出序列的周期与状态周期相等,也小于等于2n-1。 只要选择合适的反馈函数便可使序列的周期达到最大值2n-1,周期达到最大值的序列称为m序列。
线性移位寄存器的输出序列 满足递推关系 (1) … 3.线性移位寄存器的一元多项式表示 当k>=1时成立。写出来看一看:
(*) 在(1) 式中两边同时加上 得到: 令 据其在输出序列 中元素的左右位置, 左移一位相当于乘以2,则有: 线性移位寄存器的特征多项式 这种递推关系可以用一个一元高次多项式来表示: 称这个多项式为LFSR的特征多项式。
注意: 线性反馈移位寄存器与特征多项式是一一对应的,如果知道了线性反馈移位寄存器的结构,可以写出它的特征多项式,同样可以根据特征多项式画出移位寄存器的结构。
设n级线性移位寄存器对应于递推关系(*),由于ai∈GF(2) (i=1,2,…,n),所以共有2n组初始状态,即有2n个递推序列,其中非恒零的有2n-1个,记2n-1个非零序列的全体为G(p(x))。