📖 术语
🟢 通俗解释
🔰 新手
🔐 PGP Pretty Good Privacy
一款加密软件:把消息或文件打乱,只有指定的收件人能读懂;再加上数字签名,谁都能核对是谁发的、内容有没有被改过。1991 年由 Phil Zimmermann 首次发布。
💡
常见误解 — PGP 签名验证通过,就说明软件安全?单凭这点可不行!签名只能证明文件确实出自密钥持有者、且没被改过,它没法告诉你软件本身无害;要是公钥来路不明,验证更是白搭。
📮 通俗来说 — 谁都能投递,却只有一把钥匙能取
想象一个正面开着投信口的信箱。路过的人都能把锁好的箱子从口子塞进去,但只有箱主手里那把钥匙能打开信箱、把东西取出来。PGP 就是这么个道理。你的公钥就是那个投信口,可以随便发给别人;你的私钥是开信箱的钥匙——得自己藏好。别人用你的公钥把消息锁给你,而只有你的私钥能解开它。
🧩 为什么要用两种加密?(混合加密)
公钥加密这套很巧妙,可碰上大文件就慢。所以 PGP 走的是混合路线:两种加密一起上,既要速度又要省心。
| 步骤 | 发生了什么 |
|---|---|
| 🗜️ 压缩 | 消息通常先压小一点,既省空间,也有助于安全 |
| 🎲 生成会话密钥 | 临时生成一把随机密钥,快速把消息锁上(这是又快又对称的那部分) |
| 🔒 锁住会话密钥 | 这把临时密钥本身,再用收件人的公钥锁起来 |
| 🔑 双重解锁 | 收件人用私钥先解开会话密钥,会话密钥再解开消息 |
🎲 每发一条消息都会重新生成一把会话密钥,所以就算攻击者破解了其中一把,对下一条消息也一无所知。
✍️ 数字签名 — 证明是谁发的
加密是把消息藏起来。数字签名干的恰恰是反过来的活:证明是谁写的,以及没人动过它。发件人先给消息取一段简短的「指纹」(也就是哈希),再用自己的私钥把这段指纹锁上。任何人都能用发件人的公钥解开它,重新算一遍指纹——两边对得上,就说明消息货真价实、分毫未改。
🤝 信任网络(Web of Trust)
还剩一个难题:你怎么确定一把公钥真的属于你以为的那个人?在网上,浏览器是信任少数几家中心机构来背书。PGP 走的却是另一条路,叫信任网络——不靠一个中心化的守门人,而是用户之间互相为对方的密钥签名、彼此担保。你已经信任的人为某把密钥签了名,你也就能信它。这是一种去中心化的信任,一个人传一个人地搭建起来。
🪙 加密货币里哪儿会碰到 PGP
大多数新手第一次遇到 PGP,都是在核验钱包或节点软件是不是真货的时候。项目方在发布软件时,会一并附上 PGP 签名和自己的公钥。你拿下载的文件去对这份签名,就能确认它没被掉包——哪怕托管它的网站被黑了也照样能查出来。这背后用的,正是加密货币钱包所依赖的那套公钥加密的公私钥思路。
- 📥 核验下载 — Electrum、Bitcoin Core、Ledger Live 的发布版本都附带 PGP 签名,官方建议你核对一下
- 🛠️ 用的工具 — 大多数人用 GnuPG(GPG),常配上 Kleopatra 这类好用的图形界面
- 🚩 公钥要拿对 — 一定要从项目的官方渠道拿它的公钥并核对指纹,否则整道验证毫无意义
❓ 常见问题
- PGP 签名验证通过,就说明这个软件可以放心安装吗?
- 不是。签名验证通过,只能证明文件确实出自那把密钥的持有者,且在传到你手里的途中没被改动。它并不能证明软件本身没有 bug、对你无害。而且如果你拿到的公钥本身来路不明,这道验证就形同虚设——所以一定要从项目的官方渠道获取公钥,并核对指纹。
- PGP 只能用在电子邮件上吗?
- 不是。它确实是从电子邮件起家的,但同一套工具如今也能给文件加密和签名,还用来给软件发布版本签名。在加密货币圈里,最常见的用途是核验你下载的钱包或节点软件是不是正版。
- PGP、OpenPGP、GPG 三者有什么区别?
- PGP 是 1991 年的那款原始软件。OpenPGP 是在它基础上发展出来的开放标准,规定了密钥和加密消息的格式。GnuPG(也就是 GPG)则是遵循这套标准的免费开源程序,也是今天大多数人实际在用的。