ssl加密原理

ssl加密原理

一,對稱加密

對稱加密是指服務器和客戶端都使用相同的祕鑰加密和解密數據
,當用戶和服務器建立加密連接時,用戶會得到服務器唯一的數據加密的祕鑰,所有的用戶,包括服務器,都是使用這個唯一的祕鑰加密自己的信息的。
如:客戶A在使用祕鑰K加密傳輸,被加密的密文被髮送到服務器上後,服務器使用相同的祕鑰K便可以解密A發送的密文。
在這裏插入圖片描述此時用戶B也和服務器建立加密連接,這裏用戶B使用的祕鑰也是K,也就是說用B的祕鑰是可以解密A的加密信息的。
這就體現出了對稱加密的一個巨大的漏洞:祕鑰的唯一性
在對稱加密算法中,所有的加密報文都可以被同一個開放的祕鑰K加解密。
那麼,當用戶B在與服務器請求到祕鑰K後,在通過對A的抓包後,便可使用祕鑰K解密A的所有加密報文,從而獲取A的隱私信息。
圖解如下:
在這裏插入圖片描述
所以,對稱加密由於祕鑰K的唯一性,幾乎等於明文傳輸,所以不可用。

二,非對稱加密

因對稱加密的不安全性不可用,所以有出現的新的加密方式:非對稱加密
首先,對稱加密的兩大缺點是,祕鑰的唯一性祕鑰的公開性。但是在非對稱加密中,這兩個缺點都得到了較好的解決。
非對稱加密,顧名思義,客戶與服務器雙方使用的加密的祕鑰是不同的。在非對稱加密中,原來唯一的祕鑰K,被拆分爲了兩個不同的祕鑰。分別爲服務器的私鑰SK,和客戶機的公鑰PK。
其中,公鑰PK是公開給用戶獲取的,而私鑰SK是一直保存在服務器端的,不向外開放的。
非對稱的加密解密流程爲:被私鑰SK加密的報文只能被公鑰PK解密,反之,被公鑰PK加密的報文只能被私鑰SK解密。

#私鑰:SK
#公鑰:PK
#客戶機數據:A Data
#服務器數據:S Data
#客戶加密報文:Y
#服務器加密報文:Y`
(A Data+PK)=Y
(Y+SK)=A Data
(S Data+SK)=Y`
(Y`+PK)=S Data

非對稱加密流程圖解:
在這裏插入圖片描述
以上,就是非對稱加密的基本原理。
如此一來,每一個客戶都只有公鑰,黑客便無法獲得用戶發送的隱私信息了。但是黑客仍然有公鑰,所以他仍然能夠解密服務器發送的信息。所以非對稱加密仍然是不太安全的。

三,對稱+非對稱加密

因爲非對稱機密仍然是不安全的,所以,人們結合了對稱與非對稱加密各自的優點,並由此創建了對稱+非對稱加密。
首先,我們來總結一下之前兩種加密方式各自的優缺點:

  • 對稱加密:

客戶與服務器雙方使用相同的祕鑰加密。
只要祕鑰不被泄露,那麼黑客就不能知道雙方任何一方的信息。

  • 非對稱加密:

客戶和服務器使用不同的祕鑰進行加密。
黑客只能得知服務器發送的信息。

既然對稱加密的祕鑰不泄露,黑客就不能獲取隱私信息。
非對稱加密中,黑客又不能獲取客戶發送的信息。
那麼如果我使用非對稱加密來加密對稱加密的祕鑰,再使用對稱加密,這樣其他用戶便不能得知我使用的祕鑰了。
這便是對稱+非對稱加密的創立思想。接下來我們詳細介紹其原理。
客戶端向服務器請求公鑰,服務器下發,
客戶端使用公鑰加密自己對稱加密的祕鑰,發送給服務器,
服務器解析後,使用對稱加密與客戶機進行通訊。

如此一來,黑客便不能得知客戶機向服務器發送的祕鑰,從而客戶端和服務器端任何一方的信息黑都不能得知了。

#私鑰:SK
#公鑰:PK
#祕鑰:K
#客戶機數據:A Data
#服務器數據:S Data
#X:非對稱加密後的K
#客戶加密報文:Y
#服務器加密報文:Y`
(PK+K)=X
(SK+X)=K
(K+S Data)=Y`
(K+A Data)=Y

圖解:
在這裏插入圖片描述
如上圖,

  1. 服務器先下發公鑰給客戶端(黑客可以得知)
  2. 客戶端指定祕鑰K,並用公鑰PK加密後發送給服務器(黑客不能解密)
  3. 服務器收到密文用私鑰SK解密,使用K加密信息發送給客戶端(黑客沒有K所以不能得知)。
  4. 客戶端繼續用K加密信息進行通信。(黑客不可得知)

如此一來,對稱+非對稱加密的加密方式已經可以保證用戶的信息不會被其他用戶解密了,無論是服務器的信息還是客戶端的信息。

四、中間人攻擊

雖然對稱+非對稱加密已經看似十分安全了,但是仍然存在漏洞。
試想一下,如果黑客在客戶訪問訪問服務器之前,對客戶進行DNS劫持,使得客戶訪問到黑客自己建立的僞裝服務器,僞裝服務器擁有自己的私鑰公鑰對,客戶所申請到的公鑰是僞裝服務器的僞公鑰(FPK),當客戶端使用FKP與僞裝服務器建立連接後,此時,黑客可以通過自己的僞公鑰和僞私鑰對客戶端發送的所有加密報文進行解密。再通過使用客戶端發送的信息去與真正的服務器進行通訊,並將服務器響應的信息通過自己的僞服務器返還給客戶端。
圖解:
在這裏插入圖片描述
如此一來,黑客可以通過自己的僞造服務器得知客戶端的所有隱私信息,而客戶端卻無法察覺到黑客的存在,仍然認爲自己在與真正的服務器進行通訊。

五、CA認證

既然對稱+非對稱加密也是不安全的,那麼我們仍然需要一項新的技術來保證我們http通訊的安全。
首先,我們來分析一下中間人攻擊所利用的漏洞:
客戶端向服務器發起連接,服務器下發祕鑰,進行連接。如此一來,客戶端其實並不能判斷自己是否是在與真正的服務器端進行連接。這也就給了黑客僞造服務器的機會。
那如果利用下發的公鑰來判斷服務器的身份的話,就可以確保自己在與真正的服務器進行連接了。
那麼,我們該如何使公鑰可以驗證服務器的身份呢?
這裏我們引入一個第三方驗證機構,所有的公網服務器都要向這個第三方驗證機構進行身份覈實,然後第三方驗證機構向他發送一個證書,證明這個服務器是真實的。
在真實環境中,這個所謂的第三方驗證機構叫做CA證書機構(Certificate Authority),而服務器的身份是指服務器所使用的DNS域名。
CA提供一套非對稱加密系統,所有希望被CA認證的服務器都要將自己的公鑰發送給CA,當CA認證了服務器的身份(DNS域名)後,就就會用自己的私鑰(CSK)來加密服務器的公鑰PK,加密後的文件便是該服務器的證書(Lience),並返還給該服務器。
當客戶端要與服務器通訊時,客戶端先向服務器請求證書,收到證書後,由於證書是有CA證書頒發中心的私鑰CSK加密的,所以需要公鑰CPK解密,但是如果客戶端向CA證書服務器請求的話,就又會被中間人攻擊。所以,爲了防止這種情況的發生,所有有效的CA證書頒發機構的公鑰CPK都是被寫死在操作系統中的,客戶端不用想CA中心申請,直接使用本地操作系統內的CPK,這樣就避免了被中間人攻擊。
在解密證書(Lience)後,客戶端得到了公鑰PK,同時由於證書可以被信任的CPK解密,所以該服務器是可信任的,之後,便可和服務器進行通訊了。
圖解:
CA證書申請
在這裏插入圖片描述
在這裏插入圖片描述
至此,CA證書驗證系統的基礎原理已經講完了。
現在幾乎所有的https加密協議都是使用CA證書的驗證。
如果這篇文章對你有幫助,點個贊可否?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章