https協議的理解

GeekQiaQia發表於2019-04-03

1、首先什麼是HTTP協議?

http協議是超文字傳輸協議,位於tcp/ip四層模型中的應用層;通過請求/響應的方式在客戶端和伺服器之間進行通訊;但是缺少安全性,http協議資訊傳輸是通過明文的方式傳輸,不做任何加密,相當於在網路上裸奔;容易被中間人惡意篡改,這種行為叫做中間人攻擊;

2、加密通訊:

為了安全性,雙方可以使用對稱加密的方式key進行資訊交流,但是這種方式對稱加密祕鑰也會被攔截,也不夠安全,進而還是存在被中間人攻擊風險; 於是人們又想出來另外一種方式,使用非對稱加密的方式;使用公鑰/私鑰加解密;通訊方A發起通訊並攜帶自己的公鑰,接收方B通過公鑰來加密對稱祕鑰;然後傳送給發起方A;A通過私鑰解密;雙發接下來通過對稱祕鑰來進行加密通訊;但是這種方式還是會存在一種安全性;中間人雖然不知道發起方A的私鑰,但是可以做到偷天換日,將攔截髮起方的公鑰key;並將自己生成的一對公/私鑰的公鑰傳送給B;接收方B並不知道公鑰已經被偷偷換過;按照之前的流程,B通過公鑰加密自己生成的對稱加密祕鑰key2;傳送給A; 這次通訊再次被中間人攔截,儘管後面的通訊,兩者還是用key2通訊,但是中間人已經掌握了Key2;可以進行輕鬆的加解密;還是存在被中間人攻擊風險;

3、解決困境:權威的證書頒發機構CA來解決;

3.1製作證書:

作為服務端的A,首先把自己的公鑰key1發給證書頒發機構,向證書頒發機構進行申請證書;證書頒發機構有一套自己的公私鑰,CA通過自己的私鑰來加密key1,並且通過服務端網址等資訊生成一個證書籤名,證書籤名同樣使用機構的私鑰進行加密;製作完成後,機構將證書發給A;

3.2校驗證書真偽:

當B向服務端A發起請求通訊的時候,A不再直接返回自己的公鑰,而是返回一個證書; 說明:各大瀏覽器和作業系統已經維護了所有的權威證書機構的名稱和公鑰。B只需要知道是哪個權威機構發的證書,使用對應的機構公鑰,就可以解密出證書籤名;接下來,B使用同樣的規則,生成自己的證書籤名,如果兩個簽名是一致的,說明證書是有效的; 簽名驗證成功後,B就可以再次利用機構的公鑰,解密出A的公鑰key1;接下來的操作,就是和之前一樣的流程了;

3.3:中間人是否會攔截髮送假證書到B呢?

因為證書的簽名是由伺服器端網址等資訊生成的,並且通過第三方機構的私鑰加密中間人無法篡改; 所以最關鍵的問題是證書籤名的真偽;

4、https主要的思想是在http基礎上增加了ssl安全層,即以上認證過程;

什麼是HTTPS協議

相關文章