6.2 数据加密方法
据不完全统计,到目前为止,已经公开发表的各种加密算法多达数百种。下面我们将分别介绍简单加密方法、对称算法、公钥算法和PGP的应用。
1.简单的加密方法:换位和置换
换位和置换(transposition and substitution ciphers)是两种主要的编码方法,是组成最简单的密码基础。换位很像是一种字母游戏,打乱字母的顺序,并设法用这些打乱的字母组成一个单词。在换位密码中,数据本身并没有改变,它只是被安排成另一种不同的格式,有许多种不同的置换密码,有一种是用凯撒大帝的名字Julias Caesar命名的,即凯撒密码。它的原理是每一个字母都用其前面的第三个字母代替,如果到了最后那个字母,则又从头开始算。字母可以被在它前面的第n个字母所代替,在凯撒的密码中n就是3。
2.基于密钥的密码算法
这种算法通常有两类:对称算法和公开密钥算法。
(1) 对称算法
对称算法,就是加密密钥能够从解密密钥中推算出来,反过来也成立。大多数对称算法中,加、解密的密钥是相同的,这些算法也称为秘密密钥算法或单密钥算法。它要求发送者和接收者在安全通信之前,商定一个密钥。算法的安全性依赖于密钥,只要通信需要保密,密钥就必须保密。
对称算法又分为两类:分组算法和序列算法,两者区别在于分组算法是对一个大的明文数据块(分组)进行运算;序列算法是对明文中单个位(或字节)进行运算。对称算法体制的发展趋势将以分组密码为重点,着名的对称密码算法有:
1) DES(Data Encryption Standard)数据加密标准
最着名的保密密钥或对称密钥加密算法DES(Data Encryption Standard)是由IBM公司在70年代发展起来的,该标准于 1977年由美国国家标准局颁布,主要用于民用敏感信息的保护,后被国际标准化组织接受作为国际标准。DES主要采用替换和移位的方法,使用56位密钥每次处理64位数据,运算速度快,易于用软件实现,也适合在专用芯片上实现。DES是一种世界公认的好的加密算法,自它问世以来经受住了许多科学家的研究和破译,曾为全球贸易、金融等部门提供了可靠的通信安全保障。但它也有明显的缺点,密钥太短, 有56位。目前已有许多DES被破译的报道,因此为了提高安全性,DES又有了新的发展。比如:三重 DES 使用双密钥加密的方法,即使用两个 56 位的密钥 k1、k2,发送方用 k1 加密,k2 解密,再使用 k1加密。接收方则使用k1解密,k2加密,再使用k1解密,其效果相当于将密钥的长度增加到112位。还有三重DES的变形算法,使用三个独立密钥,相当于密钥长度增加到168位等。
2) IDEA(International Data Encryption Algorithm)国际数据加密算法
IDEA由瑞士的Xuejia Lai和James Massey于1990年正式公布,并在以后得到增强。这种算法是在DES算法的基础上发展起来的,类似于三重DES。发展IDEA也是因为感到DES使用的密钥太短。IDEA的密钥为 128 位,这么长的密钥在未来若干年内应该是安全的。IDEA 算法也基于分组,它采用软件和硬件实现都同样快速,目前软件实现的IDEA比DES快两倍。由于IDEA是在美国之外提出并发展起来的,避开了美国法律上对加密技术的诸多限制。因此,有关IDEA算法和实现技术的资料可以自由出版和交流,可极大地促进IDEA的发展和完善。但由于该算法是一个相对较新的算法,针对它的攻击也还不多,还未经过较长时间的考验。因此,尚不能判断出它的问题和缺陷。
这一类算法的优点是有很强的保密强度,且经受住时间的检验和攻击,但其密钥必须通过安全的途径传送。因此,其密钥管理成为系统安全的重要因素。
(2) 公开密钥算法
公开密钥算法是指使用一对密钥加解密信息,加密的密钥不同于解密的密钥,而且解密的密钥不能根据密钥在合理的时间和财力内计算出来。之所以叫公开密钥算法(以下简称公钥算法),是因为加密密钥能够公开,谁都可以使用加密密钥加密信息,但只有用相应的解密密钥才能解密信息。
着名的公钥算法有:
1) RSA算法
RSA由美国的Rivest、Shamir和Adleman于1978年提出。该算法基于大数分解的难度,即已知合数n,求pq,使n=pq。所以随着大整数分解算法和计算能力的不断提高,对RSA的破译能力也在增强。有报道482位的RSA已被利用数域筛NFS分解出来,512位也可以在数月时间被分解,1024位的RSA目前仍是比较安全的。与DES相比,RSA拥有更高的安全。与DES相比,RSA拥有更高的安全性,但执行速度慢,因些两者经常结合起来使用,DES加密速度快,适合加密较长的报文;而 RSA 可解决 DES 密钥分配的问题。比如:若 A 要与 B 通信,首先 A产生一个与B通信的DES密钥,用B的公钥对通信密钥加密后传给B,B用其私有密钥(只有B拥有)解密,获得双方的一次性通信DES密钥。然后双方采用此DES通信进行保密通信。
2) Diffe-Hellman算法
该算法是第一个公钥算法,由美国的Diffe和Hellman于1976年提出。其安全性源于在有限域上计算离散对数比计算指数更困难,该算法主要用于密钥交换。协议如下:首先A与B协商一个大的素数n和g ,g是模n的本原元;A选取一个大的随机数x并且发送给B:X=gx mod n;B选取一个大的随机数y并且发送给A:Y=gy mod n;A计算k2=Yx mod n;B计算k2=Xy mod n,k1和k2都等于gxy mod n,偷听者即使知道n,g,X和Y,也无法计算出k,除非他们计算离散对数,因此k是A与B的秘密密钥。
3) 椭圆曲线
椭圆曲线已研究了许多年,Koblitz和Miller 于1985年分别提出将它用于公钥密码体制。椭圆曲线的吸引人之处在于提供了由元素和组合规则来组成群的构造方法,
新闻热点
疑难解答
图片精选