530 likes | 1.12k Views
对称加密算法 ——DES , 3DES 算法介绍. 伏星源. 主要内容. 对称加密算法模型 经典 Feistel 网络 DES 加密算法工作原理 加密算法的模式 多重 DES 我们采用的 des 分析 通用 des 方法及其优化 测试结果:软件加密和硬件加密比较. 现代密码学研究的历程. 1914 年之前密码学进展很少出现在公开文献上。 1918 年, 《 重合指数及其在密码学中的应用 》 在 Riverbank 实验室诞生。 20 世纪最有影响的密码分析文章。 在 20 世纪三、四十年代,有多篇基础性文章出现在公开文献上,但内容离当时的水平相差非常远。
E N D
对称加密算法——DES,3DES算法介绍 • 伏星源
主要内容 • 对称加密算法模型 • 经典Feistel网络 • DES加密算法工作原理 • 加密算法的模式 • 多重DES • 我们采用的des分析 • 通用des方法及其优化 • 测试结果:软件加密和硬件加密比较
现代密码学研究的历程 • 1914年之前密码学进展很少出现在公开文献上。 • 1918年,《重合指数及其在密码学中的应用》在Riverbank实验室诞生。20世纪最有影响的密码分析文章。 • 在20世纪三、四十年代,有多篇基础性文章出现在公开文献上,但内容离当时的水平相差非常远。 • 二战结束时,公开的文献几乎没有,但有个例外,香农在1949年在《贝尔系统技术杂志》发表了文章《保密系统的通信理论》,也是战时产物。 • 1949-1967,密码文献出现空白。 • 1967,David出版了《破译者》一书。
现代分组加密技术 • 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目前仍然被广泛的使用。
经典Feistel网络 • Feistel网络设计的动机 • 理想分组密码:{0,1}n->{0,1}n的代换 • 完全随机的交换 • 一个密钥既是一个可逆映射 • 随机选择一个密钥
问题1:为什么把这个叫做理想分组密码? • 密文的所有统计特征都是独立于所用密钥的。 • 问题2:理想分组密码的密钥空间 • 有多少个密钥:2n! • 在n较小的时候是不安全的 • 密钥的长度:
Feistel网络解决的问题 • 当n较小时,等价于替换变换 • 当n较大,且明密文之间的任意可逆变换。比如n=64。
对付统计分析的方法: (1)扩散。 明文的统计特性消散在对应的密文中,这样可以让多个明文数字尽可能影响多个密文数字获得,等价于每个密文数字被许多明文数字影响。最简单方法:代换 作用:尽可能明文和密文间统计关系复杂 (2)混淆 尽可能使密文和密钥之间的统计关系复杂,阻止攻击者发现密钥。 最简单方法:置换
经典Feistel网络 回顾乘积 密码 分组长度 密钥长度 迭代轮数 子密钥产生算法 轮函数
Feistel加密与解密
Feistel分组加密算法结构之思想 • 基本思想:用简单算法的乘积来近似表达大尺寸的替换变换 • 多个简单算法的结合得到的加密算法比任何一个部分算法都要强 • 交替使用替换变换和排列(permutation) • 混淆(confusion)和扩散(diffusion)概念的应用。
DES的产生 1973年5月15日,NBS开始公开征集标准加密算法,并公布了它的设计要求: (1)算法必须提供高度的安全性 (2)算法必须有详细的说明,并易于理解 (3)算法的安全性取决于密钥,不依赖于算法 (4)算法适用于所有用户 (5)算法适用于不同应用场合 (6)算法必须高效、经济 (7)算法必须能被证实有效 (8)算法必须是可出口的
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发布
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情况。
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的描述
我们使用的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。
des.v 初始IP 轮操作 初始IP-1
扩展 置换 轮操作—desround.v
扩充置换表(E) • ... efgh ijkl mnop ... • ... defghi hijklm lmnopq ...
选择压缩运算 行数:b1b6;列数
key_gen.v密钥产生模块 PC1移位 PC2移位 逆置换
des verilog实现 • 接口信号: • 64bit输出输入 • 64bit数据输出 • 1bit加解密控制信号decrypt_1, decrypt_2, decrypt_3, • 3个64bit密钥输入key_1,key_2,key_3 • 加密开始信号,load,一个周期高电平脉冲 • 加密结束信号,ready,一个周期高电平脉冲 • 加密周期为:18个周期 • 面积 • 8384门数
DES仿真波形 load_i是加密开始信号,read_o是加密结束信号。 可以看到。加密需要17个周期,其中每一轮加密一个周期。
对DES的讨论 • 其他DES,3DES实现 • DES的雪崩效应 • F函数(S-Box)设计原理未知 • 密钥长度的争论 • DES的破译 • 弱密钥与半弱密钥
其他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.
1.速度优先 • 根据 DES 算法自身的特点,优化 DES 加解密算法,运用全流水线技术,采用并行处理,实现高速的DES加密和解密。 • 2.面积优先 • 采用一个轮操作,通过状态机循环控制
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盒优化的目标是使时序达到最优同时最小化面积。
密钥长度 • 关于DES算法的另一个最有争议的问题:56比特的密钥长度不足以抵御穷举式攻击,因为密钥量只有256约1017个。 原因:早在1977年,Diffie和Hellman已建议制造一个每秒能测试100万个密钥的VLSI芯片。每秒测试100万个密钥的机器大约需要一天就可以搜索整个密钥空间。他们估计制造这样的机器大约需要2000万美元。
密钥长度 • 密钥长度多少才合适呢? • 系统怎样才是安全的呢? • 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的密钥。
DES的安全性分析 • S盒的输入数组改变1位,输出数组至少改变2位。如:输入:011001 行:01 列:1100,输出:1001。 • 当输入的某1位固定,而其他各位改变时,S盒输出数据的1的个数和0的个数相差很小。否则若干次变换后,输出数组全0或1. • 雪崩效应 • 16轮迭代是一个饱和状态。次数太多或太少,都会影响雪崩的效果。
Triple-DES的四种模型 • DES-EEE3:三个不同密钥,顺序使用三次加密算法 • DES-EDE3:三个不同密钥,依次使用加密-解密-加密算法 • DES-EEE2:K1=K3,同上 • DES-EDE2:K1=K3,同上
对双密钥的三重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。
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)))
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个周期
3DES仿真波形 load是加密开始信号,read是加密结束信号。 可以看到。加密需要57个周期,其中每轮加密需要一个周期。
三密钥的三重DES分析 • 密钥的有效长度为168位 • 与DES的兼容性可以通过令K3=K2或K1=K2得到 • 许多基于Internet的应用里用到:PGP和S/MIME
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