下面主要的内容就是SNMPv3的加密和认证过程!

USM的定义为实现以下功能:

鉴别

数据加密

密钥管理

时钟同步化

避免延时和重播攻击

1、UsmSecurityParameters(安全参数)

安全参数存在于snmp消息中的msgSecurityParameters字段,以ASN.1语法定义如下:

UsmSecurityParameters ::=

SEQUENCE {

-- global User-based security parameters

msgAuthoritativeEngineID     OCTET STRING,

msgAuthoritativeEngineBoots  INTEGER (0..2147483647),

msgAuthoritativeEngineTime   INTEGER (0..2147483647),

msgUserName                  OCTET STRING (SIZE(0..32)),

-- authentication protocol specific parameters

msgAuthenticationParameters  OCTET STRING,

-- privacy protocol specific parameters

msgPrivacyParameters         OCTET STRING

}

msgAuthoritativeEngineID 权威引擎id。请求及inform消息中此值为接收方引擎id。Trap及应答消息中此值为发送方引擎id

msgAuthoritativeEngineBoots 权威引擎已重启次数

msgAuthoritativeEngineTime 权威引擎发送此消息时的时间

msgUserName  用户名

msgAuthenticationParameters 消息鉴别代码

msgPrivacyParameters 用于解密的salt值

2、鉴别和加密的实现

2.1  鉴别

使用MD5或SHA-1作为内嵌安全散列函数,通过HMAC进行鉴别。

从用户口令到鉴别密钥产生方法:

假设用户口令为password,不断重复串接password必要多的次数达到1048576字节长度。然后通过MD5或SHA-1散列函数得到一个16字节或20字节的密钥。

鉴别过程:

发送消息时用鉴别密钥产生一个消息鉴别代码,并将其填入msgAuthenticationParameters字段。收到一个消息时用发送此消息的用户对应的鉴别密钥对消息产生一个消息鉴别代码,与msgAuthenticationParameters字段中的值进行比较,若相等则认为通过鉴别。

2.2  加密解密

用和产生鉴别密钥相同的方法从用户口令生成加密密钥。

加密过程:

用16字节的加密密钥的最后8位用作预IV,该引擎的snmpEngineBoots 的当前值(4个字节)和由本地维护的一个4字节整数串连构成一个salt值。由本地维护的这个4字节整数在每次发送消息时应采用不同的值。Salt值和预IV按位异或生成IV,加密密钥和IV通过DES的CBC加密算法对ScopedPduData字段数据进行加密。并将salt值放入msgPrivacyParameters字段。

解密过程:

从收到的消息中取出msgPrivacyParameters字段内的salt值。用本地维护的16字节的密钥的最后8位用作预IV,将salt值与预IV按位异或生成IV用密钥和IV对已加密的数据进行解密。

 

参考

 

SNMP学习笔记之SNMPv3报文认证和加密的更多相关文章

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

    下面我们就主要讲解SNMPv3的报文格式以及基于USM的认证和加密过程! 1.SNMPv3的消息格式 如下图1: 图 1 其中,整个SNMPv3消息可以使用认证机制,并对EngineID.Contex ...

  2. SNMP学习笔记之SNMPv3的配置和认证以及TroubleShooting

    0x00 增加snmp v3用户 增加用户的时候,必须要停止SNMP服务. # service snmpd stop # net-snmp-config --create-snmpv3-user -r ...

  3. Django:学习笔记(9)——用户身份认证

    Django:学习笔记(9)——用户身份认证 User

  4. SNMP学习笔记之SNMP报文以及不同版本(SNMPv1、v2c、v3)的区别

    本篇文章将重点分析SNMP报文,并对不同版本(SNMPv1.v2c.v3)进行区别! 四.SNMP协议数据单元 在SNMP管理中,管理站(NMS)和代理(Agent)之间交换的管理信息构成了SNMP报 ...

  5. SNMP学习笔记之SNMP报文协议详解

    0x00 简介 简单网络管理协议(SNMP)是TCP/IP协议簇的一个应用层协议.在1988年被制定,并被Internet体系结构委员会(IAB)采纳作为一个短期的网络管理解决方案:由于SNMP的简单 ...

  6. SNMP学习笔记之SNMP介绍,OID及MIB库

    1.1.    SNMP概览 SNMP的基本知识介绍简单网络管理协议(SNMP-Simple Network Management Protocol)是一个与网络设备交互的简单方法.该规范是由IETF ...

  7. SNMP学习笔记之SNMP 原理与实战详解

    原文地址:http://freeloda.blog.51cto.com/2033581/1306743 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法 ...

  8. SNMP学习笔记之SNMP4J介绍(Java)

    0x00 SNMP4J介绍 SNMP4J是一个用Java来实现SNMP(简单网络管理协议)协议的开源项目.它支持以命令行的形式进行管理与响应.SNMP4J是纯面向对象设计与SNMP++(用C++实现S ...

  9. SNMP学习笔记之SNMP简单概述

    0x00 SNMP简单概述 0.1.什么是Snmp SNMP是英文"Simple Network Management Protocol"的缩写,中文意思是"简单网络管理 ...

随机推荐

  1. hdu 2444 The Accomodation of Students 【二分图匹配】

    There are a group of students. Some of them may know each other, while others don't. For example, A ...

  2. java 中常见的一些错误

    1.NosuchMethodError java 类中找不到该方法! 可能该类所在的同一个包下有一个相同的相同的类,然后那个类中没有我们所要调用的类. 解决方法:若那个类不需要,可以删除class! ...

  3. Linux系统下便捷使用中国知网的方式

    https://blog.csdn.net/mowangajimide/article/details/54144379

  4. SQL Fundamentals:Restricting and Sorting Data限制和排序数据(FROM-WHERE-SELECT-ORDER BY)

    SQL Fundamentals || Oracle SQL语言 控制操作的显示列:基本的SELECT语句 控制行:限定查询和排序显示 分组统计查询 限定查询:WHERE字句 排序显示:ORDER B ...

  5. Oracle管理监控之如何对数据库进行监控检查

    oracle自动工作负载库(AWR):采集与性能相关的统计数据,并从统计的数据中导出性能量度,以跟踪数据库潜在的问题. 如何生成oracle数据库的自动负载库报告. 手工生成一份oracle数据库的快 ...

  6. Centos升级安装.Net core 1.1

    VS2017已经发布了一个多月了,最期待的功能就是.net core的更新,终于去掉了繁琐了project.json的文件配置.我们尝试打开一个VS2015的.net core项目,会自动升级至.ne ...

  7. pandas2

    1.Series创建的方法统一为pd.Series(data,index=)(1,2,3)Series可以通过三种形式创建:python的dict.numpy当中的ndarray(numpy中的基本数 ...

  8. A Simple Problem with Integers---poj3468线段树

    http://poj.org/problem?id=3468   题意:有一个比较长的区间可能是100000.长度, 每个点都有一个值(值还比较大), 现在有一些操作: C a b c, 把区间a-- ...

  9. 在本机搭建vue-cli3项目

    vue-cli3官方网址: https://cli.vuejs.org/zh/ 由于公司开始一个新项目,用到的是vue-cli3搭建的项目,所以自己想搭建一个项目,今天搭建的项目就是一个很简单的项目, ...

  10. PHP导出excel时数字变为科学计数的解决方法

    在数据导出到excel时数字格式不对,一般分为以下两种情况. 1.excel单元格设置长度不够 解决方法: //在excel.php文件中 $objActSheet = $objPHPExcel-&g ...