當前位置:編程學習大全網 - 編程語言 - SSL+socket 詳解-概念

SSL+socket 詳解-概念

SSL協議采用數字證書及數字簽名進行雙端實體認證,用非對稱加密算法進行密鑰協商,用對稱加密算法將數據加密後進行傳輸以保證數據的保密性,並且通過計算數字摘要來驗證數據在傳輸過程中是否被篡改和偽造,從而為敏感數據的傳輸提供了壹種安全保障手段。

SSL協議提供的服務主要有:

1)認證用戶和服務器,確保數據發送到正確的客戶機和服務器

認證用戶和服務器的合法性,使它們能夠確信數據將被發送到正確的客戶機和服務器上。客戶機和服務器都有各自的識別號,這些識別號由公開密鑰進行編號,為驗證用戶是否合法,SSL協議要求在握手交換數據時進行數字認證,以此確保用戶的合法性。

2)加密數據以防止數據中途被竊取

SSL協議所采用的加密技術既有對稱密鑰技術,也有公開密鑰技術。在客戶機和服務器進行數據交換前,交換SSL初始握手信息,在SSL握手信息中采用了各種加密技術對其進行加密,以保證其機密性和數據的完整性,並且用數字證書進行鑒別,這樣就可以防止非法用戶進行破譯。

3)維護數據的完整性,確保數據在傳輸過程中不被改變

SSL協議采用Hash函數和機密***享的方法提供信息的完整性服務,建立客戶機和服務器之間的安全通道,使所有經過SSL協議處理的業務在傳輸過程中能全部完整準確無誤的到達目的地。

SSL體系結構:

SSL協議位於TCP/IP協議模型的網絡層和應用層之間,使用TCP來提供壹種可靠的端到端的安全服務,它是客戶/服務器應用之間的通信不被攻擊抓取,並且始終對服務器進行認證,還可以選擇對客戶進行認證。SSL體系結構如圖1所示。

SSL協議位於TCP/IP協議模型的網絡層和應用層之間,使用TCP來提供壹種可靠的端到端的安全服務,它是客戶/服務器應用之間的通信不被攻擊抓取,並且始終對服務器進行認證,還可以選擇對客戶進行認證。

在SSL通訊中,首先采用非對稱加密交換信息,使得服務器獲得瀏覽器端提供的對稱加密的密鑰,然後利用該密鑰進行通訊過程中信息的加密和解密。為了保證消息在傳遞過程中沒有被篡改,可以加密HASH編碼來確保信息的完整性。SSL通訊過程,如圖2所示。

壹般情況下,當客戶端是保密信息的傳遞者時,客戶端不需要數字證書驗證自己身份的真實性,如電子銀行的應用,客戶需要將自己的賬號和密碼發送給銀行,因此銀行的服務器需要安裝數字證書來表明自己身份的有效性。在某些應用中,服務器端也需要對客戶端的身份進行驗證,這時客戶端也需要安裝數字證書以保證通訊時服務器可以辨別出客戶端的身份,驗證過程類似於服務器身份的驗證過程。

SSL Socket通信是對Socket通信的拓展。在Socket通信的基礎上添加了壹層安全性保護,提供了更高的安全性,包括身份驗證、數據加密以及完整性驗證。

SSL Socket雙向認證實現技術: JSSE(Java Security Socket Extension ),它實現了SSL和TSL(傳輸層安全)協議。在JSSE中包含了數據加密,服務器驗證,消息完整性和客戶端驗證等技術。通過使用JSSE,可以在客戶機和服務器之間通過TCP/IP協議安全地傳輸數據。為了實現消息認證:

密鑰和授權證書的生成方法:

使用Java自帶的keytool命令,在命令行生成。

1、生成服務器端私鑰kserver.keystore文件

keytool -genkey -alias serverkey -validity 1 -keystore kserver.keystore

2、根據私鑰,導出服務器端安全證書

keytool -export -alias serverkey -keystore kserver.keystore -file server.crt

3、將服務器端證書,導入到客戶端的Trust KeyStore中

keytool -import -alias serverkey -file server.crt -keystore tclient.keystore

4、生成客戶端私鑰kclient.keystore文件

keytool -genkey -alias clientkey -validity 1 -keystore kclient.keystore

5、根據私鑰,導出客戶端安全證書

keytool -export -alias clientkey -keystore kclient.keystore -file client.crt

6、將客戶端證書,導入到服務器端的Trust KeyStore中

keytool -import -alias clientkey -file client.crt -keystore tserver.keystore

生成的文件分成兩組,服務器端保存:kserver.keystore tserver.keystore 客戶端保存:kclient.keystore tclient.kyestore。

客戶端采用kclient.keystore中的私鑰進行數據加密,發送給服務端,服務器端采用tserver.keystore中的client.crt證書對數據解密,如果解密成功,證明消息來自可信的客戶端,進行邏輯處理; 服務器端采用kserver.keystore中的私鑰進行數據加密,發送給客戶端,客戶端采用tclient.keystore中的server.crt證書對數據解密,如果解密成功,證明消息來自可信的服務器端,進行邏輯處理。如果解密失敗,那麽證明消息來源錯誤。不進行邏輯處理。

SSL Socket雙向認證的安全性:

(1)可以確保數據傳送到正確的服務器端和客戶端。

(2)可以防止消息傳遞過程中被竊取。

(3)防止消息在傳遞過程中被修改.。

在系統運行中可能出現以下情況:

(1) 服務器端、客戶端都持有正確的密鑰和安全證書,此時服務器端和客戶端可以進行正常通信。

(2) 客戶端的密鑰和安全證書不正確,此時服務器端和客戶端不可以進行正常通信。

(3) 客戶端未持有密鑰和安全證書,此時服務器端和客戶端也不可以進行正常通信。

  • 上一篇:java培訓壹般多久能畢業?
  • 下一篇:如何做壹個優秀的SEO?應該如何做?
  • copyright 2024編程學習大全網