SSH比SSL更高層,更安全?請看兩者4大區(qū)別—基于原理和協議
“SSH 和 SSL 的區(qū)別?”
“難道不是蘋果和橙子的區(qū)別?” “這種比較有什么意義嗎?” |
80%的人會有這樣的疑問,這明明是兩種不同的東西嘛。
是的,這看似不是一個合理的比較。普遍的認知是:
- SSL是一種保護通過網絡傳輸的數據的通用方法
- SSH是一種用于登錄和共享數據的網絡程序
他們差別很大。但仔細想想,他們功能相似,加密方式相似,這是上天的安排,還是冥冥中的巧合?
看似風馬牛不相及,你真的認真對比過他們嗎?工作中,你又是否偶爾會混淆他們呢?下面讓我們基于原理和協議一起來一探究竟……
一、SSL
SSL,即安全套接層(Secure Sockets Layer),它是一種安全協議,是Netscape公司在推出Web瀏覽器首版時一起提出的。
SSL證書主要是部署在網站服務器中,通過SSL協議實現瀏覽器客戶端與網站服務器通信鏈路上的數據加密,并認證網站服務器身份,防止釣魚網站。它用來保障你的瀏覽器和網站服務器之間安全通信,免受網絡“中間人”竊取信息。
傳統的HTTP協議采用明文傳輸數據,用戶數據存在被竊取和篡改的風險。而部署了SSL證書的網站,可以采用安全的HTTPS協議進行訪問。當瀏覽器訪問以“https://”開頭的URL時,瀏覽器通過SSL連接使用HTTP。SSL協議會在數據傳輸之前對數據進行加密再進行網絡傳輸,保證了用戶數據在傳輸鏈路上的安全。
SSL協議包含兩個子協議:
- 記錄協議(SSL Record Protocol):說明SSL的數據包應該如何封裝的。位于OSI七層模型的會話層上,為不同機器上的用戶建立和管理會話。
- 握手協議(SSL Handshake Protocol):說明通信雙方如何協商共同決定使用什么算法以及算法使用的key。它在OSI七層模型會話層的下一層——表示層上,對他們之間的網絡聯接進行加密解密。
二、SSH
SSH,也就是Security Shell,由 IETF 的網絡小組(Network Working Group)所制定,是目前較可靠,專為遠程登錄會話和其他網絡服務提供安全性的協議。
SSH最初是UNIX系統上的一個程序,后來又迅速擴展到其他操作平臺。SSH相當于一個隧道,數據通過的時候保護它不被泄露和篡改,為shell提供安全的傳輸和運用環(huán)境。具體來說,通過它可以安全的遠程實行另一臺UNIX體系上機器的指令。
SSH只是一種協議,它有很多實現方法。在Linux中SSH幾乎是標配,其中用的最多的實現是OpenSSH。在Windows系統中使用SSH,會用到另一種軟件PuTTY。這就相當于用QQ遠程在別的電腦上登錄一樣,是一種安全地遠程登錄服務器的方法。
在互聯網層次中,SSH與HTTP,FTP類似,歸于OSI七層參考模型中的應用層協議,它是使用TCP協議的應用層服務中的一員。
三、SSH和SSL之間的區(qū)別和關聯是什么?
1. 在OSI七層模型中的位置
看完前面的介紹,我們了解到 SSL 是保護網絡傳輸數據的協議,是安全地在互聯網中傳輸的基石。而 SSH 只是一種用于主機用戶登錄,安全共享數據的網絡應用程序。它們在OSI七層模型中位于不同的位置:
2. 功能的關聯與差異
(1) 差異
從功能上來講,他們差異很大。
SSH 代表了“Secure Shell”。我們關心它是因為,它使聯網的計算機1能夠訪問聯網計算機2上的shell,以計算機1的身份登錄主機,并對他進行操作。
SSL 代表“安全套接字層”。我們之所以關注它,是因為它使瀏覽器能夠以一種安全的加密方式在web服務器之間傳輸數據,從而使監(jiān)視所有internet流量的第三方間諜難以生存。SSL和主機用戶名登錄沒有任何關系,它本身并不實現主機登錄的功能,它只是一個單純的加密功能。
(2) 關系
SSL和SSH都必須提供在不安全通道上加密和解密數據的系統。SSH有自己獨立于SSL的傳輸協議,所以這意味著SSH在底層不使用SSL。
為了方便理解,可以簡單的認為功能上:SSH = SSL + 用戶登錄功能等應用層協議。
3. 加密方式的關聯與差異
從嚴格密碼學角度來看,他們身份驗證的加密方式不同。
SSL 和 SSH 都提供加密元素,以便為檢查完整性的機密數據傳輸構建隧道。
- SSH 使用所謂的 encryption -and-MAC ,即將加密的消息與明文消息的身份驗證代碼(MAC)并列,以添加完整性。這并不是完全安全的(即使看起來已經足夠安全了)。
- SSL 使用 MAC-then- encrypt ,即將MAC與明文并列,然后對它們進行加密。這也不是最好的,因為在一些分組密碼模式下,MAC的某些部分可以猜測并顯示密碼上的一些內容。這導致了TLS 1.0中的漏洞。老的算法譬如:TLS_RSA_WITH_AES_128_CBC_SHA 和TLS_RSA_WITH_RC4_128_MD5 都是mac-then-encrypt模式。
兩種加密方式它們都有潛在的理論弱點。最強的方法是Encrypt-then-MAC,它在IPsec ESP中實現。
4. 安全性比較
從安全性上來講,Secure Shell和SSL各有千秋。
SSL有證書中心(CA)公正,可以確定發(fā)送者的身份。而SSH沒有,可能會被“中間人攻擊”,它相當于現代版的竊聽。如果攻擊者插在用戶與遠程主機之間(比如在公共wifi區(qū)域),用偽造的公鑰,獲取用戶的登錄密碼。再用這個密碼登錄遠程主機,那么SSH的安全機制就蕩然無存了。不過確保禁用了不安全的SSL/TLS協議,且所訪問的網址前面有HTTPS作為開頭,可以避免大多數的中間人攻擊。
SSL終止代理可以處理傳入的SSL連接,解密SSL并將未加密的請求傳遞給其他服務器。SSL允許您通過簽名證書使用PKI(公鑰基礎設施)。而使用SSH,您必須通過ftp等其他協議手動交換密鑰指紋。
SSH有一個用戶身份驗證層,這是SSL所缺乏的(不過是因為它并不需要驗證功能)。在使用utf – 8編碼時,SSH協議使用了更多的協議??紤]到有更多的潛在攻擊,SSH的攻擊面似乎更大。但這只是因為SSH內建了一個完整的應用程序。安全性和SSL其實相差無幾。
從概念上講,我們可以使用SSH并將隧道部分替換為SSL中的隧道部分,甚至還可以使用HTTPS并使用SSH-with-data-transport替換SSL事務,并使用鉤子從其證書中提取服務器公鑰。沒有科學上的不可能性,如果做得恰當,它們的安全性將保持不變。