一分鐘弄懂HTTPS過程,從此不再懵懵懂懂!

在過去的幾年裡,業界巨頭Google利用旗下Chrome瀏覽器大力推行HTTPS,沒有使用SSL/TLS進行加密的網站一律被標記為不安全。作為一個開發人員,連HTTPS原理都不懂的話是註定要被鄙視的。咱還是不廢話,直奔主題吧。

先來一張圖描述HTTPS的交互過程:

一分鐘弄懂HTTPS過程,從此不再懵懵懂懂!

非常的簡單明瞭,看完之後想一想整個過程需要用到哪些加密算法。

上圖需要用到的算法有:非對稱加密、對稱加密、單向散列。

簡化步驟如下:

1.客戶端發起請求;

2.服務端返回證書;

3.客戶端從驗證證書得到服務端的公鑰;

4.客戶端生成隨機數,並用公鑰加密後發送給服務端;

5.服務器根據隨機數生成對稱密鑰;

6.用對稱密鑰加密數據傳輸;

什麼是證書

一分鐘弄懂HTTPS過程,從此不再懵懵懂懂!

這裡的證書其實就是使用權威機構的私鑰加密過的服務器公鑰,所以製作證書通常是要付費的。那麼問題來了,能不能自己製作一個證書?

為什麼不能直接下發服務器公鑰給客戶端

細想一下,如果直接下發公鑰給中間人攔截獲取了,那麼之後的通信過程就無安全可言了。

如何驗證證書的可靠性?

答案就是使用數字簽名,上圖的編號就是用來驗證證書的有效性的,權威機構頒發給不同網站的證書都只能是唯一的。

瀏覽器通常是怎麼解密出服務器的公鑰的?

我們都知道,在非對稱加密中,用私鑰加密的數據只有公鑰才能解密,那麼客戶端一開始的公鑰是怎麼獲得的?其實任何的操作系統比如Windows 10和Mac本身就已經帶有受信任機構的根證書。(ps:盜版系統的危害不言而喻...)

為何HTTPS建立之後使用對稱算法加密?

因為只要保證密鑰不會洩漏出去,那麼數據就是安全的,而且非對稱加密算法相當耗費資源,不可能也沒必要每次傳輸都使用。

只要理解了以上幾個問題,那麼整個過程就非常清晰了。


分享到:


相關文章: