DM協議中的安全認證

2021-05-26 22:47:38 字數 2489 閱讀 2261

dm協議使用了syncml認證框架,並在《syncml_dm_security》文件中定義了擴充套件。

dm協議中的終端和服務端相互之間都需要作認證。

安全認證可以採用不同的級別。如果傳輸層中已經內建了認證機制,那麼可以不使用dm協議級的認證。如果傳輸層沒有提供足夠安全的認證機制,那麼dm協議級的認證是必需的。如果在原始請求中沒有包含資訊憑證或資訊憑證不足,server和終端都可以認證對方。

假設dm協議使用傳輸層級的認證,那麼它能夠提供session級的認證,這樣可以在會話開始的時候交換認證憑證(比如tls或wtls協議)。如果傳輸層不能夠提供session級的認證,每次請求都必須作認證。

認證憑證主要包含以下內容:

為了作終端到server的認證,username、password和nonce都是必須的(即使沒有填寫它們,這三者也會被作hash處理)。

為了作server到終端的認證,server id、password和nonce都是必須的。server必須為它所服務的每乙個終端使用不同的password,這樣是為了避免使用乙個共享密碼時,當server與乙個終端正在互動時,另乙個終端進入造假。

dm協議使用與syncml協議相同的安全認證技術。也就是,終端和server都可以互相傳送認證憑證或要求對方傳送認證憑證。

對於dm協議,syncml:auth-md5認證型別是必須的。

1 dm協議中的md-5認證

md-5認證是在synchdr的cred中提供原始的userid:password。

如下所示:

1.1dm/1.111

">

imei:493005100592800

syncml:auth-md5

18ea3f……

5000

2 計算md-5摘要

cred中提供的md-5摘要是根據如下規則計算的:

h=md5 hash函式

digest=md5 hash函式的輸出

b64=base64編碼函式

digest=h(b64 (h(username:password) ):nonce)

這個演算法允許認證方在不清楚password的情況下作認證。password既沒有作為cred的一部分傳送,也不需要認證方知道,認證方只需要儲存乙份計算好hash值的username:password字串。

3 password和nonce的使用方法

password和nonce的長度都建議至少要128位。

無論是從終端裝置,還是從dm server,要求對方認證時,nonce是必須的。

一旦認證憑證發給了對方,整個過程中nonce不變。

認證方必須考慮到認證憑證中的nonce失效的問題(可能是因為之前的通訊失敗)。鑑於此,如果認證失敗,認證方必須生成乙個新的nonce,然後再次進行認證過程。

每個會話都要使用乙個新的nonce,nonce值的序列應該是不可預料的。

4 認證過程例項

終端通過像上面那樣第二次傳送package 1後,獲得server的認證。

假設server返回的nonce為「gdslxkbvxh0xxippdjl6lg==」。

1) 對nonce進行b64解碼

byte clientnonce = new base64decoder().decodebuffer("gdslxkbvxh0xxippdjl6lg==");

2) 根據公式b64 (h(username:password))

3) 建立乙個緩衝區buf,長度等於userdigestbytes.length + 1 + clientnonce.length

byte buf = new byte[userdigestbytes.length + 1 + clientnonce.length];

4) 先將userdigestbytes中的內容複製到buf中,再將clientnonce中的內容複製到後面

system.arraycopy(userdigestbytes, 0, buf, 0, userdigestbytes.length);

buf[userdigestbytes.length] = (byte)':';

system.arraycopy(clientnonce, 0, buf, userdigestbytes.length+1, clientnonce.length);

5) 對緩衝區進行md編碼

byte digest = md5.digest(buf);

6) 再進行b64編碼

string serverdigestnonceb64 = new string(base64.encode(digest));

最後得到的serverdigestnonceb64就是新的認證憑證。

SSL 安全協議 以及 如何認證

目錄ssl認證 阿里雲免費認證 配置 nginx的ssl認證 配置tomcat的ssl認證 平時訪問網頁的時候,預設都是訪問的 http 協議,比如 即便在位址列沒有明確寫 http,只寫了乙個 abc.cn,實際上瀏覽器也會自動補充上 http 的。http 就是協議的名稱。協議是什麼概念?就是瀏...

Http協議的身份認證

目錄 一 basic基礎認證 二 digest摘要認證 三 ssl client認證 四 http 表單認證 http提供了一套標準的身份驗證框架 伺服器可以用來針對客戶端的請求傳送質詢 challenge 客戶端根據質詢提供身份驗證憑證。質詢與應答的工作流程如下 伺服器端向客戶端返回401 una...

VMware SSH協議的認證方式

ssh1協議支援非對稱金鑰認證方式 口令認證,無法保證連線的完整性。ssh2協議支援ssh1協議支援的所有認證方式,增加資料保密性。基於主機的認證方式 不安全 當本地計算機收到執行遠端命令的請求時,相應的遠端命令服務程序,如 rlogind 首先檢查 etc hosts.equiv 來確認請求是否來...