簡介
本檔案介紹安全殼層(SSH)交涉期間的封包層級交換。
必要條件
需求
思科建議您瞭解基本的安全概念:
採用元件
本文件所述內容不限於特定軟體和硬體版本。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
SSH協定
SSH協定是一種從一台電腦到另一台電腦的安全遠端登入方法。SSH應用基於客戶端 — 伺服器架構,將SSH客戶端例項連線到SSH伺服器。
SSH交換
1. SSH的第一步稱為 Identification String Exchange
.
1.1.客戶端構造資料包並將其傳送到伺服器,該伺服器包含:
使用者端通訊協定版本和軟體版本
1.2.伺服器使用自己的標識字串交換進行響應,包括其SSH協定版本和軟體版本。
伺服器通訊協定版本和軟體版本
2.下一步是Algorithm Negotiation.
在本步驟中,客戶端和伺服器協商這些演算法:
- 金鑰交換
- 加密
- 基於雜湊的消息驗證代碼(HMAC)
- 壓縮
2.1.客戶端向伺服器傳送金鑰交換Init消息,指定其支援的演算法。演算法按優先順序列出。
客戶端金鑰交換初始化
客戶端支援的演算法
2.2.伺服器使用自己的金鑰交換初始化消息進行響應,列出其支援的演算法。
2.3.由於這些報文同時交換,因此雙方會比較各自的演算法清單。如果兩端支援的演算法中有匹配項,則繼續下一步。如果沒有完全匹配項,伺服器將從客戶端的清單中選擇其也支援的第一個演算法。
附註:如果客戶端和伺服器無法就通用演算法達成一致,則金鑰交換會失敗。
伺服器金鑰交換初始化
3.然後,雙方進入使用DHKey Exchang
e
金鑰交換生成共用金鑰階段,並對伺服器進行身份驗證:
3.1.客戶端生成金鑰對Public and Private,
,並在Diffie-Hellman組交換初始化資料包中傳送DH公鑰。此金鑰對用於金鑰計算。
客戶端Diffie-Hellman組交換初始化
3.2.伺服器生成自己的金鑰對,使用客戶端的公鑰和自己的金鑰對計算共用密Public and Private k
鑰。
3.3.伺服器還使用以下輸入值計算Exchange雜湊:
- 客戶端標識字串
- 伺服器標識字串
- 客戶端金鑰交換初始的負載
- 伺服器金鑰交換初始化負載
- 來自主機金鑰的伺服器公鑰(RSA金鑰對)
- 客戶端DH公鑰
- 伺服器DH公鑰
- 共用金鑰
3.4.計算雜湊後,伺服器使用其RSA私鑰對其進行簽名。
3.5.伺服器構建一條消息Diffie-Hellman Group Exchange,其中包括:
- 伺服器的RSA公鑰(幫助客戶端驗證伺服器)
- 伺服器的DH公鑰(用於計算共用金鑰)
- 雜湊(驗證伺服器並證明伺服器已生成共用金鑰,因為金鑰是雜湊計算的一部分)
伺服器Diffie-Hellman組交換應答
3.6.在收到Diffie-Hellman組交換應答後,客戶端以相同方式計算雜湊值,並將其與收到的雜湊值進行比較,使用伺服器的RSA公鑰對其進行解密。
3.7.在解密接收的HASH之前,客戶端必須驗證伺服器的公鑰。此驗證透過由憑證授權單位(CA)簽署的數字憑證完成。 如果證書不存在,則由客戶端決定是否接受伺服器的公鑰。
註:首次使用SSH登入不使用數位證書的裝置時,可能會出現一個彈出視窗,要求您手動接受伺服器的公鑰。為了避免每次連線時看到此彈出視窗,您可以選擇將伺服器的主機金鑰新增到您的快取。
伺服器公鑰
4.由於共用金鑰現在已生成,因此兩端都使用它來派生這些金鑰:
- 加密金鑰
- IV金鑰 — 這些隨機數用作對稱演算法的輸入以提高安全性。
- 完整性金鑰
金鑰交換的結束由消息交換發出信NEW KEYS
號,消息交換通知每一方,未來的所有消息都使用這些新金鑰加密和保護。
客戶端和伺服器新金鑰
5.最後一步是服務請求。客戶端向伺服器傳送SSH服務請求資料包以啟動使用者身份驗證。伺服器使用SSH服務接受消息進行響應,提示客戶端登入。此交換通過已建立的安全通道進行。
相關資訊