網(wǎng)絡(luò)認(rèn)證技術(shù)是網(wǎng)絡(luò)安全技術(shù)的重要組成部分之一。認(rèn)證指的是證實(shí)被認(rèn)證對(duì)象是否屬實(shí)和是否有效的 一個(gè)過程。其基本思想是通過驗(yàn)證被認(rèn)證對(duì)象的屬性來達(dá)到確認(rèn)被認(rèn)證對(duì)象是否真實(shí)有效的目的。被認(rèn)證對(duì)象的屬性可以是口令、數(shù)字簽名或者象指紋、聲音、視網(wǎng)膜這樣的生理特征。認(rèn)證常常被用于通信雙方相互確認(rèn)身份,以保證通信的安全。認(rèn)證可采用各種方法進(jìn)行。
基于口令的認(rèn)證方法
傳統(tǒng)的認(rèn)證技術(shù)主要采用基于口令的認(rèn)證方法。當(dāng)被認(rèn)證對(duì)象要求訪問提供服務(wù)的系統(tǒng)時(shí),提供服務(wù)的認(rèn)證方要求被認(rèn)證對(duì)象提交該對(duì)象的口令,認(rèn)證方收到口令后,將其與系統(tǒng)中存儲(chǔ)的用戶口令進(jìn)行比較,以確認(rèn)被認(rèn)證對(duì)象是否為合法訪問者。
這種認(rèn)證方法的優(yōu)點(diǎn)在于:一般的系統(tǒng)(如UNIX,Windows NT,NetWare等)都提供了對(duì)口令認(rèn)證的支持,對(duì)于封閉的小型系統(tǒng)來說不失為一種簡單可行的方法。
然而,基于口令的認(rèn)證方法存在下面幾點(diǎn)不足:
①用戶每次訪問系統(tǒng)時(shí)都要以明文方式輸入口令,這時(shí)很容易泄密(如被“肩部沖浪者”即窺視者看見)。
②口令在傳輸過程中可能被截獲。
③系統(tǒng)中所有用戶的口令以文件形式存儲(chǔ)在認(rèn)證方,攻擊者可以利用系統(tǒng)中存在的漏洞獲取系統(tǒng)的口令文件。
④用戶在訪問多個(gè)不同安全級(jí)別的系統(tǒng)時(shí),都要求用戶提供口令,用戶為了記憶的方便,往往采用相同的口令。而低安全級(jí)別系統(tǒng)的口令更容易被攻擊者獲得,從而用來對(duì)高安全級(jí)別系統(tǒng)進(jìn)行攻擊。
⑤只能進(jìn)行單向認(rèn)證,即系統(tǒng)可以認(rèn)證用戶,而用戶無法對(duì)系統(tǒng)進(jìn)行認(rèn)證。攻擊者可能偽裝成系統(tǒng)騙取用戶的口令。
對(duì)于第②點(diǎn),系統(tǒng)可以對(duì)口令進(jìn)行加密傳輸。對(duì)于第③點(diǎn),系統(tǒng)可以對(duì)口令文件進(jìn)行不可逆加密。盡管如此,攻擊者還是可以利用一些工具很容易地將口令和口令文件解密。
雙因素認(rèn)證
在雙因素認(rèn)證系統(tǒng)中,用戶除了擁有口令外,還擁有系統(tǒng)頒發(fā)的令牌訪問設(shè)備。當(dāng)用戶向系統(tǒng)登錄時(shí),用戶除了輸入口令外,還要輸入令牌訪問設(shè)備所顯示的數(shù)字。該數(shù)字是不斷變化的,而且與認(rèn)證服務(wù)器是同步的。
雙因素認(rèn)證比基于口令的認(rèn)證方法增加了一個(gè)認(rèn)證要素,攻擊者僅僅獲取了用戶口令或者僅僅拿到了用戶的令牌訪問設(shè)備,都無法通過系統(tǒng)的認(rèn)證。而且令牌訪問設(shè)備上所顯示的數(shù)字不斷地變化,這使得攻擊變得非常困難。因此,這種方法比基于口令的認(rèn)證方法具有更好的安全性,在一定程度上解決了口令認(rèn)證方法中的問題①、②和③。
提問握手認(rèn)證協(xié)議CHAP
除雙因素認(rèn)證外,還可采用提問-響應(yīng)(challenge-response)方法來解決上述問題。提問-握手認(rèn)證協(xié)議CHAP(Challenge Handshake Anthentication Protocol)采用的就是提問-響應(yīng)方法,它通過三次握手(3-way handshake)方式對(duì)被認(rèn)證方的身份進(jìn)行周期性的認(rèn)證。其認(rèn)證過程是:第一步,在通信雙方鏈路建立階段完成后,認(rèn)證方(authenticator)向被認(rèn)證方(peer)發(fā)送一個(gè)提問(challenge)消息;第二步,被認(rèn)證方向認(rèn)證方發(fā)回一個(gè)響應(yīng)(response),該響應(yīng)由單向散列函數(shù)計(jì)算得出,單向散列函數(shù)的輸入?yún)?shù)由本次認(rèn)證的標(biāo)識(shí)符、秘訣(secret)和提問構(gòu)成;第三步,認(rèn)證方將收到的響應(yīng)與它自己根據(jù)認(rèn)證標(biāo)識(shí)符、秘訣和提問計(jì)算出的散列函數(shù)值進(jìn)行比較,若相符則認(rèn)證通過,向被認(rèn)證方發(fā)送“成功”消息,否則,發(fā)送“失敗”消息,斷開連接。在雙方通信過程中系統(tǒng)將以隨機(jī)的時(shí)間間隔重復(fù)上述三步認(rèn)證過程。
圖1 Kerberos認(rèn)證過程
CHAP采用的單向散列函數(shù)算法可保證由已知的提問和響應(yīng)不可能計(jì)算出秘訣。同時(shí)由于認(rèn)證方的提問值每次都不一樣,而且是不可預(yù)測的,因而具有很好的安全性。
CHAP具有以下優(yōu)點(diǎn):
①通過不斷地改變認(rèn)證標(biāo)識(shí)符和提問消息的值來防止回放(playback)攻擊。
②利用周期性的提問防止通信雙方在長期會(huì)話過程中被攻擊。
③雖然CHAP進(jìn)行的是單向認(rèn)證,但在兩個(gè)方向上進(jìn)行CHAP協(xié)商,也能實(shí)現(xiàn)通信雙方的相互認(rèn)證。
④CHAP可用于認(rèn)證多個(gè)不同的系統(tǒng)。
CHAP的不足之處是:CHAP認(rèn)證的關(guān)鍵是秘訣,CHAP的秘訣以明文形式存放和使用,不能利用通常的不可逆加密口令數(shù)據(jù)庫。并且CHAP的秘訣是通信雙方共享的,這一點(diǎn)類似于對(duì)稱密鑰體制,因此給秘訣的分發(fā)和更新帶來了麻煩,要求每個(gè)通信對(duì)都有一個(gè)共享的秘訣,這不適合大規(guī)模的系統(tǒng)。
Kerberos
Kerberos是由美國麻省理工學(xué)院提出的基于可信賴的第三方的認(rèn)證系統(tǒng)。Kerberos提供了一種在開放式網(wǎng)絡(luò)環(huán)境下進(jìn)行身份認(rèn)證的方法,它使網(wǎng)絡(luò)上的用戶可以相互證明自己的身份。
Kerberos采用對(duì)稱密鑰體制對(duì)信息進(jìn)行加密。其基本思想是:能正確對(duì)信息進(jìn)行解密的用戶就是合法用戶。用戶在對(duì)應(yīng)用服務(wù)器進(jìn)行訪問之前,必須先從第三方(Kerberos服務(wù)器)獲取該應(yīng)用服務(wù)器的訪問許可證(ticket)。
Kerberos密鑰分配中心KDC(即Kerberos服務(wù)器)由認(rèn)證服務(wù)器AS和許可證頒發(fā)服務(wù)器TGS構(gòu)成。
Kerberos的認(rèn)證過程如圖1所示。
①用戶想要獲取訪問某一應(yīng)用服務(wù)器的許可證時(shí),先以明文方式向認(rèn)證服務(wù)器AS發(fā)出請(qǐng)求,要求獲得訪問TGS的許可證。
②AS以證書(credential)作為響應(yīng),證書包括訪問TGS的許可證和用戶與TGS間的會(huì)話密鑰。會(huì)話密鑰以用戶的密鑰加密后傳輸。
③用戶解密得到TGS的響應(yīng),然后利用TGS的許可證向TGS申請(qǐng)應(yīng)用服務(wù)器的許可證,該申請(qǐng)包括TGS的許可證和一個(gè)帶有時(shí)間戳的認(rèn)證符(authenticator)。認(rèn)證符以用戶與TGS間的會(huì)話密鑰加密。
④TGS從許可證中取出會(huì)話密鑰、解密認(rèn)證符,驗(yàn)證認(rèn)證符中時(shí)間戳的有效性,從而確定用戶的請(qǐng)求是否合法。TGS確認(rèn)用戶的合法性后,生成所要求的應(yīng)用服務(wù)器的許可證,許可證中含有新產(chǎn)生的用戶與應(yīng)用服務(wù)器之間的會(huì)話密鑰。TGS將應(yīng)用服務(wù)器的許可證和會(huì)話密鑰傳回到用戶。
⑤用戶向應(yīng)用服務(wù)器提交應(yīng)用服務(wù)器的許可證和用戶新產(chǎn)生的帶時(shí)間戳的認(rèn)證符(認(rèn)證符以用戶與應(yīng)用服務(wù)器之間的會(huì)話密鑰加密)。
⑥應(yīng)用服務(wù)器從許可證中取出會(huì)話密鑰、解密認(rèn)證符,取出時(shí)間戳并檢驗(yàn)有效性。然后向用戶返回一個(gè)帶時(shí)間戳的認(rèn)證符,該認(rèn)證符以用戶與應(yīng)用服務(wù)器之間的會(huì)話密鑰進(jìn)行加密。據(jù)此,用戶可以驗(yàn)證應(yīng)用服務(wù)器的合法性。
至此,雙方完成了身份認(rèn)證,并且擁有了會(huì)話密鑰。其后進(jìn)行的數(shù)據(jù)傳遞將以此會(huì)話密鑰進(jìn)行加密。
Kerberos將認(rèn)證從不安全的工作站移到了集中的認(rèn)證服務(wù)器上,為開放網(wǎng)絡(luò)中的兩個(gè)主體提供身份認(rèn)證,并通過會(huì)話密鑰對(duì)通信進(jìn)行加密。對(duì)于大型的系統(tǒng)可以采用層次化的區(qū)域(realm)進(jìn)行管理。
Kerberos也存在一些問題:Kerberos服務(wù)器的損壞將使得整個(gè)安全系統(tǒng)無法工作;AS在傳輸用戶與TGS間的會(huì)話密鑰時(shí)是以用戶密鑰加密的,而用戶密鑰是由用戶口令生成的,因此可能受到口令猜測的攻擊;Kerberos使用了時(shí)間戳,因此存在時(shí)間同步問題;要將Kerberos用于某一應(yīng)用系統(tǒng),則該系統(tǒng)的客戶端和服務(wù)器端軟件都要作一定的修改。
X.509證書及認(rèn)證框架
國際電信聯(lián)盟的X.509建議(已成為事實(shí)上的標(biāo)準(zhǔn))定義了一種提供認(rèn)證服務(wù)的框架。
采用基于X.509證書的認(rèn)證技術(shù)類似于Kerberos技術(shù),它也依賴于共同信賴的第三方來實(shí)現(xiàn)認(rèn)證。所不同的是它采用非對(duì)稱密碼體制(公鑰制),實(shí)現(xiàn)上更加簡單明了。這里可信賴的第三方是指稱為CA(Certificate Authority)的認(rèn)證機(jī)構(gòu)。該認(rèn)證機(jī)構(gòu)負(fù)責(zé)認(rèn)證用戶的身份并向用戶簽發(fā)數(shù)字證書。數(shù)字證書遵循X.509標(biāo)準(zhǔn)所規(guī)定的格式,因此稱為X.509證書。持有此證書的用戶就可以憑此證書訪問那些信任CA的服務(wù)器。
當(dāng)用戶向某一服務(wù)器提出訪問請(qǐng)求時(shí),服務(wù)器要求用戶提交數(shù)字證書。收到用戶的證書后,服務(wù)器利用CA的公開密鑰對(duì)CA的簽名進(jìn)行解密,獲得信息的散列碼。然后服務(wù)器用與CA相同的散列算法對(duì)證書的信息部分進(jìn)行處理,得到一個(gè)散列碼,將此散列碼與對(duì)簽名解密所得到的散列碼進(jìn)行比較,若相等則表明此證書確實(shí)是CA簽發(fā)的,而且是完整的未被篡改的證書。這樣,用戶便通過了身份認(rèn)證。服務(wù)器從證書的信息部分取出用戶的公鑰,以后向用戶傳送數(shù)據(jù)時(shí),便以此公鑰加密,對(duì)該信息只有用戶可以進(jìn)行解密。
基于X.509證書的認(rèn)證技術(shù)適用于開放式網(wǎng)絡(luò)環(huán)境下的身份認(rèn)證,該技術(shù)已被廣泛接受,許多網(wǎng)絡(luò)安全程序都可以使用X.509證書(如:IPSec、SSL、SET、S/MIME等)。
由于這種認(rèn)證技術(shù)中采用了非對(duì)稱密碼體制,CA和用戶的私鑰都不會(huì)在網(wǎng)絡(luò)上傳輸,避免了基于口令的認(rèn)證中傳輸口令所帶來的問題。攻擊者即使截獲了用戶的證書,但由于無法獲得用戶的私鑰,也就無法解讀服務(wù)器傳給用戶的信息。
基于X.509證書的認(rèn)證實(shí)際上是將人與人之間的信任轉(zhuǎn)化為個(gè)人對(duì)組織機(jī)構(gòu)的信任,因此這種認(rèn)證系統(tǒng)需要有CA的支持。目前互聯(lián)網(wǎng)上已有一些這樣的認(rèn)證機(jī)構(gòu),如Verisign、U.S.Postal Service和CommerceNet等。
CA在確信用戶的身份后才為用戶簽發(fā)證書,而CA對(duì)用戶身份的確認(rèn)則遵循CA自己定義的稱為CPS的規(guī)則,CA通過這些規(guī)則來判定用戶是否存在和有效。證書將用戶的唯一名稱與用戶的公鑰關(guān)聯(lián)起來。但這種關(guān)聯(lián)是否合法,卻不屬于X.509所涉及的范疇。X.509聲明:凡是與語義或信任相關(guān)的所有問題都依賴于CA的證書常規(guī)聲明CPS(Certification Practice Statement),即關(guān)聯(lián)的合法性取決于CA自己定義的CPS規(guī)則。顯然,這種做法會(huì)導(dǎo)致各個(gè)CA對(duì)用戶的確認(rèn)方法和確認(rèn)的嚴(yán)格程度上的差異。因此,建立全球性的統(tǒng)一的認(rèn)證體系以及相關(guān)的規(guī)范就顯得非常必要。
全球公鑰基礎(chǔ)設(shè)施(PKI)就是一個(gè)全球范圍的相互信任的基礎(chǔ)設(shè)施,它是一種遵循標(biāo)準(zhǔn)的密鑰管理平臺(tái)。 PKI的構(gòu)建主要圍繞著認(rèn)證機(jī)構(gòu)、證書庫、密鑰備份及恢復(fù)系統(tǒng)、證書作廢處理系統(tǒng)、客戶端證書處理系統(tǒng)等基本部分來進(jìn)行。建立PKI這樣的基礎(chǔ)設(shè)施是一項(xiàng)非常龐大的工程,它不僅涉及到一些技術(shù)問題,而且涉及到諸多的政策性及政治性問題,因?yàn)樗髤⑴c的各方在一個(gè)共同點(diǎn)上達(dá)成信任。盡管實(shí)現(xiàn)全球公鑰基礎(chǔ)設(shè)施還需要一定的時(shí)間,然而一旦實(shí)現(xiàn),將使得全球性的商務(wù)活動(dòng)變得非常的快捷和方便。目前我國已經(jīng)開始著手進(jìn)行這方面的工作,建立自己的認(rèn)證中心。
基于X.509證書和CA的認(rèn)證系統(tǒng)將可能是未來認(rèn)證系統(tǒng)發(fā)展的主要方向。
新聞熱點(diǎn)
疑難解答