1 / 103

分组密码: 数据加密标准 DES 算法

分组密码: 数据加密标准 DES 算法. 《 现代密码学 》 第 4 章 (2). 本节主要内容. 1 、数据加密标准 DES 的产生 2 、 S-DES 算法 3 、 DES 加密与解密过程 4 、 DES 的安全性分析 5 、 DES 的改进与实现 6 、作业. 美国国家标准局 1973 年开始研究除国防部外的其它部门的计算机系统的数据加密标准,于 1973 年 5 月 15 日和 1974 年 8 月 27 日先后两次向公众发出了征求加密算法的公告。加密算法要达到的目的(通常称为 DES 密码算法要求)主要为以下四点:

tate-carver
Download Presentation

分组密码: 数据加密标准 DES 算法

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算法 《现代密码学》第4章(2)

  2. 本节主要内容 • 1、数据加密标准DES的产生 • 2、S-DES算法 • 3、DES加密与解密过程 • 4、DES的安全性分析 • 5、DES的改进与实现 • 6、作业

  3. 美国国家标准局1973年开始研究除国防部外的其它部门的计算机系统的数据加密标准,于1973年5月15日和1974年8月27日先后两次向公众发出了征求加密算法的公告。加密算法要达到的目的(通常称为DES 密码算法要求)主要为以下四点: (1)提供高质量的数据保护,防止数据未经授权的泄露和未被察觉的修改; (2)具有相当高的复杂性,使得破译的开销超过可能获得的利益,同时又要便于理解和掌握; (3)DES密码体制的安全性应该不依赖于算法的保密,其安全性仅以加密密钥的保密为基础; (4)实现经济,运行有效,并且适用于多种完全不同的应用。 1.数据加密标准DES的产生

  4. 1.数据加密标准DES的产生 • 1977年1月,美国政府颁布:采纳IBM公司设计的方案作为非机密数据的正式数据加密标准(DES Data Encryption Standard)。

  5. 1.数据加密标准DES的产生 数据加密标准(data encryption standard, DES)是迄今为止世界上最为广泛使用和流行的一种分组密码算法,它的分组长度为64比特,密钥长度为56比特,它是由美国IBM公司研制的,是早期的称作Lucifer密码的一种发展和修改。 DES在1975年3月17日首次被公布在联邦记录中,经过大量的公开讨论后,DES于1977年1月15日被正式批准并作为美国联邦信息处理标准,即FIPS-46,同年7月15日开始生效。

  6. 1.数据加密标准DES的产生 规定每隔5年由美国国家保密局(national security agency, NSA)作出评估,并重新批准它是否继续作为联邦加密标准。最近的一次评估是在1994年1月,美国已决定1998年12月以后将不再使用DES。 1997年DESCHALL小组经过近4个月的努力,通过Internet搜索了3×1016个密钥,找出了DES的密钥,恢复出了明文。

  7. 1.数据加密标准DES的产生 • 1998年5月美国EFF(electronics frontier foundation)宣布,他们以一台价值20万美元的计算机改装成的专用解密机,用56小时破译了56 比特密钥的DES。美国国家标准和技术协会已征集并进行了几轮评估、筛选,产生了称之为 AES(advanced encryption standard) 的新加密标准。尽管如此,DES对于推动密码理论的发展和应用毕竟起了重大作用,对于掌握分组密码的基本理论、设计思想和实际应用仍然有着重要的参考价值,下面首先来描述这一算法。

  8. 2.简化的DES Simplified DES方案,简称S-DES方案。它是一个供教学而非安全的加密算法,它与DES的特性和结构类似,但参数小。注:1.* 加密算法涉及五个函数:(1)初始置换IP(initial permutation)(2)复合函数fk1,它是由密钥K确定的,具有置换和代换的运算。 (3)置换函数SW(4)复合函数fk2(5)初始置换IP的逆置换IP-1

  9. 10bit密钥 解密 P10 8bit明文 8bit明文 IP 移位 IP-1 P8 fk fk K1 K1 SW 移位 SW P8 fk fk K2 K2 IP IP-1 8bit密文 8bit密文 S-DES方案示意图 加密

  10. S-DES加密算法的数学表示 • IP-1*fk2*SW*fk1*IP也可写为密文=IP-1(fk2(SW(fk1(IP(明文)))))其中 K1=P8(移位(P10(密钥K)))K2=P8(移位(移位(P10(密钥K)))) • 解密算法的数学表示:明文=IP-1(fk1(SW(fk2(IP(密文)))))

  11. 对S-DES的深入描述 (1) S-DES的密钥生成:设10bit的密钥为( k1,k2,…,k10 )置换P10是这样定义的 P10(k1,k2,…,k10)=(k3,k5,k2,k7,k4,k10,k1,k9,k8,k6) P8= (k1,k2,…,k10)=(k6,k3,k7,k4,k8,k5,k10,k9 ) LS-1为循环左移1位, LS-2为循环左移2位 按照上述条件,若K选为(1010000010), 产生的两个子密钥分别为K1=(1 0 1 0 0 1 0 0),K2=(0 1 0 0 0 0 1 1)

  12. (2) S-DES的加密运算: 初始置换用IP函数: IP= 1 2 3 4 5 6 7 8 2 6 3 1 4 8 5 7末端算法的置换为IP的逆置换:IP-1= 1 2 3 4 5 6 7 8 4 1 3 5 7 2 8 6 易见IP-1(IP(X))=X

  13. S-DES加密图 8-bit 明文 IP fk L R 4 E/P 4 8 + K1 F 4 4 S0 S1 P4 +

  14. S-DES加密图(续) SW 4 4 fk E/P 8 8 K2 F + 4 4 S0 S1 2 2 P4 + 4 IP-1 8 8-bit 密文

  15. 函数fk,是加密方案中的最重要部分,它可表示为:函数fk,是加密方案中的最重要部分,它可表示为: fk(L,R)=(LF(R,SK),R),其中L,R为8位输入, 左右各为4位, F为从4位集到4位集的一个映射, 并不要求是1-1的。SK为子密钥。 对映射F来说: 首先输入是一个4-位数(n1,n2,n3,n4),第一步运算是扩张/置换(E/P)运算: E/P 4 1 2 3 2 3 4 1 事实上,它的直观表现形式为: n4 n1 n2 n3 n2 n3 n4 n1

  16. 8-bit子密钥: K1=(k11,k12,k13,k14,k15,k16,k17,k18),然后与E/P的结果作异或运算得: n4+k11 n1+k12 n2+k13 n3+k14 n2+k15 n3+k16 n4+k17 n1+k18 把它们重记为8位: P0,0 P0,1 P0,2 P0,3 P1,0 P1,1 P1,2 P1,3 上述第一行输入进S-盒S0,产生2-位的输出;第二行的4位输入进S盒S1,产生2-位的输出。

  17. 两个S盒按如下定义:

  18. S盒按下述规则运算: 将第1和第4的输入比特做为2- bit数,指示为S盒的一个行;将第2和第3的输入比特做为S盒的一个列。如此确定为S盒矩阵的(i,j)数。 例如:(P0,0, P0,3)=(00),并且(P0,1,P0,2)=(1 0) 确定了S0中的第0行2列(0,2)的系数为3,记为(1 1)输出。由S0, S1输出4-bit经置换P4 2 4 3 1 它的输出就是F函数的输出。

  19. P10 LS-1 LS-1 5 5 P8 8 K1 LS-2 LS-2 5 5 P8 8 K2 S-DES的密钥生成 10-bit密钥

  20. S-DES的安全性分析 对10 bit密钥的强行攻击是可行的 密钥空间:2^10=1024 密码分析:利用已知明文攻击: 已知: 明文(p1,p2,……,p8), 及对应的密文 (c1,c2,……,c8), 未知:(k1,k2, ……,k10) Ci是pj’s和kj’s的函数 这些加密算法可以表示成8个含10个变量的非线性方程 非线性是由S盒作用的结果

  21. S-DES的安全性分析 S0的非线性表示如下: 设a,b,c,d为输入的4个比特,输出的两个比特分别为q,r. 则 q=abcd+ab+ac+b+d mod2 r=abcd+abd+ab+ac+ad+a+c+1 mod2 线性映射与非线性映射交替产生了复杂的密文比特输出函数,使得密码分析很困难。(可以试图寻找8个密文比特的复杂度)

  22. 3.DES描述 图4.5是DES加密算法的框图,其中明文分组长为64比特,密钥长为56比特。图的左边是明文的处理过程,有3个阶段,首先是一个初始置换IP,用于重排明文分组的64比特数据。然后是具有相同功能的16轮变换,每轮中都有置换和代换运算,第16轮变换的输出分为左右两半,并被交换次序。最后再经过一个逆初始置换IP-1(为IP的逆)从而产生64比特的密文。除初始置换和逆初始置换外,DES的结构和图4.3所示的Feistel密码结构完全相同。

  23. DES加密算法框图 图4.5 DES加密算法框图

  24. 图4.5的右边是使用56比特密钥的方法。密钥首先通过一个置换函数,然后,对加密过程的每一轮,通过一个左循环移位和一个置换产生一个子密钥。其中每轮的置换都相同,但由于密钥被重复迭代,所以产生的每轮子密钥不相同。图4.5的右边是使用56比特密钥的方法。密钥首先通过一个置换函数,然后,对加密过程的每一轮,通过一个左循环移位和一个置换产生一个子密钥。其中每轮的置换都相同,但由于密钥被重复迭代,所以产生的每轮子密钥不相同。

  25. 56比特密钥 64比特明文 置换选择1 初始置换 第1轮 置换选择1 左循环移位 第2轮 置换选择1 左循环移位 第16轮 置换选择1 左循环移位 左右交换 初始逆置换 64比特密文 DES加密算法描述 DES加密算法框图

  26. Li-1 Ri-1 F Ki + Li Ri DES一轮加密的简图

  27. DES加密过程描述

  28. M(64bit) Ri-1(32bit) Ki(48bit) IP (置换) E (重排:有重复) E(Ri-1)(48bit) 第 i 轮 迭 代  Ki(48bit) f  S1 S2 S3 S4 S5 S6 S7 S8 IP-1 P f(Ri-1,Ki) C(64bit) DES加密算法描述

  29. IP初始置换 (a)初始置换IP

  30. (b)初始逆置换

  31. DES的描述 在前面函数f的图示中,扩展置换 (选择运算)E的定义为: 置换运算P的定义为:

  32. 轮结构 28比特 28比特 32比特 32比特 左移位 左移位 扩展/置换 (E表) 48 XOR 置换选择2 48 代换/选择 (S盒) 32 置换(p) 32 XOR Des加密算法的轮结构

  33. 首先看图的左半部分。将64比特的轮输入分成各为32比特的左、右两半,分别记为L和R。和Feistel网络一样,每轮变换可由以下公式表示:首先看图的左半部分。将64比特的轮输入分成各为32比特的左、右两半,分别记为L和R。和Feistel网络一样,每轮变换可由以下公式表示:

  34. DES加密算法的轮结构

  35. R(32比特) K(48比特) E R(48比特) S1 S1 S1 S1 S1 S1 S1 S1 P 32比特 函数F(R,K)的计算过程

  36. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 列 行 S1 0 1 2 3 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0 15 12 8 2 4 9 1 7 5 11 3 14 10 0 613 S盒 每个S盒的输入为6比特,输出为4 比特,其变换关系如下: S1盒的变换表

  37. 对F函数的说明 • (类比于S-DES),F(Ri-1, Ki)函数F以长度为32的比特串A=R(32bits)作第一个输入,以长度为48的比特串变元J=K(48bits)作为第二个输入。产生的输出为长度为32的位串。(1)对第一个变元A,由给定的扩展函数E,将其扩展成48位串,E(A)(2)计算E(A)+J,并把结果写成连续的8个6位串,B=b1b2b3b4b5b6b7b8

  38. 对F函数的说明 • (3)使用8个S盒,每个Sj是一个固定的416矩阵,它的元素取0~15的整数。给定长度为6个比特串,如Bj=b1b2b3b4b5b6,计算Sj(Bj)如下:b1b6两个比特确定了Sj的行数, r(0<=r<=3); 而b2b3b4b5四个比特确定了Sj的列数c(0<=c<=15)。最后Sj(Bj)的值为S-盒矩阵Sj中r行c列的元素(r,c), 得Cj=Sj(Bj)。(4) 最后,P为固定置换。

  39. DES 轮函数F()

  40. 其中轮密钥Ki为48比特,函数F(R,K)的计算过程如图4.7所示。轮输入的右半部分R为32比特,R首先被扩展成48比特,扩展过程由表3.2(c)定义,其中将R的16个比特各重复一次。扩展后的48比特再与子密钥Ki异或,然后再通过一个S盒,产生32比特的输出。该输出再经过一个由表3.2(d)定义的置换,产生的结果即为函数F(R,K)的输出。其中轮密钥Ki为48比特,函数F(R,K)的计算过程如图4.7所示。轮输入的右半部分R为32比特,R首先被扩展成48比特,扩展过程由表3.2(c)定义,其中将R的16个比特各重复一次。扩展后的48比特再与子密钥Ki异或,然后再通过一个S盒,产生32比特的输出。该输出再经过一个由表3.2(d)定义的置换,产生的结果即为函数F(R,K)的输出。

  41. 图4.7 函数F(R,K)的计算过程

  42. F中的代换由8个S盒组成,每个S盒的输入长为6比特、输出长为4比特,其变换关系由表3.3定义,每个S盒给出了4个代换(由一个表的4行给出)。(见42页表3.3)

  43. 对每个盒Si,其6比特输入中,第1个和第6个比特形成一个2位二进制数,用来选择Si的4个代换中的一个。6比特输入中,中间4位用来选择列。行和列选定后,得到其交叉位置的十进制数,将这个数表示为4位二进制数即得这一S盒的输出。例如,S1的输入为011001,行选为01(即第1行),列选为1100(即第12列),行列交叉位置的数为9,其4位二进制表示为1001,所以S1的输出为1001。S盒的每一行定义了一个可逆代换,图4.2(在3.1.1节)表示S1第0行所定义的代换。对每个盒Si,其6比特输入中,第1个和第6个比特形成一个2位二进制数,用来选择Si的4个代换中的一个。6比特输入中,中间4位用来选择列。行和列选定后,得到其交叉位置的十进制数,将这个数表示为4位二进制数即得这一S盒的输出。例如,S1的输入为011001,行选为01(即第1行),列选为1100(即第12列),行列交叉位置的数为9,其4位二进制表示为1001,所以S1的输出为1001。S盒的每一行定义了一个可逆代换,图4.2(在3.1.1节)表示S1第0行所定义的代换。

  44. A=R(32 bits) J=K(48 bits) E E(A)为48 bits + 写成8个6比特串 B B1 B2 B3 B4 B5 B6 B7 B8 S1 S2 S3 S4 S5 S6 S7 S8 C1 C2 C3 C4 C5 C6 C7 C8 P 32 bits F(A,J) DES 的F函数

  45. DES中使用的特定函数 • 初始置换IP:对明文输入进行次序的打乱。 • 逆置换IP-1: • 扩展函数E;(32到48) • 置换函数P。

  46. DES中使用的其它特定函数 • 初始置换IP:从表3.2中看出X的第58个比特是IP(X)的第一个比特;X的第50个比特是IP(X)的第二个比特… • 逆置换IP-1;扩展函数E;置换函数P。

  47. 密钥的产生 再看图4.5和图4.6,输入算法的56比特密钥首先经过一个置换运算,该置换由表3.4(a)给出,然后将置换后的56比特分为各为28比特的左、右两半,分别记为C0和D0。在第i 轮分别对Ci-1和Di-1进行左循环移位,所移位数由表3.4(c)给出。移位后的结果作为求下一轮子密钥的输入,同时也作为置换选择2的输入。通过置换选择2产生的48比特的Ki,即为本轮的子密钥,作为函数F(Ri-1,Ki)的输入。其中置换选择2由表3.4(b)定义。(见44页表3.4)

  48. 从密钥K计算子密钥 • 实际上,K是长度为64的位串,其中56位是密钥,8位是奇偶校验位(为了检错),在密钥编排的计算中,这些校验位可略去。(1). 给定64位的密钥K,放弃奇偶校验位(8,16,…,64)并根据固定置换PC-1(见144页图4-4-9)来排列K中剩下的位。我们写 PC-1(K)=C0D0其中C0由PC-1(K)的前28位组成;D0由后28位组成。

  49. (2)对1<=i<=16,计算Ci=LSi(Ci-1);Di=LSi(Di-1)LSi表示循环左移2或1个位置,取决于i的的值。i=1,2,9和16 时移1个位置,否则移2位置。Ki=PC-2(CiDi), PC-2为固定置。 • 注:一共16轮,每一轮使用K中48位组成一个48比特密钥。可算出16个表,第i个表中的元素可对应上第i轮密钥使用K中第几比特!如:第7轮的表7:K7取K中的比特情况:52 57 11 1 26 59 10 34 44 51 25 199 41 3 2 50 35 36 43 42 33 60 1828 7 14 29 47 46 22 5 15 63 61 394 31 13 38 53 62 55 20 23 37 30 6

  50. K(56bit) 其中, PC-1 (置换) LS1 LS1 PC-2 K1(48bit) (选取:有舍弃)   LS16 LS16 PC-2 K16(48bit) DES的密钥扩展 各轮迭代一共使用16个加密子密钥K1,K2,,K16, 它们依据所给56bit主密钥K按下述扩展算法产生:

More Related