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