中文

SSH 客户端签名的安全性

密码学与安全 2025-09-12 v1

摘要

管理员和开发者使用 SSH 客户端密钥和签名进行身份验证,例如访问互联网骨干服务器或在类似 GitHub 这样的平台上提交新代码。然而,与服务器不同,SSH 客户端无法通过互联网扫描进行测量。我们通过两个步骤来弥合这一差距。首先,我们收集 SSH 客户端公钥。这些密钥定期由其所有者在开放开发平台(如 GitHub 和 GitLab)上发布。我们对以往非学术工作进行系统化,通过对这些密钥进行各种安全测试开展纵向研究。其次,在一系列黑盒实验中,我们分析了 24 个流行 SSH 客户端(针对 Linux、Windows 和 macOS)中 ECDSA 签名算法实现的实现。我们从三个公共数据源中提取了 31,622,338 个密钥。与以往工作相比,我们看到一种明显的趋势,即抛弃 RSA 签名,转而使用 EdDSA 签名。尽管如此,在 2025 年 1 月,我们发现了 98 个破损的短密钥、139 个来自弱随机数的密钥,以及 149 个具有常见或小因子的密钥——其中大多数检索到的密钥未暴露任何弱点。弱随机数不仅可以通过其公钥损害私钥,还可以通过签名损害。众所周知,ECDSA 中随机 nonce 的偏差可以通过公开签名揭示私钥。本文首次展示,使用 ECDSA 的确定性 nonce 也可能具有危险性:只需 58 个有效签名即可从使用 NIST 曲线 P-521 的 PuTTY 客户端私钥中恢复。PuTTY 已在 CVE-2024-31497 中承认了我们的发现,并随后替换了 nonce 生成算法。

关键词

引用

@article{arxiv.2509.09331,
  title  = {On the Security of SSH Client Signatures},
  author = {Fabian Bäumer and Marcus Brinkmann and Maximilian Radoy and Jörg Schwenk and Juraj Somorovsky},
  journal= {arXiv preprint arXiv:2509.09331},
  year   = {2025}
}

备注

15 pages, 5 figures, accepted at ACM CCS 2025