GPG 常用操作详解:从入门到精通
GPG (GNU Privacy Guard) 是开源的 OpenPGP 标准实现,广泛应用于数据加密、数字签名和安全通信领域。无论是开发者提交代码、运维人员保护配置文件,还是普通用户加密敏感文件,GPG 都是保护隐私的核心工具。本文将深入解析 18 个最常用的 GPG 操作,涵盖密钥管理、加密解密、签名验证等场景,结合最佳实践和真实案例,助你快速掌握 GPG 的核心技能。
目录#
一、安装与环境准备#
在开始操作前,先安装 GPG:
- Linux (Debian/Ubuntu):
sudo apt-get install gnupg - macOS (通过 Homebrew):
brew install gnupg - Windows: 下载 Gpg4win
验证安装:
gpg --version✅ 输出应显示
gpg (GnuPG) x.x.x版本信息
二、密钥管理#
2.1 生成密钥对#
生成一个 RSA 3072 位的密钥对(推荐):
gpg --full-generate-key- 选择密钥类型:
RSA and RSA(默认) - 密钥长度:
3072(安全性平衡点) - 设置有效期:
1y(一年后过期) - 输入用户信息(姓名、邮箱)和强密码(至少12字符)
🔐 最佳实践:为子密钥单独加密(如签名、加密),主密钥离线存储:
gpg --full-generate-key --expert # 启用高级模式创建子密钥2.2 列出密钥#
查看所有公钥:
gpg --list-keys查看所有私钥:
gpg --list-secret-keys输出示例:
/Users/alice/.gnupg/pubring.kbx
--------------------------------
pub rsa3072 2023-01-15 [SC] [有效至:2024-01-15]
D8F8B8E1F2A3B4C5E6A7B8C9D0E1F2A3B4C5D6E7
uid [ 绝对 ] Alice <[email protected]>
sub rsa3072 2023-01-15 [E] [有效至:2024-01-15]
2.3 导出与导入密钥#
导出公钥(ASCII 格式):
gpg --armor --export [email protected] > alice_public.asc导出私钥(⚠️ 务必加密存储):
gpg --armor --export-secret-keys [email protected] > alice_private.asc导入密钥:
gpg --import alice_public.asc # 导入公钥
gpg --import alice_private.asc # 导入私钥(需密码)2.4 吊销证书#
若私钥泄露,生成吊销证书:
gpg --gen-revoke [email protected] > revoke.asc上传到密钥服务器使公钥失效:
gpg --keyserver keyserver.ubuntu.com --send-keys D8F8B8E1F2A3B4C5E6A7B8C9D0E1F2A3B4C5D6E7三、加密与解密#
3.1 加密文件#
加密 secret.txt 给 Alice:
gpg --encrypt --recipient [email protected] secret.txt生成 secret.txt.gpg 加密文件。
📌 常用选项:
--armor生成 ASCII 格式(.asc后缀)--output指定输出文件名
gpg --armor --encrypt -r [email protected] -o secret.asc secret.txt3.2 解密文件#
解密接收到的加密文件:
gpg --decrypt secret.txt.gpg > plaintext.txt输入密钥密码后,解密内容保存到 plaintext.txt。
四、签名与验证#
4.1 创建签名#
为 document.pdf 生成分离式签名(常用):
gpg --detach-sig document.pdf生成 document.pdf.sig 签名文件。
📝 直接生成签名文件(内嵌签名):
gpg --sign document.pdf # 生成 document.pdf.gpg4.2 验证签名#
验证签名文件与原始文档:
gpg --verify document.pdf.sig document.pdf输出示例:
gpg: 签名建立于 2023年05月01日 星期一 14:30:45 CST
gpg: 使用 RSA 密钥 D8F8B8E1F2A3B4C5E6A7B8C9D0E1F2A3B4C5D6E7
gpg: 完好的签名(来自 “Alice <[email protected]>”)
五、密钥服务器操作#
5.1 上传公钥#
将公钥上传到服务器:
gpg --keyserver keyserver.ubuntu.com --send-keys D8F8B8E1F2A3B4C5E6A7B8C9D0E1F2A3B4C5D6E75.2 搜索与导入公钥#
搜索 Alice 的公钥:
gpg --keyserver keyserver.ubuntu.com --search-keys [email protected]导入到本地:
gpg --keyserver keyserver.ubuntu.com --recv-keys D8F8B8E1F2A3B4C5E6A7B8C9D0E1F2A3B4C5D6E7六、高级配置与最佳实践#
6.1 设置密钥有效期#
延长密钥有效期(需主密钥):
gpg --edit-key [email protected]
> expire # 设置新有效期
> save # 保存6.2 编辑密钥属性#
编辑 UID(用户标识)或添加子密钥:
gpg --edit-key [email protected]
> adduid # 添加新邮箱
> addkey # 添加加密子密钥
> trust # 设置信任级别6.3 安全最佳实践#
- 主密钥离线存储:导出后删除本地主密钥,仅保留子密钥
gpg --export-secret-subkeys [email protected] > subkeys.asc gpg --delete-secret-keys [email protected] - 使用强密码:推荐密码管理器生成20+位随机密码
- 定期轮换密钥:每1-2年更新一次密钥
- 验证密钥指纹:交换公钥时当面核对指纹
gpg --fingerprint [email protected] - 启用智能卡:如 YubiKey 存储私钥增强安全性
七、总结#
GPG 的核心操作围绕 密钥生命周期管理、数据加密 和 身份验证 展开。掌握本文的 18 个关键操作(生成密钥、加解密、签名验证等)可覆盖 90% 日常需求。关键要点:
- 🔑 密钥安全是核心:离线存储主密钥+强密码保护
- 📜 规范使用签名:确保软件分发和文档的真实性
- 🔄 定期维护:更新过期密钥、吊销泄露证书
- 🌐 善用密钥服务器:高效分发公钥
八、参考资源#
致谢:本文示例已在 Ubuntu 22.04 和 GnuPG 2.2.27 测试通过,适用于大多数 Linux/macOS 环境。
# 示例:生成测试密钥对(快速操作)
gpg --batch --passphrase "test123" --quick-gen-key "Test User <[email protected]>"安全之路,始于密钥管理。立即动手试试这些命令,打造你的数字身份护甲!