https,在我的概念中就是更安全,需要伺服器配置證書,但是到底什麼是https,為什麼會更安全,整套流程又是如何實現的,在腦子裡沒有具體的概念。下文將為大家介紹https整套加密機制是如何實現的,讓更多之前不清楚https加密到底是什麼的同學有乙個入門的理解。
http是什麼樣的?
http是屬於應用層的協議,它是基於tcp/ip的,所以它只是規定一些要傳輸的內容,以及頭部資訊,然後通過tcp協議進行傳輸,依靠ip協議進行定址,通過一幅最簡單的圖來描述:
客戶端發出請求,服務端進行響應,就是這麼簡單。在整個過程中,沒有任何加密的東西,所以它是不安全的,中間人可以進行攔截,獲取傳輸和響應的資料,造成資料洩露。
加個密呢?
因為上圖中資料是明文傳輸的,我們能想到最簡單的提高安全性的方法就是在傳輸前對資料進行加密,如下圖:
這種加密方式叫做:對稱加密。
加密和解密用同乙個秘鑰的加密方式叫做對稱加密。
好了,我們對資料進行加密了,問題解決了嗎?
多個客戶端怎麼辦?
這是乙個客戶端,但是在www上,是成千上萬的客戶端,情況會怎樣呢?
為所有的客戶端都應用同乙個秘鑰a,這種方式很顯然是不合理的,破解了乙個使用者,所有的使用者資訊都會被盜取。
想一想,是不是還有別的辦法呢?
對稱加密秘鑰如何傳輸?
我們對每個客戶端應用不同的對稱加密秘鑰,那麼這個秘鑰客戶端或者服務端是如何知道的呢,只能是在一端生成乙個秘鑰,然後通過http傳輸給另一端:
那麼這個傳輸秘鑰的過程,又如何保證加密?如果被中間人攔截,秘鑰也會被獲取。也許你會說,對秘鑰再進行加密,那又如何保證對秘鑰加密的過程,是加密的呢?
非對稱加密
在對稱加密的路上走不通了,我們換個思路,還有一種加密方式叫非對稱加密,比如rsa。
非對稱加密會有一對秘鑰:公鑰和私鑰。
公鑰加密的內容,只有私鑰可以解開,私鑰加密的內容,所有的公鑰都可以解開(當然是指和秘鑰是一對的公鑰)。
私鑰只儲存在伺服器端,公鑰可以傳送給所有的客戶端。
在傳輸公鑰的過程中,肯定也會有被中間人獲取的風險,但在目前的情況下,至少可以保證客戶端通過公鑰加密的內容,中間人是無法破解的,因為私鑰只儲存在伺服器端,只有私鑰可以破解公鑰加密的內容。
現在我們還存在乙個問題,如果公鑰被中間人拿到篡改呢:
客戶端拿到的公鑰是假的,如何解決這個問題?
第三方認證
公鑰被掉包,是因為客戶端無法分辨傳回公鑰的到底是中間人,還是伺服器,這也是密碼學中的身份驗證問題。
在https中,使用證書 + 數字簽名來解決這個問題。
這裡假設加密方式是md5,將**的資訊加密後通過第三方機構的私鑰再次進行加密,生成數字簽名。
數字證書 = **資訊 + 數字簽名
假如中間人攔截後把伺服器的公鑰替換為自己的公鑰,因為數字簽名的存在,會導致客戶端驗證簽名不匹配,這樣就防止了中間人替換公鑰的問題。
瀏覽器安裝後會內建一些權威第三方認證機構的公鑰,比如comodo、symantec以及globalsign等等,驗證簽名的時候直接就從本地拿到相應第三方機構的公鑰,對私鑰加密後的數字簽名進行解密得到真正的簽名,然後客戶端利用簽名生成規則進行簽名生成,看兩個簽名是否匹配,如果匹配認證通過,不匹配則獲取證書失敗。
為什麼要有簽名?
大家可以想一下,為什麼要有數字簽名這個東西呢?
第三方認證機構是乙個開放的平台,我們可以去申請,中間人也可以去申請呀:
因為沒有認證,所以中間人也向第三方認證機構進行申請,然後攔截後把所有的資訊都替換成自己的,客戶端仍然可以解密,並且無法判斷這是伺服器的還是中間人的,最後造成資料洩露。
對稱加密
整體流程圖
https中具體的內容還有很多,可以通過下圖做乙個參考:
總結https就是使用ssl/tls協議進行加密傳輸,讓客戶端拿到伺服器的公鑰,然後客戶端隨機生成乙個對稱加密的秘鑰,使用公鑰加密,傳輸給服務端,後續的所有資訊都通過該對稱秘鑰進行加密解密,完成整個https的流程。
HTTPS加密流程
1 客戶端發起https請求首先向服務端傳送客戶端ssl tls協議版本號 支援的加密演算法種類 如 rsa加密演算法,des對稱加密演算法,sha1摘要演算法 產生隨機數等資訊 2 服務端向瀏覽器回傳 ssl tls 協議版本號 選擇一種客戶端瀏覽器支援的加密演算法和hash演算法 隨機數 服務端...
HTTPS加密原理
字數 2314 閱讀 630 喜歡 90 http https在我們日常開發中是經常會接觸到的。我們也都知道,一般 android 應用開發,在請求 api 網路介面的時候,很多使用的都是 http 協議 使用瀏覽器開啟網頁,也是利用 http 協議。看來 http 真是使用廣泛啊,但是,http ...
Https加密過程
http 直接通過明文在瀏覽器和伺服器之間傳遞資訊。https 採用 對稱加密 和 非對稱加密 結合的方式來保護瀏覽器和服務端之間的通訊安全。對稱加密 加密和解密都是同乙個金鑰。非對稱加密 金鑰成對出現,分為公鑰和私鑰,公鑰和私鑰之間不能互相推導,公鑰加密需要私鑰解密,私鑰加密需要公鑰解密。瀏覽器使...