1 / 52

对称加密算法 ——DES , 3DES 算法介绍

对称加密算法 ——DES , 3DES 算法介绍. 伏星源. 主要内容. 对称加密算法模型 经典 Feistel 网络 DES 加密算法工作原理 加密算法的模式 多重 DES 我们采用的 des 分析 通用 des 方法及其优化 测试结果:软件加密和硬件加密比较. 现代密码学研究的历程. 1914 年之前密码学进展很少出现在公开文献上。 1918 年, 《 重合指数及其在密码学中的应用 》 在 Riverbank 实验室诞生。 20 世纪最有影响的密码分析文章。 在 20 世纪三、四十年代,有多篇基础性文章出现在公开文献上,但内容离当时的水平相差非常远。

remedy
Download Presentation

对称加密算法 ——DES , 3DES 算法介绍

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 对称加密算法——DES,3DES算法介绍 • 伏星源

  2. 主要内容 • 对称加密算法模型 • 经典Feistel网络 • DES加密算法工作原理 • 加密算法的模式 • 多重DES • 我们采用的des分析 • 通用des方法及其优化 • 测试结果:软件加密和硬件加密比较

  3. 现代密码学研究的历程 • 1914年之前密码学进展很少出现在公开文献上。 • 1918年,《重合指数及其在密码学中的应用》在Riverbank实验室诞生。20世纪最有影响的密码分析文章。 • 在20世纪三、四十年代,有多篇基础性文章出现在公开文献上,但内容离当时的水平相差非常远。 • 二战结束时,公开的文献几乎没有,但有个例外,香农在1949年在《贝尔系统技术杂志》发表了文章《保密系统的通信理论》,也是战时产物。 • 1949-1967,密码文献出现空白。 • 1967,David出版了《破译者》一书。

  4. 现代分组加密技术 • Lucifer算法(60年代),DES(1973),Madryga算法(1984),NewDES算法(1985),FEAL算法(80‘),REDOC算法(1991),Khufu和Khafre算法(1990),LOKI(1990),IDEA(1990),Skipjack(1990),Gost,Blowfish,SAFER,3-WAY,Crab,SXAL8/MBAL,RC5。 • DES最重要的三个原因: • 通过验证安全性高; • DES是最早成为国际标准的对称加密算法; • DES目前仍然被广泛的使用。

  5. 经典Feistel网络 • Feistel网络设计的动机 • 理想分组密码:{0,1}n->{0,1}n的代换 • 完全随机的交换 • 一个密钥既是一个可逆映射 • 随机选择一个密钥

  6. 问题1:为什么把这个叫做理想分组密码? • 密文的所有统计特征都是独立于所用密钥的。 • 问题2:理想分组密码的密钥空间 • 有多少个密钥:2n! • 在n较小的时候是不安全的 • 密钥的长度:

  7. Feistel网络解决的问题 • 当n较小时,等价于替换变换 • 当n较大,且明密文之间的任意可逆变换。比如n=64。

  8. 对付统计分析的方法: (1)扩散。 明文的统计特性消散在对应的密文中,这样可以让多个明文数字尽可能影响多个密文数字获得,等价于每个密文数字被许多明文数字影响。最简单方法:代换 作用:尽可能明文和密文间统计关系复杂 (2)混淆 尽可能使密文和密钥之间的统计关系复杂,阻止攻击者发现密钥。 最简单方法:置换

  9. 经典Feistel网络 回顾乘积 密码 分组长度 密钥长度 迭代轮数 子密钥产生算法 轮函数

  10.        Feistel加密与解密

  11. Feistel分组加密算法结构之思想 • 基本思想:用简单算法的乘积来近似表达大尺寸的替换变换 • 多个简单算法的结合得到的加密算法比任何一个部分算法都要强 • 交替使用替换变换和排列(permutation) • 混淆(confusion)和扩散(diffusion)概念的应用。

  12. DES的产生 1973年5月15日,NBS开始公开征集标准加密算法,并公布了它的设计要求: (1)算法必须提供高度的安全性 (2)算法必须有详细的说明,并易于理解 (3)算法的安全性取决于密钥,不依赖于算法 (4)算法适用于所有用户 (5)算法适用于不同应用场合 (6)算法必须高效、经济 (7)算法必须能被证实有效 (8)算法必须是可出口的

  13. DES的产生 • 1974年8月27日,NBS开始第二次征集,IBM提交了算法LUCIFER,该算法由IBM的工程师在1971~1972年研制 • 1975年3月17日,NBS公开了全部细节 • 1976年,NBS指派了两个小组进行评价 • 1976年11月23日,采纳为联邦标准,批准用于非军事场合的各种政府机构 • 1977年1月15日,“数据加密标准”FIPS PUB 46发布

  14. DES的应用 • 1979年,美国银行协会批准使用 • 1980年,美国国家标准协会(ANSI)赞同DES作为私营使用的标准,称之为DEA(ANSI X.392) • 1983年,国际化标准组织ISO赞同DES作为国际标准,称之为DEA-1 • 该标准规定每五年审查一次,计划十年后采用新标准 • 最近的一次评估是在1994年1月,已决定1998年12月以后,DES将不再作为联邦加密标准。 • 1999年NIST颁布标准(FIPS PUB 46-3)的新版本,规定DES只能用于遗留系统或3DES情况。

  15. DES算法实现加密需要三个步骤: 第一步:初始置换(IP)。 对给定的64位比特的明文x,首先通过一个置换IP表来重新排列x,从而构造出64位比特的x0,x0=IP(x)=L0R0,其中L0表示x0的前32比特,R0表示x0的后32位。 第二步:16轮Fiestel结构迭代 按照规则迭代。规则为 Li = Ri-1 Ri = Li⊕F(Ri-1,Ki) (i=1,2,3…16) 第三步:末尾置换(IP-1) 对L16R16利用IP-1作逆置换,就得到了密文y。 DES的描述

  16. 我们使用的des (1)des.v是主模块,包括初始置换IP,控制16轮的状态机,初始逆置换IP-1 。 (2)desround.v是控制每一轮的操作,主要是由代换,置换,异或操作组成。 (3)key_gen 是密钥产生模块,des初始时候有56个初始密钥,根据初始密钥产生16轮的字密钥,每一个子密钥48bit,产生方法通过置换和移位产生。 (4)s1.v,到s8.v是字节替换S盒模块,输入是6bit输出时4bit。

  17. 初始置换IP和初始逆置换IP—1

  18. des.v 初始IP 轮操作 初始IP-1

  19. DES的一轮迭代

  20. 扩展 置换 轮操作—desround.v

  21. 扩充置换表(E) • ... efgh ijkl mnop ... • ... defghi hijklm lmnopq ...

  22. 选择压缩运算 行数:b1b6;列数

  23. S-Box-i

  24. S-Box-ii

  25. s*.v-----一个S盒实现

  26. 置 换 表(P)

  27. 子密钥的产生

  28. 输入密钥

  29. 置换选择1和置换选择2

  30. key_gen.v密钥产生模块 PC1移位 PC2移位 逆置换

  31. des verilog实现 • 接口信号: • 64bit输出输入 • 64bit数据输出 • 1bit加解密控制信号decrypt_1, decrypt_2, decrypt_3, • 3个64bit密钥输入key_1,key_2,key_3 • 加密开始信号,load,一个周期高电平脉冲 • 加密结束信号,ready,一个周期高电平脉冲 • 加密周期为:18个周期 • 面积 • 8384门数

  32. DES仿真波形 load_i是加密开始信号,read_o是加密结束信号。 可以看到。加密需要17个周期,其中每一轮加密一个周期。

  33. 对DES的讨论 • 其他DES,3DES实现 • DES的雪崩效应 • F函数(S-Box)设计原理未知 • 密钥长度的争论 • DES的破译 • 弱密钥与半弱密钥

  34. 其他DES,3DES的实现 • DES 加密算法已经比较成熟,该算法的硬件实现也有多种途径。孙坚[l14]提供了一 种采用迭代方法的小面积实现[16],有的为了充分提高速度将 16 轮运算全部展开采用全流水线实现[l15][17],也有的将这两种方法进行折中[18][l16]。 • 在高速实现中,现在已经有了10Gbps和12Gbps 以上的数据吞吐率。 • [15] K. Itoh, M. Takenaka and N. Torii. DPA Countermeasure Based on the Masking Method. International Conference on Information, Communications and Signal Processing - ICICS • 2001, LNCS 2288, pp.440-456. Springer-Verlag, 2002 • [16]孙坚, 周玉洁. 3DES IP的小面积实现. 信息安全与通讯保密 • [17] 汪翼, 沈海斌, 何乐年, 严晓浪. DES 算法的高速流水线实现. 微电子学于计算机, • 2003(8), pp.158-160. • [18] 张丽娜, 陈建华, 张家宏, 阳凌怡. 基于 ASIC 的有效 DES/3DES 流水线设计. 计算 • 机工程, 2007(1), pp. 225-226.

  35. 1.速度优先 • 根据 DES 算法自身的特点,优化 DES 加解密算法,运用全流水线技术,采用并行处理,实现高速的DES加密和解密。 • 2.面积优先 • 采用一个轮操作,通过状态机循环控制

  36. S 盒的优化 • S盒是DES算法的核心,是一个十分复杂的非线性函数,正是经过S盒的非线性变换才使明文实现了较好的混乱(confusion),从而具有较强的安全性。从 LSI 设计角度出发,应使其尽可能在一个基片上实现,减少器件规模;从逻辑电路设计理论来说,应尽可能减少最小项数数目,简化实现方案。 • DES每轮运算有8个S盒, 每个S盒都有6位输入和4位输出。 48级流水线的3DES就会有 48*8 即 384 个 S 盒,所以减少实现每个 S 盒的平均组合逻辑单元数对缩小整个IP 核的面积是非常重要的。在 DES 的每轮运算中,除了 S 盒还有一些异或逻辑和置换操作,置换实现为硬件就是连线的问题,逻辑综合中的延时为 0。异或运算实现也比较 简单,同样无从优化,而且延时也比较小。于是,S盒的延时就决定了IP核的最高工作频率。 • 使用Verilog语言建立S盒的电路模型有多种方法[l19][21]: • (1)使用单case 语句的全逻辑结构,直接从S盒的64个输出选项中进行选择。 • (2)使用两级case语句结构,先从 4 行中选择 1 行,然后从某行的 16 项中进行选择。 • (3)与第二种方法类似,只不过第一级case 语句选择16列中的1列,然后再选择行。 • (4)从卡诺图开始,手工化简成使用最少基本逻辑门的结构[l20]。如果用 FPGA 设计实现,由于其固有的内部结构,这些方法中肯定存在一种最好的实现。但是如果是 ASIC 实现,即使不同的方法也可以通过施加合适的综合约束达到相同的效果,并不具备多大用处。传统S盒优化的目标是使时序达到最优同时最小化面积。

  37. 密钥长度 • 关于DES算法的另一个最有争议的问题:56比特的密钥长度不足以抵御穷举式攻击,因为密钥量只有256约1017个。 原因:早在1977年,Diffie和Hellman已建议制造一个每秒能测试100万个密钥的VLSI芯片。每秒测试100万个密钥的机器大约需要一天就可以搜索整个密钥空间。他们估计制造这样的机器大约需要2000万美元。

  38. 密钥长度 • 密钥长度多少才合适呢? • 系统怎样才是安全的呢? • 1997年1月28日,美国的RSA数据安全公司在RSA安全年会上公布了一项“秘密密钥挑战”竞赛,其中包括悬赏1万美元破译密钥长度为56比特的DES。美国克罗拉多洲的程序员Verser从1997年2月18日起,用了96天时间,在Internet上数万名志愿者的协同工作下,成功地找到了DES的密钥,赢得了悬赏的1万美元。 • 1998年7月电子前沿基金会(EFF)使用一台25万美圆的电脑在56小时内破译了56比特密钥的DES。 • 1999年1月RSA数据安全会议期间,电子前沿基金会用22小时15分钟就宣告破解了一个DES的密钥。

  39. DES的安全性分析 • S盒的输入数组改变1位,输出数组至少改变2位。如:输入:011001 行:01 列:1100,输出:1001。 • 当输入的某1位固定,而其他各位改变时,S盒输出数据的1的个数和0的个数相差很小。否则若干次变换后,输出数组全0或1. • 雪崩效应 • 16轮迭代是一个饱和状态。次数太多或太少,都会影响雪崩的效果。

  40. 双重DES (Double DES)

  41. Triple-DES的四种模型 • DES-EEE3:三个不同密钥,顺序使用三次加密算法 • DES-EDE3:三个不同密钥,依次使用加密-解密-加密算法 • DES-EEE2:K1=K3,同上 • DES-EDE2:K1=K3,同上

  42. 双密钥的三重DES

  43. 对双密钥的三重DES的分析 • 该模式由IBM设计, 可与常规加密算法兼容 • 这种替代DES的加密较为流行并且已被采纳用于密钥管理标准(The Key Manager Standards ANSX9.17和ISO8732). • 交替使用K1和K2可以抵抗中间相遇攻击.如果C=EK2(EK1(EK1(P))) ,只需要256+2次加密 • 到目前为止,还没有人给出攻击三重DES的有效方法。对其密钥空间中密钥进行蛮干搜索,那么由于空间太大为2112=5×1033,这实际上是不可行的。若用差分攻击的方法,相对于单一DES来说复杂性以指数形式增长,要超过1052。

  44. K2 K3 K1 D E E D P A B C D E K3 K2 K1 C B A P 三密钥的三重DES 加密:C=EK3(DK2 (EK1 (P))) 解密:P=DK1(EK2 (DK3 (C)))

  45. 3desverilog • 我们设计的3des基于des模块,设计一个状态机将des加密三次。 • 接口信号: • 64bit输出输入 • 64bit数据输出 • 1bit加解密控制信号decrypt_1, decrypt_2, decrypt_3, • 3个64bit密钥输入key_1,key_2,key_3 • 加密开始信号,load,一个周期高电平脉冲 • 加密结束信号,ready,一个周期高电平脉冲 • 加密周期:18*3=54个周期

  46. 3DES仿真波形 load是加密开始信号,read是加密结束信号。 可以看到。加密需要57个周期,其中每轮加密需要一个周期。

  47. 三密钥的三重DES分析 • 密钥的有效长度为168位 • 与DES的兼容性可以通过令K3=K2或K1=K2得到 • 许多基于Internet的应用里用到:PGP和S/MIME

  48. DES测试 • 测试方法: • (1)采用c++软件编程得到DES算法 • 变换十次密钥,每个密钥下,明文进行伪随机变换1万次,进行加密得到1万个密文。一共 10万组明文密文对。 (2)对硬件实现的DES算法进行VCS仿真,密钥和明文的产生方法和C++软件一致,得到10万组明文密文对。 (3)将(1)中产生的明文密文对上传到服务器,与(2)所得明文密文对进行比较。 结果:全部一致 附图 :软件加密结果见附件,硬件加密结果见服务器:fuxy/DES_6-1/cipher.txt.key.txt,plain.txt

More Related