信息安全中的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 systemThi 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)算法描述图中,S1,S2,…,S8为选择函数,其功能是把6 b数 据变为4 b数据。下面以选择函数S1为例说明其功能。其选择函数S1的功能表如表5所 示。
通过表5可以看到,在S1中共有4行数据,分别命名为0,1,2,3行,每行有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算法规定,其中第8,16,…,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.