全面概括SSH協議的知識
說到SSH協議,它和安全是密不可分的。那么具體的工作層次,以及相關的一些基本架構,發展歷史和擴展。我們本文都有所涉及,希望能讓大家全面了解這個協議。
SSH為Secure Shell的縮寫,由IETF的網絡工作小組(Network Working Group)所制定;SSH為建立在應用層和傳輸層基礎上的安全協議。
傳統的網絡服務程序,如FTP、POP和Telnet其本質上都是不安全的;因為它們在網絡上用明文傳送數據、用戶帳號和用戶口令,很容易受到中間人(man-in-the-middle)攻擊方式的攻擊。就是存在另一個人或者一臺機器冒充真正的服務器接收用戶傳給服務器的數據,然后再冒充用戶把數據傳給真正的服務器。
而SSH是目前較可靠,專為遠程登錄會話和其他網絡服務提供安全性的協議。利用SSH協議可以有效防止遠程管理過程中的信息泄露問題。透過SSH可以對所有傳輸的數據進行加密,也能夠防止DNS欺騙和IP欺騙。
SSH之另一項優點為其傳輸的數據是經過壓縮的,所以可以加快傳輸的速度。SSH有很多功能,它既可以代替Telnet,又可以為FTP、POP、甚至為PPP提供一個安全的“通道”。
歷史
最初的SSH協議是由芬蘭的一家公司開發的,但是因為受版權和加密算法等等的限制,現在很多人都轉而使用OpenSSH。OpenSSH是SSH的替代軟件包,而且是開放源代碼和免費的。
基本架構
SSH協議框架中最主要的部分是三個協議:
傳輸層協議(The Transport Layer Protocol):傳輸層協議提供服務器認證,數據機密性,信息完整性等的支持。
用戶認證協議(The User Authentication Protocol):用戶認證協議為服務器提供客戶端的身份鑒別。
連接協議(The Connection Protocol):連接協議將加密的信息隧道復用成若干個邏輯通道,提供給更高層的應用協議使用。
同時還有為許多高層的網絡安全應用協議提供擴展的支持。
各種高層應用協議可以相對地獨立于SSH基本體系之外,并依靠這個基本框架,通過連接協議使用SSH的安全機制。
SSH的安全驗證
在客戶端來看,SSH提供兩種級別的安全驗證。
第一種級別(基于密碼的安全驗證),知道帳號和密碼,就可以登錄到遠程主機,并且所有傳輸的數據都會被加密。但是,可能會有別的服務器在冒充真正的服務器,無法避免被“中間人”攻擊。
第二種級別(基于密匙的安全驗證),需要依靠密匙,也就是你必須為自己創建一對密匙,并把公有密匙放在需要訪問的服務器上。客戶端軟件會向服務器發出請求,請求用你的密匙進行安全驗證。服務器收到請求之后,先在你在該服務器的用戶根目錄下尋找你的公有密匙,然后把它和你發送過來的公有密匙進行比較。如果兩個密匙一致,服務器就用公有密匙加密“質詢”(challenge)并把它發送給客戶端軟件。從而避免被“中間人”攻擊。
在服務器端,SSH也提供安全驗證。 在第一種方案中,主機將自己的公用密鑰分發給相關的客戶端,客戶端在訪問主機時則使用該主機的公開密鑰來加密數據,主機則使用自己的私有密鑰來解密數據,從而實現主機密鑰認證,確定客戶端的可靠身份。 在第二種方案中,存在一個密鑰認證中心,所有提供服務的主機都將自己的公開密鑰提交給認證中心,而任何作為客戶端的主機則只要保存一份認證中心的公開密鑰就可以了。在這種模式下,客戶端必須訪問認證中心然后才能訪問服務器主機。
SSH協議的可擴展能力
SSH協議框架中設計了大量可擴展的冗余能力,比如用戶自定義算法、客戶自定義密鑰規則、高層擴展功能性應用協議。這些擴展大多遵循IANA的有關規定,特別是在重要的部分,像命名規則和消息編碼方面。