- 資訊首頁(yè) > 網(wǎng)絡(luò )安全 >
- SSH的實(shí)現原理是什么
本篇內容介紹了“SSH的實(shí)現原理是什么”的有關(guān)知識,在實(shí)際案例的操作過(guò)程中,不少人都會(huì )遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學(xué)有所成!
SSH是一種協(xié)議標準,它的主要目的是實(shí)現遠程登錄和提供安全網(wǎng)絡(luò )服務(wù)。它的實(shí)現有很多種,最常用的就是開(kāi)源openssh。
對稱(chēng)加密和非對稱(chēng)加密
在講解SSH實(shí)現原理之前,我們先來(lái)了解下加密方式,我們都知道為了數據的安全,數據在互聯(lián)網(wǎng)上傳輸肯定是要加密。那加密又要分為兩種加密方式:
對稱(chēng)加密(秘鑰加密)
非對稱(chēng)加密(公鑰加密)
對稱(chēng)加密,就是加密和解密都是使用同一套秘鑰??聪聢D所示:
服務(wù)端和客戶(hù)端的交互過(guò)程如下圖:
對稱(chēng)加密的加密強度很高,但是這有一個(gè)很大的問(wèn)題。就是:如何保證秘鑰A的安全?當客戶(hù)端的數量非常大的時(shí)候,如何保證秘鑰的安全?一旦秘鑰泄漏出去,后果不堪設想。用戶(hù)的安全就沒(méi)有任何保障。所以非對稱(chēng)加密的出現就為了彌補這一點(diǎn)。
非對稱(chēng)加密有兩個(gè)秘鑰:“私鑰”和“公鑰”。公鑰加密后的密文,只能通過(guò)對應的私鑰進(jìn)行解密。而通過(guò)公鑰推理出私鑰的可能性微乎其微。下圖展示的是基本原理:
上圖在實(shí)際的使用中存在一個(gè)問(wèn)題,就是客戶(hù)端需要知道服務(wù)端的公鑰,不然沒(méi)法加密。所以需要服務(wù)端告知客戶(hù)端公鑰的一個(gè)過(guò)程。如下圖:
服務(wù)端收到客戶(hù)端的登錄請求,服務(wù)端把公鑰發(fā)送給客戶(hù)端
客戶(hù)端用這個(gè)公鑰,對密碼加密
客戶(hù)端將加密后的密碼發(fā)送給服務(wù)端
服務(wù)端用私鑰解密,驗證OK
返回驗證結果
私鑰是服務(wù)端獨有,這就保證了客戶(hù)端的登錄信息即使在網(wǎng)絡(luò )傳輸過(guò)程中被竊據,也沒(méi)有私鑰進(jìn)行解密,保證了數據的安全性,這充分利用了非對稱(chēng)加密的特性。
你覺(jué)得這樣就安全了嗎?
上述圖中有一個(gè)漏洞:客戶(hù)端如何保證接受到的公鑰就是目標服務(wù)端的?如果攻擊者截獲了客戶(hù)端的請求,發(fā)送自己的公鑰,那客戶(hù)端用這個(gè)公鑰加密的密碼,就能被攻擊者用自己的私鑰解密。這不是一個(gè)很大的漏洞嗎?
SSH如何做的?
SSH有兩種方式:
基于口令的認證;
基于公鑰認證
1. 基于口令的認證
從上面可以知道,我們的主要要解決的是“如何對服務(wù)端的公鑰進(jìn)行驗證”,客戶(hù)端只要對公鑰進(jìn)行確認下就OK了。通常在第一次登錄的時(shí)候,系統會(huì )出現下面提示信息:
he authenticity of host 'ssh-server.example.com (12.18.429.21)' can't be established. RSA key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d. Are you sure you want to continue connecting (yes/no)?
上面的信息說(shuō)的是:無(wú)法確認主機ssh-server.example.com(12.18.429.21)的真實(shí)性,不過(guò)知道它的公鑰指紋,是否繼續連接?
之所以用fingerprint代替key,主要是key過(guò)于長(cháng)(RSA算法生成的公鑰有1024位),很難直接比較。所以,對公鑰進(jìn)行hash生成一個(gè)128位的指紋,這樣就方便比較了。
輸入yes后,該host已被確認,并被追加到文件known_hosts中,然后就需要輸入密碼。
2. 基于公鑰認證
客戶(hù)端與服務(wù)端協(xié)商產(chǎn)生會(huì )話(huà)密鑰;
客戶(hù)端會(huì )向服務(wù)端發(fā)送一個(gè)登錄請求(如:root@192.168.1.2),發(fā)送的信息包括用戶(hù)名root和root的公鑰指紋,且所有信息都是通過(guò)會(huì )話(huà)密鑰加密過(guò)的。
服務(wù)端通過(guò)會(huì )話(huà)密鑰解密客戶(hù)端發(fā)送的數據得到請求登錄的用戶(hù)名root和root的公鑰指紋,然后讀取root用戶(hù)家目錄下的所有公鑰數據(/root/.ssh/autorized_keys文件中),并分別通過(guò)單向加密算法獲取各公鑰的數據指紋與客戶(hù)端發(fā)送過(guò)來(lái)的數據指紋做對比,從而找到客戶(hù)端上的root用戶(hù)的公鑰;
服務(wù)端使用找到的客戶(hù)端的公鑰對一個(gè)隨機數進(jìn)行加密發(fā)送發(fā)送給客戶(hù)端;
客戶(hù)端使用私鑰對服務(wù)端發(fā)送的隨機數密文進(jìn)行解密,然后把解密結果發(fā)送給服務(wù)端;
服務(wù)端驗證客戶(hù)端解密后的數據與自己發(fā)送的數據一致,則對客戶(hù)端身份驗證成功;
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系QQ:712375056 進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。
Copyright ? 2009-2021 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 珠海市特網(wǎng)科技有限公司 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站