瞭解 HTTPS,讀這篇文章就夠了

又拍雲發表於2018-10-19

今天接到個活兒,讓我科普 HTTPS 。講 HTTP 我都“方”,想要通俗易懂的說完 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 安全傳輸協議,他們的主要目的就是避免中間人攻擊,使資訊在傳輸過程中更安全,更快速。想要更詳細的瞭解 HTTPS 相關知識,我們在推薦閱讀裡準備了大量的 HTTPS 乾貨,歡迎查閱。

彩蛋:你是不是想吐槽一下標題說讀這篇就夠了,哈哈,你得允許我皮一下嘛~

 

推薦閱讀:

不是 HTTPS 拖慢網站速度,而是優化做的不夠優秀​ 
科普 TLS 1.3 — 新特性與開啟方式
從 HTTP 到 HTTPS 再到 HSTS

相關文章