專利名稱:基于安全命令解釋協(xié)議的用戶認(rèn)證方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)網(wǎng)絡(luò)安全技術(shù)領(lǐng)域,特別涉及基于SSH協(xié)議的用戶認(rèn)證技術(shù)。
背景技術(shù):
安全命令解釋(SSH,Secure Shell)協(xié)議是一個(gè)計(jì)算機(jī)網(wǎng)絡(luò)通信協(xié)議,遵守該協(xié)議的程序可以登錄到另外一臺(tái)計(jì)算機(jī)或網(wǎng)絡(luò)設(shè)備上去,并可以向遠(yuǎn)端機(jī)器發(fā)送命令,遠(yuǎn)端機(jī)器執(zhí)行該命令并將執(zhí)行結(jié)果發(fā)回。所有向網(wǎng)絡(luò)上發(fā)送的內(nèi)容都被加密,從而在不安全的網(wǎng)絡(luò)上提供了安全的通信。
目前常用的計(jì)算機(jī)之間通信的程序都采用客戶端/服務(wù)器方式,服務(wù)器上運(yùn)行的程序按某種協(xié)議規(guī)定的方式等待客戶端發(fā)來連接請(qǐng)求,在收到客戶端發(fā)來的連接請(qǐng)求之后,雙方按協(xié)議規(guī)定進(jìn)行協(xié)商和通信。雙方的通信是可以被其他計(jì)算機(jī)監(jiān)聽到的,因此在不加密的情況下很容易泄密。
為了解決通信安全問題,SSH協(xié)議采用了嚴(yán)格的加密技術(shù)。在SSH協(xié)議開始建立連接和進(jìn)行用戶認(rèn)證的時(shí)候,使用RSA加密算法。RSA算法是一種非對(duì)稱密鑰加密算法。在RSA算法中,每一對(duì)密鑰分為公共密鑰和私有密鑰,用公共密鑰加密的數(shù)據(jù)必須用私有密鑰才能進(jìn)行解密;同樣,用私有密鑰加密的數(shù)據(jù)也必須用公共密鑰進(jìn)行解密。公共密鑰是可以公開,讓對(duì)端知道的;私有密鑰是私自保存,不能公開的。在SSH協(xié)議中,服務(wù)器擁有合法客戶端用戶的公共密鑰,而客戶端用戶則擁有自己的私有密鑰。
SSH協(xié)議規(guī)定用戶登錄過程中雙方的協(xié)商分為四個(gè)步驟1)版本協(xié)商;2)密鑰交換;
4)會(huì)話階段。
在版本協(xié)商階段,雙方通過相互發(fā)送版本信息,確定所使用的SSH協(xié)議的版本。
在密鑰交換階段,服務(wù)器將自己所使用的公共密鑰發(fā)送給客戶端,以便客戶端用該公共密鑰對(duì)服務(wù)器發(fā)送的數(shù)據(jù)進(jìn)行解密。
在認(rèn)證階段,雙方建立起信任關(guān)系。
在會(huì)話階段,雙方進(jìn)行數(shù)據(jù)的傳送,直到有一方退出通信。
在認(rèn)證階段,現(xiàn)有的SSH協(xié)議共提供以下四種方法對(duì)用戶進(jìn)行認(rèn)證1、主機(jī)認(rèn)證方法;2、純RSA認(rèn)證方法;3、密碼認(rèn)證方法;4、主機(jī)與RSA結(jié)合方法。
現(xiàn)有的采用主機(jī)認(rèn)證方法是基于客戶端主機(jī)名和IP地址的一種認(rèn)證方法,這種方法由Unix系統(tǒng)的命令rlogin和rsh采用,用戶必須滿足下面兩個(gè)條件才能訪問遠(yuǎn)端主機(jī)。一是本地主機(jī)必須被登記在遠(yuǎn)端主機(jī)的/etc/hosts.equiv文件中,二是本地主機(jī)和用戶名必須包含在遠(yuǎn)端用戶帳號(hào)$HOME/.rhosts文件中。當(dāng)上述兩個(gè)條件滿足時(shí),用戶登錄時(shí)不需口令。
這種認(rèn)證方法在一般情況下是不建議使用的,因?yàn)橥ㄟ^IP地址欺騙是很容易攻擊服務(wù)端的,而且該技術(shù)主要應(yīng)用于UNIX系統(tǒng),非UNIX系統(tǒng)由于沒有/etc/hosts.equiv和$HOME/.rhosts文件,不易實(shí)現(xiàn)。
現(xiàn)有的采用純RSA認(rèn)證方法是基于RSA非對(duì)稱加密算法的。服務(wù)器端擁有客戶端所提供的公共密鑰。在登錄時(shí),客戶端首先指定它所使用的公共密鑰;服務(wù)器找到該密鑰,并產(chǎn)生一個(gè)隨機(jī)數(shù),用這個(gè)公共密鑰加密后發(fā)送給客戶端,客戶端要用對(duì)應(yīng)的私有密鑰解密,解密正確則認(rèn)證通過,不正確則認(rèn)證不通過。
該方法的認(rèn)證流程如圖1所示,包括以下步驟1)客戶端登錄,選擇本用戶使用的公共密鑰數(shù)據(jù)并通知服務(wù)器;
1)客戶端登錄,選擇本用戶使用的公共密鑰數(shù)據(jù)并通知服務(wù)器;2)服務(wù)器判斷該公共密鑰數(shù)據(jù)是否存在,若不存在,則認(rèn)證失??;若存在,則轉(zhuǎn)第3)步;3)服務(wù)器產(chǎn)生隨機(jī)數(shù),用客戶端用戶的公共密鑰數(shù)據(jù)加密,并發(fā)送給客戶端進(jìn)行解密。
4)客戶端用自己的私有密鑰解密,并將結(jié)果發(fā)送給服務(wù)器。
5)服務(wù)器檢查是否正確,如果正確則認(rèn)證通過。不正確則認(rèn)證不通過。
這種認(rèn)證方法是應(yīng)用RSA的基本的認(rèn)證方法,它的缺點(diǎn)在于沒有規(guī)定客戶端采用唯一的密鑰,客戶端可以使用服務(wù)器所記錄的任何密鑰登錄服務(wù)器。這樣的用戶管理是很松散的,不利于對(duì)用戶實(shí)行嚴(yán)格的管理。
例如進(jìn)行用戶的分級(jí)別管理時(shí),不同級(jí)別的用戶使用相同的密鑰將使用戶的級(jí)別形同虛設(shè),因?yàn)橛脩裘⒉皇潜C艿?,是可以被其他人得到的?;煊妹荑€會(huì)使得嚴(yán)格的用戶管理不能實(shí)現(xiàn),存在安全漏洞。
現(xiàn)有采用密碼認(rèn)證方法為客戶端將加密的密碼字符串發(fā)送給服務(wù)器端,服務(wù)器檢查密碼是否正確,如果正確則認(rèn)證通過,不正確就不通過。這種認(rèn)證方法比較簡(jiǎn)單,密碼設(shè)置不當(dāng)容易被破解和猜測(cè)。
現(xiàn)有的采用主機(jī)與RSA結(jié)合方法是現(xiàn)有的主機(jī)認(rèn)證方法與純RSA認(rèn)證方法的結(jié)合,服務(wù)器先對(duì)客戶端進(jìn)行主機(jī)認(rèn)證。通過后再產(chǎn)生隨機(jī)數(shù),進(jìn)行RSA認(rèn)證。這種認(rèn)證方法在非UNIX系統(tǒng)中不易實(shí)現(xiàn)。
發(fā)明內(nèi)容
本發(fā)明的目的是為克服已有技術(shù)對(duì)用戶不能實(shí)行嚴(yán)格的管理的不足之處,提出一種基于安全命令解釋(SSH)協(xié)議的用戶認(rèn)證方法,可增強(qiáng)對(duì)用戶的管理,對(duì)公共密鑰的管理更加容易實(shí)現(xiàn),且可提高通信安全性。
本發(fā)明提出的基于安全命令解釋(SSH)協(xié)議的用戶認(rèn)證方法,其特征在于,包括以下步驟
1)在服務(wù)器中配置一個(gè)公共密鑰名及其數(shù)據(jù)的公共密鑰鏈表,且配置并維護(hù)一個(gè)客戶端的用戶名和公共密鑰名的對(duì)應(yīng)表;2)當(dāng)客戶端用戶登錄時(shí),客戶端按照安全命令解釋協(xié)議選擇本用戶使用的公共密鑰數(shù)據(jù);3)服務(wù)器根據(jù)該用戶名通過所述的公共密鑰鏈表及對(duì)應(yīng)表查找并檢查公共密鑰數(shù)據(jù)與客戶端按照協(xié)議所選擇的公共密鑰數(shù)據(jù)是否相同,如果不同則認(rèn)證失??;4)如果公共密鑰數(shù)據(jù)相同,則服務(wù)器端產(chǎn)生一個(gè)隨機(jī)數(shù),用該公共密鑰數(shù)據(jù)對(duì)隨機(jī)數(shù)加密后發(fā)送給客戶端,客戶端用對(duì)應(yīng)的私有密鑰解密,解密正確則認(rèn)證通過,不正確則認(rèn)證不通過。
所述的用戶名與密鑰名的對(duì)應(yīng)表采用的形式可以包括但不限于數(shù)組、鏈表、哈希表、數(shù)據(jù)庫表等之中的一種。
本發(fā)明的特點(diǎn)及有益效果本發(fā)明對(duì)SSH協(xié)議中的純RSA認(rèn)證方法進(jìn)行了改進(jìn),在服務(wù)器端增加了限制,服務(wù)器為每個(gè)公共密鑰配置一個(gè)名字,并維護(hù)一張用戶名和該密鑰名對(duì)應(yīng)的表格??蛻舳吮仨気斎肱c它的用戶名相對(duì)應(yīng)的公共密鑰。當(dāng)客戶端登錄時(shí),服務(wù)器通過這個(gè)表格查找客戶端的公共密鑰,與客戶端所輸入的公共密鑰吻合才能繼續(xù)認(rèn)證流程,增強(qiáng)了對(duì)用戶的管理。
本發(fā)明與現(xiàn)有的采用純RSA認(rèn)證方式相比,服務(wù)器增加了查表和比較的操作。每一個(gè)用戶僅有一個(gè)對(duì)應(yīng)的公共密鑰,必須使用該密鑰才可登錄。由于服務(wù)器采用了更加嚴(yán)格的檢查措施,使得認(rèn)證方法更加安全可靠。
同時(shí),本發(fā)明為公共密鑰配置名字使得對(duì)公共密鑰的管理更加容易實(shí)現(xiàn)。由于在服務(wù)器端進(jìn)行了更多的限制,因而提高了通信的安全性。
圖1為已有的純RSA認(rèn)證方法的流程框圖。
圖2為本發(fā)明認(rèn)證方法的一種實(shí)施例流程框圖。
圖3為本發(fā)明兩種實(shí)施例都用到的公共密鑰鏈表示意圖。
圖4為本發(fā)明第二種實(shí)施例的密鑰名-用戶名對(duì)應(yīng)鏈表示意圖。
圖5為本發(fā)明認(rèn)證方法的第二種實(shí)施例流程框圖。
具體實(shí)施例方式
本發(fā)明提供的一種基于安全命令解釋(SSH)協(xié)議的用戶認(rèn)證方法,結(jié)合實(shí)施例及附圖進(jìn)行詳細(xì)說明。
本發(fā)明的實(shí)施例1,如圖2所示,其具體實(shí)現(xiàn)方法包括以下步驟1)在服務(wù)器端為每一個(gè)公共密鑰配置一個(gè)形成如圖3所示的公共密鑰鏈表,它保存了公共密鑰的數(shù)據(jù),并為每一個(gè)公共密鑰配置了一個(gè)名字;為了方便查找和管理,將用戶名與該密鑰名稱對(duì)應(yīng)起來,采用數(shù)組方式形成如表1所示的用戶名-密鑰名對(duì)應(yīng)表表1用戶名-密鑰名對(duì)應(yīng)表
在上述表1中用戶名user1對(duì)應(yīng)密鑰名key1,用戶名user2對(duì)應(yīng)密鑰名key2,以此類推。
在使用某用戶的公共密鑰數(shù)據(jù)時(shí),就可以先通過用戶名-密鑰名對(duì)應(yīng)表找到密鑰名,然后在公共密鑰鏈表中查找該密鑰名所對(duì)應(yīng)的公共密鑰數(shù)據(jù);2)在客戶端用戶登錄時(shí),客戶端按照SSH協(xié)議選擇本用戶使用的公共密鑰數(shù)據(jù);3)服務(wù)器在如圖3的公共密鑰鏈表中查找是否存在上述公共密鑰數(shù)據(jù),若不存在,則認(rèn)證失敗;4)若公共密鑰數(shù)據(jù)存在,則服務(wù)器再在表1中搜索該用戶名所對(duì)應(yīng)的密鑰名,然后通過密鑰名在如圖3的公共密鑰鏈表中查找其對(duì)應(yīng)的公共密鑰數(shù)據(jù),檢查與客戶端所選擇的公共密鑰數(shù)據(jù)是否相同,如果不同則認(rèn)證失敗;
5)如果公共密鑰數(shù)據(jù)相同,則服務(wù)器端產(chǎn)生一個(gè)隨機(jī)數(shù),用該公共密鑰數(shù)據(jù)對(duì)這個(gè)隨機(jī)數(shù)加密,把加密后的隨機(jī)數(shù)發(fā)送給客戶端;6)客戶端接收到加密的隨機(jī)數(shù)后,用自己所保存的私有密鑰(該私鑰密鑰數(shù)據(jù)與第2步中所選擇的公共密鑰數(shù)據(jù)是對(duì)應(yīng)的)對(duì)其解密,將結(jié)果發(fā)送給服務(wù)端。
7)服務(wù)端判斷客戶端對(duì)隨機(jī)數(shù)的解密是否正確,正確則認(rèn)證通過,不正確則認(rèn)證不通過。
本發(fā)明的另外一個(gè)實(shí)施例,如圖5所示,其具體實(shí)現(xiàn)方法包括以下步驟1)在服務(wù)器端為每一個(gè)公共密鑰配置一個(gè)形成如圖3所示的公共密鑰鏈表,它保存了公共密鑰的數(shù)據(jù),并為每一個(gè)公共密鑰配置了一個(gè)名字;為了方便查找和管理,建立用戶名與密鑰名對(duì)應(yīng)表,形式是如圖4所示的鏈表,圖中用戶名user1對(duì)應(yīng)密鑰名key1,用戶名user2對(duì)應(yīng)密鑰名key2,以此類推。
在使用某用戶的公共密鑰數(shù)據(jù)時(shí),就可以先通過用戶名-密鑰名對(duì)應(yīng)表找到密鑰名,然后在公共密鑰鏈表中查找該密鑰名所對(duì)應(yīng)的公共密鑰數(shù)據(jù);反之,通過公共密鑰數(shù)據(jù)也可以查到有哪些用戶名與之對(duì)應(yīng),本實(shí)施例用的是這種反向查找的方法。
2)在客戶端用戶登錄時(shí),客戶端按照SSH協(xié)議選擇本用戶使用的公共密鑰數(shù)據(jù);3)服務(wù)器在圖3所示公共密鑰鏈表中查找是否存在上述公共密鑰數(shù)據(jù),若不存在,則認(rèn)證失??;4)若公共密鑰數(shù)據(jù)存在,則服務(wù)器在圖3所示的公共密鑰鏈表查找出所對(duì)應(yīng)的所有密鑰名;5)查詢圖4所示的用戶名-密鑰名鏈表,找出每一個(gè)密鑰名所對(duì)應(yīng)的所有用戶名;6)判斷上述找出的用戶名中是否包含客戶端用戶名,如果不包含則認(rèn)證失??;
7)如果包含,則服務(wù)器端產(chǎn)生一個(gè)隨機(jī)數(shù),用該公共密鑰數(shù)據(jù)對(duì)其加密后發(fā)送給客戶端進(jìn)行解密;8)客戶端接收到加密的隨機(jī)數(shù)后,用自己所保存的私有密鑰(該私鑰密鑰數(shù)據(jù)與第2步中所選擇的公共密鑰數(shù)據(jù)是對(duì)應(yīng)的)對(duì)其進(jìn)行解密,然后將結(jié)果發(fā)送給服務(wù)端;9)服務(wù)端判斷客戶端對(duì)隨機(jī)數(shù)的解密是否正確,正確則認(rèn)證通過,不正確則認(rèn)證不通過。
以上所述,僅為本發(fā)明較佳的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求書的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1.一種基于安全命令解釋協(xié)議的用戶認(rèn)證方法,其特征在于,包括以下步驟1)在服務(wù)器中配置一個(gè)公共密鑰名及其數(shù)據(jù)的公共密鑰鏈表,且配置并維護(hù)一個(gè)客戶端的用戶名和公共密鑰名的對(duì)應(yīng)表;2)當(dāng)客戶端用戶登錄時(shí),客戶端按照安全命令解釋協(xié)議選擇本用戶使用的公共密鑰數(shù)據(jù);3)服務(wù)器根據(jù)該用戶名通過所述的公共密鑰鏈表及對(duì)應(yīng)表查找并檢查公共密鑰數(shù)據(jù)與客戶端按照協(xié)議所選擇的公共密鑰數(shù)據(jù)是否相同,如果不同則認(rèn)證失?。?)如果公共密鑰數(shù)據(jù)相同,則服務(wù)器端產(chǎn)生一個(gè)隨機(jī)數(shù),用該公共密鑰數(shù)據(jù)對(duì)隨機(jī)數(shù)加密后發(fā)送給客戶端,客戶端用對(duì)應(yīng)的私有密鑰解密,解密正確則認(rèn)證通過,不正確則認(rèn)證不通過。
2.如權(quán)利要求1所述的用戶認(rèn)證方法,其特征在于,所述的步驟3)具體包括(1)服務(wù)器在所述的公共密鑰表中查找是否存在客戶端按照安全命令解釋協(xié)議選擇的公共密鑰數(shù)據(jù),若不存在,則認(rèn)證失??;(2)若公共密鑰數(shù)據(jù)存在,則服務(wù)器在所述用戶名和密鑰名的對(duì)應(yīng)表中搜索該用戶名所對(duì)應(yīng)的密鑰名,然后通過密鑰名在公共密鑰鏈表中查找其對(duì)應(yīng)的公共密鑰數(shù)據(jù);(3)檢查該公共密鑰數(shù)據(jù)與客戶端所選擇的公共密鑰數(shù)據(jù)是否相同,如果不同則認(rèn)證失敗。
3.如權(quán)利要求1所述的用戶認(rèn)證方法,其特征在于,所述的步驟3)具體包括(1)服務(wù)器在所述的公共密鑰鏈表中查找是否存在客戶端按照安全命令解釋協(xié)議選擇的公共密鑰數(shù)據(jù),若不存在,則認(rèn)證失??;(2)若公共密鑰數(shù)據(jù)存在,則服務(wù)器服務(wù)器通過公共密鑰鏈表得到所對(duì)應(yīng)的所有密鑰名;(3)查詢所述用戶名和密鑰名的對(duì)應(yīng)表,找出每一個(gè)密鑰名所對(duì)應(yīng)的所有用戶名;(4)判斷所述所有用戶名中是否包含客戶端用戶名,如果不包含則認(rèn)證失敗。
4.如權(quán)利要求1、2或3所述的用戶認(rèn)證方法,其特征在于,所述的用戶名與密鑰名的對(duì)應(yīng)表采用數(shù)組、鏈表、哈希表、數(shù)據(jù)庫表之任一種。
全文摘要
本發(fā)明屬于計(jì)算機(jī)網(wǎng)絡(luò)安全技術(shù)領(lǐng)域,涉及基于安全命令解釋協(xié)議的用戶認(rèn)證方法。包括在服務(wù)器中配置一個(gè)公共密鑰鏈表,一個(gè)客戶端的用戶名和公共密鑰名的對(duì)應(yīng)表;當(dāng)客戶端用戶登錄時(shí),客戶端按照安全命令解釋協(xié)議選擇本用戶使用的公共密鑰數(shù)據(jù);服務(wù)器根據(jù)該用戶名通過公共密鑰鏈表及對(duì)應(yīng)表查找并檢查公共密鑰數(shù)據(jù)與客戶端按照協(xié)議所選擇的公共密鑰數(shù)據(jù)是否相同,如果不同則認(rèn)證失??;如果公共密鑰數(shù)據(jù)相同,則服務(wù)器端產(chǎn)生一個(gè)隨機(jī)數(shù),用該公共密鑰數(shù)據(jù)對(duì)隨機(jī)數(shù)加密后發(fā)送給客戶端,客戶端用對(duì)應(yīng)的私有密鑰解密,解密正確則認(rèn)證通過,不正確則認(rèn)證不通過。本發(fā)明增強(qiáng)了對(duì)用戶的管理,提高了安全性。
文檔編號(hào)H04L9/00GK1533084SQ0312039
公開日2004年9月29日 申請(qǐng)日期2003年3月18日 優(yōu)先權(quán)日2003年3月18日
發(fā)明者余笑寒, 韓琦, 白濤, 金宏志, 劉光濤, 陳迎, 楊銀柱 申請(qǐng)人:華為技術(shù)有限公司