摘要

  • RFC 3118 的延迟认证依赖同一管理域内客户端与 DHCP 服务器通过带外方式取得的共享密钥。
  • 如果本地策略允许,客户端仍可接受未经认证的 Offer;RFC 建议客户端能够拒绝此类消息,并默认拒绝。

选项号并未创造通用身份

DHCP 通常被记作让主机接入网络并获得地址及其他配置的协议。但这份便利也带来信任问题:恶意或误开启的服务器可能发出错误的网关、名称服务器或地址;服务器也可能遇到冒充获准设备、企图耗尽地址池的客户端。RFC 3118 于 2001 年 6 月发布,目标是在不重构 DHCP 的前提下认证消息来源与内容。

它定义的选项 90 在报文中列明协议、算法、重放检测方法、重放值和认证信息。表面上这只是一个选项,实际上要回答几件不同的事:采用哪种程序、如何识别旧报文,以及哪个密钥把这条消息与对端关联起来?

RFC 3118 区分了简单配置令牌与延迟认证。前者只提供较弱的实体认证,不提供消息认证;文档把它定位为防止 DHCP 服务器意外启动的初步保护。延迟机制则采用 HMAC-MD5 和共享密钥。这里记录的是当年的算法选择,不是对新系统的建议。

认证在发现阶段之前就已开始

延迟认证中,客户端在 DHCPDISCOVER 里请求认证。服务器选择一个密钥,并在 DHCPOFFER 中带回认证信息。客户端选定 Offer 后,用对应密钥发送 DHCPREQUEST;之后还要验证经过认证的 ACK。重放检测贯穿流程,因此攻击者不能只复制旧报文上的有效认证值并把它当成新消息。

这套流程要求在第一条报文之前就存在信任关系。RFC 3118 规定客户端应通过带外机制取得密钥。服务器必须掌握授权客户端的密钥,或能安全地获得这些密钥。若许多客户端共用同一密钥,任何持有者都可能冒充其他持有者;若要识别具体客户端,RFC 要求使用唯一密钥。因此,线上交换依赖一个 DHCP 本身没有定义的密钥发放系统。

这一边界是有意设定的。RFC 3118 不处理客户端跨管理域漫游;它面向可以通过带外方式交换密钥的域内场景,并提醒多域接入可能使方案难以扩展。消息认证码能证明报文符合某个已配置的密钥,却不会自动产生全球身份、漫游协议或访问任何网络的权利。

中继和本地接受策略也是信任模型的一部分

DHCP 中继可以修改 giaddr 和 hops,也可能添加中继代理信息。RFC 3118 规定了计算认证值时如何处理这些字段,以免合法中继处理使校验失败。这让中间转发路径有了明确规则,却没有把所有中继都变成身份权威。

更能说明问题的是缺少认证时的处理方式。如果没有 Offer 携带有效认证,客户端仍可根据本地策略接受未经认证的 Offer。RFC 要求客户端可配置为拒绝此类消息,并建议默认拒绝;若客户端选择接受,还建议通知用户并记录事件。因此,安全性还取决于是否允许回退,而不只取决于选项里的认证码。

看到“认证选项”并不意味着每一份被接受的配置都经过认证。RFC 3118 专门提醒不要这样推断。它定义了机制和谨慎的默认值,但把本地信任选择留给管理员和客户端实现。

现有标准和注册表不能证明有多少客户端、服务器实施或配置了选项 90,也不能证明它实际减少了多少攻击。规范描述的是可能的行为,部署与结果需要另外的证据。RFC 3118 的历史意义更窄:DHCP 认证仍是一种本地信任安排,其边界由谁发放密钥、哪些服务器和中继属于范围,以及客户端是否接受未签名的替代方案共同决定。

来源

  1. https://www.rfc-editor.org/rfc/rfc3118.html
  2. https://www.rfc-editor.org/info/rfc3118
  3. https://datatracker.ietf.org/doc/rfc3118/
  4. https://www.rfc-editor.org/rfc/rfc2131.html
  5. https://www.rfc-editor.org/rfc/rfc2132.html
  6. https://www.rfc-editor.org/rfc/rfc3046.html
  7. https://www.rfc-editor.org/rfc/rfc2104.html
  8. https://www.rfc-editor.org/rfc/rfc1321.html
  9. https://www.rfc-editor.org/rfc/rfc2119.html
  10. https://www.rfc-editor.org/rfc/rfc951.html
  11. https://www.rfc-editor.org/rfc/rfc4361.html
  12. https://www.rfc-editor.org/rfc/rfc6842.html
  13. https://www.rfc-editor.org/rfc/rfc8415.html
  14. https://www.iana.org/assignments/bootp-dhcp-parameters/bootp-dhcp-parameters.xhtml