簡書 賈小強(qiáng)
轉(zhuǎn)載請注明原創(chuàng)出處飘诗,謝謝!
非對稱加密是一種公開密鑰密碼系統(tǒng),要求密鑰成對使用致板,即加密和解密分別由兩個密鑰來實現(xiàn)绸贡,每個用戶都有一對密鑰侠碧。典型的公開秘鑰算法如RSA算法
應(yīng)用
- 通過Linux 或者M(jìn)ac 的Terminal使用ssh命令,登錄遠(yuǎn)程主機(jī)(將公鑰追加到authorized_keys践樱,可以免密碼登錄)
- github網(wǎng)站翰灾,可以以ssh協(xié)議方式缕粹,上傳下載(將自己的公鑰交給github,然后自己保留對應(yīng)的私鑰纸淮,這樣git push或者git pull不再需要輸入密碼)
角色
按照密碼學(xué)慣例
人名 | 角色 |
---|---|
Alice | 所有協(xié)議的第一個參加者 |
Bob | 所有協(xié)議的第二個參加者 |
Mallory | 惡意的主動攻擊者 |
Peggy | 證明人 |
簡單說平斩,如果Alice,使用非對稱加密和Bob建立連接(登錄)咽块,我們就可以認(rèn)為绘面,這種連接是安全的,即使加密后的密碼被中途截獲也無法破解出真正的密碼侈沪。
有密碼連接
- Bob收到Alice的請求揭璃,把自己的公鑰發(fā)給Alice。
- Alice將密碼用Bob的公鑰加密后亭罪,發(fā)送給Bob瘦馍。
- Bob用自己的私鑰解密收到的加密內(nèi)容,如果密碼正確应役,那么連接成功情组。
中間人攻擊
- 如果Mallory冒充Bob,截獲了登錄請求箩祥,并給Alice發(fā)一個自己偽造的公鑰
- Alice把密碼用Mallory的公鑰加密后發(fā)送給Mallory
- Mallory用自己的私密解密院崇,從而獲取密碼
- Mallory再用這個密碼冒充Alice和Bob建立連接
解決方案
讓Alice明確的知道要連接的人就是Bob,那么Bob可以讓Peggy證明(在網(wǎng)站上將自己的公鑰指紋貼出來)袍祖,這樣Alice在連接的時候底瓣,比對公鑰指紋就能知道對方是不是真的Bob
無密碼連接
- Alice將自己的公鑰發(fā)給Bob保存
- Bob收到Alice的請求,然后向Alice發(fā)送一段隨機(jī)字符串
- Alice用自己的私鑰加密后蕉陋,再發(fā)給Bob捐凭。
- Bob用事先儲存Alice的公鑰解密,如果字符串相同凳鬓,就證明就是Alice柑营,建立連接成功
文件
實際比如Linux Terminal使用ssh存在三種類型的文件,每臺機(jī)器都可以具有它們村视。
- id_rsa.pub 和 id_rsa:保存每個角色各種的公鑰官套,私鑰
- known_hosts:保存一些可信賴的遠(yuǎn)程主機(jī)的公鑰,如果連接的主機(jī)不在其中,那么會輸出提示對方的公鑰指紋奶赔,這個時候就需要權(quán)衡惋嚎,如到網(wǎng)站看指紋是否正確,從而避免中間人攻擊
- authorized_keys:保存被設(shè)置為免密碼登錄機(jī)器的公鑰
總結(jié)
可以發(fā)現(xiàn)公鑰即可以用于加密站刑,也可以用于解密另伍,私鑰同樣如此。連接雙方都各自保存了對方的公鑰绞旅,不過作用不一樣
Happy Learning !!