PGP(优良保密协议)是一套用于讯息加密、验证的应用程序。PGP本身是商业应用程序;开源并具有同类功能的工具名为GnuPG(GPG)。PGP及其同类产品均遵守OpenPGP数据加解密标准。
PGP(Pretty Good Privacy,优良保密协议)是一套用于讯息加密、验证的应用程序。PGP 的主要开发者是菲尔·齐默曼。齐默曼于 1991 年将 PGP 在互联网上免费发布。PGP 本身是商业应用程序;开源并具有同类功能的工具名为 GnuPG(GPG)。PGP 及其同类产品均遵守 OpenPGP 数据加解密标准。
PGP 加密如何工作
PGP 加密由一系列散列、数据压缩、对称密钥加密,以及公钥加密的算法组合而成。每个步骤均支持几种算法,用户可以选择一个使用。每个公钥均绑定一个用户名和/或者 E-mail 地址。该系统的最初版本通常称为可信网或 X.509 系统;X.509 系统使用的是基于数字证书认证机构的分层方案,该方案后来被加入到 PGP 的实现中。当前的 PGP 加密版本通过一个自动密钥管理服务器来进行密钥的可靠存放。
兼容性
随着 PGP 的发展,支持更新功能和算法的版本能够创建旧 PGP 系统无法解密的加密消息,即使使用有效的私钥也是如此。因此,PGP 通信中的伙伴必须了解彼此的能力或至少就 PGP 设置达成一致。
机密性
PGP 可用于发送机密消息。为此,PGP 结合了对称密钥加密和公钥加密。PGP 使用对称加密算法对消息进行加密,该算法需要对称密钥。每个对称密钥也称为会话密钥仅被使用一次。消息及其会话密钥被发送到接收方。 会话密钥必须被发送给接收方以解密消息,但是为了在传输过程中保护它,它使用接收方的公钥进行加密。只有属于接收方的私钥才能解密会话密钥。
数字签名
PGP 支持消息身份认证和完整性检查。后者被用来检查消息在传输过程中是否被修改过(即验证消息完整性),而消息身份认证则是被用来决定消息是否由声称为发送者的个人或实体发出(即数字签名验证)。由于消息的内容是加密的,因此更改任何消息中的内容都将导致密钥解密失败。在 PGP 中,这些特性默认是和消息加密同时开启的,而且同样可以被应用到明文的验证。发送者只需使用 PGP 为消息创建一个数字签名(签名算法采用 RSA 或 DSA)。具体步骤为:PGP 以数据或信息创建一个散列(参见消息摘要),然后使用发送者的私钥利用散列生成数字签名。
信赖网路
不管是在加密消息时还是在验证签名时,都需要注意用来发送消息的公钥是否确实属于期望的接收者。简单的从某个位置下载一个公钥是没有保障的,故意(或偶然)的假冒是有可能发生的。PGP 从它的第一个版本起,在’身份证书’中发布用户公钥,身份证书也是以加密方式构造的,所以任何的篡改或意外的变动都可以被迅速的检测出来。但是仅仅有一个任何对于证书的修改都会被检测出来的机制不够的,这样的检测机制只能在证书创建之后用于避免篡改,而不是创建之前。
用户还必须用某种形式确保证书中的公钥真正的属于特定的人/实体。从第一个发行版开始,PGP 产品就包含一个内部的’审查方案’来协助它,一个被叫做信赖网路(GOOGLE) 的信任模型。对于一个给定的公钥(具体来说就是一个用户名到对应其密钥的绑定信息)可以被第三方用户数字签名,来证明某人(实指用户名)和一个密钥的关联,而该签名中包含对该关联不同程度的信任度。虽然有许多程序都会读写这个信息,而只有少数会通过信任度来决定是否信任一个密钥。
信赖网路机制比 S/MIME 方案的集中管理的公钥基础设施有优势,但是没有被网络普通大众普遍采用,一般只在 Unix-like 的爱好者、开源软件界、和对隐私特别注意而且有电脑知识的人群之间使用。如何使一般用户容易并且乐意使用、接收证书然后手动的验证它们的有效性,这些潜在的推广阻碍目前还没有满意的解决方案。
证书
在最近的 OpenPGP 规范里,信任签名可被用于支持受信任的证书颁发机构,一个信任签名表示公钥属于其声明的所有者,并且公钥的所有者签署的下一级公钥也是可信的。 零级签名与信赖网络签名相当,因为只有其公钥的有效性得到认证。一级签名类似于证书颁发机构,因为拥有一级公钥者能够发出无限数量的零级签名。 二级签名非常类似于用户在使用默认证书颁发机构列表时必须依赖的信任假设(如 Web 浏览器中包含的那些);它允许密钥的所有者制作其他公钥证书颁发机构。
所有版本的 PGP 都包含一种取消(“撤销”)证书的方法。如果该用户的私钥丢失或者被破解则他必须采用这种取消证书的方法以继续保证通信的安全性。这种方式基本等同于集中式 PKI 方案的证书撤销列表。最新的的 PGP 版本也支持设置证书的自动过期日期。
并不仅是 PGP 有如何正确判断特定公钥属于特定的用户的问题。所有采用公钥/私钥加密的加密系统都有这个问题,并且目前并没有令人满意的解决方案。最初的 PGP 方案至少可以让用户选择是否使用其背书/审批系统,而对于其他 PKI 方案,它们要求用户必须采信所有被中央证书颁发机构证实的证书。