PGP加密实战指南:从文件加密到磁盘保护,掌握数字隐私主动权

📅 2026/7/14 5:24:29 👁️ 阅读次数 📝 编程学习
PGP加密实战指南:从文件加密到磁盘保护,掌握数字隐私主动权

1. 项目概述:为什么PGP依然是数字隐私的基石

在数字信息几乎透明的今天,我们随手发送的邮件、存储在硬盘里的文件,甚至整个操作系统分区,都可能在不经意间暴露给不该看到的人。你可能听说过“端到端加密”,也用过一些聊天软件的“加密对话”功能,但有没有一种工具,能让你真正掌握加密的主动权,从单个文件到整块硬盘,构建一个完全由你控制的隐私堡垒?这就是PGP(Pretty Good Privacy)至今仍被安全专家和隐私敏感人士奉为圭臬的原因。

我接触PGP超过十年,从最初用它加密敏感的工作邮件,到后来用它保护整个开发环境的代码库,再到为移动硬盘设置加密分区,可以说,它是我数字生活中不可或缺的“保险柜”。很多人觉得PGP复杂、老旧,不如一些现代加密工具“傻瓜式”操作来得方便。但我想说,正是这种“复杂”背后所蕴含的透明性和控制力,才是安全的核心。你不必信任任何第三方服务商,所有的密钥都由你自己生成、保管和使用。这篇文章,我将带你从零开始,手把手完成从文件加密、邮件签名到磁盘保护的完整流程,并分享我多年来在密钥管理上踩过的坑和总结出的实用技巧。无论你是开发者、记者、律师,还是任何希望提升个人数字隐私水平的普通用户,这套指南都能让你真正把数据安全握在自己手里。

2. PGP核心原理与工具选型:理解“公钥”与“私钥”的舞蹈

在动手之前,我们必须先搞懂PGP到底是怎么工作的。这就像学开车前得知道油门、刹车和方向盘是干嘛的。PGP的核心是一套非对称加密体系,它玩的是“公钥”和“私钥”的二人转。

2.1 非对称加密:一把锁,两把钥匙

想象一下,你有一个特制的信箱。这个信箱配有一把特殊的锁,这把锁有两把钥匙:一把是“公钥”,你可以复制无数份,分发给全世界任何人;另一把是“私钥”,只有你自己有,并且必须绝对保密。

当你的朋友想给你寄一封密信时,他会用你公开的那把“公钥”锁把信投进信箱。一旦锁上,这封信就只有用你手里那把独一无二的“私钥”才能打开。即使中途有人截获了信箱,或者拿到了“公钥”,他也无法窥探信的内容。这就是加密过程。

反过来,当你想向朋友证明一封信确实是你写的(即数字签名),你会先用一个哈希函数(如SHA-256)给信的内容生成一个唯一的“指纹”,然后用你的“私钥”对这个指纹进行加密。这个加密后的“指纹”附在信后面,就是你的数字签名。你的朋友收到信后,用你公开的“公钥”去解密那个签名,得到指纹A,同时他自己用同样的哈希函数计算信内容的指纹B。如果指纹A和指纹B完全一致,那就证明这封信在传输过程中没有被篡改,并且确实来自持有对应私钥的你。

注意:这里有一个关键点常被误解:公钥用于加密验证签名;私钥用于解密创建签名。千万不要用你的私钥去加密想让别人看的内容,那相当于把开锁的钥匙给了所有人。

2.2 工具选型:GnuPG (GPG) 是唯一的选择

市面上有很多打着PGP旗号的图形化工具和在线服务。但对于严肃的、希望完全掌控流程的用户,我强烈推荐,甚至可以说只推荐GnuPG,也就是常说的GPG。它是PGP标准的一个开源实现,完全免费,经过了全球开发者数十年的审查,其安全性值得信赖。与之相对的是Symantec(赛门铁克)拥有的商业版PGP,功能类似但并非免费。

为什么选GPG?

  1. 开源透明:所有代码公开,意味着没有隐藏的后门,安全专家可以随时审计。
  2. 跨平台:从Linux、macOS到Windows,都有完善的版本。命令行操作虽然初期有学习曲线,但一旦掌握,其强大和灵活是图形界面无法比拟的。
  3. 生态成熟:几乎所有的邮件客户端(如Thunderbird搭配Enigmail插件)、代码托管平台(如Git的签名提交)都原生支持GPG。
  4. 脚本化与自动化:命令行工具可以轻松集成到你的备份脚本、CI/CD流程中,实现全自动加密解密。

在本文中,所有操作都将基于GPG命令行。对于Windows用户,可以从Gpg4win项目获取安装包;macOS用户可以用Homebrew (brew install gnupg);Linux用户通常系统已自带或可通过包管理器安装。

3. 实战第一步:生成与保管你的数字身份(密钥对)

生成密钥对是使用PGP的起点,这相当于为你自己创建了一个独一无二的数字身份证。这个步骤的严谨性,直接决定了你整个加密体系的安全根基。

3.1 生成主密钥:选择正确的算法与长度

打开终端,输入以下命令开始交互式生成:

gpg --full-generate-key

接下来,你会面临几个关键选择:

  1. 密钥类型:选择(1) RSA and RSA。这是最通用、兼容性最好的选择。虽然ECC(椭圆曲线)密钥更短、效率更高,但在一些老旧系统或特定场景下可能存在兼容性问题。对于新手,RSA是稳妥的起点。

  2. 密钥长度务必选择4096位。虽然2048位目前也被认为是安全的,但考虑到计算能力的进步和“安全边际”,4096位是当前的最佳实践。这就像你家的门锁,锁芯越复杂,被技术开锁的难度就呈指数级增长。

  3. 有效期:这是一个需要权衡的点。我个人的建议是,为你的主密钥设置一个较长的有效期,例如2年。输入2y。设置有效期是良好的安全习惯,它能迫使你定期审视和更新密钥。密钥过期后,它仍然可以解密过去用它加密的内容,但无法再用于新的签名或加密操作。你可以随时在到期前延长有效期。

  4. 用户标识:这里需要填写你的真实姓名和邮箱。请务必使用你长期、稳定使用的邮箱,因为这是别人找到并信任你的公钥的主要依据。注释可以留空。

  5. 输入口令:这是保护你私钥的最后一道,也是最重要的一道屏障。即使有人偷走了你的私钥文件,没有这个口令也无法使用。请务必设置一个高强度、独一无二的口令。建议使用由多个随机单词组成的“密码短语”,长度最好在15个字符以上。不要使用你在别处用过的密码。

命令执行后,GPG会要求你在终端内随机移动鼠标、敲击键盘来生成足够的随机数(熵),以确保密钥的随机性。完成后,你就拥有了自己的第一对PGP密钥。

3.2 密钥保管:备份与离线存储的黄金法则

生成密钥后,~/.gnupg(Linux/macOS)或%APPDATA%\gnupg(Windows)目录下会保存你的密钥环。但仅仅这样是远远不够的。

必须立即进行备份!私钥一旦丢失,所有用它加密的数据将永久无法解密。

  1. 导出备份

    # 导出ASCII格式的私钥(包含子密钥,便于备份) gpg --armor --export-secret-keys your-email@example.com > private-key.asc # 导出ASCII格式的公钥 gpg --armor --export your-email@example.com > public-key.asc

    --armor参数表示输出为ASCII文本格式(以-----BEGIN PGP PRIVATE KEY BLOCK-----开头),而不是二进制格式,这样便于打印或复制粘贴。

  2. 离线冷存储

    • private-key.asc文件复制到一个或多个加密的U盘中。
    • 强烈建议将其打印成纸质备份(QR码或文本),使用防水防污的材料封装好,与重要物理文件(如护照、房产证)存放在一起。这被称为“纸钱包”,能有效防范数字存储介质损坏或电子设备全军覆没的风险。
    • 绝对不要将私钥上传到任何云存储(如网盘、邮箱草稿箱),即使你认为它已经加密。
  3. 公钥的上传与分发: 公钥是需要广泛分发的。你可以将它上传到公钥服务器:

    gpg --keyserver hkps://keys.openpgp.org --send-keys YOUR_KEY_ID

    也可以直接通过邮件发送public-key.asc文件给联系人,或者发布在你的个人网站、社交媒体简介上。

实操心得:我习惯在生成密钥后,立即创建三份备份:一份加密U盘放在家中保险箱,一份纸质备份存放在银行保管箱,另一份加密U盘交给可信赖的家人保管(并告知其重要性)。公钥则上传到2-3个不同的密钥服务器(如keys.openpgp.org,pgp.mit.edu),以确保高可用性。

4. 文件加密与解密实战:保护你的数字资产

掌握了密钥,我们就可以开始最实用的操作:加密文件。无论是合同、财务报表、个人日记还是源代码,PGP都能为其穿上“盔甲”。

4.1 加密单个文件:对称加密与非对称加密的结合

最常用的命令是--encrypt,但这里有个重要技巧:结合使用对称加密和非对称加密

# 标准用法:使用接收者的公钥加密(仅非对称加密) gpg --encrypt --recipient alice@example.com secret-document.pdf # 生成 secret-document.pdf.gpg 文件 # 进阶用法:同时使用对称加密,并指定密码算法(更安全) gpg --encrypt --symmetric --cipher-algo AES256 --recipient alice@example.com secret-document.pdf
  • --recipient (-r):指定接收者的邮箱或密钥ID。GPG会自动在你的密钥环里查找对应的公钥进行加密。你可以指定多个-r来让多个人都能解密。
  • --symmetric:增加对称加密层。这会在用公钥加密的同时,再用一个随机生成的会话密钥(对称密钥)加密文件本身。这样即使未来非对称算法被破解,对称加密层仍能提供保护。
  • --cipher-algo AES256:指定对称加密算法为AES-256。这是目前公认安全且高效的算法。

解密文件对于接收者来说非常简单:

gpg --decrypt secret-document.pdf.gpg > secret-document.pdf # 或者使用 -o 参数指定输出文件名 gpg -o secret-document.pdf --decrypt secret-document.pdf.gpg

GPG会自动识别用哪个私钥来解密,并提示你输入保护私钥的口令。

4.2 加密目录或批量文件:使用tar进行归档

GPG本身不直接加密目录,标准做法是先打包再加密。

# 1. 使用tar打包目录(排除不必要的文件,如.git) tar czf project-backup.tar.gz --exclude='.git' --exclude='node_modules' ./my-project/ # 2. 加密打包后的文件 gpg --encrypt --symmetric --cipher-algo AES256 -r me@myemail.com project-backup.tar.gz # 一条命令完成打包和加密(适用于类Unix系统) tar czf - --exclude='.git' ./my-project/ | gpg --encrypt --symmetric --cipher-algo AES256 -r me@myemail.com -o project-backup.tar.gz.gpg

解密和提取同样是一条命令:

gpg --decrypt project-backup.tar.gz.gpg | tar xzf -

4.3 集成到日常流程:自动化备份脚本

将加密集成到你的自动化脚本中,是确保备份安全且可持续的关键。以下是一个简单的Linux/macOS备份脚本示例:

#!/bin/bash # backup-encrypt.sh BACKUP_SRC="/home/user/important_data" BACKUP_DEST="/mnt/encrypted_drive/backups" RECIPIENT="my-backup-key@example.com" DATE=$(date +%Y%m%d_%H%M%S) BACKUP_FILE="backup_$DATE.tar.gz.gpg" echo "开始备份 $BACKUP_SRC 到 $BACKUP_DEST/$BACKUP_FILE" tar czf - "$BACKUP_SRC" | gpg --encrypt --symmetric --cipher-algo AES256 --batch --yes --passphrase-fd 0 -r "$RECIPIENT" -o "$BACKUP_DEST/$BACKUP_FILE" <<< "YourStrongPassphraseHere" if [ $? -eq 0 ]; then echo "备份加密成功: $BACKUP_FILE" # 可选:删除超过30天的旧备份 find "$BACKUP_DEST" -name "backup_*.tar.gz.gpg" -mtime +30 -delete else echo "备份失败!" >&2 exit 1 fi

这个脚本实现了自动打包、加密、并清理旧备份。--batch --yes参数用于非交互式执行,--passphrase-fd 0允许从标准输入读取对称加密的密码(示例中使用了不安全的here-string,生产环境应使用更安全的方式管理密码,如从文件读取)。

5. 磁盘与分区加密:使用GPG实现“虚拟加密卷”

对于移动硬盘或U盘上的敏感数据,全盘加密(如BitLocker、LUKS)是首选。但有时我们需要一个更灵活、跨平台的解决方案:创建一个大的加密容器文件,使用时挂载为虚拟磁盘。GPG可以与一些工具配合实现这一点,但更经典和强大的组合是使用VeraCrypt。不过,我们可以用GPG来加密VeraCrypt容器本身的头信息或关键文件,增加一层安全保障,或者对于小规模需求,直接模拟类似功能。

5.1 创建加密的磁盘镜像文件(跨平台简易方案)

我们可以利用操作系统工具创建空镜像文件,然后用GPG加密整个镜像。虽然每次访问都需要完全解密/加密整个文件(效率不如专门工具),但对于几个GB大小的不常变动的归档数据,这是一个简单可行的方案。

在Linux/macOS上:

# 1. 创建一个1GB大小的空文件 dd if=/dev/zero of=encrypted_disk.img bs=1M count=1024 # 2. 用GPG加密这个镜像文件(使用对称加密,便于自己访问) gpg --symmetric --cipher-algo AES256 -o encrypted_disk.img.gpg encrypted_disk.img # 输入一个强密码来保护这个磁盘镜像 # 3. 当需要使用时,先解密 gpg -o disk.img --decrypt encrypted_disk.img.gpg # 4. 创建文件系统并挂载(以ext4为例,macOS可用HFS+) sudo mkfs.ext4 disk.img mkdir /mnt/secure_disk sudo mount -o loop disk.img /mnt/secure_disk # 现在可以像普通磁盘一样读写 /mnt/secure_disk 了 # 5. 使用完毕后,卸载并重新加密 sudo umount /mnt/secure_disk # 重新加密(覆盖旧文件) gpg --symmetric --cipher-algo AES256 -o encrypted_disk.img.gpg disk.img # 安全删除明文镜像 shred -u disk.img

在Windows上(使用PowerShell和Gpg4win):

# 1. 创建虚拟磁盘(需要管理员权限) $size = 1GB $vhdPath = "C:\SecureData\encrypted.vhd" New-VHD -Path $vhdPath -SizeBytes $size -Dynamic # 2. 初始化、分区、格式化(在磁盘管理器中完成更简单) # 3. 假设格式化后盘符为 Z: # 4. 将整个VHD文件用GPG加密(使用gpg4win的命令行) gpg --symmetric --cipher-algo AES256 -o encrypted.vhd.gpg encrypted.vhd # 5. 删除原始的 encrypted.vhd

5.2 与专业加密工具结合:保护关键配置文件

对于真正的全盘或分区加密,我推荐使用VeraCrypt。它是一个开源、跨平台、审计良好的磁盘加密软件。我们可以用PGP来加密存储VeraCrypt的密码文件密钥文件,实现双因子保护。

  1. 在VeraCrypt中创建加密卷,设置密码时,不直接使用记忆的密码,而是选择“使用密钥文件”。
  2. 生成一个随机文件作为VeraCrypt的密钥文件,例如veracrypt.keyfile
  3. 用你的PGP公钥加密这个密钥文件
    gpg --encrypt -r your-email@example.com veracrypt.keyfile
  4. 将加密后的veracrypt.keyfile.gpg安全存储(甚至可以放在云盘),然后彻底删除原始的veracrypt.keyfile
  5. 当需要挂载VeraCrypt卷时,先解密密钥文件:
    gpg -o /tmp/temp.keyfile --decrypt veracrypt.keyfile.gpg
  6. 在VeraCrypt挂载时,选择“密钥文件”并指向/tmp/temp.keyfile
  7. 挂载成功后,立即安全删除/tmp/temp.keyfile(在Linux上可使用shred -u,Windows上可用sdelete)。

这样,即使你的电脑被盗,攻击者也需要同时获得你的PGP私钥(及口令)和加密的密钥文件,才能访问VeraCrypt卷,安全性大大增强。

6. 密钥管理的艺术:维护、吊销与信任网络

密钥管理是PGP实践中最具挑战性也最容易被忽视的部分。它不仅仅是备份,更是一个动态的维护过程。

6.1 日常维护:列出、查看与编辑密钥

# 列出所有公钥 gpg --list-keys # 列出所有私钥 gpg --list-secret-keys # 查看某个密钥的详细信息(指纹、子钥、用途等) gpg --fingerprint your-email@example.com # 编辑密钥属性(如添加照片、修改过期时间) gpg --edit-key your-email@example.com # 在编辑界面,可以使用 `addphoto` 上传照片,`expire` 修改过期时间等。

6.2 子密钥:将主密钥“锁进保险箱”

这是专业用户必用的高级技巧。主密钥(Master Key)能力强大(可签名、可认证),一旦泄露后果严重。最佳实践是:

  1. 主密钥仅用于认证(Certify):即签发子密钥和撤销证书。生成后,立即将其转移到离线存储(如加密的U盘),并从日常使用的电脑中删除。
  2. 创建用于日常操作的子密钥
    • 签名子密钥(Signing Subkey):用于给邮件、提交签名。
    • 加密子密钥(Encryption Subkey):用于解密发送给你的消息。
    • 认证子密钥(Authentication Subkey):可用于SSH登录等场景。

gpg --edit-key界面,使用addkey命令可以依次添加这些子密钥。日常电脑上只保留子密钥,即使电脑被入侵,攻击者也无法伪造你的身份(因为无法用子密钥生成新的子密钥或撤销证书),你只需要用离线的主密钥发布一个撤销证书即可宣告子密钥失效。

6.3 密钥吊销:当密钥丢失或泄露时

如果你怀疑私钥泄露或丢失,第一步不是惊慌,而是立即发布吊销证书(Revocation Certificate)。如果你在生成密钥时接受了创建吊销证书的选项,它会是一个.rev文件。如果没有,可以立即生成:

gpg --gen-revoke your-email@example.com > revoke.asc

请务必安全保管好这个吊销证书!它本身不需要密码就能使用。

当需要吊销时,导入该证书并发送到密钥服务器:

gpg --import revoke.asc gpg --keyserver hkps://keys.openpgp.org --send-keys YOUR_KEY_ID

这个操作是不可逆的,它会告诉全世界这个密钥已不再可信。

6.4 信任网络(Web of Trust)与密钥签名

PGP的安全不依赖于中心化的证书颁发机构,而是基于“信任网络”。你通过亲自验证朋友的身份后,用你的私钥为他的公钥签名(gpg --sign-key friend@example.com)。当你把签过名的公钥上传到服务器,其他信任你的人,可能会因为你的签名而间接信任你的朋友。

实际操作中,参与线下密钥签名派对(Keysigning Party)是构建信任网络的传统方式。但在互联网时代,更常见的是通过验证对方在多个公开平台(如GitHub、个人网站)发布的密钥指纹(fingerprint)来建立初步信任。例如,你可以将你的密钥指纹放在社交媒体简介、个人网站首页,让别人交叉验证。

7. 常见问题与排查技巧实录

即使理解了原理,实操中还是会遇到各种问题。下面是我总结的一些典型场景和解决方法。

7.1 加密/解密失败:找不到密钥

问题:执行gpg --encrypt -r someone@example.com file时,提示gpg: someone@example.com: skipped: No public key

排查

  1. 检查本地是否有收件人公钥gpg --list-keys | grep example.com
  2. 如果没有,从密钥服务器获取gpg --keyserver hkps://keys.openpgp.org --recv-keys KEY_ID。KEY_ID可以是邮箱,也可以是密钥ID(如0xABCDEF1234567890)。
  3. 如果服务器上没有,需要联系对方直接索要其公钥文件(.asc或.gpg),然后通过gpg --import public-key.asc导入。

7.2 解密时提示“bad passphrase”

问题:输入口令后解密失败。

排查

  1. 确认密钥:确保你正在使用正确的私钥。用gpg --list-secret-keys确认。
  2. 口令输入:检查大小写和特殊字符。可以尝试在文本编辑器里打好口令,然后复制粘贴到终端(注意,终端可能不显示输入)。
  3. 密钥损坏:如果口令确认正确,可能是密钥文件损坏。从你的安全备份中恢复私钥。

7.3 文件体积变大很多

问题:加密后文件比原文件大出不少。

原因与解决:这是正常的。PGP加密输出默认是二进制格式(.gpg),并添加了校验和等元数据。使用--armor参数输出ASCII文本格式(.asc)会更大(约增加33%)。对于存储,使用二进制格式;对于需要文本传输的场景(如粘贴在邮件正文),才用ASCII格式。

7.4 如何验证下载文件的完整性和发布者?

这是PGP签名的重要用途。很多开源软件发布时会同时提供.sig签名文件。

# 假设下载了 software.tar.gz 和 software.tar.gz.sig # 1. 导入软件发布者的公钥(如果尚未导入) gpg --keyserver hkps://keys.openpgp.org --recv-keys 发布者密钥ID # 2. 验证签名 gpg --verify software.tar.gz.sig software.tar.gz

如果输出中有“Good signature”以及正确的密钥指纹,说明文件未被篡改且确实来自该发布者。

7.5 在脚本中自动解密(避免交互式口令输入)

对于备份恢复等自动化场景,需要非交互式解密。

方法一:使用gpg-agent(推荐)在脚本执行前,先手动输入一次口令缓存到agent:

# 启动gpg-agent并缓存口令(默认缓存10分钟) gpg --decrypt test-file.gpg > /dev/null # 此后一段时间内,脚本中的gpg解密命令将不再询问口令

方法二:使用--passphrase参数(不推荐,有安全风险)

gpg --batch --passphrase "your-passphrase" --decrypt file.gpg

警告:这将口令以明文形式暴露在命令行历史或脚本中,极不安全。如果必须使用,考虑从受保护的环境变量或文件中读取口令。

方法三:使用--pinentry-mode loopback配合--passphrase-fd这是一种相对安全的方式,可以从文件描述符读取口令。

# 将口令存入临时文件(确保文件权限为600) echo "your-passphrase" > /tmp/passphrase.txt chmod 600 /tmp/passphrase.txt # 解密 gpg --batch --yes --pinentry-mode loopback --passphrase-fd 0 --decrypt file.gpg < /tmp/passphrase.txt # 立即删除口令文件 shred -u /tmp/passphrase.txt

8. 高级技巧与安全加固建议

掌握了基础操作后,下面这些技巧能让你的PGP使用更安全、更高效。

8.1 使用智能卡或硬件安全模块(HSM)

将私钥存储在专门的硬件设备(如YubiKey、Nitrokey、OpenPGP智能卡)中,是最高级别的安全实践。私钥永远不出设备,所有签名和解密运算都在硬件内完成,即使电脑感染了恶意软件,私钥也不会被盗。配置过程涉及将子密钥转移到硬件卡上,一旦转移,电脑上就只保留密钥的“存根”,无法直接使用。

8.2 配置更安全的默认参数

编辑~/.gnupg/gpg.conf文件,可以统一设置更安全的默认选项,避免每次输入冗长的参数。

# 使用更强的默认加密算法 personal-cipher-preferences AES256 AES192 AES personal-digest-preferences SHA512 SHA384 SHA256 personal-compress-preferences ZLIB BZIP2 ZIP Uncompressed # 默认使用密钥服务器的HTTPS地址 keyserver hkps://keys.openpgp.org # 显示完整的密钥指纹 keyid-format 0xlong # 验证签名时显示指纹 verify-options show-uid-validity list-options show-uid-validity

8.3 定期进行密钥审计与清理

每隔一段时间,检查你的密钥环。

# 列出所有已过期或已吊销的密钥 gpg --list-keys --with-colons | grep -E '^(pub|sub):.*:(e|r):' | cut -d: -f5,6,7,8,10 # 从本地删除已吊销的密钥 gpg --delete-keys 已吊销的密钥ID # 更新所有密钥(从服务器获取吊销状态和更新) gpg --refresh-keys

8.4 应对“EFAIL”等漏洞

过去PGP在邮件客户端集成中出现过“EFAIL”等漏洞,其本质是HTML邮件客户端主动解密内容并加载外部资源导致的明文泄露。根本的应对策略是:使用纯文本邮件客户端(如Mutt、Claws Mail)或正确配置的Thunderbird+Enigmail,并禁用HTML邮件渲染。确保你的邮件客户端不会自动解密并渲染PGP加密的邮件部分。

PGP不是一个“设置完就忘记”的工具,它更像一门需要持续练习的手艺。从生成并妥善备份你的第一对密钥开始,尝试用它加密一个文本文件发给自己,再尝试给Git提交签名。当你习惯了在发送重要邮件前点一下“签名并加密”,当你把备份脚本里的压缩命令后加上管道和gpg加密,你会发现自己对数字生活的掌控感达到了一个新的层次。安全不是绝对的,但通过PGP这样的工具,你可以将风险从“完全暴露”降低到“需要付出极高代价才有可能破解”,这对于保护个人隐私和商业机密来说,已经是一次巨大的飞跃。最后一个小建议:找个时间,为你最亲密的家人或工作伙伴也生成一套密钥,并互相签名,建立起属于你自己的、小小的信任网络。