SNMP学习笔记之SNMPv3报文认证和加密

下面主要的内容就是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对已加密的数据进行解密。

参考

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大闲人柴毛毛

聊聊对称/非对称加密在HTTPS中的应用

目前常用的加密算法主要分成三类: 对称加密算法 非对称加密算法 消息摘要算法 在互联网中,信息防护主要涉及两个方面:信息窃取和信息篡改。对称/非对称加密算法能够...

4605
来自专栏osc同步分享

MD5 加密和 BASE64 编码

package com.yawn.security; import java.security.MessageDigest; import java.util...

37211
来自专栏along的开发之旅

使用openssl命令加解密 aes-128-cbc的简单示例

版权声明:欢迎传播,请标明出处。 https://blog.csdn.net/u201011221/article/details/8278...

1962
来自专栏Pythonista

hashlib 算法介绍

什么是摘要算法呢?摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。

1172
来自专栏安恒网络空间安全讲武堂

jarvisoj-Crypto

jarvisoj-Crypto Medium RSA 题目到手后给了一个公钥和一个密文 ? ? 我们对这个公钥提取信息: ? 可以得到 N = 0xC2636A...

1.2K6
来自专栏Python

hashlib模块

hashlib模块 算法介绍 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等。 什么是摘要算法呢?摘要算法又称哈希算法、散列算法。它通...

2249
来自专栏空帆船w

Android APK 签名原理

Android APK 签名原理涉及到密码学的加密算法、数字签名、数字证书等基础知识,这里做个总结记录。

3783
来自专栏owent

ECDH椭圆双曲线(比DH快10倍的密钥交换)算法简介和封装

前面有几篇blog就提到我有计划支持使用ECDH密钥交换。近期也是抽空把以前的DH密钥交换跨平台适配从atgateway抽离出来,而后接入了ECDH流程。

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

从wireshark抓包开始学习https

导语 目前互联网大量web的应用层协议从http迁移到了https,https已经在越来越多的场合替换http协议。近期由于业务需要,我们通过Wireshark...

4016
来自专栏技术换美食换不换

TOB服务部署安全模块

1494

扫码关注云+社区

领取腾讯云代金券