OpenSSH 10.4 发布:后量子签名时代来临

日期 :2026-07-08 主题 :OpenSSH 10.4 发布:后量子签名时代来临 原文OpenSSH 10.4 发布:后量子签名时代来临 来源LWN.net 领域:🔒 安全/网络


背景

2026 年 7 月 6 日,OpenSSH 10.4 正式发布。这个版本最引人注目的特性,是引入了实验性的后量子(post-quantum)签名方案支持------将 ML-DSA 44(基于格的数字签名算法)与经典的 Ed25519 组合成复合签名。这标志着 SSH 协议在量子计算威胁面前迈出了防御性的第一步。

除此之外,10.4 还带来了多项安全加固和功能改进:在 Linux 上强制 SECCOMP 沙箱、对传输协议做更严格的报文校验、重写了通配符匹配器避免指数级性能退化,以及修复了一批安全漏洞。本文将从技术角度逐一拆解这些变化。

核心内容

后量子签名:ML-DSA 44 + Ed25519 复合方案

量子计算对当前公钥密码体系的威胁已经不是新鲜话题。Shor 算法可以在多项式时间内破解 RSA 和 ECDSA,这意味着一旦大规模容错量子计算机建成,目前 SSH 依赖的签名算法将全面失效。

美国 NIST 在 2024 年正式标准化的 FIPS 204(ML-DSA,Module-Lattice-Based Digital Signature Algorithm),就是为应对这一威胁而设计的后量子签名标准。ML-DSA 基于格密码中的 Module-LWE 问题,目前学术界普遍认为它能够抵抗量子攻击。

OpenSSH 10.4 采纳了 IETF 草案 draft-miller-sshm-mldsa44-ed25519-composite-sigs,实现了一种复合签名方案

  • 对同一份数据同时用 ML-DSA 44 和 Ed25519 签名
  • 验证时要求两份签名同时有效才通过
  • 既提供经典安全性(Ed25519),又提供量子安全性(ML-DSA 44)

这种"双签名"设计的精巧之处在于:即使将来 Ed25519 被量子攻破,只要 ML-DSA 还是安全的,复合签名就仍然成立。反过来,如果 ML-DSA 被发现有经典攻击漏洞,Ed25519 也能兜底。这是一种"不把鸡蛋放在同一个篮子里"的安全策略。

当然,这个方案目前还是实验性的,默认并不启用。需要手动配置才能使用:

bash 复制代码
# 生成复合签名密钥
ssh-keygen -t mldsa44-ed25519

# 在 sshd_config 中启用
HostKeyAlgorithms sk-ssh-ed25519-cert-v01@openssh.com,ssh-ed25519-cert-v01@openssh.com,mldsa44-ed25519-cert-v01@openssh.com,sk-ssh-ed25519@openssh.com,ssh-ed25519,mldsa44-ed25519
PubkeyAcceptedAlgorithms sk-ssh-ed25519-cert-v01@openssh.com,ssh-ed25519-cert-v01@openssh.com,mldsa44-ed25519-cert-v01@openssh.com,sk-ssh-ed25519@openssh.com,ssh-ed25519,mldsa44-ed25519

密钥的长度也有所增加。ML-DSA 44 的公钥约 1.3 KB,签名约 2.4 KB,相比 Ed25519 的 32 字节公钥加 64 字节签名大了不少。这意味着握手阶段的网络开销会有所上升,但从安全的角度来看,这笔代价是值得的。

SECCOMP 沙箱强制:不再容忍不安全的环境

在 Linux 平台上,OpenSSH 自 6.7 起就支持使用 seccomp(secure computing mode)对 sshd 的子进程做沙箱隔离。当客户端完成认证后,sshd 会创建一个受限的子进程来处理后续会话,这个子进程只允许调用少数几个系统调用,大幅降低了被利用后的危害范围。

10.4 之前,如果系统没有启用 SECCOMP 或 NO_NEW_PRIVS,sshd 只会记录一条错误日志然后继续运行。这在某些老旧容器环境或自定义内核中很常见------操作员甚至可能从未注意到沙箱其实没有生效。

10.4 改变了这个行为 :如果编译时启用了沙箱支持,但运行时系统无法启用 SECCOMP 或 NO_NEW_PRIVS,sshd 直接退出,不再妥协。对于确实无法支持这些特性的系统,维护者需要在编译时显式禁用沙箱:

bash 复制代码
# 编译时禁用沙箱
./configure --without-sandbox

这是一个"默认安全"的立场变化:与其让大家以为沙箱在工作实际上却没有,不如让问题在启动时就暴露出来。

传输协议加固:拒绝乱序消息

RFC 4253 第 7.1 节明确规定,在密钥重新交换(key re-exchange)期间,对端不应发送非密钥交换消息。然而 OpenSSH 之前的实现对此并没有强制约束------如果对端在此期间发送了常规数据,这些数据会被缓冲起来,等密钥交换完成后再处理。

这看起来像个"友好的兼容性"设计,但实际带来了风险:一个恶意的对端可以持续发送大量数据,导致接收端不断消耗内存缓冲这些消息,形成拒绝服务攻击。

10.4 修正了这个问题:如果在 post-authentication 密钥重新交换期间收到非 KEX 消息,连接将被直接断开。这属于 breaking change------一些没有严格遵循 RFC 4253 的实现可能会因此无法与 OpenSSH 10.4 互通。

通配符匹配器重写:从递归到 NFA

这是一个容易被忽略但非常有价值的工程改进。OpenSSH 的配置文件(如 sshd_configauthorized_keys)中大量使用通配符模式匹配(如 *?),用于匹配主机名、用户名等。原先的实现基于递归回溯,在某些精心构造的模式匹配场景下,会出现指数级的时间复杂度------这实际上是一个拒绝服务向量。

10.4 将通配符匹配器替换为基于 NFA(非确定性有限自动机)的实现。NFA 的匹配复杂度是 O(n × m),无论输入如何构造都不会退化到指数级。这借鉴了正则表达式引擎中从回溯到自动机的经典优化思路。

安全修复一览

除了上述新特性,10.4 还修复了多个安全漏洞:

  • sftp 下载路径劫持 :使用 sftp host:/path . 下载文件时,恶意服务器可能将文件写入非预期的位置
  • scp 远程间拷贝:双远程拷贝场景下,防止恶意服务器将文件写入目标目录的父目录
  • internal-sftp 参数截断:第 10 个及之后的参数被静默丢弃,可能导致安全选项失效
  • GSSAPI 预认证 DoS:启用 GSSAPIAuthentication 时存在潜在的 DoS 漏洞(默认关闭)
  • 认证延迟绕过:多处在认证流程中没有正确执行最小认证延迟
  • 客户端 use-after-free:服务端在密钥重新交换时更换主机键,可能触发客户端释放后使用

每个漏洞都已在发布前收到了负责任的报告和修复。

其他值得注意的变化

  • FIDO 密钥下载ssh-keygenssh-add 在从 FIDO 令牌下载驻留密钥时,遇到不支持的密钥类型会跳过而不是终止整个流程
  • X11 通道安全:修复了在发送 x11-req 消息之前创建 X11 通道可能导致的 strlen(NULL) 崩溃
  • sshd_config 重构:配置解析和管理代码做了重大重构,为后续更严格的权限分离边界序列化做准备
  • 密码学代码加固:ed25519 验证增加了签名可塑性和公钥有效性检查,ECDSA 曲线 cofactor 检查更正

总结与展望

OpenSSH 10.4 是一个在安全前瞻性和工程严谨性上都迈出重要步伐的版本。实验性的后量子签名支持让 SSH 成为了首批拥抱 NIST 后量子标准的通用基础设施协议之一;SECCOMP 沙箱的强制化意味着默认安全立场进一步收紧;而传输协议和通配符匹配器的加固则体现了 OpenSSH 团队一贯的"对细节零容忍"的工程文化。

对于运维人员和系统管理员来说,10.4 升级后需要留意两点:一是 SECCOMP 沙箱可能在未配置的内核或容器环境导致 sshd 启动失败,需要在编译时确认沙箱配置;二是 post-authentication 期间的消息验证变化可能影响某些非标准 SSH 实现的互操作性。

后量子密码的标准化和部署才刚刚开始。OpenSSH 10.4 的复合签名方案只是第一步------未来我们可以期待更多后量子算法被纳入主流基础设施。在量子计算真正到来之前提前做好准备,才是负责任的安全实践。

相关推荐
IVVi0jToe1 小时前
高效C++线程池设计与实现
java·c++·安全
MartinYeung52 小时前
实战测试 LLM 安全护栏:@martin_yeung/llm-up-guardrail 全面评测与避坑指南
安全
DS小龙哥2 小时前
基于树莓派PICO2设计的汽车少儿安全预警系统
网络·安全·汽车
solar应急响应2 小时前
【银狐应急复盘】伪装 Telegram 的“白加黑”银狐木马,从深度溯源到彻底清除的闭环响应实录(附自查 IOC)
网络·安全
Lottie20262 小时前
京东电商进阶运营:精准定价+安全铺货+竞品监控+利润管控全自动化方案
运维·安全·自动化
运维大师2 小时前
【安全与故障排查】03-【复盘】数据库被入侵:从发现到溯源全过程
数据库·安全·adb
深盾科技_Virbox3 小时前
软件交付保护如何从加壳走向代码虚拟化
java·python·安全
ylscode3 小时前
Windows 11 云重建功能实测:无需U盘也能从云端恢复系统
安全
xixingzhe212 小时前
SpringBoot + Nginx 免鉴权接口安全防护方案
运维·nginx·安全