網絡協議-HTTPS協議

HTTPS 協議算法

HTTPS協議用於更嚴肅的場景,例如金錢交易。若是你在網上購物還用的是HTTP協議就有風險了,黑客極可能截獲你的HTTP報文,而後僞形成商家騙取你的財富。解決這個問題的思路是加密。加密分爲兩種,一種是對稱加密,一種是非對稱加密。網絡

對稱加密中,加密和解密的密鑰是相同的。非對稱加密中,加密和解密使用的密鑰是不一樣的,一把做爲公開的公鑰,另外一把是誰也不能給的私鑰。網站

對稱加密加密

在網絡上通訊中,假如客戶端和服務端都有對稱密鑰,客戶端的密鑰將信息加密發送出去,服務端接到消息用一樣的密鑰解密信息。服務端發送消息也是同樣,信息經密鑰加密後發送出去,客戶端用一樣的密鑰解密。在網絡中任何人截獲數據包沒有密鑰也沒法打開。spa

關鍵的問題在於,如何讓客戶端和服務端一樣的對稱密鑰。這個問題用下面的非對稱加密來解決。3d

非對稱加密blog

私鑰留給本身,公鑰留給別人,我發的消息,有公鑰的人都能看見,有公鑰的人發的消息只有我能看見。但我只想給你看怎麼辦?hash

一、我用私鑰加密信息,將消息和公鑰發出去,你接到後,用個人公鑰加密你要發的消息,消息中包含你的公鑰。it

二、我接到消息,且這個消息只能我接到,我將你的公鑰拿出來,加密我想要給你發的消息。ast

三、我將這個消息發送出去,這個消息只有你的私鑰才能解密。這樣咱倆就能私密通訊了。

但這裏有個問題,就是若是有人冒充你,我是不知道的。這個問題由權威機構頒佈的數字證書解決。

數字證書

誰均可以生成私鑰和公鑰,將公鑰發出去,來冒充商家騙取錢財。這時候若是有個像政府部門的機構來發個身份證就行了。數字證書就是互聯網上的權威機構發行的身份證。

數字證書裏有:公鑰、證書全部者、發佈機構、有效期。

這個數字證書的頒發機構咱們稱爲 CA(Certificate Authority)。具體操做是用命令發起一個證書請求,而後權威機構會給這個證書卡一個章,咱們稱爲簽名算法。

簽名的算法大體是這樣的:將信息用hash算法計算出hash 值,這個過程不可逆。將這個Hash值用CA的私鑰加密後和信息一塊兒發出去。

權威機構又是怎麼證實本身的呢?怎樣防止別人冒充它的?

這還要靠非對稱加密,權威機構用本身的私鑰給網站的公鑰加密,就至關於給網站作了證書。當客戶與網站交易時,會獲取網站的證書,只要獲得權威機構CA 的公鑰,就能夠解密網站的證書籤名,若是解密成功,裏面的hash等信息能對得上,就說明這個網站的公鑰沒問題。

 

HTTPS 的工做模式

因爲對稱加密的效率要比非對稱加密的高不少,當咱們用非對稱加密的密鑰創建好信任以後,就能夠用對稱加密的密鑰來通訊了。HTTPS 協議就是這個思路。

雙方創建的過程按客戶端和服務端模擬,具體過程以下:

一、首先客戶端給服務端發送 Client Hello 消息,並將本身支持的加密算法,以及一個隨機數給服務端。

二、服務端收到消息後,選擇一個加密算法,並附上本身的證書和隨機數,給客戶端。

三、客戶端收到消息後,驗證服務端的證書,拿出證書的公鑰驗證簽名和hash,若是可信就像服務端發送一個 pre-master-key 的隨機數,該隨機數使用證書的公鑰加密,發送給服務端。客戶端將本身的隨機數 + 對方的隨機數 + pre-master-key生成對稱密鑰。

四、服務端接到消息後,用私鑰解密,將本身的隨機數 + 對方的隨機數 + pre-master-key生成對稱密鑰。

兩邊都有對稱密鑰以後,就能夠相互通訊了。

相關文章
相關標籤/搜索