chap3分组密码
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
大连理工大学
对称算法可分为两类。 1,一次只对明文中的单个位(有时对字节)运算的算法称 为序列算法或序列密码,流密码。如, Vigenere密码也是流密 码。这种情况下,密钥流就是m值的重复,其中m表示关键字的 大小。 2,对明文的一组位进行运算,这些位组称为分组,相应的 算法称为分组算法或分组密码。现代计算机密码算法的典型分 组长度为64位――这个长度大到足以防止分析破译,但又小到足 以方便作用。
考虑到这些困难,在实践中只能使用理想分组 密码体制的近似体制,它可以在容易实现部件 的基础上逐步建立起来。
Feistel密码
1949年,Claude Shannon 提出乘积加密器 。“Communication Theory of Secrecy Systems” Shannon利用信息论方法研究加密问题,提出 了完善加密的概念,为密码学奠定了理论基础 ,使密码学成为一门科学。 Shannon的工作是近代密码学发展的一个里程 碑。
为清楚起见,我们用LEi和REi表示加密过程的中间 数据。而用LDi和RDi表示解密过程的中间数据。 图中表明,每轮的解密过程中间值与加密过程中间 值左右互换的结果是相同的。 我们来证明解密过程第一轮的输出等于加密过程第 十六轮的输入(要互换左右两部分)。 也就是要证 明LD1=RE15及RD1=LE15。 解密第一轮的输入是RE16‖LE16。
Feistel密码结构的设计动机
• 分组密码作用在n位明文组上,而产生n位密文组。共有 2n个不同明文组,且由于加密是可逆的(即可以解密), 每一个明文组将惟一对应一个密文组。 • 这样的变换称为可逆变换,或非奇异变换。下面这个例 子解释了n=2时的非奇异变换和奇异变换。 • 可逆 映射 不可逆映射
密码系统的模型
密码分析者 明文 密文 明文
消息源
加密
密钥 安全信道
解密
密钥
目的地
密钥源
2018/11/10 大连理工大学
单钥体制(cont.)
有两大课题:
如何产生满足保密要求的密钥? 如何将密钥安全可靠地分配给通信对方? 包括密钥产生、分配、存储、销毁等多方面的问题, 统称密钥管理。
2018/11/10
DES 算法的 一般描述
DES加密过程
输入64比特明文数据 初始置换IP 在密钥控制下 16轮迭代 交换左右32比特
初始逆置换IP-1
输出64比特密文数据
初始置换IP和初始逆置换IP—1
DES的 一轮迭代
Li-1(32比特)
Ri-1(32比特)
选择扩展运算E 48比特寄存器 子密钥Ki (48比特) 48比特寄存器 选择压缩运算S 32比特寄存器 置换运算P
DES中的子密钥的生成
64 位密钥 密钥表的计算逻辑 循环左移: 1 1 9 2 1 10 3 2 11 4 2 12 5 2 13 6 2 14 7 2 15 8 2 16
置换选择 1
C0(28 位)
循环左移
D0(28 位)
循环左移
1 2 2 2 2 2 2 1
共16轮, 每轮移位 如红色
C1(28 位)
如何挫败基于统计方法的密码分析? Shannon建议了两种对付统计分析的方法:扩散和混淆。 1、扩散(diffusion):扩散指使明文的统计特征消散在密文中,可 以让每个明文数字尽可能地影响多个密文数字获得,等价于说每 个密文数字被许多明文数字影响。 一个扩散的例子就是当前明文字母开始的若干明文字母之和 (mod26)作为对应的密文字母。 在二进制分组密码中,对明文进行置换后再用某个函数作用,重 复多次就可获得较好的扩散效果。因为原始明文中的不同位对密 文某一位都会产生影响。
强力搜索( brute force search ) 似乎很困难,20世 纪70年代估计要1000-2000年
技术进步使穷举搜索成为可能
1997年1月29日,RSA公司发起破译RC4、RC5、MD2、MD5, 以及DES的活动,破译DES奖励10000美金。结果仅搜索了 24.6%的密钥空间便得到结果,耗时96天。 1998年在一台专用机上(EFF)只要三天时间即可 1999年在超级计算机上只要22小时!
一般地,每轮的加密算法: LEi=REi-1 REi=LEi-1⊕F(REi-1,Ki) 等价于: REi-1=LEi LEi-1=REi⊕F(REi-1,Ki)=REi⊕F(LEi,Ki)
3.2数据加密标准(DES)
DES的历史 数据加密标准(Data Encryption Standard) 1969年,IBM成立由Horst Feistel领导的密码研究项目 。 1971年,研究出LUCIFER算法, 64位分组128位密钥。 推出商业产品,并改进版本,56位密钥。 1973美国标准局征求标准,IBM提交。 在1977年,被选为数据加密标准。授权在非密级的政府 通信中使用。 该标准经受每5年一次的重新审查和评估,至今继续在数 据加密中发挥着重要的作用。
Feistel解密算法:Feistel密码的解密过程本质上 与加密过程一致。 其规则如下:将密文作为算法的输入,但是逆序 使用子密钥Ki。也就是说。第一轮使用Kn,第二 轮使用Kn-1,直到最后一轮使用K1。 这是一个很好的特点,因为我们不需要实现两个 算法:一个用做加密而另一个用做解密。
Feistel 密码解密
DES概述
分组加密算法:明文和密文为64位分组长度 对称算法:加密和解密除密钥编排不同外,使用同一算法 密钥长度:56位,但每个第8位为奇偶校验位,可忽略 密钥可为任意的56位数,但存在弱密钥,容易避开 采用混乱和扩散的组合,每个组合先替代后置换,共16轮 只使用了标准的算术和逻辑运算,易于实现
异或的性质: [A B] C=A [B C] D D=0 E 0=E 故有[E D] D=E [D D]=E 0=E
所以解密过程的第一轮输出为LE15‖RE15。对于其他 各轮亦是如此。 最后,我们注意到解密过程最后一轮的输出是RE0‖LE0 ,左右32比特互换的结果正是原始明文,说明Feistel 密码的解密过程是正确的。 注意,我们在推导过程并没有要求F函数是可逆的,比 如取一种极端情况,假设它的输出为一个常数(例如全 为1),等式依然成立。
对称密码(2) 第3章分组密码和数据加密标准
对称密码算法有时又叫传统密码算法,加密密钥能够从解 密密钥中推算出来,反过来也成立。在大多数对称算法中, 加密解密密钥是相同的。 它要求发送者和接收者在安全通信之前,商定一个密钥。 对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人 都能对消息进行加密解密。
3.3 DES的强度:DES密钥长度 关于DES算法的另一个最有争议的问题就是担心实际56
比特的密钥长度不足以抵御穷举式攻击,因为密钥量只
有 2 56 1017 个
早在1977年,Diffie和Hellman已建议制造一个每秒能测
试100万个密钥的VLSI芯片。每秒测试100万个密钥的 机器大约需要一天就可以搜索整个密钥空间。他们估计 制造这样的机器大约需要2000万美元(昂贵);所以, 当时DES被认为是一种十分强壮的加密方法。
异或运算
3.1 分组密码概述 3.2 DES 3.3 DES的强度
3.1 分组密码概述
分组密码是将明文消息编码表示后的数字(简称明 文数字)序列,划分成长度为n的组(可看成长度 为n的矢量),每组分别在密钥的控制下变换成等 长的输出数字(简称密文数字)序列,
Feistel密码结构
是密码设计的一个主要原则,而不是一个特殊的 密码。
2、混淆(confusion) 其目的在于使作用于明文的密钥和密文之间的关系 复杂化,是明文和密文之间、密文和密钥之间的 统计相关特性极小化,从而使统计分析攻击不能 奏效。
乘积密码(Product Cipher)就是以某种方式连续 执行两个或多个简单密码(如替代、置换),以 使得所得到的最后结果或乘积比其任意一个组成 密码都更强的分组密码。
00 01 10 11 11 10 00 01 00 01 10 11 11 10 01 01
如果我们限定在可逆映射上,不同变换的总数是2n!个 。 下图给出了n=4时的一个普通代换密码的结构。
对应的加密和解密表
这是分组密码的最一般形式,能用来定义明密文之间的 任意可逆变换。Feistel称这种密码为理想分组密码,因 为它允许生成最大数量的加密映射来映射明文分组。 然而在实现角度,这样的分组密码是不可行的。对于这 样的变换,映射本身就是密钥。 如上例,密钥长度为4×16=64比特。一般地,对于n位 的代换分组密码,密钥的规模是n×2n位。一个64位的 分组密码,若分组有抵抗统计攻击的理想长度,其密钥 大小将需要64×264=270≈1021。
对于加密有: LE16 = RE15 RE16 = LE15 F(RE15, K16) 对于解密则有: LD1 = RD0 = LE16 = RE15 RD1 = LD0 F(RD0, K16) = RE16 F(RE15, K16) = (LE15 F(RE15, K16) ) F(RE15, K16) = LE15
雪崩效应 Avalanche Eff如果变化太小,就可能找到一种方法减小有待搜索的 明文和密文空间的大小。
如果用同样密钥加密只差一比特的两个明文: 0000000000000000......00000000 1000000000000000......00000000 3次循环以后密文有21个比特不同,16次循环后有34个比特不 同 如果用只差一比特的两个密钥加密同样明文: 3次循环以后密文有14个比特不同,16次循环后有35个比特不 同
Li(32比特)
Ri(32比特)
Li=Ri-1
DES一轮迭代的过程
扩展置换E-盒-32位扩展到48位
扩展
压缩替代S-盒-48位压缩到32位
共8个S盒
S-盒的构造
b1b2b3b4b5b6 行:b1b6 112 3 S6 -盒子 3行9列 110011 列:b2b3b4b5 10012 9 值:14=1100
D1(28 位)
(56 位) 置换选择 2
k1
(48 位)
循环左移
循环左移
Ci(28 位)
Di(28 位)
置换选择 2 (56 位)
ki
(48 位)
64位的密钥只使用56 位,每行的最高位被忽 略,或作为奇偶校验位。
DES加密的一个例子 取16进制明文X:0123456789ABCDEF 密钥K为:133457799BBCDFF1 去掉奇偶校验位以二进制形式表示的密钥是 00010010011010010101101111001001101101 111011011111111000 应用IP,我们得到: L0=11001100000000001100110011111111 L1=R0=11110000101010101111000010101010 然后进行16轮加密。 最后对L16, R16使用IP-1得到密文: 85E813540F0AB405
F
Li
Ri
LEi = REi-1 REi = LEi-1F(REi-1,Ki)
设计原则
分组长度 分组越长则安全性越高,但加/解密速度越低,分组长度 为64位是一个合理的折衷。 密钥长度 密钥越长越安全,但加/解密速度越低,64位长的密钥已 被证明是不安全的,128位是常用的长度 迭代次数 迭代越多越安全,通常为16次迭代 子密钥产生算法 越复杂则密码分析越困难 轮函数 越复杂则抗密码分析的能力越强
Shannon提出交替使用混淆和扩散进行乘积密码。 基于Shannon 理论,Feistel建议交替地使用代换和置 换。
Feistel密码结构
将输入分组分成左右两部分 。 以右半部数据和子密钥作为 参数,对左半部数据实施代 换操作。 将两部分进行互换,完成置 换操作。
每一轮的加密
Li-1 Ri-1 Ki Round i