一、保護HTTP的安全
1.功能:
.服務器認證:
客戶端知道它是在與真正的服務器進行通信
.客戶端認證:
服務器知道它是在與真正的客戶端進行通信
.完整性:
服務器與客戶端的數據不會被修改
.加密:
客戶端與服務器的對話是私密的,不會被竊聽
.效率:
運行足夠快的算法
.普適性:
所有客戶端和服務器都支持這些協議
.管理的可擴展性
在任何地方的任何人都可以進行安全通信
.適應性
能夠支持當前最知名的安全方法
2.HTTPS
HTTPS在HTTP下面提供了一個傳輸級的安全密碼層
用SSL的輸入/輸出取代TCP的調用
二、數字加密
1.密碼
加密之前的原始報文稱爲明文
使用密碼之後的編碼報文成爲密文
2.使用密鑰的密碼
通過使用密鑰來產生不同的加密密文
3.數字密碼
C= E(p,e)
P = D(c, d)
C:經過編碼的密文
E:編碼函數
P:明文報文
e:編碼密鑰
D:解碼函數
d:解碼密鑰
三、對稱密鑰加密技術
編碼使用的密鑰值和解碼使用的密鑰值相同(e = d),統稱爲k
1.密鑰長度與枚舉攻擊
枚舉攻擊:
用暴力法去嘗試所有的密鑰值
2.建立共享密鑰
發送者和接收者在互相對話之前要有一個共享的保密密鑰,如果有N個節點,每個
節點都要與其他N-1個節
3.公開密鑰加密技術
不爲每個節點對話使用單獨的密鑰,而是使用非對稱密鑰:一個用來對主機報文進行
編碼,一個用來對主機報文進行解碼;編碼密鑰是公開的,但只有主機知道解碼密鑰
四、數字簽名
說明是誰編寫的報文並且該報文並沒有篡改過
1.簽名是加了密的校驗和
數字簽名是附加在報文上的特殊加密檢驗碼
a.節點A將變長報文提取爲定長的摘要
b.節點A對摘要應用了一個簽名函數,該函數將用戶的私有密鑰作爲參數
c.節點A將簽名附加到報文的末尾發給節點B
d.節點B需要確定報文確實是節點A寫的,對前面進行檢測
五、數字證書
1.內容
.對象的名稱
.過期時間
.證書發佈者
.來自證書發佈者的數字簽名
2.用證書對服務器進行驗證
通過HTTPS安全連接上服務器後,瀏覽器會自動獲取所連服務器的數字證書
服務器證書:
.Web站點的名稱和主機名
.Web站點的公開密鑰
.簽名頒發機構名稱
.簽名頒發機構的簽名
六、HTTPS
1.概述
將HTTP報文發送給TCP之前發送給了一個安全層.,對其進行加密
2.方案
HTTPS
3.建立安全傳輸
a.對於http,客戶端發送一條到Web服務器端口80的tcp連接,接受服務器響應,然後關閉連接
b.對於https,客戶端打開到web服務器端口443的tcp連接,然後初始化SSL,對加密
參數進行溝通,交換密鑰等,然後將請求報文加密併發送給ssl層
4.SSL握手
.交換協議版本號
.選擇一個兩端都瞭解的密碼
.對兩端密碼的身份進行認證
.生成臨時的會話密鑰,以便加密信道
SSL支持雙向認證,將服務器證書承載回客戶端,客戶端證書承載會服務端
5.站點證書有效性
驗證步驟:
a.日期檢測
檢測是否過期
b.簽名頒發者可信度檢測
c.簽名檢測
對簽名使用頒發機構的公開密鑰,並將其與檢驗碼進行比較
d.站點身份檢測
瀏覽器會驗證證書中的域名是否和將要訪問服務器的域名是否一致
七、通過代理以隧道形式傳輸安全流量
客戶端使用服務器的公開密鑰對發往服務器的數據進行加密時,代理不能讀取http首部,
故無法知道將請求轉發到何處
解決辦法:
a.https ssl 隧道協議:客戶端在開始加密之前以明文方式告知代理連接的host和port,
通過CONNECT擴展方法