数据加密标准DES分析

DES:data encryption standard

  • 20世纪70年代初,非军用密码学的研究处于混乱不堪的状态中。
  • 1972年,美国国家标准局(NBS),即现在的国家标准与技术研究所(NIST),拟定了一个旨在保护计算机和通信数据的计划。计划中提出要开发一个单独的标准密码算法。
  • 1973年,NBS公开征集标准密码算法。
  • 1974年,NBS第二次征集。收到一个有前途的候选算法,该算法从IBM 1970年初开发出的Lucifer算法发展而来。
  • 19753月,NBS公布了算法细节。
  • 197611月,DES被美国政府采纳作为联邦标准,并授权在非密级的政府通信中使用。
  • 1981年,美国国家标准研究所(ANSI)批准DES作为私营部门的标准(ANSI X3.92)。

DES算法说明:

  • DES是一种分组加密算法,输入的明文分组长度为64,通过**计算,生成的密文为64位。
  • 64位的明文分组先进行一个初始置换,将明文分组分成左半部分和右半部分,各32位长;然后进行16完全相同的运算。
  • **为56,需要产生16个子**参与每轮内的运算。

DES算法加密流程:

数据加密标准DES分析数据加密标准DES分析

其中的F为轮处理函数⬇️

数据加密标准DES分析

 

DES算法说明:

①初始置换IP

【初始置换的作用】

把输入的64位明文m按位重新组合,并把输出分为长32位的L0R0两部分。

其置换规则如下表,即——58位到第1位,第50位到第2位,依次类推,第64位到第7

IP

58  50  42  34  26  18  10   2  60  52  44  36  28  20  12   4

62  54  46  38  30  22  14   6  64  56  48  40  32  24  16   8

57  49  41  33  25  17   9   1  59  51  43  35  27  19  11   3

61  53  45  37  29  21  13   5  63  55  47  39  31  23  15   7

 

轮函数中的扩展置换E

【扩展置换的作用】

将输入的32位的右部分扩展为48位,以备与48位**进行计算,原数据的1位扩展到了多位上

数据加密标准DES分析

数据加密标准DES分析

输入的32位数,有16个位的比特出现了两次(蓝色表示)。

 ③轮函数中的S

S-盒共8个,将上面计算的48-bit结果作为输入,替代操作成32-bit的输出,增加混乱。过程如下:

    • 48-bit组被分成8个6-bit组,每一个6-bit组作为一个S盒的输入
    • 6-bit数的首、末两位数决定输出项所在的行中间的四位决定输出项所在的列;利用该行列数查S盒的表即得到输出

例如:假设第6个S-盒的输入为110101,则输出为第3行第10列的项(行或列的记数从0开始),即输出为4-bit组0001。

如 S6:
  12,1,10,15,9,2,6,8,0,13,3,4,14,7,5,11,
  10,15,4,2,7,12,9,5,6,1,13,14,0,11,3,8,
  9,14,15,5,2,8,12,3,7,0,4,10,1,13,11,6,
  4,3,2,12,9,5,15,10,11,14,1,7,6,0,8,13,

轮函数中的P

  • P-置换将S盒32位的输出进行置换,增加扩散性
  • P-

    16   7  20  21  29  12  28  17   1   15  23  26   5   18  31  10

     2   8   24  14  32  27   3     9  19  13  30    6  22  11   4    25

 

DES密文生成与解密

经过16轮后的64位数据,经过最终置换IP-1后生成的比特串就是密文e

IP-1

40 8 48 16 56 24 64 32 39 7 47 15 55 23 63 31
38 6 46 14 54 22 62 30 37 5 45 13 53 21 61 29 
36 4 44 12 52 20 60 28 35 3 43 11 51 19 59 27 
34 2 42 10 50 18 58 26 33 1 41  9  49 17 57 25

 

  • DES经过精心选择的各种操作,获得了一个非常有用的性质:加密和解密可使用相同的算法。唯一的不同点就是,如果各轮加***分别是K1,K2,K3….K16,那么解***则是K16,K15,K14…K1

 

DES子**的生成

DES算法的**根据用户的输入生成,用户输入的**通常为64-bit,但算法把8的倍数位,即第816243240485664位作为奇偶校验位,在计算**时要忽略这8位,实际的**长度为56-bi数据加密标准DES分析t

DES密码的8位校验位

输入的密码只在8位校验位上有区别的话,操作的结果将是一样的,如:
    输入的密码为wuzhenll,特定地改变这64位数据奇偶校验位上的数,可以得到不同的密码,如把8个奇偶检验位全取反:
        

w->v :1110111->1110110
        

u->t  :1110101->1110100

 z->{  :1111010->1111011 
        

h->i  : 1001000->1001001

 e->d  :1100101-> 1100100
        

n->o  :1101110-> 1101111
        

l->m  :1101100-> 1101101
        

形成新密码:vt{idomm
        

表面上新密码和原密码迥然不同,但是由于他们仅在奇偶校验位上有区别,实际加密过程中用到的其他位都相同,所以用这两个密码进行加密解密操作得到的结果是一样的。

 

DES的算法安全性问题

  • **长度:

最大缺陷就是56位**长度短,**空间可选**数256,抵抗不了穷举攻击

  • 弱**与半弱**

​​​​​​​->DES的弱**和半弱**

  • 主**产生的16个子**都相同,该**就是weak keyDES4个弱**:

弱**值(带奇校验)

真实**(经过PC1)

0101 0101 0101 0101

0000000 0000000

1F1F 1F1F 0E0E 0E0E

0000000 FFFFFFF

E0E0 E0E0 F1F1 F1F1

0000000 FFFFFFF

FEFE FEFE FEFE FEFE

FFFFFFF FFFFFFF

  • 如果一个主**在16轮中只产生两个不同的子**,每个被使用8次,这个主**就是半弱**(semi-weak key

->DES的破译——密码分析

  • 1990年,以色列密码学家Eli BihamAdi Shamir提出了差分密码分析法( Differential cryptanalysis) ,可对DES进行选择明文攻击;
  • Rueppel[1986]的流密码专著中曾提出以最接近的线性函数逼近非线性布尔函数的概念,Matsui推广了这一思想以最隹线性函数逼近S盒输出的非零线性组合[1993],即所谓线性攻击,这是一种已知明文攻击法。

->DES的破译——穷举攻击

  • 设一次加密需要1us,穷举尝试所有**需要的时间比较:
  • 数据加密标准DES分析

->DES的破译——穷举攻击

  • 1977年,一台专用于破译DES的并行计算机能在一天中找到**,耗资2000万美元。当时DES被认为是一种十分强壮的加密方法。 
  • CRYPTO’93上,SessionWiener给出了一个非常详细的**搜索机器的设计方案,这个机器基于并行运算的**搜索芯片,所以16次加密能同时完成。花费10万美元,平均用1.5天左右就可找到DES**。
  • 1993年,花费100万美元建造的穷举DES破译机平均3.5小时就能找到一个**。并且这种机器的造价以每1020%的速度下降。
  • 美国克罗拉多洲的程序员Verser1997218日起,用了96天时间,在Internet上数万名志愿者的协同工作下,成功地找到了DES的**,赢得了悬赏的1万美元。
  • 19987月电子前沿基金会(EFF)使用一台25万美圆的电脑在56小时内破译了56比特**的DES
  • 19991RSA数据安全会议期间,电子前沿基金会用22小时15分钟就宣告**了一个DES的**。