詳解HTTP和HTTPS加密原理

2021-10-01 05:47:31 字數 2416 閱讀 7581

一 什麼是http協議?

超文字傳輸協議(http,hypertext transfer protocol)是網際網路上應用最為廣泛的一種網路協議。所有的www檔案都必須遵守這個標準。位於tcp/ip四層模型中的應用層。

http協議通過客戶端請求–>服務端響應的方式進行通訊。但是http有乙個致命的缺點就是:不夠安全。

http協議的資訊傳輸完全以明文的方式,不做加密,相當於在網路上裸奔。這樣就會導致如下情況:

小a是客戶端,小b時服務端,有一天小a試圖給小b傳送請求,但是由於傳輸資訊是明文,這個資訊可能被某個中間人惡意篡改,這種行為叫做中間人攻擊。

如果進行加密呢?

小a和小b可以事先約定對稱加密的方式,並且確定乙個隨機生成的秘鑰,後續的通訊中,資訊都是使用秘鑰的對稱加密,資訊接收方通過同樣的秘鑰進行資訊解密.

這樣做是不是就會絕對安全了呢?並不是,雖然我們在後續的通訊中,對明文進行了加密,但是第一次約定加密方式和秘鑰還是明文的,如果第一次被中間人攔截,那麼中間人仍然可以通過秘鑰進行解密資訊內容。

https的加密演算法:

非對稱秘鑰:非對稱加密演算法需要兩個金鑰:公開秘鑰(publickey)和私有金鑰(privatekey)。公開金鑰與私有金鑰是一對,如果用公開金鑰對資料進行加密,只有用對應的私有金鑰才能解密;如果用私有金鑰對資料進行加密,那麼只有用對應的公開金鑰才能解密。因為加密和解密使用的是兩個不同的金鑰,所以這種演算法叫作非對稱加密演算法。
首先需要小b把自己的公鑰key1傳送給小a:

小a收到小b的公鑰key1以後,小a自己生成乙個對稱加密的秘鑰key2,並且用key1對key2進行加密,傳送給小b:

小b接收到了小a傳送給自己的非對稱加密的私鑰,然後用自己的私鑰解開key1拿到裡面key2,然後就可以用key2進行加密通訊了。在通訊中,即使中間人拿到key1,但是不知道key1的私鑰是什麼,也無法得到key2。

這種情況會絕對安全的嗎?

並不是,中間人雖然不知道小b的key1私鑰是什麼,但是擷取了小b的key1之後,卻可以偷天換日,自己生成一對公鑰和私鑰,然後把自己的公鑰key3傳送給小a。

小a不知道公鑰key1被偷偷換過,以為key3就是小b傳送的公鑰,所以用key3加密自己生成的非對稱金鑰key2傳送給小b

這一次再次被中間人擷取,中間人先用自己的私鑰解密key3拿到key2,然後再用擷取小b的key1對key2進行加密,傳送給小b。

這樣中加人再次拿到了key2.

對稱秘鑰:對稱金鑰加密又叫專用金鑰加密,即傳送和接收資料的雙方必使用相同的金鑰對明文進行加密和解密運算。通常有兩種模式:流加密和分組加密。這個時候需要加入第三方,乙個權威的證書頒發機構(ca)來解決。那麼到底怎麼解決的呢?

1 作為服務端到的小b,首先把自己的公鑰key1傳送證書頒發機構,向證書頒發機構申請證書。

2 證書頒發機構自己也有一對公鑰和私鑰,機構利用自己的私鑰加密key1,並且通過服務端的**等資訊生成乙個證書簽名,證書簽名同樣經過私鑰加密,然後把證書傳送給小b。

3 當小a向小b傳送請求通訊的時候,小b不在把自己的公鑰key1傳送回去,而是把自己申請的證書傳送給小a。

4 小a拿到證書後,第一件事就是驗證證書的真偽,因為各大瀏覽器已經維護了所有權威證書機構的名稱和公鑰。所以小a只需要是哪家機構的證書,就可以從本地找到對應機構的公鑰,解密出證書的簽名,接下來銷毀按照同樣的簽名規則,自己也生成乙個證書簽名,如果來個簽名一致,說明這個證書是有效的。驗證成功後,小a就可以利用機構的公鑰解密出key1。

http和Https簡介 詳解

超文字傳輸協議http協議被用於在web瀏覽器和 伺服器之間傳遞資訊,http協議以明文方式傳送內容,不提供任何方式的資料加密,如果攻擊者擷取了 web瀏覽器和 伺服器之間的傳輸報文,就可以直接讀懂其中的資訊,因此,http協議不適合傳輸一些敏感資訊,比如 信用卡號 密碼等支付資訊。為了解決http...

https和http的區別詳解

https和http有什麼區別 超文字傳輸協議http協議被用於在web瀏覽器和 伺服器之間傳遞資訊。http協議以明文方式傳送內容,不提供任何方式的資料加密,如果攻擊者擷取了 web瀏覽器和 伺服器之間的傳輸報文,就可以直接讀懂其中的資訊,因此http協議不適合傳輸一些敏感資訊,比如信用卡號 密碼...

http和https的區別(文字詳解)

http是我們常說的超文字傳輸協議 hypertext transfer protocol 這個協議它是用一種文明的方式傳送我們的內容 明文 沒有任何的加密。為了解決http協議在傳輸過程中不加密的問題,之後就增加了乙個ssl協議 傳輸層安全協議 負責網路連線的加密。簡單來說https的安全性依賴於...