#636·age

在使用 (Ed25519) SSH 密钥作为身份时,文档提供了密钥派生的加密构建

作者: sysvinit创建于 2025年6月15日更新于 2025年12月22日

我已经阅读了 agessh.go 中包装 ssh-ed25519 密钥为 age 身份和接收人所用的代码,虽然其中提到了 Filippo 的 文章,其中介绍了将 Ed25519 签名密钥转换为 X25519 密钥以用于加密,但 age 实现使用的构造比文章中展示的简单的密钥交换更复杂。特别是,接收人公钥(SSH)中有一个由 HKDF 衍生的“微调”,然后在 Curve25519 乘法的另一轮中使用。这有点模糊,因为我对密码学不够熟悉,无法推断为什么要添加微调(或者为什么它使用了带盐但没有输入密钥材料的 HKDF)。我已经阅读了一些 libsodium 文档,其中链接到关于将 Ed25519 密钥转换为 X25519 密钥的 这篇论文,其中描述了使用 HMAC 来消除重用签名密钥用于加密时相关的一些问题,但这与 age 的做法并不完全一致。如果能够对 ssh-ed25519 密钥衍生的密码学进行文档化,并解释微调的用途以及为什么它是以这种方式构建的,那就太好了。

内容来源: FiloSottile/age