Http協議(5)—HTTP摘要認證

一、摘要認證的改進
1.用摘要保護密碼
客戶端不發送密碼,而是發送一個摘要,服務端只需驗證這個摘要是否和密碼相匹配

2.單向摘要
a.摘要是一種單向函數,將無限的輸入值轉化為有限的
b.常見的摘要為MD5:
將任意長度的字節序列轉換為一個128位的摘要;
MD5的128位摘要通常會被寫成32個十六進制的字符,每個字符4位

3.用隨機數防止重放攻擊
a.黑客可以截獲摘要對服務器無限制的重發攻擊
b.可以將隨機數添加到密碼中,然后再根據具有隨機數的密碼生成摘要,這樣每次生成的
摘要都不相同,可以防止重放攻擊

4.摘要認證的握手機制 ? ? ?
(1).服務器計算出一個隨機數
(2).服務器將此隨機數放在www-Authenticate中,隨算法列表一起發往客戶端
(3).客戶端選擇一個算法,計算出密碼和其他數據摘要
(4).客戶端將摘要放在一條Authorization響應中發往服務端
(5).服務器根據客戶端發送的響應計算出相同的摘要,然后服務器將本地生成的摘要與網絡
傳送過來的摘要進行比較,驗證是否匹配

二、摘要計算
1.摘要算法的輸入數據
a.由單向散列函數H(d)和摘要KD(s,d)組成的一對函數,s為密碼,d為數據
b.一個包含安全信息的數據塊,稱為A1
c.一個包含請求報文中非保密屬性的數據塊,成為A2
2.算法H(d)和KD(s,d)
H(<data>) = MD5(<data>)? ??
KD(<secret>,<data>) = H(concatenate<secret>:<data>)

3.與安全相關的數據(A1)
密碼和受保護信息的產物,包含用戶名、密碼、保護域、隨機數
MD5
為每條請求運行單向散列函數,A1是由冒號連接起來的用戶名、域、密碼
MD5-sess
只在第一次www-Authenticate握手時運行一次散列函數
算法對A1的定義
ps:nonce為當前隨機數;cnonce為客戶端隨機數? ??????????

4.與報文有關的數據(A2)
包括URL、請求方法、報文實體,有助于防止方法、資源或報文被篡改
根據保護質量(qop),為A2提供兩種策略:
a.只包含HTTP請求方法和URL,默認
b.添加報文實體,當qop="auth-init"時使用
算法對A2的定義
ps:request-method為請求方法;uri-directive-value為請求URI

5.摘要認證會話
客戶端響應對保護空間的WWW-Authenticate質詢時,會啟動一個此保護空間的認證對話

6.預授權
摘要認證:
a.服務器預先在Authentication-Info首部中發送下一個隨機數
b.服務器允許在一小段時間內使用同一個隨機數
c.客戶端和服務器使用同步的、可預測的隨機數生成算法

7.隨機數的選擇
BASE64(time-stamp H(time-stamp ":" ETag ":" private-key))
time-stamp:服務器產生的時間戳
ETag:與所請求實體有關的ETag首部
private-key:只有服務器知道的數據

8.對稱認證
客戶端對服務器的認證

三、增強保護質量(報文完整性檢查)
在三種摘要首部中提供qop字段:
WWW-Authenticate
Authorization
Authentication-Info

1.報文完整性保護(qop="auth-init")

四、應該考慮的實際問題
1.多重質詢
服務器可以對某個資源發起多重質詢,即既提供基本認證,又提供摘要認證
2.差錯處理
認證服務器一定要確保URI指令指定的資源與請求行中指定的資源相同,否則返回400 ?BadRequest錯誤
3.保護空間
.域值與被訪問服務器的標準根URL結合在一起定義了保護空間
.保護空間確定了可以自動應用證書的區域
.在基本認證中,客戶端會假設請求URI中或其下的所有路徑都與當前的質詢處處于同
一個保護空間
.在摘要認證中,質詢的WWW-Authenticate:domain字段對保護空間做了更精確的定義

4.重寫URI
代理可以改變URI語法而不改變實際指向的資源來重寫URI
由于摘要認證需要檢查URI的完整性, 故URI一經修改會破壞摘要
5.緩存
共享緩存收到Authorization首部的請求并且轉接那條請求產生的響應時,當響應中提供了
Cache-Control:must-revalidate和Cache-Control:public時才會將此響應作為任何其他????
請求的應答使用? ??
Cache-Control:must-revalidate:
緩存可以在應答后續請求時使用響應的實體部分,但是后續請求應該和原始服務器進行
驗證
Cache-Control:public:
對任意后繼請求都可以使用響應實體

五、安全性考慮
1.首部篡改
防篡改機制:
端到端加密與首部進行數字加密

2.重放攻擊
3.多重認證機制

4.詞典攻擊
密碼猜測估計

5.惡意代理攻擊和中間人攻擊
6.選擇明文攻擊
預先計算的詞典攻擊
批量暴力型攻擊

7.存儲密碼

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/273367.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/273367.shtml
英文地址,請注明出處:http://en.pswp.cn/news/273367.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

c#常用正則表達式

public class RegexUtil {private RegexUtil() { }private static RegexUtil instance null;/// <summary>/// 靜態實例化單體模式/// 保證應用程序操作某一全局對象&#xff0c;讓其保持一致而產生的對象/// </summary>/// <returns></returns>publi…

Http協議(4)—HTTP認證機制

一、認證1.HTTP質詢/響應認證框架服務器收到一條請求并沒有按照請求執行動作,而是以一個認證質詢執行響應,要求用戶提供一個保密信息說明他是誰,當用戶再次發送請求時要附上保密證書,如果證書匹配則執行請求,否則返回一條錯誤信息2.認證協議與首部官方的兩個認證協議:基本認證、…

C#加密解密DES字符串轉

using System; using System.Collections.Generic; using System.Text; using System.Security.Cryptography; using System.IO;namespace Component {public class Security{public Security(){ }//默認密鑰向量private static byte[] Keys { 0x12, 0x34, 0x56, 0x78, 0x90, …

Http協議(6)—安全HTTP

一、保護HTTP的安全1.功能:.服務器認證:客戶端知道它是在與真正的服務器進行通信.客戶端認證:服務器知道它是在與真正的客戶端進行通信.完整性:服務器與客戶端的數據不會被修改.加密:客戶端與服務器的對話是私密的,不會被竊聽.效率:運行足夠快的算法.普適性:所有客戶端和服務器…

restful處理

重寫/覆蓋 HTTP 方法 一些HTTP客戶端僅能處理簡單的的GET和POST請求&#xff0c;為照顧這些功能有限的客戶端&#xff0c;API需要一種方式來重寫HTTP方法. 盡管沒有一些硬性標準來做這事&#xff0c;但流行的慣例是接受一種叫 X-HTTP的請求頭&#xff0c;重寫是用一個字符串值…

Http協議(7)—Http緩存

一、冗余的數據傳輸有些客戶端訪問服務器頁面時,服務器會多次響應同一個頁面的副本給客戶端&#xff0c;這會產生冗余數據&#xff0c;故使用緩存就可以保留第一條相應的副本&#xff0c;以后就響應緩存的數據二、帶寬瓶頸在需要下載大型文件時,如果在局域網中放入該文件的一個…

Apache JMeter--網站自動測試與性能測評

Apache JMeter--網站自動測試與性能測評2013-02-28 15:48:05標簽&#xff1a;JmeterFrom:http://bdql.iteye.com/blog/291987 出于學習熱情&#xff0c;翻譯總結Emily H. Halili的《Apache JMeter》一書的部分內容。 JMeter的簡介 可以肯定的是&#xff0c;JMeter至少符合以下幾…

Linux 重命名文件

inux下重命名文件或文件夾的命令mv既可以重命名&#xff0c;又可以移動文件或文件夾. 例子&#xff1a;將目錄A重命名為B mv A B 例子&#xff1a;將/a目錄移動到/b下&#xff0c;并重命名為c mv /a /b/c 其實在文本模式中要重命名文件或目錄的話也是很簡單的&#xff0c;我們只…

苦逼的.net程序員, 轉行高富帥iOS移動開發

先知先覺,后知后覺 **- 在做了兩三年.net開發后, 還是感覺.net不是那么牛逼, 許多給我一起搞.net的同學, 不是去做了android, 就是去做了iOS, 或者java; 這讓我對.net的前景有了一些動搖, 在三思考之后,還是決定放棄.net ,理由很簡單,就是工資有點低; 由于藍鷗iOS培訓機構,一…

C# DataTable的詳細使用方法

在項目中經經常使用到DataTable,假設DataTable使用得當&#xff0c;不僅能使程序簡潔有用&#xff0c;并且可以提高性能&#xff0c;達到事半功倍的效果&#xff0c;現對DataTable的使用技巧進行一下總結。 一、DataTable簡單介紹 (1)構造函數 DataTable() 不…

mysql設置環境變量

-- 設置或修改系統日志有效期SET GLOBAL expire_logs_days8;SHOW VARIABLES LIKE %expire_logs_days%;-- 設置或修改系統最大連接數SET GLOBAL max_connections 2648;SHOW VARIABLES LIKE %max_connections%;-- 修改MYSQL自動編號步長SHOW VARIABLES LIKE %auto_increment%;SE…

CentOS7 編譯安裝LVS 互為主備 (實測 筆記 Centos 7.0 + ipvsadm 1.27 + keepalived 1.2.15 )

環境&#xff1a; 系統硬件&#xff1a;vmware vsphere (CPU&#xff1a;2*4核&#xff0c;內存2G&#xff0c;雙網卡) LVS服務器&#xff08;兩臺&#xff09;&#xff1a; 系統&#xff1a;Centos7.0 64位&#xff08;LVSkeepalived&#xff09; LvsMaster:192.168.1.21 (主…

shell 執行mysql語句

<pre name"code" class"plain">#變量定義 sqlname"test.sql" dir"/sdb2/backup/mysql_db_backup/backup/databases" host"127.0.0.1" user"root" passwd"root" dbname"test" #導…

hdu3081 Marriage Match II(最大流)

轉載請注明出處&#xff1a; http://www.cnblogs.com/fraud/ ——by fraud Marriage Match II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2410 Accepted Submission(s): 820 Problem Descriptio…

CentOS6安裝tomcat6

首先我們要下載一個tomcat的安裝包 http://ftp.riken.jp/net/apache/ wget http://ftp.riken.jp/net/apache/tomcat/tomcat-6/v6.0.41/src/apache-tomcat-6.0.41.tar.gz 下載好后解壓到一個以目錄&#xff0c;我的是放在了/usr/apache-tomcat-6.0.41 tar –zxvf apache-t…

修復 XE7 , XE8 Frame 內 PopupMenu 快捷鍵失效問題

問題&#xff1a;將 Frame 含 PopupMenu 放置 Form 后&#xff0c;在 Frame 里的 PopupMenu 失效&#xff0c;無法按快捷鍵。 適用&#xff1a;(XE7 update 1 / XE8) for Windows 平臺 修正方法&#xff1a; 請將源碼 FMX.Forms.pas 復制到自己的工程目錄里&#xff0c;再進行修…

Vmware Centos中安裝vmtools工具

在Vmware安裝虛擬機是很好玩的&#xff0c;可是有時候在虛擬機與本地主機之間相互傳遞文件時卻是一件比較麻煩的事情&#xff0c;這時候我們安裝一個vmtools的工具這樣我們就可以隨意的在虛擬機與主機之間相互拖拽文件&#xff0c;下面我們就來說說如何安裝vmtools 點擊虛擬機會…

關于Dapper - 能否不創建定義表對應類使用

1.是可以的&#xff0c;而且支持的很棒 1 /*2 lcg3 * 1.看看能不能用4 * 2.怎么用 - 引哪個文件即可&#xff1f;5 */6 7 //數據庫連接參數8 private const string strConn "Data SourceAlen;Initial Catal…

動態規劃 背包九講的實現。

最近在學習動態規劃&#xff0c;會了不少基礎的之后就開始挑戰比較困難的背包問題了&#xff0c;我這里自己寫了每一講的問題&#xff0c;解析&#xff0c;代碼&#xff0c;注釋。如果dp還沒入門的孩紙就去看看我的另一篇文章http://www.cnblogs.com/luyi14/p/4344946.html …

Linux中查看負載

行車過橋 一只單核的處理器可以形象得比喻成一條單車道。設想下&#xff0c;你現在需要收取這條道路的過橋 費 — 忙于處理那些將要過橋的車輛。你首先當然需要了解些信息&#xff0c;例如車輛的載重、以及 還有多少車輛正在等待過橋。如果前面沒有車輛在等待&#xff0c;那么你…