2.3. Time Synchronization (时间同步)
2.3. Time Synchronization (时间同步)
SNMP 引擎之间的时间同步对于重放保护机制的有效工作至关重要。基于用户的安全模型使用时间同步协议, 该协议允许非权威 SNMP 引擎从权威 SNMP 引擎学习当前时间值。
Time Synchronization Process (时间同步过程)
-
Initial State (初始状态): 当非权威 SNMP 引擎首次与权威 SNMP 引擎通信时, 它不知道权威引擎的当前时间值。
-
Discovery (发现): 非权威引擎向权威引擎发送消息。此消息可以是:
- 具有零长度 msgUserName 的未认证消息 (securityLevel = noAuthNoPriv), 或
- 具有权威引擎未知的 userName 的已认证消息
-
Response (响应): 权威引擎使用包含以下内容的报告消息进行响应:
- msgAuthoritativeEngineID
- msgAuthoritativeEngineBoots
- msgAuthoritativeEngineTime
-
Synchronization (同步): 非权威引擎存储这些值, 并将它们用于与该权威引擎的后续已认证消息交换。
Time Updates (时间更新)
每当非权威 SNMP 引擎从该引擎接收到已认证的消息时, 它就会更新其对权威引擎时间的概念。更新过程如下:
- 计算接收到的 msgAuthoritativeEngineTime 与本地存储时间之间的时间差。
- 如果差值在可接受范围内 (< 150 秒), 则更新权威引擎时间的本地概念。
- 如果差值太大, 则认为该消息在时间窗口之外, 并将其丢弃。
Time Window Considerations (时间窗口考虑)
选择 150 秒的时间窗口是为了:
- 允许 SNMP 引擎之间合理的时钟偏差
- 限制消息重放攻击的机会窗口
- 适应典型的网络延迟和处理时间
此时间窗口意味着只有在生成后 150 秒内到达的已认证消息才被视为有效。