跳到主要内容

1.5. Protection against Message Replay, Delay and Redirection (防止消息重放、延迟和重定向)

1.5. Protection against Message Replay, Delay and Redirection (防止消息重放、延迟和重定向)

基于用户的安全模型提供针对多种基于消息的攻击的保护。

Message Replay (消息重放)

威胁 (Threat): 攻击者捕获有效的已认证 SNMP 消息并在稍后时间重新传输以实现未经授权的效果。

保护机制 (Protection Mechanism): USM 使用基于时间的机制来检测和拒绝重放的消息。每个 SNMP 引擎维护:

  1. snmpEngineBoots: 每次 SNMP 引擎重新初始化时递增的计数器
  2. snmpEngineTime: 自上次引擎重启以来的秒数计数器

这些值包含在已认证消息的 msgAuthoritativeEngineBootsmsgAuthoritativeEngineTime 字段中。接收引擎验证这些值是否在可接受的时间窗口内。

时间窗口 (Time Window): 如果满足以下条件, 则认为消息是真实的:

|msgAuthoritativeEngineTime - snmpEngineTime| ≤ 150 秒

并且:

msgAuthoritativeEngineBoots = snmpEngineBoots

超出此窗口的消息将被拒绝为潜在的重放。

Message Delay (消息延迟)

威胁 (Threat): 攻击者延迟有效消息的传递, 使其在不适当的时间被处理。

保护机制 (Protection Mechanism): 用于防止重放的相同时间窗口机制也可以防止显著的消息延迟。延迟超过 150 秒的消息将被拒绝。

限制 (Limitations):

  • 无法检测 150 秒窗口内的延迟
  • 对于大多数网络管理应用来说, 这被认为是可以接受的
  • 需要更严格时序的应用必须实现额外的机制

Message Redirection (消息重定向)

威胁 (Threat): 攻击者拦截发往一个 SNMP 引擎的消息并将其重定向到另一个 SNMP 引擎。

保护机制 (Protection Mechanism): USM 在消息的已认证部分中包含 msgAuthoritativeEngineID。此值标识预期的接收引擎。接收引擎将拒绝以下消息:

msgAuthoritativeEngineID ≠ snmpEngineID (接收引擎的)

额外保护 (Additional Protection): engineID、engineBoots 和 engineTime 的组合提供了强大的保护, 因为:

  1. 每个引擎都有唯一的 snmpEngineID
  2. 密钥本地化到特定引擎 (参见第 2.6 节)
  3. 认证摘要覆盖 engineID, 使得无法在不被检测的情况下修改

Interaction of Protection Mechanisms (保护机制的相互作用)

三个值 (msgAuthoritativeEngineIDmsgAuthoritativeEngineBootsmsgAuthoritativeEngineTime) 协同工作以提供全面保护:

  1. engineID 防止重定向到不同的引擎
  2. engineBoots 防止重放上次引擎重启之前的消息
  3. engineTime 防止重放最近的消息并检测显著的延迟

Limitations and Considerations (限制和考虑)

Clock Synchronization (时钟同步)

时间窗口机制要求:

  • SNMP 引擎具有相当准确的时钟
  • 时钟不会随时间显著漂移
  • 在通信引擎之间维护时间同步

时钟问题的影响 (Impact of Clock Issues):

  • 快时钟: 可能导致有效消息被拒绝
  • 慢时钟: 可能允许重放的消息被接受
  • 时钟向后重置: 需要递增 snmpEngineBoots

Time Window Size (时间窗口大小)

150 秒窗口代表以下之间的平衡:

  • 安全性: 更小的窗口 = 更少的重放机会
  • 操作灵活性: 更大的窗口 = 更多的时钟漂移和网络延迟容忍度

150 秒的理由 (Rationale for 150 seconds):

  • 适应典型的网络延迟
  • 容忍适度的时钟漂移
  • 为管理流量提供合理的重放保护

Notification Messages (通知消息)

对于通知消息 (陷阱和通知):

  • 权威引擎是通知发起者
  • 通知接收器必须与发起者的时间同步
  • 这与命令响应器模型相反

Discovery and Time Synchronization (发现和时间同步)

在安全通信发生之前:

  1. 非权威引擎必须发现权威引擎的 snmpEngineID
  2. 非权威引擎必须将其缓存的时间值与权威引擎同步

这些过程在第 4 节 (发现) 和第 2.3 节 (时间同步) 中详细描述。

Security Analysis (安全分析)

USM 基于时间的重放保护提供:

强保护 (Strong Protection Against):

  • 精确重放旧消息
  • 重定向到不同的引擎
  • 长期存储和重放攻击

有限保护 (Limited Protection Against):

  • 在 150 秒窗口内的重放
  • 能够操纵两个端点时钟的攻击者

不受保护 (Not Protected):

  • 实时消息复制 (在窗口内发送两次相同的消息)
  • 应用层重放 (攻击者发起具有相同内容的合法新请求)

这些限制对于 SNMP 的预期用例是可以接受的, 其中管理操作通常是幂等的, 或者应用层机制可以检测重复。