HTTPS小結

參考連接:HTTPS科普掃盲帖
參考書籍:圖解HTTPhtml

http存在的問題

通訊使用明文可能會被竊聽

解決辦法
通訊加密算法

HTTP 協議中沒有加密機制, 但能夠經過和SSL( Secure Socket Layer, 安全套接層) 或 TLS( Transport Layer Security, 安全層傳輸協議) 的組合使用, 加密 HTTP 的通訊內容。安全

用 SSL 創建安全通訊線路以後, 就能夠在這條線路上進行 HTTP 通訊了。
與 SSL 組合使用的 HTTP 被稱爲TTPS( HTTP Secure, 超文本傳輸安全協議) 或 HTTP over SSL。服務器

內容加密ui

還有一種將參與通訊的內容自己加密的方式。 因爲 HTTP 協議中沒有加密機制, 那麼就對 HTTP 協議傳輸的內容自己加密。 即把 HTTP 報文裏所含的內容進行加密處理。在這種狀況下, 客戶端須要對 HTTP 報文進行加密處理後再發送請求。加密

爲了作到有效的內容加密, 前提是要求客戶端和服務器同時具有加密和解密機制。 主要應用在 Web 服務中。 有一點必須引發注意, 因爲該方式不一樣於 SSL 或 TLS 將整個通訊線路加密處理, 因此內容仍有被篡改的風險。spa

不驗證通訊方的身份就可能遭遇假裝

雖然使用 HTTP 協議沒法肯定通訊方, 但若是使用 SSL 則能夠。 SSL 不只提供加密處理, 並且還使用了一種被稱爲證書的手段, 可用於肯定方。
證書由值得信任的第三方機構頒發, 用以證實服務器和客戶端是實際存在的。 另外, 僞造證書從技術角度來講是異常困難的一件事。 因此只要可以確認通訊方( 服務器或客戶端) 持有的證書, 便可判斷通訊方的真實意圖。code

沒法證實報文完整性, 可能已遭篡改

所謂完整性是指信息的準確度。 若沒法證實其完整性, 一般也就意味着沒法判斷信息是否準確。htm

HTTPS

HTTPS與HTTP的區別

clipboard.png

HTTPS其實就是secure http的意思啦,也就是HTTP的安全升級版。
HTTP是應用層協議,位於HTTP協議之下是傳輸協議TCP。
TCP負責傳輸,HTTP則定義了數據如何進行包裝
HTTPS相對於HTTP有哪些不一樣呢?其實就是在HTTP跟TCP中間加多了一層加密層TLS/SSL。blog

關於HTTPS

HTTP+ 加 密 + 認 證 + 完 整 性 保 護 =HTTPS
SSL 提供認證和加密處理及摘要功能。
HTTPS 是身披 SSL 外殼的 HTTP
HTTPS 並不是是應用層的一種新協議。 只是 HTTP 通訊接口部分用 SSL( Secure Socket Layer) 和 TLS( Transport Layer Security) 協議代替而已。
一般, HTTP 直接和 TCP 通訊。 當使用 SSL 時, 則演變成先和 SSL 通訊, 再由 SSL和 TCP 通訊了。 簡言之, 所謂 HTTPS, 其實就是身披 SSL 協議這層外殼的HTTP

clipboard.png

clipboard.png

SSL與TLS

通俗的講,TLS、SSL實際上是相似的東西,SSL是個加密組件,負責對HTTP的數據進行加密。TLS是SSL的升級版。如今提到HTTPS,加密套件基本指的是TLS。
在採用 SSL 後, HTTP 就擁有了 HTTPS 的加密、 證書和完整性保護這些功能。SSL 是獨立於 HTTP 的協議, 因此不光是 HTTP 協議, 其餘運行在應用層的 SMTP和 Telnet 等協議都可配合 SSL 協議使用。

clipboard.png

HTTPS的加密機制

兩種加密機制

clipboard.png

HTTPS 採用共享密鑰加密和公開密鑰加密二者並用的混合加密機制。 若密鑰可以實現安全交換, 那麼有可能會考慮僅使用公開密鑰加密來通訊。 可是公開密鑰加密與共享密鑰加密相比, 其處理速度要慢。
因此應充分利用二者各自的優點, 將多種方法組合起來用於通訊。 在交換密鑰環節使用公開密鑰加密方式, 以後的創建通訊交換報文階段則使用共享密鑰加密方式。

clipboard.png

HTTPS 的安全通訊機制/SSL過程

clipboard.png

clipboard.png

步驟 1: 客戶端經過發送 Client Hello 報文開始 SSL 通訊。 報文中包含客戶端支持的 SSL 的指定版本、 加密組件( Cipher Suite) 列表( 所使用的加密算法及密鑰長度等) 。
步驟 2: 服務器可進行 SSL 通訊時, 會以 Server Hello 報文做爲應答。 和客戶端同樣, 在報文中包含 SSL 版本以及加密組件。 服務器的加密組件內容是從接收到的客戶端加密組件內篩選出來的。
步驟 3: 以後服務器發送 Certificate 報文。 報文中包含公開密鑰證書。
步驟 4: 最後服務器發送 Server Hello Done 報文通知客戶端, 最初階段的 SSL 握手協商部分結束。
步驟 5: SSL 第一次握手結束以後, 客戶端以 Client KeyExchange 報文做爲迴應。報文中包含通訊加密中使用的一種被稱爲 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 可以查知報文是否遭到篡改, 從而保護報文的完整性。

clipboard.png

相關文章
相關標籤/搜索