什么是 PGP?Pretty Good Privacy 加密完全指南

什么是 PGP 加密?

PGP(Pretty Good Privacy)是一个加密程序,为数据通信提供密码学隐私和身份验证。PGP 加密结合使用对称密钥密码学和公钥密码学,使用户能够加密消息、文件和其他数据,确保只有预期的收件人才能阅读。PGP 最初由 Phil Zimmermann 于 1991 年创建,现已成为世界上使用最广泛的电子邮件加密标准,并且是 RFC 4880 中定义的 OpenPGP 规范的基础。无论您需要发送机密电子邮件、验证软件发布者的身份,还是保护敏感文件,PGP 都提供了一个经过验证的密码学框架,受到记者、安全研究人员、政府和普通用户的信赖。

如果您想立即尝试 PGP 加密而无需安装任何软件,KeychainPGP 提供了一个完全在浏览器中运行的在线 PGP 工具

PGP 的历史

Phil Zimmermann 于 1991 年 6 月发布了 PGP 1.0,作为免费软件发布。他坚信强加密应该对所有公民开放,而不仅仅是政府和军方。当时,强加密在美国出口管制法规中被归类为军需品,Zimmermann 因将 PGP 分发到国际而遭到美国海关三年的刑事调查。该调查最终于 1996 年被撤销,未予起诉,此案成为数字自由历史上的标志性事件。

PGP 经历了多次商业化迭代。Zimmermann 于 1996 年创立了 PGP Inc.,该公司在 1997 年被 Network Associates(后来的 McAfee)收购,最终在 2010 年被 Symantec 收购。在这些变迁中,底层的密码协议以 OpenPGP 的名义被互联网工程任务组(IETF)标准化,确保该协议保持开放和互操作,不受商业所有权的影响。

OpenPGP 标准的发布意味着任何人都可以创建兼容的实现。这导致了 GNU Privacy Guard(GnuPG 或 GPG)的诞生,一个免费开源的实现,至今仍是使用最广泛的 PGP 工具之一。要了解这些实现之间的区别,请参阅我们关于 PGP 与 GPG 的区别的指南。

PGP 加密的工作原理

PGP 加密依赖于密码学技术的精妙组合。PGP 不是使用单一方法,而是采用混合加密模型,将对称加密的速度与非对称(公钥)加密的密钥分发优势相结合。

公钥密码学

PGP 的核心是公钥密码学,也称为非对称密码学。每个 PGP 用户生成一个由两个数学相关密钥组成的密钥对

  • 公钥——公开分享给任何人。其他人使用此密钥来加密发给您的消息和验证您的数字签名。
  • 私钥(也称为密钥)——严格保密。您使用此密钥来解密发给您的消息和创建数字签名。

这个系统的基本特性是:用公钥加密的数据只能用对应的私钥解密,反之亦然。这消除了在双方进行私密通信之前传递共享密钥的需要。

混合加密模型

虽然公钥密码学解决了密钥分发问题,但像 RSA 这样的非对称算法在加密大量数据时计算成本很高。PGP 通过使用混合方法解决了这个问题:

  1. 生成会话密钥——PGP 为每条消息生成一个随机的、唯一的对称会话密钥(通常为 128 或 256 位)。
  2. 数据加密——使用快速的对称加密算法(如 AES-256)和会话密钥加密消息内容。
  3. 会话密钥加密——然后使用收件人的公钥(非对称操作)加密会话密钥本身。
  4. 打包——加密后的消息和加密后的会话密钥被打包在一起发送给收件人。

当收件人收到消息时,过程是相反的:他们使用私钥解密会话密钥,然后使用解密后的会话密钥解密消息内容。

PGP 数字签名

除了加密,PGP 还提供数字签名,它具有两个关键功能:身份验证(证明消息的发送者身份)和完整性(证明消息在传输过程中未被篡改)。

签名过程如下:

  1. PGP 使用 SHA-256 或 SHA-512 等算法计算消息内容的密码学哈希(固定长度的摘要)。
  2. 然后用发送者的私钥加密哈希值,生成数字签名。
  3. 签名附加到消息上。

任何收件人都可以通过以下方式验证签名:用发送者的公钥解密签名以恢复原始哈希值,独立计算收到消息的哈希值,然后比较两个哈希值。如果匹配,则消息是真实且未被修改的。

OpenPGP 标准

OpenPGP 是定义 PGP 兼容软件所使用的消息格式、算法和程序的开放标准。它本身不是软件产品,而是任何开发者都可以实现的规范。

参考文档包括:

  • RFC 4880(2007 年 11 月)——当前的 OpenPGP 消息格式主要规范。
  • RFC 6637(2012 年 6 月)——扩展 OpenPGP 以支持椭圆曲线密码学(ECC)。
  • RFC 9580(2024 年)——最新修订版,通过强制支持 Ed25519/X25519、AEAD 加密模式和改进的密钥指纹来现代化标准。

OpenPGP 确保了互操作性:使用 KeychainPGP 加密的消息可以被 GnuPG、Mailvelope 或任何其他兼容实现解密。

信任网络

PGP 的一个显著特征是其去中心化的信任网络(Web of Trust)模型,用于确立公钥的真实性。与 TLS/SSL 使用的集中式证书颁发机构(CA)模型不同,PGP 允许用户之间相互担保。

信任网络通过密钥签名运作:当您验证了某人的身份并确认他们控制着某个特定的公钥后,您用自己的密钥签署他们的密钥。这个签名是一个公开声明,表明您相信该密钥确实属于它所声称代表的人。

KeychainPGP 这样的工具通过直观的界面简化了这一过程,让用户可以直接操作密钥,使用剪贴板加密轻松共享加密消息和公钥。

PGP 算法与密钥类型

PGP 支持一系列随密码学发展而演进的密码算法。

经典算法

  • RSA(Rivest-Shamir-Adleman)——PGP 历史上部署最广泛的非对称算法。2048 位 RSA 密钥被认为是当前的最低安全标准,建议使用 4096 位密钥进行长期保护。
  • DSA(数字签名算法)——与 ElGamal 配合用于签名和加密。目前较少被推荐。
  • AES(高级加密标准)——用于加密消息内容的主流对称加密算法。支持 AES-128 和 AES-256。
  • SHA-2(SHA-256、SHA-384、SHA-512)——用于数字签名中摘要计算的密码学哈希函数。

现代算法

最新一代 OpenPGP 实现支持椭圆曲线密码学(ECC),以显著更小的密钥尺寸提供等同于 RSA 的安全性:

  • Ed25519——基于 Curve25519 的数字签名算法。生成快速且紧凑的签名。在 RFC 9580 中被推荐。
  • X25519(Curve25519 ECDH)——用于密钥交换(加密)。以卓越的性能提供强大的安全属性。
  • NIST P-256 / P-384 / P-521——由 NIST 标准化的椭圆曲线。OpenPGP 支持,但通常不如基于 Curve25519 的算法受欢迎。

像 KeychainPGP 这样的现代工具支持这些当代算法,使使用 Ed25519 和 X25519 生成密钥变得简单直接。

PGP 的常见用例

  • 安全电子邮件——最原始也最广为人知的用例。PGP 可以加密电子邮件内容并签名消息以证明其真实性。
  • 文件加密——PGP 可以加密单个文件或整个归档文件,用于安全存储或传输。
  • 软件验证——开源项目定期使用 PGP 密钥签名发布版本。用户可以验证这些签名来确认下载的真实性。
  • 安全消息——PGP 可以加密任何文本消息,在不提供端到端加密的平台上特别有用。
  • 身份验证——PGP 密钥指纹用作可验证的数字身份。GitHub 上的开发者可以使用 PGP 签名提交。
  • 文档签名——法律工作流有时使用 PGP 签名来建立不可否认性。

今天的 PGP

自创建以来三十多年,PGP 仍然是最重要的密码学工具之一。OpenPGP 标准持续演进,RFC 9580 引入了重大现代化改进,包括强制支持现代椭圆曲线算法和 AEAD 加密模式。

PGP 工具生态系统已大为丰富。GnuPG 仍然是命令行使用的参考实现。像 KeychainPGP 这样的现代工具提供原生桌面应用(Windows、macOS、Linux)、Android 应用、用于脚本的 CLI 和浏览器中的网页应用——全部基于同一个 Rust 语言的 Sequoia-PGP 引擎构建。

开始使用 PGP

准备好开始使用 PGP 加密了吗?以下是最佳的下一步:

  1. 在浏览器中试用——使用 KeychainPGP 的在线 PGP 工具生成密钥对、加密消息或验证签名,无需安装任何软件。
  2. 阅读入门指南——如果您是密码学新手,我们的PGP 入门指南将带您逐步入门。
  3. 学习实用工作流——我们的如何使用 PGP 指南涵盖密钥生成、加密和解密、密钥环管理和最佳实践。
  4. 了解剪贴板加密——了解如何通过 PGP 剪贴板加密直接从剪贴板加密和解密文本。
  5. 了解工具——了解 PGP 与 GPG 的区别,为您的工作流选择合适的工具。

PGP 加密保护敏感通信已超过三十年。借助现代工具和标准,它比以往任何时候都更易于使用。