使用 SSH 代替 GPG 密钥对

使用 SSH 代替 GPG 密钥对

💡 原文中文,约2600字,阅读约需7分钟。
📝

内容提要

本文介绍了作者吊销GPG密钥并转用SSH密钥对的方案,指出GPG存在历史包袱、社区分化和兼容性问题。相比之下,SSH提供了满足加密、签名和认证需求的基础设施。文章详细介绍了使用SSH进行签名和加密的方法,并推荐了age工具进行加密。作者公布了自己的SSH公钥。

🔎

延伸解读

GPG 的痛点:历史包袱与操作复杂性

文章指出 GPG 虽然安全,但因其历史悠久,积累了诸多问题:包长度编码方式多达 8 种,新旧社区分化导致教程仍推荐过时的 RSA 算法,且兼容性支持大量废弃的密码学原语。用好 GPG 需要成为密码学专家,理解密钥类型、吊销流程等,而 CLI 操作复杂,容易配置失败。这些因素促使作者转向更简单的 SSH 方案。

SSH 签名:简单流程与版本要求

使用 SSH 进行签名需 OpenSSH 版本超过 8.0,现代操作系统通常满足。签名命令为 `ssh-keygen -Y sign -f 私钥 -n 命名空间 文件`,生成 `.sig` 文件。验证时需提供 allowed_signer 文件映射签名者与公钥,使用 `ssh-keygen -Y verify` 命令。Git 从 2.34 版本起也支持 SSH 签名,配置可参考 GitHub 教程。整个过程比 GPG 更直观。

加密推荐:age 工具与 SSH 密钥的配合

对于加密需求,作者推荐使用 age 工具而非 OpenSSL。age 采用业界最佳实践的加密原语和设计,截至 2024 年 4 月,其标准符合现代密码学要求。age 使用简单,作者未在文中赘述具体用法,但建议读者自行查看项目主页。作者也公布了自己的 SSH 公钥,可用于加密邮件或验证 Git 提交签名。

❓

Q&A

为什么作者决定从GPG转用SSH密钥对?

作者认为GPG存在历史包袱、社区分化和兼容性问题,而SSH提供了更现代的加密、签名和认证基础设施。

如何使用SSH进行文件签名?

可以使用ssh-keygen命令,确保OpenSSH版本超过8.0,执行命令ssh-keygen -Y sign -f ~/.ssh/id_ed25519 -n file about.txt进行签名。

推荐使用哪个工具进行加密?

推荐使用age工具进行加密,因为它符合业界最佳实践。

SSH密钥对的签名验证过程是怎样的?

使用ssh-keygen -Y verify命令进行验证,需提供allowed_signer文件维护签名者与公钥的映射。

GPG的主要问题是什么?

GPG的问题包括历史包袱、社区分化、兼容性问题以及操作复杂性,导致用户需要成为密码学专家才能有效使用。

作者的SSH公钥是什么?

作者的SSH公钥是ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOku75Ulw2Fou7hvZQOZm2YN4cM8YRBYbZviIlkvu9jq。

🏷️

标签

➡️

继续阅读