前言
從Yeti的立場來看這件事,有兩種可能讓你想要學習SSH加密,
- 生命不夠痛苦
- 你是工程師
無論是哪一種,看完這篇文章後,希望苦痛會過去,美會留下
SSH簡介
1. 協商加密算法
- 連接建立:當SSH客戶端嘗試連接到伺服器時,首先會發送一個消息,列出客戶端支援的加密算法。
- 算法協商:伺服器回覆一個消息,確認將使用的加密算法,這些算法基於客戶端和伺服器都支援的算法列表。
2. 密鑰交換
- 生成臨時密鑰對:採用非對稱加密算法(如Diffie-Hellman密鑰交換協議),客戶端和伺服器共同生成一個臨時的、共享的會話密鑰,用於本次連接的對稱加密。
- 確保安全性:為了保護密鑰交換過程的安全,使用非對稱加密方法傳輸臨時密鑰,確保即使有人能夠截獲通信,也無法解密數據。
3. 身份認證 (推薦教學影片:What is SSH? [Beginner Git Tutorial])
- 伺服器認證:客戶端驗證伺服器的身份,通常是通過檢查伺服器發送的公鑰證書來完成。這一步確保客戶端連接到了正確的伺服器,防止中間人攻擊。
- 客戶端認證:伺服器驗證客戶端的身份,可以通過密碼、公鑰或其他機制進行。公鑰認證中,客戶端使用私鑰對隨機生成的數據進行簽名,伺服器用對應的公鑰驗證簽名。
4. 加密會話
- 對稱加密:一旦完成密鑰交換和身份認證,後續的通信就使用協商好的對稱加密算法和會話密鑰進行加密。對稱加密相比非對稱加密更快,適合加密大量數據。
- 數據完整性:使用雜湊函數(如SHA)對傳輸的數據包進行校驗,確保數據在傳輸過程中未被篡改。
5. 會話管理
- 持續通信:客戶端和伺服器使用會話密鑰對通信內容進行加密,直到會話結束。
- 會話結束:一旦會話結束,使用的臨時會話密鑰被廢棄,確保會話的安全性。
心得
SSH是個表面概念簡單,但研讀後很複雜的加密演算法,理解SSH之後,對於公私鑰會有更深一層的了解.
Yeti滿佩服這個SSH的發明者,能夠找到一個不交換彼此資訊,卻又能建立彼此溝通橋樑的演算法.