摘要
- RFC 9644 统一了 SSH 算法能力与有序策略的 YANG 表达,但没有定义逐会话的协商结果记录。
- 可辩护的结论必须从注册表与模型版本出发,经过实现能力、获批配置、双方
SSH_MSG_KEXINIT、双向选择、主机密钥验证、NEWKEYS、用户认证,最后抵达应用操作结果。 - 本文提出的“会话回执”是运营控制设计,不是 RFC 的规范要求;缺少哪段观察,就必须缩小结论,而不是用推测补齐。
从一句话倒推证据
假设变更工单已经关闭。安全团队提供了算法白名单,设备确认配置成功,资产系统也显示新算法“受支持”。这时若直接宣布“生产 SSH 已采用新策略”,实际上跨越了三个未经证明的边界:对端当时提供了什么、双方最终选中了什么、选中后是否完成了身份和业务操作。
RFC 9644 定义 ietf-ssh-common、ietf-ssh-client 和 ietf-ssh-server 三类可复用 grouping,并提供从 IANA SSH 注册表生成四个算法枚举模块的机制。它解决的是共同语义和配置可移植性,不是会话取证。模型能让控制器和设备用同一名称表达意图,却不会自动产生一次连接的事实。
因此需要把四个看似相近的判断拆开:名称已注册、实现声称支持、策略允许并排序、会话实际选中。前三项分别属于公共词汇、产品能力和组织意图;第四项才是运行事件。即使第四项成立,也还没有证明服务器身份、客户端认证和应用结果。
注册权不等于批准权
RFC 9644 的生成机制让 YANG 枚举随 IANA 源注册表更新:新修订记录变化,未分配或保留值不会被当作可用枚举,状态信息得到投射。这能减少公共注册表和管理模型之间的漂移。
但“有登记”并不表示“适合本组织使用”。注册表保存不同年代、不同状态的标识符;RFC 9142 也说明 SSH 密钥交换方法的要求与建议等级会变化。组织必须保留两份独立决策:当时采用了哪一版注册表与生成模块;本地风险权威又允许、降级或禁止了哪些值。
模型修订或哈希不是形式附件。没有它,审计者只能看到一串今天仍可识别的名称,却无法确认变更当时控制器和设备共享的词汇版本。证据链第一段应包含注册快照、生成模块修订,以及影响可见结构的 feature 和 deviation。
支持清单只是可能性空间
在启用可选的 algorithm-discovery feature 时,supported-algorithms 以 config false 形式提供实现能力。这对迁移评估很有价值:它能指出设备声称具备哪些密钥交换、主机密钥、加密和 MAC 能力。
但能力不会自动获得许可,也不会自动转化为使用。某算法可能被编译进产品,却被组织政策禁止;可能被政策允许,却没有被对端提供;也可能双方都提供,但因排序而未被选中。能力观察还必须绑定软件版本、构建选项和时间,因为升级会改变可能性空间。
空列表尤其容易制造误判。RFC 9644 规定,当相应配置列表不存在或没有条目时,可接受集合由实现决定。这不是一个跨厂商通用的“安全默认值”。如果运营者无法取得实现的有效默认行为,就应把许可集合标为未知,而不是在界面上补出一个看似确定的答案。
策略顺序只有遇到对端才产生选择
transport-params-grouping 保存密钥交换、主机密钥、加密和 MAC 的有序列表,顺序代表偏好递减。回执必须保存原始顺序、配置修订、批准者和实际接受配置的设备;为了报表美观进行字母排序,会抹掉策略信息。
RFC 4253 把实际选择放在双方交换中。客户端和服务器分别发送 SSH_MSG_KEXINIT 名称列表。密钥交换和主机密钥按照客户端偏好,在服务器也支持并满足方法约束的候选中选择。加密与 MAC 则分别为客户端到服务器、服务器到客户端两个方向独立确定。
所以单一“cipher=approved”字段不足以描述会话。证据必须保留双方提供列表和两个方向的结果。如果没有可接受交集,连接会断开。设备接受配置只能证明意图已写入,不能证明对端能够完成协商。
算法名称、密钥与身份是三件事
协商出的主机密钥算法描述签名或验证程序,不等同于服务器实际提供的密钥,也不等同于客户端最终认可的身份。RFC 8332 提供了清楚例子:同一种 RSA 公钥格式可以用于 rsa-sha2-256 或 rsa-sha2-512。仅知道“存在 RSA 密钥”,无法还原使用了哪个算法。
RFC 9644 也把客户端身份与服务器认证参数分开,并可引用 keystore 与 truststore。这个分离要求运营记录依次回答:协商了什么程序、看见了哪把主机密钥、依照什么规则验证、客户端以何种身份认证、应用权限是否授予。
不同观察点拥有不同视野。网络侧传感器也许能捕获协商,却看不到客户端内部的信任决定;客户端日志也许记录信任结果,却没有保存对端完整 offer。正确做法是合并可关联的观察并明确空白,而不是把“看不见”改写为“已通过”。
NEWKEYS 之后仍有两道门
RFC 4253 中的 SSH_MSG_NEWKEYS 表示新计算的密钥与算法开始生效。双方 offer 存在交集,不代表一定抵达这条边界;抵达 NEWKEYS,也不代表 RFC 4252 所规定的用户认证成功,更不代表应用操作获准并完成。
因此,一份最小可用的运营回执可以连接以下字段:
- IANA 注册快照与生成 YANG 模块修订或哈希;
- 实现身份、feature、deviation 与软件版本;
- 带时间戳的能力观察;
- 获批的精确有序列表、配置修订与批准者;
- 双方 KEXINIT 的受保护捕获或哈希;
- 密钥交换、主机密钥、加密与 MAC 的实际选择,并保留方向;
- 主机密钥指纹、验证依据、结果和不确定性;
- 完成
NEWKEYS的证据; - 不泄露凭据的客户端认证方法与结果;
- 应用操作、验收条件和结果;
- 缺失观察与有权批准最终表述的责任人。
这些 RFC 并没有规定一份统一回执。它是针对模型、协议和应用之间责任断点所设计的运营控制,必须如实标明自己的非规范性质。
最小结论如何经受证据缺口
Heng Lu 的“最小初始规范”要求先选定必须兑现的判断,再决定系统规模。在这里,“SSH 是安全的”既宽泛又不可验收。更合适的句子是:对于某项已标识的操作和时间窗口,组织能够把获批策略连接到会话观察、获验证对端和应用结果。
“运行代码优先”则规定了发生矛盾时的顺序。注册表和 YANG 模型形成符号层,真实交换限定事件层。如果二者不一致,对“发生了什么”的描述应服从运行观察;差异本身进入调查,而不是让配置意图覆盖事实。
这使不完整证据也能产生诚实结论。只有配置时,可以说“策略已被接受”;观察到 KEXINIT 与 NEWKEYS、但看不到信任决定时,可以说“这些算法已激活”,不能说“预期服务器已确认”;运输与身份都成立、但没有应用结果时,仍不能宣布服务交付完成。
来源
- 最小初始规范
- 现实层与符号权力
- 运行代码优先
- RFC 9644 Datatracker 页面
- RFC 9644 信息页
- RFC 9644 HTML
- RFC 9644 纯文本
- RFC 9644 XML
- RFC 9644 内联勘误
- IANA SSH 协议参数
- IANA YANG 参数
- RFC 4250:SSH 分配编号
- RFC 4252:SSH 认证协议
- RFC 4253:SSH 传输层协议
- RFC 6187:SSH 中的 X.509v3 证书
- RFC 8332:RSA 密钥与 SHA-2 签名
- RFC 9142:SSH 密钥交换方法更新
- RFC 7950:YANG 1.1
- RFC 8341:网络配置访问控制
- RFC 8342:网络管理数据存储架构
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance

