GnuPG 加密与签名实战指南
使用 GnuPG(PGP)进行加密与签名 —— 实战指南
环境:Ubuntu 20.04 GnuPG 版本:2.2.19
💡 GnuPG 是啥?
PGP(Pretty Good Privacy)是 Phil Zimmermann 在 1991 年搞出来的,用于加密和数字签名。 GnuPG(GNU Privacy Guard)是它的开源实现,几乎是安全通信的基石。
🔐 基础原理:非对称加密
PGP 基于 RSA 算法。记住这几点就够:
- 一对密钥:私钥 & 公钥
- 公钥加密 → 私钥解密
- 私钥加密 → 公钥验证
- 公钥可公开,私钥死也别泄露
🧩 加密流程(举个栗子)
假设 A 要把银行卡密码发给 B:
- A 获取 B 的公钥(比如 B 公布在网站上)
- A 用 B 的公钥加密密码
- B 用自己的私钥解密拿回明文
✍️ 签名流程(确保来源和完整性)
A 想签署一份合同,让 B 确认确实是他签的:
- A 用私钥签合同(证明身份 + 防篡改)
- 把合同和签名发给 B
- B 用 A 的公钥验证签名是否真实
⚙️ 安装 GnuPG
# Mac
brew install gnupg
# Debian / Ubuntu
sudo apt install gnupg
# CentOS
sudo yum install gnupg
# 验证
gpg --version
图形界面版本: macOS 👉 GPG Suite Windows 👉 GPG4Win
🧠 常用命令
列出密钥
# 公钥
gpg --list-keys
# 私钥
gpg --list-secret-keys
生成密钥对
gpg --full-generate-key
推荐配置:
- 类型:RSA and RSA
- 长度:4096
- 有效期:无限
- 密码:可选(建议设)
导出与导入
# 导出公钥
gpg --armor --output public-key.asc --export [uid]
# 导出私钥
gpg --armor --output private-key.asc --export-secret-keys [uid]
# 导入公钥
gpg --import public-key.asc
# 签名以标记可信
gpg --sign-key [uid]
删除密钥
gpg --delete-keys [uid]
gpg --delete-secret-keys [uid]
上传到密钥服务器
# 上传
gpg --send-keys [uid]
# 搜索
gpg --search-keys [uid]
# 下载
gpg --receive-keys [uid]
常用服务器:
🛡️ 加密与解密
# 加密
gpg --output secret.enc --recipient [uid] --encrypt secret.txt
# 解密
gpg --output secret.txt --decrypt secret.enc
✉️ 签名与验证
# 生成签名文件(含内容)
gpg --sign demo.txt
# 文本签名(.asc)
gpg --clearsign demo.txt
# 独立签名(二进制)
gpg --detach-sign demo.txt
# 文本独立签名
gpg --armor --detach-sign demo.txt
# 验证签名
gpg --verify demo.txt.asc
🧾 撤销密钥
私钥泄露?赶紧撤销。
# 生成撤销证书
gpg --output revoke.asc --revoke-key [uid]
# 本地撤销
gpg --import revoke.asc
# 上传撤销信息
gpg --send-keys [uid]
📚 延伸阅读
- 阮一峰《GPG 入门教程》
- https://www.gnupg.org
结语 密钥是你的数字身份。保护它,就像保护灵魂。 加密不是偏执,而是一种优雅的自我防御。