置頂 SNMPv3認證和加密過程

2021-09-08 09:46:49 字數 1308 閱讀 6192

前面的一些文章詳細講解了snmpv3的報文內容,下面主要的內容就是snmpv3的加密和認證過程!

usm的定義為實現以下功能:

鑑別資料加密

金鑰管理

時鐘同步化

避免延時和重播攻擊

1、usmsecurityparameters(安全引數)

安全引數存在於snmp訊息中的msgsecurityparameters欄位,以asn.1語法定義如下:

usmsecurityparameters ::=

sequence

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對已加密的資料進行解密。

SNMPv3的加密和認證過程

前面的一些文章詳細講解了snmpv3的報文內容,下面主要的內容就是snmpv3的加密和認證過程!usm的定義為實現以下功能 鑑別 資料加密 金鑰管理 時鐘同步化 避免延時和重播攻擊 1 usmsecurityparameters 安全引數 安全引數存在於snmp訊息中的msgsecuritypara...

關於SNMPV3協議開發

由於專案需要 snmpv3 支援,但手中沒有現成的 v3庫,所以需要重新開發,現在將對v3開發說一下思路性的東西 在開發過程中,覺得包的結構不是重點,比較簡單,可以參考 重點在加密上,snmpv3 請參考http www.ietf.org rfc rfc2271.txt 我硬是看了 rfc2 天,才...

在Ubuntu 上配置SNMPv3

步驟很詳細,敬上出處 在ubuntu 14.04中安裝snmp伺服器及客戶端 開啟終端執行下列命令 sudo apt get install snmpd snmp 安裝完成後需要做如下改變。配置snmpv3 獲得從外部守護程序訪問的許可權 預設的安裝僅提供本地的訪問許可權,如果想要獲得外部訪問許可權...