0Pricing
Cryptology Academy · 课时

使用 GPG 进行非对称文件加密

使用 GPG 为指定接收者加密文件、签署内容并管理 GPG 密钥环。

使用 GPG 进行非对称文件加密 是 CoddyKit 上的免费 Cryptology Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cryptology Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cryptology Academy 课程共包含 4 节课。

GPG 概述与用途

GNU Privacy Guard (GPG) 实现了 OpenPGP 标准(RFC 4880),用于非对称文件加密和数字签名。它支持两项基本操作:加密文件,使其只有预期的收件人能够解密;以及为文件签名,使其他人能够验证其真实性和完整性。GPG 是安全文件传输和软件发布签名的标准工具。

生成 GPG 密钥

GPG 密钥生成可以通过 gpg --gen-key 进行交互式操作,也可以通过 gpg --quick-gen-key 编写脚本自动执行。现代 GPG 默认使用 ed25519 进行签名,使用 cv25519(Curve25519)进行加密,并创建一个主签名密钥和一个用于加密的子密钥。对于需要自定义配置的用户,--full-gen-key 选项可以完全控制密钥类型、大小和过期日期。

GPG 密钥类型比较

RSA 4096 位 GPG 密钥与所有 OpenPGP 实现兼容,并提供强大的安全性。使用 Curve25519 的 ECDSA(签名使用 Ed25519,加密使用 Cv25519)可以生成更小的密钥并加快操作,同时保持同等的安全性。旧式 DSA 密钥在较早的实现中仅限使用 SHA-1 摘要,不应再使用。新密钥应使用基于 Curve25519 的类型。

导出与共享公钥

生成密钥对后,请导出公钥以便分发:gpg --armor --export your@email.com 会输出一个 ASCII 装甲格式的公钥块。请将此文件分享给需要向您加密文件或验证您签名的任何人。收件人必须先使用 gpg --import publickey.asc 导入您的公钥,然后才能进行加密或验证。

为收件人加密文件

要为特定收件人加密文件,请使用:gpg --encrypt --recipient recipient@email.com --output secret.gpg plaintext.txt。GPG 使用收件人的公钥加密文件会话密钥,并使用 AES-256(或协商出的密码算法)加密文件。只有持有匹配私钥的收件人才能解密文件会话密钥并恢复明文。

创建分离式签名

分离式签名(gpg --detach-sign --armor file.tar.gz)会创建一个单独的 .asc 文件,其中包含签名。原始文件不会发生变化。收件人使用 gpg --verify file.tar.gz.asc file.tar.gz 进行验证。分离式签名是软件发布的标准方式,可以在不解密或修改所分发文件的情况下验证签名。

验证签名

签名验证可以确认文件由声明的密钥签署,并且自签署以来未被修改。gpg --verify signature.asc file 会输出密钥指纹、用户 ID,以及签名是否有效。安全性取决于是否正确信任签署者的公钥:来自不受信任或未经验证的密钥的有效签名几乎无法提供可靠保证。

受口令保护的私钥

GPG 会先使用由口令派生出的对称密码算法加密私钥,然后再存储私钥。没有口令时,取得私钥文件的攻击者无法使用它。GPG 使用密钥派生函数从口令派生加密密钥。口令应当足够长且便于记忆,但不要在其他地方重复使用,因为您所有的加密文件都由它保护。

GPG 密钥服务器操作

GPG 密钥服务器托管公钥,以便用户查找。gpg --send-keys KEYID --keyserver hkps://keys.openpgp.org 会上传您的公钥。其他人可以使用 gpg --recv-keys KEYID 搜索并导入公钥。密钥服务器之间会相互同步,从而提供全球可用性。现代密钥服务器(例如 keys.openpgp.org)要求在发布前验证电子邮件地址,以防止密钥垃圾攻击。

密钥过期与撤销

为密钥设置过期日期,可以在您失去密钥控制权时自动提供保护,而无需创建撤销证书。当密钥过期时,GPG 会向使用该密钥加密的用户发出警告。如果您的密钥遭到泄露,请立即将撤销证书(在生成密钥时创建)发布到密钥服务器:gpg --import revocation.cert,然后执行 gpg --send-keys。这可以防止继续使用遭到泄露的密钥进行加密。

自动化工作流中的 GPG

GPG 可以在脚本中使用 --batch 和 --yes 标志以非交互方式运行,并通过 --passphrase-fd 从文件描述符读取口令。GPG agent(gpg-agent)会在可配置的时长内缓存口令,从而允许自动重复使用。在 CI/CD 流水线中,密钥材料应存储在机密管理系统中,而不应存放在源代码或环境变量中。

GPG 加密命令

哪个 GPG 命令会使用特定收件人的公钥为其加密文件?

GPG 文件加密回顾

GPG 回顾:生成密钥对(优先选择 Curve25519),导出并共享公钥,使用收件人的公钥进行加密(--encrypt --recipient),使用分离式签名单独为文件签名(--detach-sign),使用 --verify 验证签名,使用口令保护私钥,设置过期日期并准备撤销证书,以及使用密钥服务器查找和分发公钥。

常见问题解答

「使用 GPG 进行非对称文件加密」课时是免费的吗?

是的 — 「使用 GPG 进行非对称文件加密」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cryptology Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cryptology Academy 课程共包含 4 节课。

「使用 GPG 进行非对称文件加密」这节课中我会学到什么?

使用 GPG 为指定接收者加密文件、签署内容并管理 GPG 密钥环。 你通过在浏览器中直接运行的动手代码来练习 Cryptology Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Cryptology Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Cryptology Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「使用 GPG 进行非对称文件加密」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Cryptology Academy 课中编写并运行代码吗?

能。每节 Cryptology Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 使用 GPG 进行非对称文件加密
  2. age 加密工具:现代化的 GPG 替代方案
  3. 使用 VeraCrypt 创建加密容器
  4. 安全删除与密钥销毁
← 返回 Cryptology Academy