- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
输出
f(x1,x2,x3)=x1x2⊕x3 一个GF(2)上的3阶非线性反馈移位寄存器
18/32
在初始状态下,即0时刻
第3级 第2级 第1级 输出
1
0
1
f(x1,x2,x3)=x1x2⊕x3 在第一个时钟到来时
第3级 第2级 第1级
S0=(1, 0, 1)
输出
1 1 f(x1,x2,x3)=x1x2⊕x3 x1=1, x2=0, x3=1
12/32
自同步序列密码
自同步序列密码的密钥流的产生和已经产生的固定数量 的密文字符有关,即是一种有记忆变换的序列密码。如图所 示。 密钥流 生成器 密 钥 流 ki 明文流mi 加密算法E 自同步序列密码模型
13/32
密钥流 生成器 密 钥 流 ki 密文流ci 解密算法D 明文流mi
自同步序列密码的特点
输出序列满足: an+t=c1an+t-1+c2an+t-2+…+cnat,t≥0
21/32
例 设一个GF(2)上的5阶线性反馈移位寄存器如图所示,其反 馈函数为f(x1,x2,x3,x4,x5)=x1⊕x4,初始状态为S0= (1,0,0,1,1) x5 x4 x3 x2 x1 输出
+ 容易验证该线性反馈移位寄存器的输出序列为 1001101001000010101110110001111100110…, 这个线性移位寄存器序列是一个周期序列,周期为31。
2/32
容易想到,使用流密码对消息 m 执行加密时,最简单的 做法就是让密钥流中的第 i 个比特与明文串中的对应比特直 接做 XOR 运算,即
对应的解密算法为:
3/32
由于实现XOR逻辑运算非常简单, 因此这 样的加解密操作将是快速有效的。如果这里的 密钥流是完全随机的(random)、与明文相同长 度的比特串,对应的密码被称为一次一密体制 (one-time pad)。显然,此时明文串与密文串之 间就是相互独立的。 不知道密钥的攻击者即 便守候在公开信道上从而得到密文串,他也无 法获得关于明文的任何信息。事实上, Shannon曾证明了“一次一密的密码体制是不 可破解的(unbreakable)”。
同步序列密码的特点
(1)同步要求。在一个同步序列密码中,发送方和接收 方必须是同步的,用同样的密钥且该密钥操作在同样的位置, 才能保证地解密。如果在传输过程中密文字符有插入或删除 导致同步丢失,则解密失败,且只能通过重新同步来实现恢 复。
(2)无错误传输。在传输期间,一个密文字符被改变只 影响该字符的恢复,不会对后继字符产生影响。
4/32
使用一次一密体制需要解决如何生成随机密钥流的问题: 密钥 流必须是随机出现的,并且合法用户可以容易地再生该密钥流。一 方面,一个与明文一样长的随机位序列很难记住;另一方面,如果 密钥流是重复的位序列,虽然容易记住,但不安全。因此,这是一 个两难的处境:如何生成一个可以用作密钥流的“随机”比特序列, 要 求易于使用,但又不能太短以至于不安全。 在通常使用的流密码中,加、解密所需要的这种序列是由一个确 定性(deterministic)的密钥流生成器(key generator)产生的, 该生成器 的输入是一个容易记住的密钥,称之为密钥流生成器的初始密钥或 种子(seed)密钥。因此,严格来说,密钥流序列都是伪随机序列。 完整的流密码系统模型如图:
0
a0 1
S1=(0, 1, 1)
19/32
在第二个时钟到来时
第3级 第2级 第1级 输出
1 1 f(x1,x2,x3)=x1x2⊕x3 x1=1, x2=1, x3=0
1
a0 0
S2=(1, 1, 1)
则其输出序列和状态序列如下 状态序列: (1,0,1) (0,1,1) (1,1,1) (1,1,0) (1,0,1) (0,1,1) …. 输出序列: 1 0 1 1 1 0 …. 由上面的结果可以看出,这个反馈移位寄存器的状态序 列和输出序列都是周期序列,其周期为4。
17/32
此时反馈移位寄存器的输出序列 a0, a1, a2,…,at,…称为反馈移位寄存器序列 S0,S1,S2,…,St,…称为反馈移位寄存器的状态序列 其中S0=(a0,a1,…(2)上的3阶反馈移位寄存器如图所示,其反馈函 数为f(x1,x2,x3)=x1x2⊕x3, 其初始状态为 S0=(1,0,1),求输出序 列及其周期。 x3 x2 x1
15/32
2 线性反馈移位寄存器
移位寄存器是用来产生序列密码中的密钥序列的一种 主要工具。 输出序列 xn xn-1 … x2 x1
f (x1, x2, …, xn) 反馈移位寄存器 反馈移位寄存器的工作原理非常简单。当一个时钟脉冲到来 时,第i级寄存器的内容传送给第i-1级寄存器, i = 2,3,…,n。第一级寄存器的内容为反馈移位寄存器的输 出。反馈函数f(x1,x2,…,xn-1,xn)的值传送给第n级寄存器。
10/32
同步序列密码模型
在同步序列密码中,密钥流的产生独立于明文和密文。分组 加密的OFB模式就是一个同步序列加密的例子。
密钥流 密钥k(基于安全通道传递) 密钥流 生成器 生成器 密 密 钥 钥 流 流 密文流ci ki ki 明文流mi 明文流mi 加密算法E 解密算法D 同步序列密码模型
11/32
16/32
在任意时刻t,第1级寄存器至第n级寄存器的内容所形成 的(x1,x2,…,xn-1,xn)序列称为反馈移位寄存器的 一个状态。反馈移位寄存器在时刻0时的状态称为初始状 态。显然,GF(2)上的n阶反馈移位寄存器共有2n个可能 的不同状态。 设反馈移位寄存器在时刻t≥0时的状态为 St=(at,at+1,…, at+n-1 ), 则在t+1时刻,反馈移位寄存器的状态为 St+1=(at+1,at+2,…,at+n), 其中 at+n=f(at,at+1,…,at+n-1)。
14/32
• 寄存器:在数字电路中,用来存放二进制数据或代码 寄存器:在数字电路中, 的电路称为寄存器。 的电路称为寄存器。 • 寄存器是由具有存储功能的触发器组合起来构成的。 寄存器是由具有存储功能的触发器组合起来构成的。 一个触发器可以存储一位二进制代码,存放N 一个触发器可以存储一位二进制代码,存放N位二进制 代码的寄存器,需用n个触发器来构成。 代码的寄存器,需用n个触发器来构成。 • 按功能可分为:基本寄存器和移位寄存器。 按功能可分为:基本寄存器和移位寄存器。 • 移位寄存器 :移位寄存器中的数据可以在移位脉冲作 用下一次逐位右移或左移,数据既可以并行输入、 用下一次逐位右移或左移,数据既可以并行输入、并 行输出,也可以串行输入、串行输出, 行输出,也可以串行输入、串行输出,还可以并行输 串行输出,串行输入、并行输出,十分灵活, 入、串行输出,串行输入、并行输出,十分灵活,用 途也很广。 途也很广。
(1)自同步 因为解密只取决于先前固定数量的密文字符,自同步序列密码 在同步丢失后能够自动重新建立正确的解密,只有固定数量的 明文字符不能被恢复。
(2)有限的错误传播。 因为自同步序列密码的状态取决于t个已有的密文字符, 如果一个密文字符在传输过程中被修改,则解密时最多影响到 后续t个字符的解密恢复,会发生有限的错误传播。
20/32
定义 如果一个GF(2)上的n阶反馈移位寄存器的反馈函数形如 f (x1,x2,…,xn)=cnx1+cn-1x2+…+c1xn, 其中ci∈GF(2),1≤i≤n,则称其为线性反馈移位寄存器, 否则,称其为非线性反馈移位寄存器。 式中的c1,c2, ...... ,cn为反馈系数。对于二进制作用下, c1,......,cn的作用就相当于一个开关,用断开和闭合来表示0和1。 线性移位寄存器如图: 输出序列 …. an an-1 a2 a1 c1 + + c2 …. + cn-1 + cn
8/32
分组密码与序列密码的对比
分组密码以一定大小的分组作为每次处理的基本单元, 而序列密码则以一个元素(如一个字母或一个比特)作为基 本的处理单元。 序列密码使用一个随时间变化的加密变换,具有转换速 度快、低错误传播的优点,硬件实现电路更简单;其缺点是: 低扩散(意味着混乱不够)、插入及修改的不敏感性。 分组密码使用的是一个不随时间变化的固定变换,具有 扩散性好、插入敏感等优点;其缺点是:加密处理速度慢。
9/32
序列密码 序列密码为一六元组(P,C,K,L,E,D)和函数g,并满足 以下条件: 1. P是由所有可能明文构成的有限集。 2. C是由所有可能密文构成的有限集。 3. K是由所有可能密钥构成的有限集。 4. L是一个称为密钥流字母表的有限集。 5. g是一个密钥流生成器。g使用密钥k和可选的部分密文 作为输入,产生无限的密钥流k1k2…, ki∈L, i ≥ 1。 6. 对于任意的k∈L,都有一个加密规则ek∈E和相应的解 密规则dk∈D。并且对每一明文x∈P,ek:P→C和 dk:C→P是满足dk(ek(x))的函数。 序列密码分为同步序列密码和自同步序列密码两种。
6/32
常见的两种密钥流产生器
7/32
因为确定性算法产生的序列是周期的或准 周期的,为了使序列密码达到要求的安全保密 性,密钥经其扩展成的密钥流序列应该具有如 下性质:极大的周期、良好的统计特性、抗线 性分析、抗统计分析。 我们仅对实用中最感兴趣的二元情形即 GF(2)上的序列密码原理进行介绍,但其理论 是可以在任何有限域GF(q)中进行研究的。
5/32
由此可见, 序列密码的安全性主要依赖于密钥序列k0k1…=A(k), 当k0k1…是离散无记忆的随机序列时,则该系统就是一次一密密 码, 它是不可破的. 但通常A(k)是一个由k通过确定性算法产生的 伪随机序列, 因而此时, 该系统就不再是完全保密的. 设计序列密 码的关键是设计密钥序列A(k),密钥序列A(k)的设计应考虑如 下几个因素: ((1)系统的安全保密性; (2)密钥k易于分配、保管,更换简便; (3)产生密钥序列简单快速。 实用的流密码以少量的、一定长度的种子密钥经过逻辑运算产 生周期较长、可用于加解密运算的伪随机序列。目前最为流行 和实用的密钥流产生器,其驱动部分是一个或多个线性反馈移 位寄存器。