概述
随着量子计算技术的发展,传统加密算法面临潜在威胁。SSH 作为最常用的远程访问协议,其安全性尤为重要。本文介绍 OpenSSH 后量子密钥交换的配置方法,帮助管理员保护 SSH 连接免受"现在收集,以后解密"(Harvest Now, Decrypt Later)攻击。
为什么需要后量子密钥交换?
“现在收集,以后解密"攻击
即使量子计算机尚未实用化,攻击者已经开始收集加密的 SSH 流量。当量子计算机足够强大时,这些历史数据可能被解密。这就是所谓的"现在收集,以后解密”(也称"收获现在,解密 later")攻击。
OpenSSH 官方文档指出:整个 SSH 连接的隐私取决于密钥协商。如果攻击者能够破解密钥协商,他们就能解密整个会话。攻击者无需实时执行此攻击——他们可以现在收集加密的 SSH 会话,然后在获得量子计算机后解密。
时间线
- 现在:攻击者开始收集加密数据
- 2030 年左右:RSA 和 ECDH 可能被量子计算机破解
- 2035 年:NIST 建议全面迁移到后量子密码学
OpenSSH 后量子支持历程
| 版本 | 发布时间 | 后量子支持 |
|---|---|---|
| OpenSSH 9.0 | 2022年4月 | 默认启用 sntrup761x25519-sha512 |
| OpenSSH 9.9 | 2024年 | 新增 mlkem768x25519-sha256 |
| OpenSSH 10.0 | 2025年4月 | mlkem768x25519-sha256 成为默认 |
| OpenSSH 10.1 | 未来 | 未使用后量子算法时发出警告 |
| RFC 9941 | 2026年4月 | 标准化 sntrup761x25519-sha512 |
支持的算法
混合密钥交换算法
-
sntrup761x25519-sha512
- 混合:NTRU Prime (sntrup761) + X25519
- SHA-512 用于密钥派生
- RFC 9941 标准化
-
mlkem768x25519-sha256
- 混合:ML-KEM-768 + X25519
- SHA-256 用于密钥派生
- NIST FIPS 203 标准
- 需要 OpenSSH 9.9+
算法选择建议
- 需要 FIPS 合规性:使用
mlkem768x25519-sha256(NIST 标准) - 兼容性优先:使用
sntrup761x25519-sha512(支持更广泛) - 最佳实践:同时配置两者,让客户端和服务器协商最佳算法
检查当前配置
检查 OpenSSH 版本
|
|
输出示例:
|
|
- OpenSSH 9.0-9.8:支持
sntrup761x25519-sha512 - OpenSSH 9.9+:支持
mlkem768x25519-sha256和sntrup761x25519-sha512
查看支持的密钥交换算法
|
|
查看默认密钥交换算法优先级
|
|
客户端配置
方式一:使用默认配置(推荐)
OpenSSH 9.0 及以上版本默认启用后量子密钥交换,无需额外配置。
方式二:手动指定算法
在 ~/.ssh/config 或 /etc/ssh/ssh_config 中指定:
|
|
验证连接是否使用后量子算法
使用 -v 参数查看握手详情:
|
|
在输出中查找:
|
|
或使用以下命令查看更详细的信息:
|
|
禁用弱加密警告
OpenSSH 10.1+ 会在连接不使用后量子算法时发出警告。如需禁用:
|
|
服务器配置
查看当前服务器配置
|
|
配置服务器端优先算法
编辑 /etc/ssh/sshd_config:
|
|
重启 SSH 服务
|
|
验证服务器配置
|
|
验证后量子密钥交换
测试本地连接
|
|
使用 tcpdump 验证
在另一个终端运行:
|
|
使用 Wireshark 分析
- 捕获 SSH 握手包
- 查看 SSH 协议解码
- 在 “Key Exchange” 部分确认使用的算法
故障排除
问题:连接失败
症状:配置后无法连接
排查步骤:
- 检查 OpenSSH 版本是否支持所需的算法
- 检查服务器和客户端配置是否兼容
- 查看日志:
|
|
问题:算法不被识别
症状:sshd: unrecognized keyword KexAlgorithms
排查:
- 确认 OpenSSH 版本支持该算法
- 检查配置文件语法
- 使用
sshd -t测试配置:
|
|
问题:回退到传统算法
症状:日志显示使用了 curve25519-sha256
排查:
- 检查双方都支持后量子算法
- 确认配置正确且已重载
- 检查是否有中间设备干扰
未来展望
ML-DSA 主机密钥
当前 SSH 使用 Ed25519 或 RSA 作为主机密钥,这些仍然是传统算法。IETF 正在制定 ML-DSA(基于 ML-KEM 的数字签名算法)标准。
预计:
- 2026-2027 年:ML-DSA SSH 草案标准化
- 2027-2028 年:OpenSSH 实现 ML-DSA 主机密钥
- 2030 年后:逐步迁移到纯后量子签名
迁移时间线建议
| 时间 | 操作 |
|---|---|
| 现在 | 确保 OpenSSH 9.0+,使用默认后量子 KEX |
| 2026-2027 | 升级到 OpenSSH 10.0+,启用 mlkem768x25519-sha256 |
| 2028-2030 | 准备 ML-DSA 主机密钥迁移 |
| 2035 年前 | 完成所有传统算法的迁移 |
总结
OpenSSH 自 9.0 版本起默认启用后量子密钥交换,为 SSH 连接提供量子安全保护。通过本文的配置指南,管理员可以:
- 验证当前状态:确认 OpenSSH 版本和默认配置
- 启用后量子算法:在需要时手动配置优先级
- 监控连接:验证实际使用的密钥交换算法
- 规划未来:关注 ML-DSA 等后量子签名算法的进展
保护 SSH 连接免受未来量子计算威胁,现在是最好的时机。