引導問題
1.為什麼使用https是安全的?
2.https的底層原理如何實現?
3.使用https是絕對安全的嗎?
https實現原理
https協議在內容傳輸上使用的加密是「對稱加密」,而「非對稱加密」只作用於證書驗證階段。
https的整體實現過程分為「證書驗證」和「資料傳輸」兩個階段,過程如下所示:
證書驗證階段1.瀏覽器發起https請求;
2.伺服器端返回https證書;
3.瀏覽器客戶端驗證證書是否合法,若不合法則提示警告
資料傳輸階段
4.當證書驗證合法後,在客戶端本地生成隨機數;
5.通過公鑰加密隨機數,並將加密後的隨機數傳輸到服務端;
6.服務端通過私鑰對接收到的加密隨機數進行解密操作;
7.服務端通過客戶端傳入的隨機數構造對稱加密演算法,對返回結果內容進行加密操作後再進行內容傳輸。
為什麼資料傳輸是用對稱加密?
首先,非對稱加密的加密效率是非常低的,而http的應用場景通常存在著端與端之間的大量資料互動,從效率來說是無法接受的;
其次,在https場景中只有服務端儲存了私鑰,而一對公私鑰只能實現單向的加解密(即服務端無法使用私鑰對傳回瀏覽器客戶端的資料進行加密,只能用於解密),所以https中內容傳輸加密採取的是對稱加密,而不是非對稱加密(此處隨機數則是對稱加密的介體,即客戶端和伺服器端所擁有的隨機數都是一致的,能夠進行雙向加解密)。
為什麼需要ca認證機構頒發證書?
http協議被認為不安全是因為傳輸過程容易被監聽者勾線監聽、偽造伺服器,而https協議主要就是解決網路傳輸的安全性問題。
首先,我們假設不存在認證機構,任何人都可以製作證書,這存在的風險便是經典的「中間人攻擊」問題。具體過程如下:
「中間人攻擊」原理
1.客戶端請求被劫持(如dns劫持等),所有的客戶端請求均被**至中間人的伺服器;
2.中間人伺服器返回中間人偽造的「偽證書」(包含偽公鑰);
3.客戶端建立隨機數,通過中間人證書的偽公鑰對隨機數進行加密後傳輸給中間人,然後憑隨機數構造對稱加密演算法對要進行傳輸的資料內容進行對稱加密後傳輸;
4.中間人因為擁有客戶端生成的隨機數,從而能夠通過對稱加密演算法進行資料內容解密;
5.中間人再以「偽客戶端」的身份向正規的服務端發起請求;
6.因為中間人與伺服器之間的通訊過程是合法的,正規服務端通過建立的安全通道返回加密後的資料內容;
7.中間人憑藉與正規伺服器建立的對稱加密演算法進行資料內容解密;
8.中間人再通過與客戶端建立的對稱加密演算法對正規伺服器返回的資料內容進行加密傳輸;
9.客戶端通過中間人建立的對稱加密演算法對返回的資料內容進行解密;
由於缺少對證書的真偽性驗證,所有客戶端即使發起了https請求,但客戶端完全不知道自己傳送的請求已經被第三方攔截,導致其中傳輸的資料內容被中間人竊取。
瀏覽器如何確保ca證書的合法性
1.證書包含的主要資訊:
2.證書的合法性依據
首先,權威機構是需要通過認證的。其次證書的可信性基於信任制,ca認證機構需要對其頒發的證書進行信用擔保,只要是ca認證機構頒發的證書,我們就認為是合法的。ca認證機構會對證書申請人的資訊進行審核的。
以上任意一步都同時滿足的情況下,瀏覽器才認為證書是合法的。
只有認證機構可以生產證書嗎?
如果需要瀏覽器不提示安全風險,那只能通過認證機構簽發的證書。但瀏覽器通常只是會提示安全風險,並不會限制**的訪問,所有從技術上來說,誰都可以生產證書,只要有證書就能夠完成**的https傳輸。
客戶端的本地隨機數被竊取了怎麼辦?
其實https並不包含對隨機數的安全保證,https保證的只是資料傳輸過程安全,而隨機數儲存於本地,本地的安全屬於另一安全範疇,應對的措施有安裝防毒軟體、反木馬、瀏覽器公升級修復漏洞等。(這也反映了https協議並不是絕對的安全的)
使用https被抓包了會怎樣?
由於https的資料是加密,常規下抓包工具**請求後抓到的包內容是加密狀態的,無法直接檢視。
但是,瀏覽器只會提示安全風險,如果使用者授權仍然繼續訪問**,完成請求。那麼,只有客戶端是我們自己的終端,我們授權的情況下,便能夠建立中間人網路,而抓包工具作為中間人的**。
通常, https 抓包工具的使用方法是會生成乙個證書,使用者需要手動把證書安裝到客戶端中,然後終端發起的所有請求通過該證書完成與抓包工具的互動,然後抓包工具再**請求到伺服器,最後把伺服器返回的結果在控制台輸出後再返回給終端,從而完成整個請求的閉環。
即是,https 只防止使用者在不知情的情況下通訊被監聽,如果使用者主動授信,是可以構建「中間人」網路,**軟體可以對傳輸內容進行解密。
HTTPS 原理及中間人攻擊
隨著 https 建站的成本下降,現在大部分的 都已經開始用上 https 協議。大家都知道 https 比 http 安全,也聽說過與 https 協議相關的概念有 ssl 非對稱加密 ca證書等,但對於以下靈魂三拷問可能就答不上了 1 為什麼用了 https 就是安全的?2 https 的底層原...
Https中間人攻擊
https也不是絕對安全的,如下圖所示為中間人劫持攻擊,中間人可以獲取到客戶端與伺服器之間所有的通訊內容。中間人擷取客戶端傳送給伺服器的請求,然後偽裝成客戶端與伺服器進行通訊 將伺服器返回給客戶端的內容傳送給客戶端,偽裝成伺服器與客戶端進行通訊。通過這樣的手段,便可以獲取客戶端和伺服器之間通訊的所有...
Https中間人攻擊
防範方法 一 https連線過程及中間人攻擊原理 https協議就是http ssl協議,如下圖所示為其連線過程 1.https請求 客戶端向服務端傳送https請求 2.生成公鑰和私鑰 服務端收到請求之後,生成公鑰和私鑰。公鑰相當於是鎖,私鑰相當於是鑰匙,只有私鑰才能夠開啟公鑰鎖住的內容 3.返回...