SSH兩種認證方式原理和過程


SSH是一種加密的網絡傳輸協議,可在不安全的網絡中為網絡服務提供安全的傳輸環境。SSH通過在網絡中創建安全隧道來實現SSH客戶端與服務器之間的連接。雖然任何網絡服務都可以通過SSH實現安全傳輸,SSH最常見的用途是遠程登錄系統,人們通常利用SSH來傳輸命令行界面和遠程執行命令。

SSH以非對稱加密方式實現身份驗證,主要有以下兩種:

  • 基於密碼的安全驗證

  • 基於密鑰的安全驗證

1.基於密碼的安全驗證

是使用自動生成的公鑰-私鑰對來簡單地加密網絡連接,隨后使用密碼認證進行登錄,如圖所示。

 

身份認證通過,然后是交換會話密鑰(對稱加密),使用會話密鑰對之后傳遞的數據進行加密,即傳輸數據加密,過程如下。:使用對稱加密效率高。

  客戶端生成會話數據加密 sess_key,使用服務端公鑰 ser_rsa.pub 加密后傳輸給服務器(會話密鑰),

  服務器獲取到后使用私鑰 ser_rsa 解密,得到sess_key,

  客戶端和服務器通過 sess_key 進行會話數據安全傳輸,

  即客戶端和服務器用sess_key 分別對傳輸數據進行加密和解密。

但是,這種認證方式無法避免“中間人”攻擊,可能會有別的服務器在冒充真正的服務器。

 

2.基於密鑰的安全驗證

客戶端生成一對公鑰和私鑰,並將自己的公鑰發送到服務器上,認證過程不需要輸入密碼,避免“中間人”的攻擊,如圖所示。

 

認證成功后,使用對稱加密的方式傳輸數據。

風險點:在第一次將客戶端公鑰發送到服務器這一步,還是有可能受到“中間人”的攻擊,如果首次連接沒有中間人,之后的連接就無需擔心中間人,因為中間人給出的公鑰和服務端給出的公鑰相同的可能性可以忽略。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM