HTTP協議學習 (三)摘要認證

2021-09-06 16:51:05 字數 2288 閱讀 1365

**:
這個認證可以看做是基本認證的增強版本,使用隨機數+密碼進行md5,防止通過直接的分析密碼md5防止破解. 摘要訪問認證最初由 rfc 2069 (http的乙個擴充套件:摘要訪問認證)中被定義加密步驟:

後來發現,就算這樣還是不安全(md5 可以用彩虹表進行攻擊),所以在rfc 2617入了一系列安全增強的選項;「保護質量」(qop)、隨機數計數器由客戶端增加、以及客戶生成的隨機數。這些增強為了防止如選擇明文攻擊的密碼分析。

如果 qop 值為「auth」或未指定,那麼 ha2 為

如果 qop 值為「auth-int」,那麼 ha2 為

如果 qop 值為「auth」或「auth-int」,那麼如下計算 response:

如果 qop 未指定,那麼如下計算 response:

好了,知道加密步驟,下面我們用文本來描述一下;

最後,我們的response 由三步計算所得. 1. 對使用者名稱、認證域(realm)以及密碼的合併值計算 md5 雜湊值,結果稱為 ha1。

ha1 = md5( "tom:hi!:123456" ) = d8ae91c6c50fabdac442ef8d6a68ae8c

對http方法以及uri的摘要的合併值計算 md5 雜湊值,例如,"get" 和 "/index.html",結果稱為 ha2。

ha2 = md5( "get:/" ) = 71998c64aea37ae77020c49c00f73fa8

最後生成的響應碼

response = md5("d8ae91c6c50fabdac442ef8d6a68ae8c:l4qfzasytyqjac2b1lvy2llppj9r8jd3:00000001:c2dc5b32ad69187a 

:auth:71998c64aea37ae77020c49c00f73fa8") = 2f22e6d56dabb168702b8bb2d4e72453;

rfc2617 的安全增強的主要方式:

發起請求的時候,伺服器會生成乙個密碼隨機數(nonce)(而這個隨機數只有每次"401"相應後才會更新),為了防止攻擊者可以簡單的使用同樣的認證資訊發起老的請求,於是,在後續的請求中就有乙個隨機數計數器(cnonce),而且每次請求必須必前一次使用的打.這樣,伺服器每次生成新的隨機數都會記錄下來,計數器增加.在response 碼中我們可以看出計數器的值會導致不同的值,這樣就可以拒絕掉任何錯誤的請求.

請求樣例(服務端 qop 設定為"auth")

客戶端 無認證

伺服器響應(qop 為 'auth')

客戶端請求(使用者名稱: "tom", 密碼 "123456")

服務端應答

注意qop 設定的時候慎用:auth-int,因為一些常用瀏覽器和服務端並沒有實現這個協議.

http摘要認證

摘要 認證步驟 1.客戶端訪問乙個受http摘要認證保護的資源。2.伺服器返回401狀態以及nonce等資訊,要求客戶端進行認證。3.客戶端將以使用者名稱,密碼,nonce值,http方法,和被請求的uri為校驗值基礎而加密 預設為 md5演算法 的摘要資訊返回給伺服器。認證必須的五個情報 real...

HTTP 摘要認證

基本認證便捷靈活,但極不安全。使用者名稱和密碼都是以明文形式傳送的,也沒有採取任何措施防止對報文的篡改。安全使用基本認證的唯一方式就是將其與 ssl 配合使用。摘要認證是另一種 http 認證協議,它與基本認證相容,但卻更為安全。摘要認證試圖修復基本認證協議的嚴重缺陷。具體來說,摘要認證進行了如下改...

HTTP 基本認證,摘要認證,擴充套件HTTP認證

http請求報頭 authorization http響應報頭 www authenticate http認證 基於質詢 回應 challenge response 的認證模式。基本認證 basic authentication http1.0提出的認證方法 客戶端對於每乙個realm,通過提供使用...