SSH(Secure Shell)诞生已逾 25 年,始终是远程服务器管理的基石协议。然而随着量子计算的快速发展,传统密码学体系正面临前所未有的挑战。本文将系统梳理 SSH 支持的密钥算法、当前最佳实践,以及后量子时代的演进趋势。
一、SSH 密钥算法概览
SSH 的安全性建立在三大密码学基础之上:哈希函数、对称加密和非对称加密。其中非对称密钥算法用于身份认证与密钥协商,是整个协议安全的核心。目前主流的 SSH 认证密钥算法包括以下几类:
1. RSA(Rivest–Shamir–Adleman)
RSA 是最古老也是使用最广泛的 SSH 密钥算法,基于大整数分解难题。
- 密钥长度:推荐 3072 位或 4096 位(1024 位已被弃用)
- 优点:兼容性极佳,几乎所有 SSH 客户端/服务器均支持
- 缺点:密钥较大、运算较慢;量子计算机可用 Shor 算法高效破解
- 现状:仍被广泛使用,但已不推荐作为首选
2. DSA(Digital Signature Algorithm)
DSA 基于离散对数问题,曾是 SSH 早期的标准算法。
- 密钥长度:固定 1024 位(FIPS 标准限制)
- 缺点:安全强度不足,OpenSSH 7.0 起已默认禁用,强烈不推荐使用
- 现状:已实质性淘汰 [2]
3. ECDSA(Elliptic Curve Digital Signature Algorithm)
ECDSA 基于椭圆曲线离散对数问题,是 RSA 的高效替代方案。
- 密钥长度:256/384/521 位(对应 NIST P-256、P-384、P-521 曲线)
- 优点:相比 RSA,更短的密钥提供等效安全强度,性能更优
- 缺点:NIST 曲线存在潜在后门争议;同样无法抵抗量子攻击
- 现状:被广泛支持,但 Ed25519 正逐步取代其地位
4. Ed25519(EdDSA with Curve25519)
Ed25519 是目前最推荐的经典 SSH 认证算法,基于 Edwards 曲线数字签名算法。
- 密钥长度:固定 256 位
- 优点:
- 极高的安全性(等效于 3000+ 位 RSA)
- 签名速度极快
- 无随机数依赖(避免 ECDSA 的随机数漏洞)
- 密钥文件小巧
- 缺点:较旧系统(如某些嵌入式设备)可能不支持
- 现状:2025 年最佳实践首选
算法对比一览
以下是四种主流算法的横向比较:
| 算法 | 数学基础 | 推荐密钥长度 | 性能 | 量子安全 | 推荐度 |
|---|---|---|---|---|---|
| RSA | 大整数分解 | 3072/4096 位 | 慢 | ❌ 不安全 | ⚠️ 可用但非首选 |
| DSA | 离散对数 | 1024 位(固定) | 中 | ❌ 不安全 | 🚫 已淘汰 |
| ECDSA | 椭圆曲线离散对数 | 256/384/521 位 | 快 | ❌ 不安全 | ✅ 可用 |
| Ed25519 | Edwards 曲线 | 256 位(固定) | 极快 | ❌ 不安全 | ✅✅ 强烈推荐 |
注意:上表中的算法均为**认证(Authentication)算法,均无法抵抗量子攻击。量子安全需依赖密钥交换(Key Exchange)**层面的后量子算法。
二、密钥交换算法(KexAlgorithms)
除认证密钥外,SSH 连接安全同样依赖密钥交换算法。传统密钥交换算法包括:
diffie-hellman-group14-sha256diffie-hellman-group16-sha512ecdh-sha2-nistp256/384/521curve25519-sha256(目前经典算法中最推荐)
这些算法同样面临量子威胁,这正是后量子密码学介入的关键所在。
三、后量子时代:OpenSSH 的应对之道
量子计算机的潜在威胁催生了"现在存储,以后解密(Store Now, Decrypt Later)"攻击模式——攻击者今天截获加密流量,等量子计算机成熟后再行破解。这使得密钥交换层面的后量子升级刻不容缓。[2]
OpenSSH 后量子演进时间线
| 版本 | 发布时间 | 后量子进展 |
|---|---|---|
| OpenSSH 9.0 | 2022年4月 | 默认启用 sntrup761x25519-sha512(NTRU Prime + X25519 混合算法) |
| OpenSSH 9.9 | 2024年 | 新增 mlkem768x25519-sha256(ML-KEM/Kyber + X25519 混合算法) |
| OpenSSH 10.0 | 2025年4月 | mlkem768x25519-sha256 成为新默认密钥交换算法 |
| OpenSSH 10.1 | 2025年(计划) | 对非后量子连接主动发出警告 |
两大后量子密钥交换算法解析
① mlkem768x25519-sha256(当前默认)
- 基于 ML-KEM(Module Lattice-based Key Encapsulation Mechanism),即 NIST 标准化的 CRYSTALS-Kyber
- 与经典 X25519 组成混合方案,兼顾经典安全与量子安全
- NIST 已于 2024 年正式将 ML-KEM 标准化为 FIPS 203
② sntrup761x25519-sha512
- 基于 NTRU Prime(sntrup761),一种格密码学算法
- 同样采用混合方案,与 X25519 结合
- OpenSSH 9.0 起支持,已有多年实战验证
OpenSSH 10.1 警告示例
从 OpenSSH 10.1 起,若连接未使用后量子密钥交换,将显示:
** WARNING: connection is not using a post-quantum key exchange algorithm.
** This session may be vulnerable to "store now, decrypt later" attacks.
** The server may need to be upgraded. See https://openssh.com/pq.html
四、哪些算法能抵抗量子攻击?
目前 SSH 生态中,抗量子能力主要体现在密钥交换层,认证签名算法的后量子标准仍在推进中。
| 类别 | 算法 | 量子安全 | 说明 |
|---|---|---|---|
| 密钥交换 | mlkem768x25519-sha256 | ✅ 混合安全 | NIST 标准 ML-KEM,当前首选 |
| 密钥交换 | sntrup761x25519-sha512 | ✅ 混合安全 | NTRU Prime,已验证多年 |
| 密钥交换 | curve25519-sha256 | ❌ 经典算法 | 仅抵御经典攻击 |
| 认证签名 | Ed25519 | ❌ 经典算法 | 后量子签名标准仍在制定 |
| 认证签名 | RSA/ECDSA | ❌ 经典算法 | 可被 Shor 算法破解 |
| 认证签名(未来) | ML-DSA(Dilithium) | ✅ 后量子 | NIST FIPS 204,SSH 集成进行中 |
| 认证签名(未来) | SLH-DSA(SPHINCS+) | ✅ 后量子 | NIST FIPS 205,基于哈希 |
五、未来趋势与迁移建议
趋势判断
-
混合方案是过渡期主流:在量子计算机真正威胁到位之前,经典+后量子的混合算法(如 mlkem768x25519)将是主流,兼顾向后兼容与前瞻安全。
-
后量子签名算法即将落地:NIST 已标准化 ML-DSA(FIPS 204)和 SLH-DSA(FIPS 205),OpenSSH 对后量子认证签名的支持预计在未来 1-2 年内逐步推出。
-
量子计算机预计 2030s 中期成熟:多数专家估计具备密码学意义的量子计算机将在 2030-2035 年出现,迁移窗口期有限。
-
企业合规压力加大:NIST、NSA 等机构已明确要求关键基础设施在 2030 年前完成后量子迁移。
实操迁移建议
立即可做:
# 1. 升级 OpenSSH 至 9.9+ 或 10.0+
ssh -V
# 2. 服务端启用后量子密钥交换(/etc/ssh/sshd_config)
KexAlgorithms mlkem768x25519-sha256,sntrup761x25519-sha512@openssh.com,curve25519-sha256
# 3. 新建认证密钥使用 Ed25519
ssh-keygen -t ed25519 -C "your_email@example.com"
# 4. 验证连接使用的算法
ssh -v user@hostname 2>&1 | grep "kex:"
总结
SSH 密码学正处于一个关键的历史转折点。以下是核心要点:
- 认证密钥:立即迁移至 Ed25519,淘汰 DSA,谨慎使用旧版 RSA
- 密钥交换:升级至 OpenSSH 10.0+,使用
mlkem768x25519-sha256作为默认算法 - 量子威胁:当前最紧迫的是防御"现在存储,以后解密"攻击,密钥交换层的后量子升级是第一优先级
- 未来展望:关注 ML-DSA 等后量子签名算法在 SSH 中的落地,提前规划认证体系迁移
量子计算机的到来不是"是否"的问题,而是"何时"的问题。现在开始行动,是对未来最好的投资。
参考来源: