密码学流密码
第二章流密码

加法流密码: ci=Eki(mi)=mi ki
有限状态自动机FA (Finite state Automation)
具有离散输入和输出(输入集和输出集均 有限)的一种数学模型
有限状态集S={si|i=1,2,…,l} 有限输入字符集X={ Xi|i=1,2,…,m} 有限输出字符集Y={ Yk|k=1,2,…,n} 转移函数
作为FA的密钥流产生器
具有非线性的φ的FA理论很不完善,通 常采用线性φ以及非线性的ψ 可将此类产生器分为驱动部分和非线性 组合部分。 驱动部分控制状态转移 非线性组合部分提供统计特性良好的序 列
两种常见的密钥流产生器
LFSR LFSR LFSR 非线性组合函数 LFSR 非 线 性 组 合 函 数
第二章
流密码
一、流密码的基本概念 二、线性反馈移位寄存器序列 三、B-M综合算法 四、非线性序列
一、流密码的基本概念
一次一密
Ci mi ki , i 1, 2,3,
如果密钥流字符是独立的并且是随机生 成的,那么该密码算法称为一次一密 无条件安全 缺陷:
密钥和明文长度相同,密钥分配和管理困难
一流密码的基本概念二线性反馈移位寄存器序列三bm综合算法四非线性序列一次一密如果密钥流字符是独立的并且是随机生成的那么该密码算法称为一次一密流密码是将明文划分成字符如单个字母或其编码的基本单元如01数字字符分别与密钥流作用进行加密解密时以同步产生的同样的密钥流实流密码强度完全依赖于密钥序列的随机性randomness和不可预测性unpredictability
满足密码体制的另外三个条件
现代密码学第五讲(一):流密码

现代密码学第五讲(一):流密码《现代密码学》第五讲流密码(一)上讲内容回顾分组密码定义(分组填充)分组密码的发展历史(Shannon DES AES。
)保密系统的安全性分析及分组密码的攻击(主动/被动唯密文/已知明(密)文/选择明(密)文/自适应选择明(密)文)数据加密标准(DES)算法介绍高级加密标准(AES)算法介绍中国无限局域网标准(SMS4)算法介绍?分组密码算法的运行模式本章主要内容流密码(序列密码)的思想起源?流密码技术的发展及分类基于移位寄存器的流密码算法?其它流密码算法Estream推荐流密码算法软件算法硬件算法密钥流生成器种子密钥明文m1k1c1m2k2c2加密过程密钥流生成器种子密钥密文c1k1m1c2k2m2解密过程设明文为m=m1m2… m i∈GF(2), i>0?设密钥为k=k1k2… ki∈GF(2), i>0?设密文为c=c1c2… c i∈GF(2), i>0?则加密变换为c i=m i+ k i(mod 2) i>0?则解密变换为m i=c i+ k i(mod 2) i>0思想起源:20世纪20年代的Vernam 体制,即“一次一密”密码体制。
香农利用信息论证明“一次一密”密码体制在理论上不可破译?由有限的种子密钥生成无限长的随机密钥序列?流密码研究内容——设计安全高效的伪随机序列发生器密钥流生成、存储和分发困难随机序列计算机无法实现评测标准:线性复杂度高;周期大Golomb伪随机性测试周期为r的0-1序列的随机性公设如下:r是奇数,则0-1序列{si}的一个周期内0的个数比1的个数多一个或少一个;若r是偶数,则0的个数与1的个数相等.在长度为r的周期内,长为1的游程的个数为游程总数的1/2,长为2的游程的个数占游程总数的1/22,…, 长为c的游程的个数占总游程的1/2c.而且对于任意长度,0的游程个数和1的游程个数相等.例:0110111101中,4个游程长度为1,1个游程长度为2,1个游程长度为4异相自相关函数是一个常数.设一个周期为r的序列a1, a2,…, a r, a r+1, a r+2,…,将序列平移T位得到另外一个序列a T, a T+1,… a r+T, a r+T+1,…,若a i= a i+T, 则称对应第i位相等。
密码学02-流密码

极大的周期:一般来说不应小于255
良好的统计特性
密钥流序列k具有均匀的n-元分布,即在一个周期环上,某特定形 式的n-长bit串与其求反,两者出现的频数大抵相当(例如,均匀的 游程分布)
20/85
密钥流序列z不可由一个低级(比如,小于106级)的LFSR 产生,也不可与一个低级LFSR产生的序列只有比率很 小的相异项;
(A2(1), A1(2))
(A2(1), A3(2))
s1
(A3(1), A2(2)) (A1(1), A1(2)) (A1(1), A3(2)) (A1(1), A2(2)) (A3(1), A1(2))
14/85
s2
s3
(A2(1), A2(2))
在例2-1中,若
输入序列为A1(1)A2(1)A1(1)A3(1)A3(1)A1(1) 初始状态为s1,
如果密钥流序列周期为n,而人为改变其1比特后周期急剧变小, 例如变为n/t,则序列的安全性就大为减小。
抗统计分析
利用统计方法由密钥流提取关于KG结构或k的信息在计算上不可 行;
混乱性. 即z的每一bit均与z的大多数bit有关; 扩散性. 即z任一bit的改变要引起z在全貌上的变化。 抗线性分析
Ak(2)=f1(si, Aj(1)),sh=f2(si, Aj(1)) 即在状态为si,输入为Aj(1)时,输出为Ak(2),而状态转移为sh。
12/85
【例2-1】
S={s1,s2,s3}, A1={A1(1),A2(1),A3(1)},A2={A1(2),A2(2),A3(2)},转移函数由 表2-1给出 f1 s1 s2 s3 f2 s1 s2 A1(1) A1(2) A2(2) A3(2) A1(1) s2 s3 A2(1) A3(2) A1(2) A2(2) A2(1) s1 s2 A3(1) A2(2) A3(2) A1(2) A3(1) s3 s1
大学安全工程之密码学5第五章 流密码

回忆:Vigenère密码•加密消息:INDIVIDUAL CHARACTER密钥:HOSTm=I ND I V I DU ALCH ARAC TERk=HOST HOST HOST HOST HOSE k(m)=P BV B C W VN HZUA HFSV ASJ1One-Time Pad•用和明文一样长的随机密钥流K •加密:M = C = K = Z2nc i = mi⊕kiOTP: 安全性分析•定理:OTP is Unconditional Security3第五章流密码•流密码总览•伪随机序列发生器(Pseudorandom Number Generation)•PRNGs-Linear Feedback Shift Register (LFSR)-Blum Blum Shub(BBS)•流密码4流密码•一次一密(OTP): C=P⊕K ,K 是随机密钥流•流密码:–思想: 代替“随机”为“伪随机”–用Pseudorandom Number Generator (PRNG)–PRNG: {0,1}s→{0,1}n–种子是秘密密钥•C=M⊕PRNG(seed)56回忆分组密码•加密消息的方式–分组密码•c=(c 1c 2…)(c i c i+1…)... = e K (m 1m 2...) e K (c i c i+1…)…–流密码•c=c 1c 2…=e k1(m 1)e k2(m 2)…•密钥流(k 1,k 2,…)流密码:性质•数学性较好–OTP 绝对保密–伪随机有很长的研究历史•加密速度很快–基于“⊕”•密钥流只能用一次–已知明文攻击–PRNG的周期应该足够长•应用很广–Network, DVD,移动通信8第五章流密码•流密码总览•伪随机序列发生器(Pseudorandom Number Generation)•PRNGs-Linear Feedback Shift Register (LFSR)-Blum Blum Shub(BBS)•流密码9伪随机数应用•相互认证–使用一次性随机数来防止重放攻击•会话密钥的产生–用随机数作为会话密钥•公钥密码算法中密钥的产生–用随机数作为公钥密码算法中的密钥–以随机数来产生公钥密码算法中的密钥10密码学中对伪随机数的要求•随机性–均匀分布:数列中每个数出现的频率相等或近似相等•不可预测性–密码分析者很难从数列前边的数预测出后边的数11PRNG•定义:一个伪随机序列发生器G是一个确定的多项式算法,使得–∃l(n)>n, ∀x, |G(x)| = l(|x|)–伪随机性:{G(U n); n≥1} 同一个随机序列{U l(n);n≥1}是多项式不可区分的12伪随机性•定义:两个随机序列{X n; n≥1} 和{Y n; n≥1}是多项式不可区分的,如果:∀多项式布尔函数f: {0,1}*→{0,1}∀正的多项式p(x) 和n≥N|Pr(f(X n)=1) –Pr(f(Y n)=1)| < 1/p(n)•定义:两个随机序列{X n; n≥1} 和{Y n; n≥1}是统计不可区分的,如果:∆(n) = ½Σx∈{0,1}n|Pr(X n=x) -Pr(Y n=x)| < 1/p(n)13Golomb随机性检测1)在序列的一个周期内,0和1的个数相差至多为12)在序列的一个周期内,长为1的游程占总游程数的1/2,长为2的游程占总数的1/22,…长为i的游程占游程总数的1/2i,…,且在等长的游程中,0和1游程个数至多相差为13)异自相关函数是一个常数•满足以上三个条件的序列称为伪随机序列,也称为拟噪声序列(Pseudo Noise Sequence,PN序列)15举例•讨论序列:1010111011000111110011010010000 1010111011000111110011010010000...是否满足Golomb随机性检测的前2个条件?•周期:31•0的个数15;1的个数16•0和1的1-游程个数都为4;0和1的2-游程个数都为2;0和1的3-游程个数都为1;0的4-游程个数为1 1的4-游程个数为0;0的5-游程个数为0;1的5-游程个数为1•i-游程个数占游程总数的1/2i16第五章流密码•流密码总览•伪随机序列发生器(Pseudorandom Number Generation)•PRNGs-Linear Feedback Shift Register (LFSR)-Blum Blum Shub(BBS)•流密码17LFSR的最大长度•定理:LFSR的最大序列长度是2n-1, ( n 指寄存器个数)•Proof:–For K={k0, k1,…, k L}, there are 2L different states–The sequence for K is K1,K2,…,K2L,K i,…K i must be in K1,K2,…,K2L•So repeated–If bits in K are all zero, should be excluded–So 2L-125m-序列(m-sequence)•定义:由LFSR产生的最大长度序列是m-序列}说明:•m-序列{zi–{z} 的周期是:2n-1i–满足Golomb随机性检测•在一个周期内, 0和1的个数是2n-1-1及2n-1•其它…26m-序列内涵•定理:{ai } 是m-序列当且仅当它的特征多项式p(x)是本原多项式•定义:如果p(x)的次数是n,且其周期为2n-1,则称p(x)为本原多项式•定义:设p(x)为GF(2)上的多项式,使式子p(x)|x p-1成立的最小正整数p称为p(x)的周期2829线性复杂性•设{a i } 的线性复杂性是L •已知明文攻击:•复杂性:–L 已知: 用线性关系O(L)–L 未知:用Berlekamp-Massey 算法O(L 2)=L 21c .c c ..⎢⎢⎢⎣⎡⎢⎥⎥⎥⎥⎦⎤n+L-1n+1n a .a a ..⎢⎢⎢⎣⎡⎢⎥⎥⎥⎥⎦⎤n+L-2n n-1a .a a ..⎢⎢⎢⎣⎡⎢n+L-3n-1n-2a .a a ...…..n-1n-L +1n-L a .a a ..⎥⎥⎥⎥⎦⎤……实际应用中的非线性序列•对于非线性序列的研究还在初级阶段•实际应用中的非线性序列–用m-序列作为驱动序列–非线性混合序列–钟控序列31钟控序列•思想:用一些m-序列来驱动其它m-序列•Advantages:–Its linear complexity is exponential with the number of registers in LFSR–Its linear complexity can be controlled easily •Disadvantages:–Not good randomness–Many long runs33第五章流密码•流密码总览•伪随机序列发生器(Pseudorandom Number Generation)•PRNGs-Linear Feedback Shift Register (LFSR)-Blum Blum Shub(BBS)•流密码35Blum Blum Shub发生器•产生伪随机序列的另一种方法:基于数论中的难题•Shamir发生器–分解问题•BBS 发生器–二次剩余问题3637Blum Blum Shub 发生器1. 产生两个大的素数p 和q (p ≡q ≡3 mod 4)2. 计算n=pq3. 选择一个随机的整数x ,gcd(x,n)=14. BBS 的初始输入是: x 0≡x 2(mod n )5. 最后,BBS 通过如下过程产生一个随机的序列b 1 b 2 b 3…:a) x j ≡x j-12(mod n )b) b j 是x j 的最低有效比特BBS发生器:举例1. 产生:p=24672462467892469787q=3967368945678345898032. 则n=97884761408531107941688552174137157819613. 选择x=8732456478884783490134. 则初始输入就是:x≡x2(mod n)≡884529871047878009708991774601012286317238BBS发生器:举例5. 由公式x j≡x j-12(mod n)可得x1,x2,…,的值:x1 ≡7118894281131329522745962455498123822408 x2 ≡3145174608888893164151380152060704518227 x3 ≡4898007782307156233272233185574899430355 x4 ≡3935457818935112922347093546189672310309 x5 ≡675099511510097048901761303198740246040 ... ...b2 b3 b4 b5 …=01110…则产生的序列是b139BBS发生器分析•Fact:If there is a distinguisher D which tells BBS from random sequence, then D can be converted into a probabilistic polynomial-time algorithm A which guess the x-1mod 2 givenx0∈Z N Q+ (D⇒A)40第五章流密码•流密码总览•伪随机序列发生器(Pseudorandom Number Generation)•PRNGs-Linear Feedback Shift Register (LFSR)-Blum Blum Shub(BBS)•流密码41流密码设计目标•设计一个性能良好的流密码是一项困难的任务:–长周期–高线性复杂度–统计性能好–足够的“混乱”42A543A5 说明•钟控序列–由3个m-序列驱动–由3个LFSRs产生–主要函数是非线性的•应用–A5 可以在GSM中保护语音通信44了解RC4•Designed by Ron Rivest in 1987, public in 1994•Simple and effective design–Very fast and very easy to remember•Byte-oriented stream cipher–The internal states is a byte array S[0..255]–S[0..255] is a permutation of 0 to 255•Applications–In SSL to protect the Internet traffic–In WEP to protect the wireless links45RC4:初始化•Produce a initial permutation from the key K(K is divided into L bytes. In fact, this is a pad)•Initialisation:for i=0to 255 do S[i] = i;j =0;for i=0to 255 doj= (j +S[i] + K[I mod L]) mod 256;swap (S[i], S[j]);46RC4: 加密•Two indexes: i, j with i=j=0•Produce one byte of keystream Ks:i = (i + 1)mod 256;(Loop for next Ks)j = (j + S[i])mod256;swap (S[i], S[j]);t = (S[i] + S[j])mod256;Ks = S[t];•Encryption: C i= M i⊕S[t]47RC4安全•RC4的周期是:256! ≈21700•宣称可抵抗已知的所有攻击–有一些分析, 没有实践49总结•流密码总览•伪随机序列发生器(Pseudorandom Number Generation)•PRNGs-Linear Feedback Shift Register (LFSR)-Blum Blum Shub(BBS)•流密码-A5-RC450。
第3-4讲 流密码概述

序列:按状态图的状态转移关系,依次取出各状 态相同位置的一个分量,即得序列:01111010110 0100„„
结论:产生一个周期为15的序列及一个全零序列。
该移存器的周期是最长周期。 称能产生m序列的移存器为本原移存器,该 移存器对应的反馈多项式为本原多项式。 本原多项式所产生的序列是最长周期序列, 即 2 r 1 ,称为m序列。
1、逻辑框图表示
1
2
3
4
含有4个二元存储器,2,3,4级的开关是连 通的,参与反馈。
2、线性递推式表示
一个r级线性移存器的线性递推式表示为:
an1 c1an c2an1 cn a1
含义:表示序列中第n+1个信号与其前n个信号 的线性制约关系。
an an-1 an-2 an-3 an-4
3、反馈多项式表示 一个r级线性移存器的反馈多项式表示为:
f ( x) cr x r cr 1 x r 1 c1 x 1
x1
x2
x3
x4
f ( x) x 4 x3 x 2 1
用反馈多项式(特征多项式)表示,可利用有限 域的理论深入细致的考查移存器序列的特性。
反馈多项式的含义
(1)若 f ( x), g ( x) A(a) ,则 f ( x) g ( x) A(a), ( f g )
(2)若 f ( x) A(a), g ( x) F[ x] ,则 f ( x) g ( x) A(a)
但给定一个序列a,能产生序列a的多项 式有很多
给定反馈多项式f(x)后,f(x)产生的序列A就完
状态图:为了从直观上描述反馈移存器的状 态转移情况,可以使用一些方框及联接这些方框 的箭头组成的图形,在数学上,把表示反馈移存 器功能的图形称为状态转移图。 在状态图中,从任意状态出发,依次取出各 状态相同位置的分量,即得到输出序列。 3级线性移位寄存器产生序列为:0111010…… 和一个全零序列。
古典密码和流密码的原理及应用

古典密码和流密码的原理及应用古典密码和流密码是密码学中两种基本的加密方法,它们都有着各自独特的原理和应用。
本文将深入介绍古典密码和流密码的原理,以及它们在实际中的应用。
古典密码是指一种使用简单的替换或排列规则对明文进行加密的加密方法。
古典密码包括凯撒密码、简单曹文和多替换密码等。
凯撒密码是最为典型的古典密码之一。
凯撒密码顾名思义,就是由古罗马军事家凯撒创立的一种密码算法。
凯撒密码的原理是将明文中的每个字母按照一个固定的偏移量进行位移,以得到密文。
若偏移量为3,那么明文中的字母A就被替换成D,B替换为E,以此类推。
而解密过程则是将密文中的字母按同样的偏移量进行逆向位移,得到原始明文。
古典密码的原理相对简单,适用于只具备基本加密需求的场景。
由于其固定的替换或者排列规则,古典密码容易受到密码分析的攻击,安全性较低。
在现代的密码保护领域,古典密码已经渐渐被更安全的加密方法所替代。
流密码是另一种加密方法,它采用了更为复杂的原理进行加密。
流密码的基本原理是利用一个伪随机序列对明文进行逐位的加密。
这个伪随机序列可以通过特定的算法以及一个密钥生成,而密钥则决定了伪随机序列的生成规则。
流密码的一个经典应用是RC4流密码算法。
RC4是由著名密码学家罗纳德·里维斯提出的一种流密码算法,它被广泛应用于SSL/TLS协议中,用于保护网络通信的安全性。
RC4算法使用了一个变长的密钥进行初始化,并以此生成一个伪随机的密钥流,再将这个密钥流与明文进行逐位的异或运算,得到密文。
解密过程与加密过程类似,将密文与生成的密钥流进行异或运算,还原出原始明文。
流密码相对于古典密码来说,具有更高的安全性。
因为伪随机序列的长度会根据密钥的长度而变化,使得密码分析者难以找到规律进行破解。
流密码的加密过程是逐位进行的,使得即使部分明文泄露,也无法得知整个密文的信息。
流密码则可以提供更高的安全性,适用于对信息保密要求较高的场景,比如网络通信和金融交易等领域。
密码学-流加密法

ki = pi XOR ci 对于 LFSR ,秘钥串的各位由下式给出:
ai is one if there is an ith feedback link Same as XOR
Method (continued)
如果已知明文流的位数n等于或者大于2m(m 是LFSR的大小),那么 就可以通过求解如下 线形方程得出反馈向量分量ai):
T
h
e
e
n
d
位串匹配攻击法
破解基于 LFSR的流加密法可采用位串匹 配法,它需要: – 明文位串及相应的密文串 – LFSR 的大小(尝试几个合理值) – 找出反馈位,重构秘钥生成器
Method
攻击法假设有一段m位明文流 pi (i = 0 to m-1) 及对应 的m位明文流 ci (i = 0 to m-1). –可以得到秘钥串ki :
– 使用二进制位的一个特殊运算:异或逻辑运算 (XOR)
XOR Function
XOR 有两个输入,一个输出,如果两个输入 不同,则输出为1,真值表如下:
A B
XOR
F
A 0 0 1 1
B 0 1 0 1
F 0 1 1 0
A will be the plaintext and B the key
Using CAP
CAP 的随机测试
Stream Ciphers in CAP
CAP will implement a LFSR stream cipher
– First convert the plaintext to binary – Second, run the stream cipher option
密码学课件3(流密码)

1 0 1 1 1 0
即输出序列为101110111011…,周期为4。 如果移位寄存器的反馈函数f(a1,a2,…,an)是a1,a2,…,an的 线性函数,则称之为线性反馈移位寄存器LFSR(linear feedback shift register)。此时f可写为 f(a1,a2,…,an)=cna1 cn-1a2 … c1an 其中常数ci=0或1 2加法。ci=0或1可用开关的断开 和闭合来实现,如图2.10所示。
流密码与分组密码的比较:
流密码的特点: 优点:处理速度快,实时性能好,错误传播小 缺点:明文扩散性差,密钥须同步 分组密码的特点:
优点:明文扩散性好,不需密钥同步
缺点:加密速度慢,错误易扩散和传播
图2.1 分组密码和流密码的比较
图2.1 分组密码和流密码的比较
2.1.1 同步流密码
根据加密器中记忆元件的存储状态σi是否依赖于输入的明文 字符,流密码可进一步分成同步和自同步两种。σi独立于明文 字符的叫做同步流密码,否则叫做自同步流密码。由于自同 步流密码的密钥流的产生与明文有关,因而较难从理论上进 行分析。目前大多数研究成果都是关于同步流密码的。在同 步流密码中,由于zi=f(k,σi)与明文字符无关,因而此时密文字 符yi=Ezi(xi)也不依赖于此前的明文字符。因此,可将同步流密 码的加密器分成密钥流产生器和加密变换器两个部分。如果 与上述加密变换对应的解密变换为xi=Dzi(yi),则可给出同步 流密码体制的模型如图2.2所示。
1
从而得到
0 1 c5 c4 c3 c2 c1 0 1 0 0 0 0 0 1
1 0 0 1 0 0 1 0 0 0 0 1 1 0 11 0 11 0
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
xi
加法流密码体制模型
因此,同步流密码设计的主要目标是设计出 一个滚动密钥生成器,使得密钥 k 经其扩 展成的密钥流序列 Z 具有如下性质:极大 的周期、良好的统计特性、抗线性分析、抗 统计分析。
2. 密钥流产生器
密钥产生器由一个输出符号集 、一个状 态集 、一个状态转移函数 、一个输出 函数 以及一个初始状态 0 组成。 设计的关键在于找出合适的状态转移函数 和输出函数使得输出的密钥流序列满足应 有的性质,并要求在设备是节省的和容易 实现的。
1.
2.
M序列的伪随机性 以上我们研究了利用线性反馈移位寄存器产生 流密码的密钥流序列问题。由于流密码的安全 性取决于密钥流的安全性,密钥流序列至少应 满足:良好的统计性、周期大、抗线性分析、 抗统计分析等特征。 如果一个密钥流序列有好的随机性,使得密码 分析者对它无法预测,采用这样的密钥流无疑 会增加流密码的安全性。本节我们就来研究密 钥流序列的统计特征:随机性。
1. 同步流密码
根据加密器中的记忆元件 i 的存贮状态是 否依赖于明文字符,流密码可进一步分成同 步和自同步两种。将 i 独立于明文字符的 叫同步流密码,否则称为自同步流密码。但 是由于自同步流密码的密钥流的产生与明文 有关,因而较难从理论上进行分析。目前大 多数研究成果都是关于同步流密码的。
输出序列
a5
a4
+
a3
a2
a1
一个5级的线性反馈移位寄存器
线性反馈移位寄存器的输出序列的性质由其 反馈函数决定。n级的线性反馈移位寄存器 最多有 2n 个不同的状态,除去初始状态为0 的状态外,n级线性反馈移位寄存器的最多 有2n - 1个状态,因此一个n级线性反馈移 位寄存器其输出序列的周期不会超过 2n - 1 称周期为 2n - 1 的输出序列为m序列。
X = (S 1S 2 L S n )
利用递推关系
S n + 1 = (cn cn - 1 L c1 )X
可以证明X是可逆的,于是 (cn cn - 1 L c1 ) = S n + 1X -
1
非线性序列
1. 2. 3. 4.
前面我们已经知道,一个密钥流生成器由一个驱 动子系统和一个非线性组合子系统组成。线性 反馈移位寄存器是实现密钥流生成器的驱动子 系统常用的方法。为了方便,称每个LFSR的输 出为一个驱动序列。本节我们将讨论密钥流生 成器的另一个子系统—非线性组合子系统—的 实现问题。下面介绍4种由多个LFSR驱动的非线 性序列生成器。 Geffe序列生成器 J-K触发器 Pless生成器 钟控序列生成器
从密码学的角度,一个伪随机序列还应满足下 面的条件: {a i } 的周期相当大。 1. 2. 确定 {a i } 在计算上是不可行的。 3. 由密文及相应的明文的部分信息,不能确定整 个的 {a i } 。 下面的定理表明,m序列满足随机性的3个公设。
定理:GF(2)上n长的m序列 {a i } 具有下面的性 质: 在一个周期内,0与1的个数相差为1。 2n - 1 ,对 在一个周期内,总游程数为 1 #i n - 2, 长为 i 的游程有 2n - i - 1 ,其中0 和1的游程各半;长为n-1的0游程一个;长 为n的1游程一个。 t = 0 {a i } 的自相关函数为: 1,
R (t ) = { 1 0 < t ? 2n , n- 1 2
2
M序列密码的破译 GF(2)上的加法流密码是目前最为常用的流密码 体制,下面对该体制讨论其密码破译的方法。 设滚动密钥流产生器是线性反馈移位寄存器, 产生的密钥流是一个m序列。还设
骣 ah ÷ ç ça ÷ ç h+ 1 ÷ ÷ ç ÷ ç ÷ Sh = ç ÷ ç M ÷ ÷ ç ÷ ç ÷ ça ç h+ n- 1 ÷ ÷ 桫 ç ÷
目前最为流行和使用的密钥流产生器中,其驱 动部分时由一个或多个线性反馈移位寄存器组 成。如:
LFSR LFSR1 LFSR2
L
F F
zi
M
LFSRn
zi
常见的两种密钥流产生器
线性反馈移位寄存器LFSR
移位寄存器是产生密钥流的主要组成部分。GF(2) 是上的一个n级反馈移位寄存器是由n个二元寄存 器和一个反馈函数 f (a1 , a2 ,, an ) 组成。 输出序列
p(x ) | (x p - 1)
的最小的p称为 p(x ) 的周期或阶。 我们有下面的结论:(对于n级LFSR产生的序列) 定理2:设序列 {ak } 的特征多项式 p(x ) 定义在GF(2) p 是一个周期为m的n次不可约多项式, 上,若 (x ) 则 {ak } 的周期为m。
我们称周期为2n-1的n次不可约多项式为本原多项式。
3.
如果密钥流序列是周期的,要做到真正 随机性是不可能的,但只要截获比周期 短的一段密钥流时,不会泄漏更多的信 息,这样的序列称为伪随机序列。
现在我们来讨论m序列的随机性。 定义1:在一个序列中,将连续为0(或1)的段称 为游程,若该段的长度为n,称这样的段为一个0 (或1) 的n游程。 例如序列00110111,前两个数字是00,称为0的2 游程,接着11为一个1 的2游程,0为0的1游程, 最后111为1的3游程。
可求出一段长为2n的密钥序列
z = z1z2 L z2n
其中 z i
= x i ? yi
x i 排(x i
zi )
将密钥流的连续n个值组成一个向量
S i = (z i z i + 1 L z i + n - 1 ) , i = 1, 2, L , n + 1
2n长的密钥流构成了n+1个n维的向量,令
线性移位寄存器的一元多项式表示
一个n级线性反馈移位寄存器的输出序列{ak } 满足如下的递推关系
an + k = cn ak 排cn - 1ak + 1
L
c1an + k -
1
对任何正整数k成立。将这种递推关系用一个高次多项式表示为:
p(x ) = 1 + c1x + c2x 2 + L + cn x n
这样要产生m序列的充分必要条件为选择 一个周期 2n - 1 为的不可约特征多项式。已 经证明,对于任意的正整数n,至少存在一 个n次本原多项式。所以对于任意的n级线 性反馈移位寄存器,至少存在一种连接方 式使得其输出序列为m序列。事实上,n次 f (2n - 1) / n 本原多项式的个数为: 其中 f 为Euler函数。
an an - 1
c1 c2
a2
a1
cn - 1
输出序列
cn
+
+
n级线性反馈移位寄存器
+
a4
输出序列{ak } 满足
an + k = cn ak 排cn - 1ak + 1 其中k为正整数。
L
c1an + k - 1
例:下图是一个5级的线性反馈移位寄存器,初始状态为
(a1, a 2 , a 3 , a 4 , a 5 ), 输出的序列为 1001101001000010101110110001111100110 L
第二章 流密码
明文组:
x x0 x1 x2 ...xm y y0 y1 y2 ...ym
z z0 z1 z2 ...
密文组:
利用密钥k产生一个密钥流
y e z0 ( x0 )ez1 ( x1 )ez 2 ( x2 )...
zi f (k , i )
流密码的基本思想是利用密钥k产生密钥流 z z0 z1 . 密钥流由密钥流发生器 f 产生: 这里 i 是加密器中的记忆元件(存贮器) f 在时刻 的状态, 是由密钥 确定 k和 i i 的函数。 zi f (k , i )
1.
Geffe序列生成器
多路复合器
LFSR1
·
输出
LFSR1
{a k }
(1)
{bk }
LFSR2 + LFSR3
(3) {ak }
选择控制
LFSR3
·
LFSR2
(2) {ak }
Geffe序列生成器
定义2:GF(2)上周期为T的序列 {a i }的自相关函数定义为:
1 R (t ) = (- 1)ak (- 1)ak + t , 0 # t å T k= 1
T
T - 1
其中和式表示序列 {a i }与 {ai + t } 在一个周期内对应为 相同的个数与对应不同的个数之差。 当 t = 0 时 ,R ( t ) = 1 ; ¹ 0 时,称 R ( t ) 为异自相关 t 函数。 于是,一个伪随机序列应满足以下3条随机性公设: 在序列的一个周期内,0与1的个数相差至多为1。 1 在序列的一个周期内,长为 i 的游程占游程总数的 i , 2 且在等长的游程占0的游程个数和1的游程个数相等。 异自相关函数是一个常数。
an
an - 1
L
a2
a1
f (a1, a2 ,,寄存器的反馈函数 f (a1 , a2 ,, an ) 是关 于的 a1, a2, L , an 线性函数时,则称之为线性反 馈移位寄存器LFSR。并将反馈函数表示为
f (a1, a2 ,, an ) cna1 cn1a2 c1an
现在给出一个产生m序列的例子: p(x ) = x 4 + x + 1 为它的特征 例:设LFSR以 多项式,初始状态为1001,于是输出序列 的递推关系为 ak = ak - 1 懦ak - 4 , k 4 输出为 100100011110101100100011110101 该序列的周期:由于p(x)为一个4次的本原 24 - 1 ,从而该序列为 多项式,从而的阶为 一个m序列。