SNMP学习笔记之SNMPv3的报文格式以及基于USM的认证和加密过程

下面我们就主要讲解SNMPv3的报文格式以及基于USM的认证和加密过程!

1、SNMPv3的消息格式

如下图1:

                                                                      图 1

其中,整个SNMPv3消息可以使用认证机制,并对EngineID、ContextName、PDU消息体部分进行加密。RequestID、MaxSize、Flags、SecurityModel、SecurityParameters构成SNMPv3消息头。

报文中的主要字段定义如下:

RequestID:请求报文的序列号。

MaxSize:消息发送者所能够容纳的消息最大字节,同时也表明了发送者能够接收到的最大字节数。

Flags:消息标识位,占一个字节。

SecurityModel:消息的安全模型值,取值为0~3。0表示任何模型,1表示采用SNMPv1安全模型,2表示采用SNMPv2c安全模型,3表示采用SNMPv3安全模型。

ContextEngineID:唯一识别一个SNMP实体。对于接收消息,该字段确定消息该如何处理;对于发送消息,该字段在发送一个消息请求时由应用提供。

ContextName:唯一识别在相关联的上下文引擎范围内部特定的上下文。

安全参数SecurityParameters又包括以下主要字段:

AuthoritativeEngineID:消息交换中权威SNMP的snmpEngineID,用于SNMP实体的识别、认证和加密。该取值在Trap、Response、Report中是源端的snmpEngineID,对Get、GetNext、GetBulk、Set中是目的端的snmpEngineID。

AuthoritativeEngineBoots:消息交换中权威SNMP的snmpEngineBoots。表示从初次配置时开始,SNMP引擎已经初始化或重新初始化的次数。

AuthoritativeEngineTime:消息交换中权威SNMP的snmpEngineTime,用于时间窗判断。

UserName:用户名,消息代表其正在交换。NMS和Agent配置的用户名必须保持一致。

AuthenticationParameters:认证参数,认证运算时所需的密钥。如果没有使用认证则为空。

PrivacyParameters:加密参数,加密运算时所用到的参数,比如DES CBC算法中形成初值IV所用到的取值。如果没有使用加密则为空。

2、下面根据实际操作,用Wireshark抓取的报文来讲解SNMPv3协议的工作的过程:

说明:192.168.2.110是NMS的ip地址,192.168.2.1是Agent的ip地址

(1)由于SNMPv3进行数据交互的过程中要进行加密和认证,所以NMS首先要从Agent获取AuthoritativeEngineID(标识一个SNMP实体)、AuthoritativeEngineBoots和AuthoritativeEngineTime(同步NMS和Agent时间,保证消息接收的时效性,同时也是用来进行数据认证和加密的参数),如下图2:

                                                                                     图 2

(2)Agent回复NMS请求的参数,回复报文如下图3:

                                                                               图 3

(3)NMS继续向Agent获取AuthoritativeEngineBoots和AuthoritativeEngineTime参数,如下图4:

                                                                                  图 4

(4)Agent对NMS的请求进行响应,如下图5:

                                                                           图 5

(5)下面开始正常数据操作,如下图6:

                                                                              图 6

(6)Agent向NMS响应数据请求,如下图7,传输的数据都进行了加密,可见SNMPv3的安全性:

                                                                              图 7

参考

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏SDNLAB

基于Open vSwitch的VxLAN隧道实验网络

1 实验目的 该实验通过Open vSwitch构建Overlay的VxLAN网络,更直观的展现VxLAN的优势。在实验过程中,可以了解如何建立VxLAN隧道并...

50260
来自专栏Y大宽

RNA-seq分析简洁版

Tumor:SRR316214,SRR316215 Adjacent Normal Liver:SRR316212,SRR316213

32220
来自专栏腾讯移动品质中心TMQ的专栏

Android手机上用户操作模拟方法的研究与实现

一、 问题背景 最近研究了一下Android手机上用户操作的模拟方法, 有一些心得与大家分享下。 之所以去研究Android手机上用户操作的模拟方法,是因为最...

1.3K60
来自专栏生信技能树

ATAC-seq实操

本实操完全学习了:给学徒的ATAC-seq数据实战(附上收费视频) 的代码及流程,首先致谢!

1.1K10
来自专栏ml

faster-rcnn在编译时遇到的一些问题

 1.在安装faster-rcnn事如果报这种错误    In file included from ./include/caffe/util/device_a...

543140
来自专栏FreeBuf

基于Django的双因子认证实现

双因子简介 对于网络信息系统来说,能否识别使用者的身份,是能否确保安全的基础和关键。在实际应用中,许多网络信息系统都会要求使用者在使用系统之前,提供一些相关信息...

430100
来自专栏Albert陈凯

STORM的三种事务

Spout和Bolt Spout [ITransactionalSpout][<T>],同****BaseTransactionalSpout****<T>**...

31070
来自专栏瞎说开发那些事

UiPath中调用 Abbyy Cloud OCR

35760
来自专栏lonelydawn的前端猿区

php绘制图片验证码

验证码是一种安全保护机制,在注册时要求必须有人工操作进行验证,用于防止垃圾注册机大量注册用户账号占用服务器内存从而使服务器瘫痪。 图片验证码的实现十分简单。首先...

36650
来自专栏iOS开发笔记

cordova插件-File Transfer

添加插件 $ cordova plugin addcordova-plugin-file-transfer ? 图 15如上则插入成功 插件的使用 Meth...

384110

扫码关注云+社区

领取腾讯云代金券