常用密码算法介绍
密码体制的根本实现是密码算法。密码已经拥有上千年的历史了,密码的算法也越
来越复杂和完善。从最初的著名的恺撒(Cacser)密码算法(是将26个字符进行移位代
换),到现在的DES和RSA密码,密码算法在安全性和复杂性上都有了很大的发展。目
前已经公开的密码算法要超过100个,这里我们介绍几种常用的现代密码算法。
最有名的密码算法是美国的DES算法,其他的还有RC4与RC5等算法、欧洲的
IDEA算法、日本的FEAL算法和澳大利亚的LOKI91算法。这些算法都属于对称密码,
主要用于数据的加密,加密速度快。
另一类密码算法,主要有RSA、Rabin.ELGamal,背包算法等,它们属于公钥密码体
制。还有一类算法主要用于消息的认证和签名,称为杂凑算法(hash algorithm),也叫消息摘要算法,主要代表是MD5算法。
1.标准数据加密标准一- DES
在所有分组密码中,数据加密标准(DES)可谓是最经典的了。它的产生被认为是20
世纪70年代信息加密技术发展史上的两大里程碑之一
DES是一种单钥密码算法,它是一种典型的按分组方式工作的密码。DES的基本思
想是将二进制序列的明文分成每64位-组,用长为64位的密钥对其进行16轮代换和换
位加密,最后形成密文。DES的密钥长度为64位(即8个字节),其中每个字节的最后一
位用于奇偶校验(即第8位、第16 ....实际有效位是7位,因此实际密钥长度为
56位。
DES的巧妙之处在于,除了密钥输人顺序之外,其加密和解密的步骤完全相同,这就
使得在制作DES芯片时,易于做到标准化和通用化,这一点尤其适合现代通信的需要。
在DES出现以后,经过许多专家学者的分析论证,证明它是一种性能良好的数据加密算
法,不仅随机特性好.线性复杂度高,而且易于实现。因此,DES在国际上得到了广泛的
应用。
2.公开密钥系统一- RSA 密钥体系
RSA体制是1978年由Rivest、Shamir和Adleman提出的第一个公钥密码体制,也
是迄今为止理论上最为成熟完善的一种公钥密码体制。它的安全性是基于大整数的分解
(已知大整数的分解是NP问题),而体制的构造是基于Euler定理。
用户首先选择一对不同的素数p.q.计算n=pXq,f(n)-(p-l)X(q-l),并找一个
与f(n)互素的数d,计算其逆a.即da=1 mod f(n)。 则密钥空间K=(n,p,q.a,d).加
密过程为m° mod n=c,解密过程为c mod n=m。其中m、c分别为明文和密文,”和a
公开,而p.q.d是保密的
在不知道陷门信息d的情况下,想要从公开密钥n、a算出d只有分解大整数n的因
子,但大数分解是一个十分困难的问题。Rivest . Shamir和Adleman用已知的最好算法
估计了分解n的时间与n的位数的关系。用运算速度为1X10*次/秒的计算机分解500
位的m.计算机分解操作数是1.3X 1039 ,分解时间是4. 2X1035年。因此,一般认为RSA
保密性能良好。
但由于RSA涉及高次幂运算,所以用软件实现速度较慢,尤其在加密大量数据时,一
般用硬件实现RSA,速度较快。RSA中的加密、解密变换是可交换的互逆变換,所以
RSA还可用做数字签名
3.单向杂凑算法MD5
杂凑(hash)函数是一种能够将任意长度的消息压缩到某一固定长度的消息摘要的函
数。杂凑函数在认证技术中起着关键作用。通常有三种方法可以用于实现杂凑函数。
(1)使用数学上的单向函数。
例如:基于因子分解或离散对数问题的杂凑函数,往往具有很好的密码学性质,且满
足杂凑函数的单向.无碰撞基本要求。但由于其工程上的缺点,即计算量大、速度慢,不实
用,因此目前工程上没有采用这种技术。
(2)使用分组密码系统。
例如通过DES.IDEA.LOKI等高强度密码系统的级联,可以实现性能较好的杂凑算
法,但这类算法依赖于密钥,如果加密和杂凑压缩使用同样的密码体制,会带来严重的安
全问题,因此在加密和杂凑压缩时一般使用不同的分组密码体制,以保证其安全性。
(3)基于软件的杂凑算法。
利用计算机软件系统的简单变化和函数,通过圈函数迭代,同样可以得到安全的杂凑
函数。例如著名的MD4和MD5,这类算法不依赖于密码系统,可以和各种密码系统联合.
使用,便于软件、硬件实现,因此它们具有速度和安全性上的双重优点。
MD5算法是对杂凑压缩信息块按512位进行处理的,首先它对杂凑信息进行填充,
使信息的长度等于512的倍数。填充方法是首先在压缩信息后填充64字节长的信息长
度,然后再用首位为1.后面全为0的填充信息填充,使经过填充后的信息长为512的倍
数,然后对信息依次每次处理512位,每次进行4轮每轮16步总共64步的信息变换处
理,每次输出结果为128位,然后把前一次的输出作为下一次信息变换的输人初始值(第
一次初始值算法已经固定),这样最后输出一个128 位的杂凑结果。目前MD5被认为是
最安全的杂凑算法之一,现在已经在很多应用中被当成标准使用。