非對稱加密 SSH免密登錄過程
概念
用戶擁有自己的一對公鑰和私鑰,其中公鑰可以被任意公開,而私鑰必須自行保管。
明文被公鑰加密后形成密文,需要對應的私鑰才能解密;反之被私鑰加密的密文需要對應的公鑰才能解密。
明文加密

如果竊聽者C獲取到了密文,沒有用戶B的私鑰也無法解密,保證了數據傳輸的安全。
數字簽名
由于只有用戶自己才能擁有自己的私鑰,所以用戶可以用私鑰將明文加密作為數字簽名,讓其他用戶通過對應的公鑰確認自己的身份(與需要發送的數據一起發送)。

但這里存在安全隱患,黑客H可能篡改用戶B保存的用戶A的公鑰c,改為為自己的公鑰h,這樣就能成功冒充用戶A通過身份認證,與B進行接下來的數據傳輸。

為了避免這一情況,用戶B選擇不相信自己保存的用戶A公鑰,而是要求用戶A同時發送自己的公鑰過來,而送過來的途中需要確保安全,所以引入了證書中心(Certificate Authority),對A發送的信息與公鑰使用證書中心的私鑰加密(讓用戶B知道這個數據一定是證書中心發來的,從而信任),然后用戶B使用證書中心的公鑰(存在于操作系統或瀏覽器中)解密,得到A的密文和A的公鑰。
SSH登錄
客戶端向主機發送登錄請求。
主機檢查在~/.ssh/中是否有客戶端的公鑰,且在信任列表.ssh/authorized_keys中。
- 如果不在,就要求客戶端輸入用戶密碼登錄,并發送主機的公鑰給客戶端,客戶端將輸入的用戶名密碼用主機公鑰加密,發送回主機,主機用私鑰解密,如果輸入正確就登錄成功。
- 如果在,主機還需要確認客戶端身份,發送主機公鑰和用客戶端公鑰加密的驗證信息給主機,主機用自己的私鑰解密驗證信息(證明身份),再用主機公鑰加密發回給主機,主機用自己的私鑰解密后,核對驗證信息,如果無誤則登錄成功。
posted on 2021-05-08 01:37 JuShen_Wang 閱讀(144) 評論(0) 收藏 舉報
浙公網安備 33010602011771號