《圖解HTTP》讀書筆記五:確保 Web 安全的 HTTPS
7.1 HTTP 的缺點
HTTP 主要有這些不足,例舉如下:
- 通訊使用明文(不加密),內容可能會被竊聽
- 不驗證通訊方的身份,因此有可能遭遇偽裝
- 無法證明報文的完整性,所以有可能已遭篡改
這些問題不僅在 HTTP 上出現,其他未加密的協議中也會存在這類問題。
7.2 HTTP+ 加密 + 認證 + 完整性保護=HTTPS
7.2.2 HTTPS 是身披 SSL 外殼的 HTTP
HTTPS 並非是應用層的一種新協議。只是 HTTP 通訊介面部分用SSL(Secure Socket Layer)和 TLS(Transport Layer Security)協議代替而已。
通常,HTTP 直接和 TCP 通訊。當使用 SSL 時,則演變成先和 SSL 通訊,再由 SSL 和 TCP 通訊了。簡言之,所謂 HTTPS,其實就是身披SSL 協議這層外殼的 HTTP。
在採用 SSL 後,HTTP 就擁有了 HTTPS 的加密、證書和完整性保護這些功能。
SSL 是獨立於 HTTP 的協議,所以不光是 HTTP 協議,其他執行在應用層的 SMTP 和 Telnet 等協議均可配合 SSL 協議使用。可以說 SSL 是當今世界上應用最為廣泛的網路安全技術。
7.2.5 HTTPS 的安全通訊機制
為了更好地理解 HTTPS,我們來觀察一下 HTTPS 的通訊步驟。
步驟 1: 客戶端通過傳送 Client Hello 報文開始 SSL 通訊。報文中包含客戶端支援的 SSL 的指定版本、加密元件(Cipher Suite)列表(所使用的加密演算法及金鑰長度等)。
步驟 2: 伺服器可進行 SSL 通訊時,會以 Server Hello 報文作為應答。和客戶端一樣,在報文中包含 SSL 版本以及加密元件。伺服器的加密元件內容是從接收到的客戶端加密元件內篩選出來的。
步驟 3: 之後伺服器傳送 Certificate 報文。報文中包含公開金鑰證書。
步驟 4: 最後伺服器傳送 Server Hello Done 報文通知客戶端,最初階段的 SSL 握手協商部分結束。
步驟 5: SSL 第一次握手結束之後,客戶端以 Client Key Exchange 報文作為迴應。報文中包含通訊加密中使用的一種被稱為 Pre-master secret 的隨機密碼串。該報文已用步驟 3 中的公開金鑰進行加密。
步驟 6: 接著客戶端繼續傳送 Change Cipher Spec 報文。該報文會提示伺服器,在此報文之後的通訊會採用 Pre-master secret 金鑰加密。
步驟 7: 客戶端傳送 Finished 報文。該報文包含連線至今全部報文的整體校驗值。這次握手協商是否能夠成功,要以伺服器是否能夠正確解密該報文作為判定標準。
步驟 8: 伺服器同樣傳送 Change Cipher Spec 報文。
步驟 9: 伺服器同樣傳送 Finished 報文。
步驟 10: 伺服器和客戶端的 Finished 報文交換完畢之後,SSL 連線就算建立完成。當然,通訊會受到 SSL 的保護。從此處開始進行應用層協議的通訊,即傳送 HTTP 請求。
步驟 11: 應用層協議通訊,即傳送 HTTP 響應。
步驟 12: 最後由客戶端斷開連線。斷開連線時,傳送 close_notify 報文。上圖做了一些省略,這步之後再傳送 TCP FIN 報文來關閉與 TCP的通訊。
在以上流程中,應用層傳送資料時會附加一種叫做 MAC(Message Authentication Code)的報文摘要。MAC 能夠查知報文是否遭到篡改,從而保護報文的完整性。
下面是對整個流程的圖解。圖中說明了從僅使用伺服器端的公開金鑰證書(伺服器證書)建立 HTTPS 通訊的整個過程。
CBC 模式(Cipher Block Chaining)又名密碼分組連結模式。在此模式下,將前一個明文塊加密處理後和下一個明文塊做 XOR 運算,使之重疊,然後再對運算結果做加密處理。對第一個明文塊做加密時,要麼使用前一段密文的最後一塊,要麼利用外部生成的初始向量(initial vector,IV)。
SSL 和 TLS
HTTPS 使用 SSL(Secure Socket Layer) 和 TLS(Transport Layer Security)這兩個協議。
SSL 技術最初是由瀏覽器開發商網景通訊公司率先倡導的,開發過 SSL3.0 之前的版本。目前主導權已轉移到 IETF(Internet Engineering Task Force,Internet 工程任務組)的手中。
IETF 以 SSL3.0 為基準,後又制定了 TLS1.0、TLS1.1 和TLS1.2。TSL 是以 SSL 為原型開發的協議,有時會統一稱該協議為 SSL。當前主流的版本是 SSL3.0 和 TLS1.0。
由於 SSL1.0 協議在設計之初被發現出了問題,就沒有實際投入使用。SSL2.0 也被發現存在問題,所以很多瀏覽器直接廢除了該協議版本。
《圖解HTTP》下載地址:
http://download.csdn.net/download/xunzaosiyecao/10252084
個人微信公眾號:
作者:jiankunking 出處:http://blog.csdn.net/jiankunking
相關文章
- 圖解HTTP 七、確保Web安全的HTTPS圖解HTTPWeb
- 《圖解HTTP》讀書筆記7之HTTPS的安全通訊機制圖解HTTP筆記
- 《圖解 HTTP》 讀書筆記圖解HTTP筆記
- 圖解HTTP讀書筆記圖解HTTP筆記
- 確保web安全的HTTPSWebHTTP
- 《圖解HTTP》讀書筆記四:HTTP 首部圖解HTTP筆記
- 《圖解HTTP》--讀書筆記(目錄)圖解HTTP筆記
- 《圖解HTTP》讀書筆記一:瞭解 Web 及網路基礎圖解HTTP筆記Web
- 《圖解HTTP》讀書筆記三:HTTP 報文內的 HTTP 資訊圖解HTTP筆記
- 《圖解HTTP》讀書筆記二:簡單的 HTTP 協議圖解HTTP筆記協議
- HTTP讀書筆記——瞭解Web及網路基礎HTTP筆記Web
- 《圖解http》閱讀筆記--web及網路基礎圖解HTTP筆記Web
- HTTP 讀書筆記HTTP筆記
- 《白帽子講web安全》讀書筆記Web筆記
- 終、《圖解HTTP》讀書筆記 - 彙總篇(總結)圖解HTTP筆記
- 《圖解HTTP》閱讀筆記(上)圖解HTTP筆記
- 《圖解HTTP》閱讀筆記(下)圖解HTTP筆記
- 《圖解TCP/IP》讀書筆記九:網路安全圖解TCP筆記
- 讀書筆記之五筆記
- 《圖解TCP/IP》讀書筆記圖解TCP筆記
- 五月的讀書筆記筆記
- http協議讀書筆記3-Web伺服器HTTP協議筆記Web伺服器
- ajax安全讀書筆記筆記
- 《演算法圖解》讀書筆記演算法圖解筆記
- 演算法圖解讀書筆記演算法圖解筆記
- 《圖解TCP/IP》讀書筆記(一)圖解TCP筆記
- 《圖解http》筆記圖解HTTP筆記
- 《圖解TCP/IP》讀書筆記五:IP協議相關技術圖解TCP筆記協議
- 《圖解TCP/IP》--讀書筆記(目錄)圖解TCP筆記
- 《HTTP/2 基礎教程》 讀書筆記HTTP筆記
- WCF的傳輸安全(讀書筆記)筆記
- 為什麼說HTTPS比HTTP安全? HTTPS是如何保證安全的?HTTP
- 《Web前端黑客技術解密》讀書筆記(第三、四、五章)Web前端黑客解密筆記
- 人月神話讀書筆記(五) (轉)筆記
- 讀《白帽子講web安全》 ——筆記Web筆記
- http協議讀書筆記1-概述HTTP協議筆記
- 《寫給大家看的web設計書》讀書筆記Web筆記
- 《圖解TCP/IP》讀書筆記六:TCP與UDP圖解TCP筆記UDP