[摘 要]文章主要介绍了PGP软件,对其主要部分和原理进行了阐述,并给出了在电子邮件等方面的应用。
[关键词]PGP;加密;电子邮件
1 引 言
电子邮件在人们的工作中占据着重要作用。据统计,中国平均每用户每周收到4.4封邮件,发送3.6封邮件。但是电子邮件的主要协议如SMTP等是明文传送的。这些信息在经过不可信的因特网时,有可能会被第三方获得。在重视信息安全的现代社会,显然这并符合要求。如何能将这些信息保密,同时不篡改、不伪造等?本文所介绍的PGP(Pretty Good Privacy)就是一种这样的软件,它主要应用于电子邮件和文件的加密解密。
目前PGP获得了广泛的应用。但它本身并不是一种加密算法,相反只是将一些加密算法(如RSA、IDEA、AES等)综合在一起,实现了一个完整的安全软件包。
PGP主要是由Philip R. Zimmermann开发的,于1991年在Internet上免费发布。他主要做了如下工作:选择比较好的算法,例如RSA、IDEA等作为加密算法的基础构件;将这些算法集成在一个便于用户使用的应用程序中;制作了软件包及其文档,且源代码免费公开,以避隐藏后门之嫌;和公司合作,提供商业版本等。现在用户可以从www.pgp.com下载PGP。目前最新版本是9.0。
2 原 理
PGP结合了一些大部分人认为很安全的算法,包括传统的对称密钥加密算法和公开密钥算法,充分利用这两类加密算法的特性,实现了以下几种服务:鉴别、加密、压缩等。
当发送者PGP加密一段明文时, PGP首先压缩明文,然后PGP建立一个一次性会话密钥,采用传统的对称加密算法(例如AES等)加密刚才压缩后的明文,产生密文。然后用接收者的公开密钥加密刚才的一次性会话密钥,随同密文一同传输给接收方。接收方首先用私有密钥解密,获得一次性会话密钥,最后用这个密钥解密密文。
2.1 数字签名
数字签名能够保证接收者接收的信息没有经过未授权的第三方篡改,并确信报文来自发信者。PGP使用如下步骤实现数字签名:
2.1.1发送者创建报文,然后使用SHA-2等散列算法生成散列代码,然后使用自己的私有密钥采用RSA对散列代码加密,并将结果串接在报文前面。
2.1.2接收者使用发送者的公开密钥,采用RSA解密得到散列代码,然后和根据接收到的报文重新计算的散列代码比较,如果匹配,则接受报文。
目前,PGP使用的散列函数包括:SHA-2(256bit)、SHA-2(384bit)、SHA-2(512bit)、SHA-1(160bit)、RIPEMD(128bit)、MD-5(128bit)等。
2.2 压 缩
压缩是为了减少网络传输时间和磁盘空间,提高安全性:压缩减少了明文中上下文相关信息。(当然如果文件太短或者压缩性能不好,则不压缩。)
PGP在签名之后加密之前对报文进行压缩。它使用了有Jean-lup Gailly,Mark Adler,Richard Wales等编写的ZIP压缩算法。