设为首页收藏本站language 语言切换
查看: 3206|回复: 1
收起左侧

snmp v3的不错的资料(二)【分享】

[复制链接]
发表于 2014-5-5 16:39:54 | 显示全部楼层 |阅读模式
3、USM的技术细节
        本章详细讲述USM实现上述服务与功能的具体技术。
3.1 SNMPv3消息的结构
         
图3:USM消息结构

        上图为SNMPv3中定义的消息格式,其中深色的部分为USM使用到的字段。消息共分为四个部分:1. 版本号;2. 全局头数据;3. 安全参数(USM使用);4. SNMP管理操作PDU。
        其中,scopedPdu是加密时用到的范围,加密仅对这一部分进行。整体消息的全体是鉴别的范围,这些数据全部参与鉴别计算。
3.2 消息体字段意义
字段        类型        说明
msgVersion        INTEGER        3表示是SNMPv3,当前只有这一个取值
msgID        INTEGER        用在不同实体间去匹配请求和应答数据。并且用于在不同的处理子系统匹配使用。msgID的值生成的算法应该避免和任何输出的消息重复。这个策略用来防止重发攻击。一个可能的实现就是使用snmpEngineBoots的值的低位做为msgID的高位,使用一个增长的整数做为其余的低位值。
注意:request-id为snmp应用程序来标识PDU,而msgID为实体用来标识携带PDU的消息。引擎需要标识解码错误的PDU,这时request-di是解不出来的,因而需要msgID。没有要求msgID和request-id值需要一致。一个应答消息使用msgID来标识这是哪个请求的应答。另一方面,msgID用来给引擎识别无连接数据报可能产生的重复数据报。
msgMaxSize        INTEGER        最小取值484。指示发送方支持的最大的消息体长度。应答方需要遵守这个值,不然消息无法处理。生成一个消息的时候,生成消息的引擎应该设置这个值。
msgFlag        OCETE STRING(1)        msgFlag提供了几个位来标识消息的管理过程。                      左1位:authFlag,鉴别标志;左2位:privFlag,加密标志;左3位:reportableFlag,报告标志。如authFlag=.… …1,privFlag=…. ..1.,reortableFlag=… .1..。其余位保留。如,.... ..00 意味着 noAuthNoPriv,即不鉴别,也不加密;.... ..01意味着 authNoPriv,鉴别但不加密;.... ..11意味着 authPriv,鉴别且加密。
reportableFlag指示是否必须发送一个report(除却trap的其它操作),仅用在消息的PDU部分不能解密,比如,无效的压缩密钥。如果解密成功,则根据PDU的类型引擎就知道是否需要发送报告了。reportableFlag为1时,必须向消息的产生者发送一个report,反之,不必发送report。一个不需要确认的操作(trap),此值永远为0。如果reportableFlag被设置错误,比如一个Trap的此标志被设置为1,且PDU解包成功,知道这是一个Trap类型时,将reportableFlag当0对待。
msgSecurityModel        INTEGER        SNMPv3支持多个安全模型同时工作,msgSecurityModel标识哪一个模型发送方当前使用,接收方需要使用相同的模型来处理消息。SNMPv1(1),SNMPv2(2),SNMPv3(3)。
msgSecurityParameters        OCTET STRING        安全子系统产生以及在接收实体时由安全子系统处理的参数。在发送和接收方的安全模型中使用,内容和格式由安全模型定义,
contextEngineID               
contextName               
data               

        msgSecurityParameters由下列的对象组成。
字段        类型        说明
msgAuthoriativeEngineID                指定消息有关的权威引擎的snmpEngineID
msgAuthoritativeEngineBoots                指定消息有关的权威引擎的snmpEngineBoots值
msgAuthoritativeEngineTime               
msgUserName                指定用户(要素),谁的消息被交换。注意,一个0长度的userName将不和任何用户匹配,但是他可以用作snmpEngineID探测
msgAuthenticationParameters                被鉴别协议定义,被usmUserTable表中的usmUserAuthProtocol列定义
msgPrivacyParameters                被加密协议定义,被usmUserTable表的usmUserPrivProtocol列定义。

3.3 抽象服务接口
        抽象服务接口用来描述SNMP实体中不同子系统的概念接口。同样的,一些系统抽象服务接口也在USM里被定义了,描述普通的USM服务和独立的鉴别和加密的概念接口 。
        这些抽象服务接口被定义为一些原语,定义服务提供者和提供服务调用时必须传入的数据参数。
3.3.1 USM鉴别原语
        USM提供下列内部原语来在它自己的安全模块和鉴别服务内前后传递数据。
        1.接口:authenticateOutgoingMsg
        返回码:statusInformation-成功或errorIndication
对象        类型        说明
authKey        IN        鉴别用密钥
wholeMsg        IN        待鉴别的完整数据
authenticatedWholeMsg        OUT        完成鉴别的数据
        
        2.接口:authenticateIncomingMsg
        返回码:statusInformation
对象        类型        说明
authKey        IN        鉴别用密钥
authParameters        IN        接收到的参数
wholeMsg        IN        未鉴别的完整数据
authenticatedWholeMsg        OUT        完成鉴别的数据

发表于 2014-12-24 17:45:36 | 显示全部楼层
Thanks for your information.
沙发 2014-12-24 17:45:36 回复 收起回复
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-5-9 19:52 , Processed in 0.100883 second(s), 25 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表