- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
对称密钥密码
2
流密码 Stream Ciphers
对称密钥密码
3
流密码
• 现在已不如分组密码流行 • 本节讨论一种流密码 • A5/1
– 基于线性移位寄存器(硬件实现) – 用于GSM移动通信系统
对称密钥密码
4
流密码原理
• 流密码使用n比特长的密钥K,并将其扩展为更长的密钥流。 • 将密钥流与明文做异或运算, 得到密文C。 • 密钥流的使用方法与一次一密中的密钥相同。 • 解密时将密文与密钥做异或运算得到明文。 • 函数可表示为StreamCipher(K)=S
• 如果 y10 = m 那么 Y寄存器进行移位运算
– t = y20 y21 – yi = yi1 for i = 21,20,…,1 and y0 = t
• 如果 z10 = m 那么 Z寄存器进行移位运算
– t = z7 z20 z21 z22 – zi = zi1 for i = 22,21,…,1 and z0 = t
对称密钥密码
9
流密码总结
• 密钥流的产生看似很复杂,但用硬件实现很简单 – 产生速度与计算机时钟速度相当(可与语音同步) – 从一个64位密钥可产生无穷多密钥流 – 最终会产生密钥流循环!
对称密钥密码
10
流密码总结
• 因为过去基于软件的密码系统不能产生高速比特流,流密码曾十分辉煌, 当今,基于软件的密码系统的出现,使分组密码成为主流
• 密码流的未来? – 密码学家Shamir: “密码流已步入死亡-the death of stream ciphers”-2004 – 或许太夸张…但分组密码是现今主流
对称密钥密码
11
分组密码 Block Ciphers
对称密钥密码
12
(Iterated) 分组密码(迭代)
• 密文和明文均是固定长度的分组(block) • 通过若干轮使用轮函数(round function)迭代产生密文 • 轮函数的输入由前一轮的输出和密钥组成 • 分别设计一个安全的分组密码或者一个高速的算法不难,但既安全又高效的算法
Z
z0 z1 z2 z3 z4 z5 z6 z7 z8 z9 z10 z11 z12 z13 z14 z15 z16 z17 z18 z19 z20 z21 z22
• 每次运算获得一个比特 • 密钥用于初始化三个寄存器 • 每个寄存器是否进行移位操作由M(x8, y10, z10)决定 • 密钥流比特由三个最右端比特进行XOR运算获得
• 密钥流比特最后由 x18 y21 z22 产生
对称密钥密码
7
A5/1原理3
X
x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 x16 x17 x18
Y
y0 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 y14 y15 y16 y17 y18 y19 y20 y21
对称密钥密码
14
Feistel 密码解密
• 解密: 密文 = (Ln, Rn) • 对每轮 i=n,n1,…,1, 计算
Ri1 = Li Li1 = Ri F(Ri1,Ki)
此处 F 是 轮函数, Ki是第i轮的 子密钥 subkey
• 明文 = (L0,R0) • 此算法对所有函数F都适用 • 但只对特定函数来说是安全的 • 优点在于所有安全性问题可以转化为轮函数F的问题
对称密钥密码
8
A5/1实例
X 1 0 1 0 1 0 1 0 1 0 1 01 0 1 0 1 0 1
Y 1100110011001100110001
Z 11100001111000011110001
• 在这种情况下, m = maj(x8, y10, z10) = maj(1,0,1) = 1
• 寄存器 X 进行移位, Y不进行移位, Z进行移位 • 密钥流比特由最右端比特进行XOR操作而得 • 此例, 密钥流比特是 0 1 0 = 1 • 最后用密钥流和明文做XOR运算进行加密和解密
2 对称密钥密码
对称密钥密码
1
对称密钥密码
• 流密码(Stream Ciphers) 根据’一次一密‘获得 – 密钥相对较短 – 密钥被扩展为更长的密钥流(keystream) – Keystream被用做一次一密的密钥 – 只用到了混淆
• 分组密码(Block cipher) 根据‘电码本密码’获得 – 分组密码密钥决定电码本 – 每个密钥生成一个不同的电码本 – 混淆和扩散都得到利用
– K是密钥, S是和一次一密中对等的密钥流
对称密钥密码
5
A5/1 原理1
• A5/1 使用3个线性移位寄存器(LFSR) – 寄存器X: 19 bits (x0,x1,x2, …,x18) – 寄存器Y: 22 bits (y0,y1,y2, …,y21) – 寄存器Z: 23 bits (z0,z1,z2, …,z22) – 三个寄存器共有64 bits – 密钥K采用64 bits。 初始时密钥K被载入3个寄存器
对称密钥密码
6
A5/1 原理2
• 对每一步做: m = major(x8, y10, z10)
– Major(多数)函数定义: major(0,1,0) = 0 and major(1,1,0) = 1
• 如果 x8 = m 那么 X寄存器 进行移位运算
– t = x13 x16 x17 x18 – xi = xi1 for i = 18,17,…,1 and x0 = t
对称密钥密码
15
DEபைடு நூலகம்密码
• 20世纪70年代提出DES(Data Encryption Standard) • 根据IBM公司提出Feistel密码之一的Lucifer密码设计 • 当时,密码技术除被政府和军方所研究及掌握,民间及
则非常困难 • 通常用软件实现
对称密钥密码
13
Feistel 密码(Cipher)
• Feistel 密码 是分组密码的一种(分组)原则,不是一种特殊的密码 • 将明文分解成右半部分和左半部分: 明文 = (L0, R0) • 对于每一轮 i=1, 2,...,n, 计算:
Li= Ri1 Ri= Li1 F(Ri1,Ki) 此处 F 是 轮函数, Ki是第i轮的 子密钥(subkey) • 密文 = (Ln, Rn)