信息安全中的DES加密算法

信息安全中的DES加密算法

李 联

(西北工业大学 软件学院陕西 西安710072

  摘 要:

根据密钥类型不同将现代密码技术分为 2 类:—类是对称加密(秘密钥匙加密)系统

;另一类是公开密钥加密(非对称加密)系统。着重讨论 DES 的加密算法,详细论述了 D

ES
的算法流程,并探讨了 DES 算法的缺陷和漏洞。


   关键词:网络信息安全; DES ;对称加密算法;公开密钥加密算法

The DES Encryption Algorithm in Information Security

LI Lian

(Software College, Northwestern Polytechnical University, Xi

an, 710072, China)

  Abstract

Moderm encryption algorithm has two types as the different of key:one is the sy

mmetrical encryption system;the other is the public key encryption system
Thi

s article mainly discusses the DES encryption algorithm, detailed states the th

ought of it,and attempts to discover the defect and loophole of it
   Keywords

network information security;DES; the symmetrical encryption algorithm

;the public key encryption algorithm

  古往今来,通信中的安全保密问题一直受到广泛关注。历史上,交战双方在通信安全、保密

和密码破译方面的优势均被认为是取得战争胜利的关键因素之一。今天,人类已进入信息化

时代,现代通信涉及各个行业,信息安全已成为人人都关心的问题,这就促使密码学揭去了

神秘的面纱,为更广泛的领域和大众服务。

1/解密算法的一般原理


   密码体制从原理上可分为 2 大类,即单钥密码体制和双钥密码体制。


   单钥密码体制是指信息的发送方和接受方共享一把钥匙。在现代网络通信条件下,该

体制的一个关键问题是如何将密钥安全可靠地分配给通信的对方,并进行密钥管理。因此单

钥密码体制在实际应用中除了要设计出满足安全性要求的加密算法外,还必须解决好密码的

产生、分配、传输、存储和销毁等多方面问题。单钥密码可分为古典密码、流密码和分组密

码, DES 就属于分组密码中的一种。


   双钥密码体制又称公钥密码体制,其最大特点是采用 2 个密钥将加密、解密分开。在

双钥体制下,每个用户都拥有 2 把密钥,—个公开,一个自己专用。当使用用户专用密钥加

密,而用该用户公开密钥解密时,则可实现一个被加密的消息能被多个用户解读;当使用

用户公开密钥加密,而用该用户专用密钥解密时,则可实现传输的信息只被一个用户解读。

前者常被用于数字签名,后者常被用于保密通信。

2/解密机制的应用


   在信息安全领域中,凡涉及到数据通信均采用加 / 解密机制。而目前日益发展的电子商

务正是充分展示加 / 解密机制的一个十分重要的领域。


   在电子商务中,订单的保密性需用加密技术来处理,而订单的可靠性、时间性则需用

数字签名技术,有时还需双重签名。例如,刘先生要买张小姐的一处房产,他发给张小姐一

个购买报价单及他对银行的授权书的消息,如果张小姐同意按此价格出卖,则要求银行将钱

划到张小姐的帐上。但刘先生不想让银行看到报价,也不想让张小姐看到他的银行帐号信息

。此外,报价和付款是相连的、不可分割的,仅当张小姐同意他的报价后,钱才会转移。要

达到这个要求,采用双重签名即可实现。

3DES的算法描述


   DES 作为美国国家标准研究所( American National Standard Institute ANSI )的数

据加密算法( Data Encryption Algorithm DEA )和 ISO DEA

1
,成为一个世界范围内的

标准已经二十多年。尽管他带有过去时代的特征,但他很好地经受住了多年的密码分析

,除了可能的最强有力的对手外,对其他的攻击具有较好的安全性。


3.1DES的描述


   DES 是一种分组加密算法,他以 64 位为分组对数据加密。 64 位一组的明文从算法的一端

输入, 64 位的密文从另一端输出。 DES 是一个对称算法:加密和解密用的是同一个算法(除

密钥编排不同以外)。


   密钥的长度为 56 ( 密钥通常表示为 64 位的数,但每个第 8 位都用作奇偶检验,可以忽

) 。密钥可以是任意的 56 位数,且可以在任意的时候改变。


   DES 算法的入口参数有 3 个: Key Data Mode 。其中 Key 8 个字节共 64 位,是 DES 算法

的工作密钥; Data 也为 8 个字节 64 位,是要被加密或解密的数据: Mode DES 的工作方式,有

两种:加密或解密。


   DES 算法的工作过程:若 Mode 为加密,则用 Key 对数据 Data 进行加密,生成 Data 的密码

形式( 64 位)作为 DES 的输出结果;若 Mode 为解密,则用 Key 对密码形式的数据 Data 解密,还

原为 Data 的明码形式( 64 位)作为 DES 的输出结果。


   在通信网络的两端,双方约定了一致的 Key ,在通信的源点用 Key 对核心数据进行 DES 加密

,然后以密码形式通过公共通信网(如电话网)传输到通信网络的终点,数据达到目的

地后,用同样的 Key 对密码数据进行解密,便再现了明码形式的核心数据。这样便保证了核

心数据(如 PIN MAC 等)在公共通信网中传输的安全性和可靠性。通过定期在通信网络的源

端和目的端同时改用新的 Key ,便能更进一步提高数据的保密性,这正是现在金融界交易网

络的流行作法。


   简单地说,算法只不过是加密的一种基本技术, DES 基本组建分组是这些技术的一种组合

,他基于密钥作用于明文,这是众所周知的轮( round )。 DES 16 轮,这意味着要在明文分

组上 16 次实施相同的组合技术。


3.2DES算法详述


   DES 算法把 64 位的明文输入块变为 64 位的密文输出块,他所使用的密钥也是 64 位, DES 64

位的明文分组进行操作。通过一个初始置换,将明文分组分成左半部分和右半部分,各 32

长。然后进行 16 轮相同的运算,这些相同的运算被称为函数 f ,在运算过程中数据和密

钥相结合。经过 16 轮运算后左、右部分在一起经过一个置换(初始置换的逆置换),这样算

法就完成了。


   1 )初始置换


   其功能是把输入的 64 位数据块按位重新组合,并把输出分为 L0 R0 两部分,每部分各

32 位,其置换规则如表 1 所示。

  即将输入的第58位换到第1位,第50位换到第2位,…,依次类推,最后一位是原来的

7 位, L0 R0 则是换位输出后的两部分, L0 是输出的左 32 位, R0 是右 32 位。例:设置换前

的输入值为 D1D2D3 D64 ,则经过初始置换后的结果为: L0=D58D50 D8 R0=D57D49 7


   2 )逆置换


   经过 16 次迭代运算后,得到 L16 R16 ,将此作为输入进行逆置换,即得到密文输出。

逆置换正好是初始置换的逆运算。例如,第 1 位经过初始置换后,处于第 40 位,而通过逆置

换,又将第 40 位换回到第 1 位,其逆置换的规则如表 2 所示。

  (3)函数f(Ri,Ki)的计算
  其算法描述如图
1所示。

  在图1中,“扩展置换”是将32位放大成48位,“P盒置换”是32位到32位换位,其换位

规则分别如表 3 、表 4 所示。


  在(Ri,Ki)算法描述图中,S1S2,…,S8为选择函数,其功能是把6 b

据变为 4 b 数据。下面以选择函数 S1 为例说明其功能。其选择函数 S1 的功能表如表 5

示。

  通过表5可以看到,在S1中共有4行数据,分别命名为0123行,每行有16列,分

别命名为 0 1 2 3 ,…, 14 15 列。


   现设输入为: D=D1D2D3D4D5D6


   令:列 =D2D3D4D5 ,行 =D1D6


   然后在 S1 表中查得对应的数,以 4 位二进制表示,此即为选择函数 S1 的输出


   (4) 子密钥 Ki(48 b) 的生成算法


   开始,由于不考虑每个字节的第 8 位, DES 的密钥从 64 位变为 48 位,如表 6 所示,首先 56

密钥被分成两个部分,每部分 28 位,然后根据轮数,两部分分别循环左移 l 2 位。

  DES算法规定,其中第816,…,64位是奇偶校验位,不参与DES运算。故Key实际可用

位数只有 56 位。即:经过密钥置换表的变换后, Key 的位数由 64 位变成了 56 位,此 56 位分为 C

0
D0 两部分,各 28 位,然后分别进行第一次循环左移,得到 C1 D1 ,将 C1(28 ) D1(28

) 合并得到 56 位,再经过压缩置换,从而便得到了密钥 K0(48 ) 。依次类推,便可得到 K1 K

2
,…, K15 。需要注意的是, 16 次循环左移对应的左移位数要依据表 7 所示的规则进行。


   以上介绍了 DES 算法的加密过程。 DES 算法的解密过程是一样的,区别仅在于第一次迭代

时用子密钥 K15 ,第二次是 K14 ,…,最后一次用 K0 ,算法本身并没有任何变化。

3.3算法的编程实现


   对于算法的实现,前面有了很详细的算法概述,下面主要介绍如何编程。 DES 加密是一种

组加密算法,他是把密文分成几块 (block) ,一次加密一块,分几次加密完成

,这是一个非常典型的分组加密算法。


   算法的主要函数为:
 


  这个函数是对 dc 这个 32 位的结构进行加密, data 则是输入的密钥存放的数据结构, blocks

因为是 DES 加密算法时的一个分组加密算法,所以 blocks 是指分组的组数。
 


  这个函数是上个函数的逆运算,即对他进行解密。

4DES算法的应用误区及避开方法


   DES 算法具有极高的安全性,到目前为止,除了用穷举搜索法对 DES 算法进行攻击外,还没

有发现更有效的办法。而 56 位长的密钥的穷举空间为 256 ,这意味着如果一台计算机的速度

是每秒检测一百万个密钥,则他搜索完全部密钥就需要将近 2 285 年的时间,可见,这是

难以实现的。当然,随着科学技术的发展,当出现超高速计算机后,可以考虑把 DES

钥的长度再增长一些,以此来达到更高的保密程度。


   由上述 DES 算法介绍可以看到, DES 算法中只用到 64 位密钥中的其中 56 位,而第 8 16

24 ,…, 64 8 个位并未参与 DES 运算,这一点,提出了一个应用上的要求,即 DES

的安全性是基于除了 8 16 24 ,…, 64 位外的其余 56 位的组合变化才得以保证的。因此

,在实际应用中,应避开使用第 8 16 24 ,…, 64 位作为 DES 密钥的有效数据位,才能保

DES 算法安全可靠。对运用 DES 来达到保密作用的系统产生数据被破译的危险,这正是 DES

算法在应用上的误区。


   避开 DES 算法应用误区的具体操作:在 DES 密钥 Key 的使用、管理及密钥更换的过程中,应

对避开 DES 算法的应用误区,即绝对不能把 Key 的第 8 16 24 ,…, 64 位作为有效数据位

来对 Key 进行管理,这一点,对应用 DES 加密的用户来说要高度重视。有些网络,

利用定期更换 DES 密钥 Key 的办法来进一步提高系统的安全性和可靠性,如果忽略了上述应用

误区,那么,更换新密钥将是徒劳的,对网络的安全运行将十分危险,所以更换密钥一

定要保证新 Key 与旧 Key 真正的不同,即除了第 8 16 24 ,…, 64 位以外其他位数据发生

了变化,这一点是非常重要的。


   目前加密算法已被广泛的应用,随着信息化和数字化社会的发展,随着计算机和 Inte

rnet
的普及,密码学必将在国家安全、经济交流、网络安全及人民生活等方面发挥更大作用

参考文献

1

[美] Bruce Schneier 应用密码学[ M ].吴世忠,祝世雄,张文正,等译.北京:机械

工业出版社, 2000.
2 ]冯登国.密码分析学[ M ].北京:清华大学出版社, 2000.

你可能感兴趣的:(数据结构,算法,网络应用,大众软件,出版)