HTTPS 加密安全協議?帶您你快速了解HTTPS!
上圖中其實就是 HTTPS 的交握過程,但是我相信大段的英文你看著也不怎麼流暢,下面就由我簡單講解下吧。
HTTPS 是在 HTTP 的基礎上增加了 SSL 或 TLS 安全協議,這些協議有眾多的套件,這些套件則是由加密算法和哈希算法組成,而這些算法最後則涉及到了數學。
數學是我上學時期最頭痛的學科,還記得上數學課時,我傳紙條給坐在我後面的班花……咦,好像有點跑偏了,拉回來,坐好了,開始我們的 HTTPS 之旅。
HTTPS 是什麼?
HTTPS 是為了安全的使用 HTTP ,縮寫展開:Hyper Text Transfer Protocol over Secure Socket Layer 。從英文釋義可以看出,HTTPS 就是 HTTP + SSL 或者 HTTP + TLS 。
“我讀書少,你可不要騙我,上面的英文縮寫不是 HTTP over SSL 嗎?”呃…是這樣的,HTTPS 最初使用的加密協議的確是 SSL,SSL 最近的三個版本是:SSL 1.0 、SSL 2.0 、SSL 3.0 ,不過隨著加密算法的發展和人們對傳輸安全性要求的提高。
截止目前已經長江後浪推前浪依次推出了 TLS 的四個版本,分別是:TLS 1.0 、TLS 1.1 、TLS 1.2 以及前不久剛推出的 TLS 1.3 。實際上,業內也有人把 TLS 1.0 叫做 SSL 3.1 ,事實上,TLS 是在 SSL 的基礎上發展起來的更安全的加密協議。
為什麼要使用 HTTPS?
這個問題要從為什麼逐漸的拋棄 HTTP 說起。
HTTP 從 1991 年的 HTTP/0.9 一直發展到 1999 年的 HTTP/1.1 ,雖然功能不斷增加,性能也不斷提高,但是隨著互聯網技術和網絡設備的迅速普及,導致信息大爆炸,眾多的網民們對網絡傳輸的速度和安全性有了越來越高的要求。
2012 年,谷歌推出了 SPDY 方案,優化了 HTTP/1.x 的請求延遲和安全性問題,進一步普及了 HTTPS,截止到 2015 年,HTTP/2 已經成為標准,更是進一步推動了全網 HTTPS 的進程。
全網 HTTPS 是大勢所趨,那麼為什麼拋棄 HTTP 呢?最重要的原因就是安全問題,因為 HTTP 是明文傳輸的,這對於目前從娃娃就開始玩智能手機,學習 python 編程的新一代來說,抓個包估計是不在話下,更別提浸淫網絡多年的“黑客”了。是時候跑步進入 HTTPS 加密時代的了。
HTTPS 為什麼安全?
上文已經有提到,HTTPS 就是 HTTP + SSL or TLS ,除了 HTTPS 傳輸標准嚴格和規範外,主要是 SSL 或者 TLS 對傳輸的信息有一整套的加解密和校驗方案。這套方案主要從下面三個方面確保傳輸的安全。
1. 身份認證
傳輸之前首先通過數字證書來確認身份,各大 CA 廠商干的就是這個事情。這裡涉及到一個名詞:數字證書。數字證書分為公鑰和私鑰,CA 廠商會用自己的私鑰來給證書申請者簽發一套包含私鑰和公鑰的客戶證書,客戶的公鑰證書誰都可以獲取,裡面包含了客戶站點和證書的基本信息,用來確保訪問者訪問的就是他想要訪問的站點。
這個證書不可以偽造嗎?答案是真的不可以。
原因一:系統早已內置了各大 CA 廠商的公鑰來校驗證書是否是對應的站點的證書,如果不是,就會給出證書不匹配的提示,除非你給別人的設備強行植入假的 CA 公鑰。
原因二:這個證書是 CA 廠商通過哈希並加密得到的,基本無法逆向破解並偽造一個新的,除非是你黑進 CA 獲取了 CA 的私鑰,那這家 CA 也基本可以倒閉了。
2. 數據保密
數據保密包括對話秘鑰傳輸時候的保密和數據的加密傳送。
對話秘鑰:以 TLS 1.2 使用的套件之一 DHE-RSA-AES256-SHA256 為例:該套件是以 DHE 、RSA 作為秘鑰交換算法,這兩種秘鑰交換算法都是使用的非對稱加密,數學原理分別依賴於計算離散對數的難度和大數分解的難度。
也就是在建立 HTTPS 鏈接的過程中,剛開始是有一些明文出現的,不過想要根據這些已知的明文推算出“對話秘鑰”卻非常困難。
對話加密:客戶端和和服務端協商並成功獲取到對話秘鑰後就開始用對話秘鑰進行對稱加密會話,上面的套件我們可以看到使用的是 AES256 加密算法。
那麼為什麼“對話秘鑰”的交換使用非對稱加密,正式對話數據的傳輸使用對稱加密?因為非對稱加密雖然安全性比較高,但是它的效率比較低,速度比較慢,所以我們一般只使用它們來交換一下對話秘鑰,後面的對話加密則使用速度更快,效率更高的對稱加密。
3. 數據完整
身份認證成功後,到了數據加密傳輸的階段,所有數據都以明文(HTTP)收發,只不過收發的是加密後的明文。這時候也遇到了一個問題,雖然中間人很難破解加密後的數據,但是如果他對數據進行了篡改,那該怎麼辦?
此時加密套件驗證數據一致性的哈希算法就派上用場了,哈希算法有多種,比如 MD5 ,SHA1 或者 SHA2 等,上面舉例的加密套件使用的是 SHA2 中的 SHA256 來對數據進行哈希計算。這樣就使得任何的數據更改都會導致通信雙方在校驗時發現問題,進而發出警報並采取相應的措施。
以上主要從使用 HTTPS 的必要性及 HTTPS 能安全傳輸的原理進行了簡單的闡述,HTTPS 的實現不僅僅是網絡技術的集中應用,底層還涉及到了大量的算法以及密碼學的眾多知識,小編也無法一下子概述完整(笑哭)。
另外,不論是 PFS,或是國際互聯網組織正在推行的 HSTS 安全傳輸協議,他們的主要目的就是避免中間人攻擊,使信息在傳輸過程中更安全,更快速。
……………….