網絡世界中的數據并不安全
- 網絡中無時無刻有大量的數據傳輸,傳輸過程中需要經過各種網絡設備和物理媒介
- 你的數據可能會在傳輸的某一個環節被一個“中間人”攔截,造成泄密,甚至會篡改你的數據,讓你發出錯誤的信息
SSH 為 Secure Shell 的縮寫,SSH 協議即為安全外殼協議,使用 SSH 就是為了保證遠程操作服務器的安全性
- 使用SSH能夠對傳輸數據進行加密,防止“中間人”篡改數據
- 使用SSH能夠對傳輸數據進行壓縮,可以加快傳輸速度
SSH 有口令、密鑰兩種驗證方式
- 口令方式的安全性較弱,你不能保證遠程的服務器就是你想要操作的服務器,同時弱口令也存在被破解的風險
- 密鑰方式的安全性較高,可以在最大程度上保證數據的安全性
密鑰算法
- 密鑰算法分為對稱加密和非對稱加密兩種方式,對稱加密方式的加密與解密使用同一個密鑰,非對稱加密則使用公鑰和私鑰
- RSA 密鑰算法是目前最廣泛使用的非對稱密鑰生成算法,該算法基于一個十分簡單的數論事實:將兩個大素數相乘十分容易,但想要對其乘積的結果進行因式分解卻極其困難,因此可以將兩個素數作為私鑰,相乘的結果作為公鑰
公鑰與私鑰
- 公鑰加密后的數據只能用私鑰解開,私鑰加密后的數據只能用公鑰解開
- 你的公鑰可以公開給任何需要的服務器,因此叫公鑰,你通過私鑰加密后發出去的數據,服務器通過你的公鑰都能正確解開
- 只要你的私鑰不泄露,你從服務器接收到的數據就是安全的,即使數據泄露,別人也無法查看數據內容,因為該數據只能通過你的私鑰解密
- 在一些場合,會在發送的數據時,將原文和通過私鑰加密后的原文(使用數字簽名)一起發送給對方,保證數據不會被“中間人”篡改,因為要篡改你的數據必須偽造數字簽名,這需要同時拿到你的公鑰(用于解密數據)和私鑰(用于偽造簽名)才有可能實現
- 為了進一步提高公鑰的安全性,后來出現了證書中心(certificate authority,CA)對公鑰進行認證,防止你交給服務器的公鑰被“中間人”替換,然后“中間人”冒充你與服務器進行通信,而通過證書中心認證后,就可以確保你發送給服務器的公鑰一定是你自己的
SSH 密鑰操作服務器流程
- 你通過一種密鑰算法創建一對密鑰(公鑰、私鑰),并提前把公鑰交給遠程服務器(服務器能看到你的公鑰)
- 服務器通過同樣的密鑰算法創建一對密鑰(公鑰、私鑰),并提前把公鑰交給你(你能看到服務器的公鑰)
- 你向遠程服務器發送公鑰,服務器在自身目錄下找到與你發送的公鑰保持一致的公鑰(你主動發起操作請求)
- 服務器通過你的公鑰加密數據,向你發送身份質詢數據(服務器確認你的身份,該數據只有你能正確解出原文,別人即使收到也無法解密)
- 你收到質詢信息后,通過自己的私鑰解密,身份驗證成功(你確認服務器的身份)
- 你通過服務器的公鑰加密數據,并發送數據到遠程服務器(你發送數據,該數據只有服務器能正確解出原文,別人即使收到也無法解密)
- 服務器收到數據后,通過服務器的私鑰解密數據(服務器接收數據)
- 服務器通過你的公鑰加密數據,并發送給你(服務器發送數據,該數據只有你能正確解出原文,別人即使收到也無法解密)
- 你通過自己的私鑰解密從服務器接收到的數據(你接收數據)
? ? ? 總結:公鑰大家都知道,私鑰只有自己有,使用對方的公鑰加密,使用自己的私鑰解密