SSH為一項(xiàng)創(chuàng)建在應(yīng)用層和傳輸層基礎(chǔ)上的安全協(xié)議奸鸯。最早的時(shí)候咪笑,互聯(lián)網(wǎng)通信都是明文通信,一但被截獲娄涩,內(nèi)容就暴露無(wú)遺窗怒,之后在1995年,芬蘭學(xué)者Tatu Ylonen設(shè)計(jì)了SSH協(xié)議蓄拣,將信息加密扬虚,成為互聯(lián)網(wǎng)安全的一個(gè)基本解決方案,迅速在全世界獲得推廣球恤。當(dāng)然需要指出的是辜昵,SSH只是一種協(xié)議,存在著很多實(shí)現(xiàn)咽斧,著名的有OpenSSH以及PuTTY堪置。
在客戶端來(lái)看,SSH提供了兩種級(jí)別的安全驗(yàn)證:
第一種級(jí)別(基于密碼的安全驗(yàn)證)张惹,即賬號(hào)+密碼舀锨,但是可能有別的服務(wù)器在冒充真正的服務(wù)器,無(wú)法避免被“中間人”攻擊(man-in-the-middle)宛逗;
第二種級(jí)別(基于密鑰的安全驗(yàn)證)坎匿,這里的密鑰即包括公鑰、私鑰拧额。這些都屬于密碼學(xué)的概念碑诉,容易混淆。接下來(lái)闡述下加密侥锦、認(rèn)證进栽、公鑰、私鑰的概念和關(guān)系恭垦。
首先明確加密快毛、認(rèn)證兩個(gè)概念:
加密是將數(shù)據(jù)資料加密格嗅,使得非法用戶即使截獲到加密過的資料,也無(wú)法獲取正確的內(nèi)容唠帝,所以數(shù)據(jù)加密可以保護(hù)數(shù)據(jù)屯掖,它的重點(diǎn)在于數(shù)據(jù)的安全性。身份認(rèn)證是用來(lái)判斷某個(gè)身份的真實(shí)性襟衰,其重點(diǎn)在于用戶的真實(shí)性贴铜。兩者的側(cè)重點(diǎn)是不同的。
其次了解公鑰和私鑰的概念:
現(xiàn)代密碼體制中加密盒解密采用不同的密鑰(公鑰和私鑰)瀑晒,也就是非對(duì)稱密鑰密碼系統(tǒng)绍坝,是從前對(duì)稱加密方式的提高與增強(qiáng)。每個(gè)通信方均需兩個(gè)密鑰:公鑰和私鑰苔悦。公鑰用來(lái)加密/驗(yàn)章用的轩褐,私鑰用來(lái)解密/簽章。
1玖详,公鑰和私鑰成對(duì)出現(xiàn)
2把介,公開的密鑰叫公鑰,只有自己知道的叫私鑰
3蟋座,用公鑰加密的數(shù)據(jù)只有對(duì)應(yīng)的私鑰可以解密
4拗踢,用私鑰加密的數(shù)據(jù)只有對(duì)應(yīng)的公鑰可以解密
5,如果可以用公鑰解密蜈七,則必然是對(duì)應(yīng)的私鑰加的密
6秒拔,如果可以用私鑰解密,則必然是對(duì)應(yīng)的公鑰加的密
接下來(lái)用電子郵件的方式說(shuō)明一下原理飒硅。收發(fā)郵件需實(shí)現(xiàn)如下目的:
1. A發(fā)送給B的內(nèi)容必須加密砂缩,在郵件的傳輸過程中不能被別人看到。(加密)
2. 必須保證是A發(fā)送的郵件三娩,不是別人冒充我的庵芭。(認(rèn)證)
要達(dá)到發(fā)送一個(gè)加密郵件的目標(biāo),必須發(fā)送郵件的雙方都有公鑰和私鑰雀监,且A必須擁有B的公鑰双吆,B也必須擁有A的公鑰。
當(dāng)A->B資料時(shí)会前,A會(huì)使用B的公鑰加密好乐,這樣才能確保只有B能解密查看真實(shí)內(nèi)容,即加密機(jī)制瓦宜。
驗(yàn)證方面則是使用簽/驗(yàn)章的機(jī)制蔚万,A傳資料給B(當(dāng)然不只是B,所有有A公鑰的人都可以)時(shí)临庇,會(huì)以A的私鑰做簽章反璃,因?yàn)樗借€只有A手里有昵慌,如此所有收到訊息的人都可以用A的公鑰進(jìn)行驗(yàn)章,便可確認(rèn)訊息是由 A 發(fā)出來(lái)的了淮蜈,即認(rèn)證機(jī)制斋攀。
接下來(lái)把wikipedia上關(guān)于SSH第二種級(jí)別的解釋補(bǔ)上:
第二種級(jí)別(基于密鑰的安全驗(yàn)證),需要依靠密鑰梧田,也就是你必須為自己創(chuàng)建一對(duì)密鑰淳蔼,并有公有密鑰放在需要訪問的服務(wù)器上〔妹校客戶端軟件會(huì)向服務(wù)器發(fā)出請(qǐng)求肖方,請(qǐng)求用你的密鑰進(jìn)行安全驗(yàn)證。服務(wù)器收到請(qǐng)求之后未状,先在你在該服務(wù)器的用戶根目錄下尋找你的公鑰,然后將它和你發(fā)送過來(lái)的公鑰進(jìn)行比較析桥。如果兩個(gè)密鑰一致司草,服務(wù)器就用公鑰加密“質(zhì)詢”(challenge),并把它發(fā)送給客戶端軟件泡仗,從而避免被“中間人”攻擊埋虹。
在服務(wù)器端,SSH也提供安全驗(yàn)證娩怎。在第一種方案中搔课,主機(jī)將自己的公鑰分發(fā)給相關(guān)的客戶端,客戶端在訪問主機(jī)時(shí)則使用該主機(jī)的公鑰加密數(shù)據(jù)截亦,主機(jī)則使用自己的私鑰來(lái)解密數(shù)據(jù)爬泥,從而保證數(shù)據(jù)的保密性。
第二種方案中崩瓤,存在一個(gè)密鑰認(rèn)證中心(CA)袍啡,所有提供服務(wù)的主機(jī)(客戶端也可以)都將自己的公鑰以及身份信息交給認(rèn)證中心,當(dāng)然該認(rèn)證中心是權(quán)威機(jī)構(gòu)却桶,擔(dān)保證書信息的有效性境输。認(rèn)證中心在核實(shí)身份后,發(fā)給服務(wù)器一個(gè)數(shù)字證書颖系,該證書是認(rèn)證中心用自己的私鑰對(duì)服務(wù)器的一些相關(guān)信息和公鑰一起進(jìn)行加密的嗅剖,自此,服務(wù)端就可以使用自己的數(shù)字證書進(jìn)行相關(guān)活動(dòng)嘁扼。服務(wù)端用客戶端的公鑰將內(nèi)容加密后信粮,用自身的私鑰簽章,連同數(shù)字證書偷拔,一同發(fā)給客戶端蒋院】鞴常客戶端收到服務(wù)端發(fā)來(lái)的信息時(shí),用CA的公鑰解開數(shù)字證書欺旧,就可以拿到服務(wù)端的真實(shí)公鑰以及加密信息了姑丑。當(dāng)然數(shù)字證書只在特定時(shí)間段內(nèi)有效。
好了辞友,把SSH以及公鑰栅哀、私鑰的概念基本理順了,具體的原理只能說(shuō)還有待進(jìn)一步的學(xué)習(xí)了称龙。