换位和置换(transposition and substitution ciphers)是两种主要的编码方法,是组成最简单的密码基础。换位很像是一种字母游戏,打乱字母的顺序,并设法用这些打乱的字母组成一个单词。在换位密码中,数据本身并没有改变,它只是被安排成另一种不同的格式,有许多种不同的置换密码,有一种是用凯撒大帝的名字Julias Caesar命名的,即凯撒密码。它的原理是每一个字母都用其前面的第三个字母代替,如果到了最后那个字母,则又从头开始算。字母可以被在它前面的第n个字母所代替,在凯撒的密码中n就是3。
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的秘密密钥。
PGP(Pretty Good Privacy)是一个基于RSA公钥加密体系的邮件加密软件,它的创始人是美国的PhilZimmermann。其创造性在于把RSA公钥体系的方便和传统加密体系的高速度结合起来,可以用它对邮件保密以的邮件加上数字签名,从而使收信人可以确信邮件是用户发来的。它让用户可以安全地和从未见过的人们通信,事先并不需要任何保密的传递密钥。它采用了以下技术:审慎的密钥合算法、用于数字签名的邮件往往不加密前压缩等,还有一个良好的人机工程设计。它功能强大、速度很快,而且其源代码是免费的。实际上PGP的功能还不止上面说的,PGP可以用来加密文件,还可以用PGP代替UUencode生成RADIX64格式(就是MIME的BASE 64格式)的编码文件。
为什么说PGP用的是RSA和传统加密的杂合算法呢?因为RSA算法计算量很大而且在速度上也不适合加密大量数据,所以PGP实际上用来加密的不是RSA本身,而是采用了一种叫IDEA的传统加密算法,首先解释一下什么叫传统加密,简单地说就是用一个密钥加密明文,然后用同样的密钥解密。这种方法的代表是DES(US Federal Data Encryption Standard),也就是乘法加密,主要缺点就是传递渠道解决不了安全性问题,不适合网络环境邮件加密需要。IDEA 是一个有专利的算法,专利持有者是 ETH 和一个瑞士公司Ascom-Tech AG,非商业用途的IDEA实现不用向他们交纳费用。IDEA的加(解)密速度比RSA快得多,所以实际上PGP是以一个随机生成的密钥用IDEA算法对明文加密,然后用RSA算法对该密钥加密,这样收件人同样是用RSA解出这个随机密钥,再用IDEA解密邮件本身,这样的链式加密就做到了既有RSA体系的链式加密就做到了既有RSA体系的保密性,又有IDEA算法的快捷性。