來源書籍《圖解HTTP》學習總結。總結下篇主要關於HTTP安全技術詳解算法
在 HTTP 協議中有可能存在信息竊聽或身份假裝等安全問題。使用HTTPS 通訊機制能夠有效地防止這些問題。
一、通訊使用明文(不加密),內容可能會被竊聽,HTTP 自己不具有加密的功能,按 TCP/IP 協議族的工做機制,通訊內容在全部的通訊線路上都有可能遭到窺視。加密報文也會被窺視,可是沒法破解加密信息得含義。安全
加密處理防止被竊聽:
通訊的加密:經過和 SSL(Secure Socket Layer,安全套接層)
或TLS(Transport Layer Security,安全層傳輸協議)
的組合使用,加密 HTTP 的通訊內容。用 SSL創建安全通訊線路。服務器
與 SSL組合使用的 HTTP 被稱爲 HTTPS(HTTP Secure,超文本傳輸安全協議)或 HTTP over SSL。
內容的加密:將參與通訊的內容(通訊報文)自己加密
,要求客戶端和服務器同時具有加密和解密機制,(內容仍有被篡改的風險)學習
二、不驗證通訊方的身份,所以有可能遭遇假裝,任何人均可發起請求,服務器只要接收到請求,無論對方是誰都會返回一個響應;不確認通訊方。不能肯定是不是正確的客戶端和服務器。即便是無心義的請求也會照單全收。沒法阻止海量請求下的 DoS 攻擊
(Denial of Service, 拒絕服務攻擊) 。
查明對手的證書:確認通訊方(服務器或客戶端) 持有的證書,便可判斷通訊方的真實意圖。加密
SSL不只提供加密處理,並且還使用了一種被稱爲 證書的手段,可用於肯定方,證書由值得信任的第三方機構頒發,用以證實服務器和客戶端是實際存在的。
三、沒法證實報文的完整性,因此有可能已遭篡改: HTTP 協議沒法證實通訊的報文完整性,沒有任何辦法確認,發出的請求 / 響應和接收到的請求 / 響應是先後相同的。 接收到的內容可能有誤。
SSL提供認證和加密處理及摘要功能。spa
完整性是指信息的準確度。請求或響應在傳輸途中,遭攻擊者攔截並篡改內容的攻擊稱爲
中間人攻擊(Man-in-the-Middle attack, MITM)
。
常常會在 Web 的登陸頁面和購物結算界面等使用 HTTPS 通訊。使用HTTPS 通訊時, 再也不用
http://, 而是改用
https://
。地址欄內會出現一個帶鎖的標記。
HTTPS 是身披 SSL 外殼的 HTTP;HTTP 通訊接口部分用SSL(Secure Socket Layer) 和TLS(Transport Layer Security)協議代替,SSL是獨立於 HTTP 的協議,因此不光是 HTTP 協議,其餘運行在應用層的 SMTP 和 Telnet 等協議都可配合 SSL協議使用。
一、相互交換密鑰的公開密鑰加密技術code
SSL採用一種叫作 公開密鑰加密(Public-key cryptography) 的加密處理方式。加密算法是公開的,而密鑰倒是保密的。加密和解密都會用到密鑰。沒有密鑰就沒法對密碼解密。
共享密鑰加密(對稱密鑰加密)
:加密和解密同用一個密鑰的方式稱爲共享密鑰加密(Common key crypto system),存在密鑰傳輸得難點,傳輸過程當中會被監聽,因此不該這種方法。
公開密鑰加密
:使用一對非對稱的密鑰。一把叫作私有密鑰(private key),另外一把叫作公開密鑰(public key)。發送密文的一方使用對方的公開密鑰進行加密處理,對方收到被加密的信息後,再使用本身的私有密鑰進行解密。 不須要傳輸密鑰。公開密鑰加密與共享密鑰加密相比,其處理速度要慢。
HTTPS 採用混合加密機制:共享密鑰加密和公開密鑰加密二者並用的混合加密機制 若密鑰可以實現安全交換,那麼有可能會考慮僅使用公開密鑰加密來通訊。blog
二、證實公開密鑰正確性的證書接口
公開密鑰在傳輸過程當中沒法保證安全,可能被攻擊者替換掉。可使用由 數字證書認證機構(CA, Certificate Authority)和其相關機關頒發的 公開密鑰證書。將該公開密鑰放入公鑰證書後綁定在一塊兒,服務器會將這份由數字證書認證機構頒發的公鑰證書發送給客戶端,
數字證書認證機構的業務流程。首先,服務器的運營人員向數字證書認證機構提出公開密鑰的申請
。數字證書認證機構在判明
提出申請者的身份
以後,會對
已申請的公開密鑰作數字簽名
,而後分配
這個已簽名的公開密鑰
,並將該公開密鑰放入公鑰證書後綁定在一塊兒
。服務器會將這份由數字證書認證機構頒發的公鑰證書發送給客戶端
,以進行公開密鑰加密方式通訊
。公鑰證書也可叫作數字證書或直接稱爲證書。接到證書的客戶端可以使用數字證書認證機構的公開密鑰,對那張證書上的數字簽名進行驗證,一旦驗證經過,客戶端即可明確兩件事:一,認證服務器的公開密鑰的是真實有效的數字證書認證機構。二,服務器的公開密鑰是值得信賴的ip