切換語言為:簡體
為什麼是我們需要HTTPS以及HTTP是如何演變成HTTPS的

為什麼是我們需要HTTPS以及HTTP是如何演變成HTTPS的

  • 爱糖宝
  • 2024-08-14
  • 2059
  • 0
  • 0

在寫這篇文章的時候,複製位址列的內容,可以得到https://www.codeuphub.com/front/template/598/view/article。 可以看到codeuphub是使用的HTTPS協議。 當滑鼠hover過去的時候,可以看到有提示連線是安全的,所以HTTPS的主要作用是保證連結的安全。

為什麼是我們需要HTTPS以及HTTP是如何演變成HTTPS的

那麼問題來了,HTTP為什麼是不安全的?

HTTP明文傳輸的風險

HTTP一開始誕生在學術界,目的很單純,就是爲了傳輸超文字內容,那個時候也沒有很強的資訊加密需求,所以HTTP一直保持著明文傳輸資料的特徵。

但是隨著網際網路的發展,資料越來越多,傳輸的內容也越來越多,網際網路在人們生活中的影響不斷擴大,在資訊過程中搞小動作謀取利潤的場景也誕生了。HTTP的明文傳輸就會面臨著,在傳輸過程中的任一環節,資料都有可能被竊取或者篡改,好比傳輸過程有個中間人,把通訊過程的一切內容都掌握其中。

為什麼是我們需要HTTPS以及HTTP是如何演變成HTTPS的

如上圖所示,在通訊過程中,資訊被第三方攔截篡改的情況,業界稱為中間人攻擊

具體來說,在HTTP將資料提交給TCP層後,資料會經過使用者電腦、WIFI路由器、運營商和目標伺服器,在這其中的任一環節,資料都有可能被竊取或篡改。比如使用者電腦被駭客安裝了惡意軟體,那麼這些惡意軟體就能抓取和篡改所發出的HTTP請求的內容。如果是連上了釣魚WIFI,那麼資料也可能被抓取和篡改。所有資訊流經的鏈路,都可能把資訊進行攔截和篡改。

HTTP的安全應對策略——協議棧加入安全層

HTTP的明文傳輸會讓傳輸過程毫無安全性可言,且制約了網上購物、線上轉賬等一系列場景應用,倒逼我們去思考安全的資訊傳輸方案。

在資訊傳輸的網路進行修改,讓通道安全是不現實的方案,故而需要從資料包本身下手,尋求突破口,對資料包進行加密是目前採用的方案。

從HTTP協議層面來看,可以在HTTP層和TCP層之間插入一個安全層,所有經過安全層的資料都被被加密或者解密。

為什麼是我們需要HTTPS以及HTTP是如何演變成HTTPS的

從上圖可以看出,HTTPS並不是一個全新的協議,而是在HTTP的基礎上加入了一個安全層,沒有改動到HTTP協議也沒有改動到TCP/IP。安全層的主要職責有兩個,一是對發起HTTP請求的資料進行加密操作,二是對接收到HTTP的內容進行解密操作。

當下HTTPS的請求流程

請求流程分析

為什麼是我們需要HTTPS以及HTTP是如何演變成HTTPS的

整個流程具體如下:

  • 瀏覽器將自己支援的對稱加密列表、非對稱加密列表、client-random傳送給伺服器

  • 伺服器選擇一個對稱加密套件(也就是加密的方法)、非對稱加密套件、service-random伺服器的數字證書,傳送給瀏覽器

  • 瀏覽器驗證數字證書——digital certificate 的合法性。( 首先讀取數字證書中的明文資訊,採用Certificate Authority相同的Hash函式計算來得到資訊摘要A,然後利用CA的公鑰解密簽名資料,得到資訊摘要B,對比A、B一致即可確認證書是合法的,同時瀏覽器還會驗證證書相關的域名資訊、有效時間等資訊 )

  • 瀏覽器生成一個隨機數pre-master,利用伺服器的公鑰(數字證書裡面包含了伺服器公鑰)加密,傳送給伺服器。

  • 伺服器用自己的私鑰解密後得到pre-master, 用client-random + service-random + pre-master組合生成對稱加密金鑰master secret

  • 瀏覽器也用client-random + service-random + pre-master組合生成對稱加密金鑰master secret

  • 後續的通訊流程都用對稱加密金鑰master secret進行加密解密,確保資訊的安全。

以上就是整個HTTPS的完整請求流程

上面的流程提到了數字證書,它起到一個怎樣的作用,以及如何申請的呢?

數字證書的作用和申請流程

數字證書的作用

數字證書主要有兩個作用,一是證明伺服器的合法性,也就是伺服器A確實是A,另一個就是儲存伺服器的公鑰資訊。

為何需要驗證伺服器的合法性呢? 我們的輸入到位址列的一般是伺服器的域名,需要進行DNS解析才能得到伺服器的IP地址,如果駭客透過DNS劫持,把IP地址指向了駭客伺服器,瀏覽器的通訊物件就變成了駭客伺服器而無從得知。

數字證書的申請流程

網路世界引入了一個權威機構,稱為CA(Certificate Authority) 負責給伺服器頒發證書,頒發的證書就稱為數字證書(Digital Certificate),這兩者好比派出所和和身份證的關係。

通常的申請流程分為以下幾步:

  • 伺服器需要準備一套私鑰和公鑰,私鑰自己留著

  • 伺服器向CA機構提交公鑰、公司、站點等資訊並等待認證,這個認證過程可能是收費的

  • CA機構透過線上、線下等多種渠道來驗證伺服器所提供的資訊的真實性,如公司是否存在、企業是否合法、域名是否歸屬該企業等

  • 如果資訊稽覈透過,CA會向伺服器簽發認證的數字證書,包含了伺服器的公鑰、組織資訊、CA的資訊、有效時間、證書序號等,這些資訊的都是明文的,同時還包含CA生成的簽名。

CA生成的簽名過程如下:

  • 首先CA使用hash函式計算伺服器提交的明文資訊,等到資訊摘要

  • CA使用它的私鑰對資訊摘要進行加密,加密後的密文就是CA頒發給伺服器的數字簽名 (相當於人民幣上的防偽水印)。

總結

  • HTTPS透過增加TLS安全層對資訊傳輸過程的資料包進行加密解密

  • 安全通訊過程的建立是需要非對稱加密和對稱加密組合在一起使用。

  • DNS解析過程可能會被駭客攔截,所以增加了CA機構給伺服器頒發數字證書以驗證伺服器身份。

  • 數字證書上會包含伺服器的公鑰、公司、域名等資訊,透過hash函式計算這些資訊得到資訊摘要A,再使用CA的公鑰對數字簽名進行解密等到資訊摘要B,如果A、B一致,證明伺服器身份是合法的。

  • 傳輸過程的對稱加密金鑰使用client-random + service-random + pre-master(需要非對稱加密傳輸雙方確認)組合生成的master secret

0則評論

您的電子郵件等資訊不會被公開,以下所有項目均必填

OK! You can skip this field.