付茂洺
(中國民航飛行學(xué)院計算機(jī)學(xué)院,四川 廣漢618307)
伴隨著開放式網(wǎng)絡(luò)系統(tǒng)的飛速發(fā)展,譬如銀行結(jié)算系統(tǒng)等關(guān)系國計民生的大型網(wǎng)絡(luò)系統(tǒng)的普及應(yīng)用,認(rèn)證用戶身份和保證用戶使用時的安全,正日益受到各方面的挑戰(zhàn)。在不與網(wǎng)絡(luò)連接的個人計算機(jī)中,資源和個人信息可以通過物理保護(hù)來實(shí)現(xiàn)。在分時計算環(huán)境中,操作系統(tǒng)管理所有資源,并保護(hù)用戶信息不被其他未授權(quán)的用戶使用。這時操作系統(tǒng)需要認(rèn)證每一個用戶,以保證每個用戶的權(quán)限,操作系統(tǒng)在用戶登錄時完成這項工作。
傳統(tǒng)的做法是采取用戶名加口令來驗(yàn)證用戶的身份,但是,口令很容易被竊取、字典攻擊以及暴力攻擊,在網(wǎng)絡(luò)應(yīng)用系統(tǒng)中,存在著較大的安全隱患[1,2]。并且上述認(rèn)證方式僅能完成服務(wù)器對用戶的單向認(rèn)證。本文提出基于強(qiáng)身份認(rèn)證系統(tǒng)的機(jī)制,提出了一種基于SOAP的雙向身份認(rèn)證系統(tǒng),具有良好的安全性、兼容性和廣泛適用性。
目前,比較成熟的身份認(rèn)證機(jī)制有兩類:一是基于隱藏信息的單因素身份認(rèn)證;二是基于物理安全的雙因素身份認(rèn)證。基于隱藏信息的單因素身份認(rèn)證主要方法有:基于用戶名口令的身份認(rèn)證、基于Kerberos的認(rèn)證機(jī)制、基于數(shù)字證書、數(shù)字簽名機(jī)制以及基于Challenge/Response的認(rèn)證機(jī)制?;谖锢戆踩纳矸菡J(rèn)證方法有:基于生物特征(指紋、虹膜)和基于智能卡等方法?;谟脩裘涂诹畹臋C(jī)制最大缺點(diǎn)就是簡單。在Web環(huán)境下,最典型的論證有:H1TrP Basic和HTrP Digest認(rèn)證?;贙erberos和基于數(shù)字證書或數(shù)字簽名機(jī)制的用戶論證形式雖然很安全,并且在功能上能夠?qū)崿F(xiàn)雙向身份認(rèn)證,但是,該機(jī)制要求通信雙方進(jìn)行多次交互,在并發(fā)數(shù)據(jù)處理中消耗大量的硬件資源,且實(shí)現(xiàn)起來比較復(fù)雜[3]。例如,在基于數(shù)字證書的身份驗(yàn)證中,要求將用戶的數(shù)字證書驗(yàn)證轉(zhuǎn)換為應(yīng)用系統(tǒng)訪問控制機(jī)制并以此控制的用戶身份。通過硬件的投入,可以建立更安全的雙因素身份認(rèn)證機(jī)制。上述兩類身份認(rèn)證機(jī)制在安全上完全達(dá)到ASP甚至JSP應(yīng)用服務(wù)平臺的要求。但由于消耗大量的硬件資源,并且要增加實(shí)現(xiàn)的復(fù)雜度和難度,在特殊用戶有特別需求的情況下可以考慮應(yīng)用這一方案;可是在一般情況下產(chǎn)出沒有達(dá)到投入的目的,也就沒必要實(shí)施這一方案。
認(rèn)證的機(jī)制可為3類:自主訪問認(rèn)證、強(qiáng)制訪問認(rèn)證以及基于角色的訪問認(rèn)證。自主訪問認(rèn)證機(jī)制只有用戶名和密碼被服務(wù)器系統(tǒng)校驗(yàn),且允許服務(wù)器對訪問資源的用戶設(shè)置訪問控制權(quán)限。自主訪問控制是基于用戶的,因此具有很高的靈活性,這使得該策略適合各類操作系統(tǒng)和應(yīng)用程序,特別是商業(yè)和工業(yè)領(lǐng)域。但是,該機(jī)制以明文形式來保存密碼,在網(wǎng)上傳輸時極容易被不法用戶竊聽或截取,目前流行的解決辦法是輔加一次性口令(OTP)機(jī)制。由此,改進(jìn)后的自主訪問認(rèn)證實(shí)現(xiàn)了的用戶口令無需在網(wǎng)上傳輸。由于其具有一次性的特點(diǎn),它對于重放攻擊也有很好的隔阻作用。強(qiáng)制訪問認(rèn)證機(jī)制通常運(yùn)用密碼學(xué)中的多種加密手段來保護(hù)相互交換的信息,在目前的認(rèn)證協(xié)議中,Kerberos協(xié)議是比較完善的協(xié)議,主要用于在兩個通信實(shí)體間建立共享會話密鑰,其交換的過程依賴認(rèn)證服務(wù)器。目前,該認(rèn)證協(xié)議較為普及。基于角色的訪問認(rèn)證將用戶的控制轉(zhuǎn)換成對角色的控制,從而使授權(quán)管理更為方便實(shí)用,效率更高。同時,角色和角色之間也可以繼承權(quán)限,各個角色的權(quán)限劃分更為清楚、明確,降低了權(quán)限管理的復(fù)雜性。
目前的網(wǎng)絡(luò)應(yīng)用系統(tǒng),多采用3層B/S結(jié)構(gòu)或C/S結(jié)構(gòu)來構(gòu)建,如網(wǎng)絡(luò)購物和網(wǎng)銀系統(tǒng)等。在系統(tǒng)服務(wù)器端,由應(yīng)用系統(tǒng)完成業(yè)務(wù)邏輯處理,而數(shù)據(jù)的存儲和管理由數(shù)據(jù)庫服務(wù)器來完成;在系統(tǒng)客戶端,安裝網(wǎng)頁瀏覽器或?qū)S每蛻舳顺绦?,從而?shí)現(xiàn)基于客戶端業(yè)務(wù)邏輯處理。以3層B/S架構(gòu)的應(yīng)用系統(tǒng)為例,來實(shí)現(xiàn)增強(qiáng)型身份認(rèn)證系統(tǒng)的結(jié)構(gòu)(圖1)。
圖1 系統(tǒng)邏輯結(jié)構(gòu)圖System architecture drawing
在增強(qiáng)型身份認(rèn)證系統(tǒng)的應(yīng)用服務(wù)器端,部署認(rèn)證服務(wù)器端程序,同時也包括了認(rèn)證服務(wù)器其他功能;在客戶端,用戶執(zhí)行從認(rèn)證服務(wù)器下載的客戶端程序,包括基本認(rèn)證客戶端功能;在數(shù)據(jù)服務(wù)器端,存儲用戶列表,并優(yōu)化存儲結(jié)構(gòu)。
當(dāng)用戶向服務(wù)器提出注冊請求時,需要輸入用戶名UID和口令PWD。接著用戶生成一個隨機(jī)數(shù)R,計算A=H(UID,PWD⊕R)(H 為一個單向的散列函數(shù))。用戶將UID,A,R以及與服務(wù)器共享的密鑰k存儲起來,作為下一次身份認(rèn)證使用。
首先用戶向服務(wù)器提出認(rèn)證請求,然后進(jìn)行類似于TCP協(xié)議的3次握手的認(rèn)證過程。
認(rèn)證過程:
a.用戶輸入用戶名,經(jīng)加密后發(fā)送給服務(wù)器提出認(rèn)證請求。
貴州省某磷復(fù)肥企業(yè)負(fù)責(zé)人告訴記者,目前開磷集團(tuán)和甕福集團(tuán)的融合在技術(shù)層面是可以實(shí)現(xiàn)的,比如磷石膏的處理技術(shù)已經(jīng)成熟,但是是否能真正實(shí)現(xiàn)生態(tài)效益和經(jīng)濟(jì)效益雙豐收,在何光亮面前仍有較大阻礙。他說:“兩家企業(yè)都是國有老牌企業(yè),負(fù)債率都比較高,而且企業(yè)包袱重,所以首先要解決資金問題。如果資金瓶頸無法解決,后續(xù)很多想法是難以落地的。另外是市場的問題,磷石膏綠色建材的發(fā)展思路固然很好,但是目前市場不成熟,有待開發(fā)?!?/p>
b.服務(wù)器經(jīng)解密后,若此用戶在用戶列表則合法。然后服務(wù)器計算M=H(UID,k),將R和M 加密后傳送給用戶。
c.用戶計算H(UID,k),并與M 比較。若相等說明服務(wù)器合法,繼續(xù)執(zhí)行;否則用戶終止與服務(wù)器對話,重新登陸。
d.用戶再計算A=H(UID,PWD⊕R);生成一個新的隨機(jī)數(shù)R1,并計算B=H(UID,PWD⊕R1),B就成為下一次身份認(rèn)證的校驗(yàn)符;同時,將A,B,R1加密發(fā)送到服務(wù)器。
e.服務(wù)器用接收的A與存儲的A比較,若相等則通過驗(yàn)證;并把存儲的校驗(yàn)符和隨機(jī)數(shù)更新(A=B,R=R1),以便下一次身份認(rèn)證使用。
上述的認(rèn)證流程實(shí)現(xiàn)了一個完整的雙向身份認(rèn)證。通過該論證流程,可以使整個系統(tǒng)更加安全和有效地解決通信雙方的身份認(rèn)證這一問題。它也是一個全新的、具有很強(qiáng)實(shí)踐意義的實(shí)施方案。
根據(jù)上述的認(rèn)證過程分析,本文設(shè)計了基于SOAP的強(qiáng)身份認(rèn)證方案的實(shí)現(xiàn),通過在SOAP頭中加入〈Auth〉標(biāo)記,實(shí)現(xiàn)了使用SOAP消息傳遞身份認(rèn)證信息的目的。
SOAP(Simple Object Access Protocol,簡單對象訪問協(xié)議)是在混亂的“通信戰(zhàn)爭”(CORBA對DCOM、DCOM對RMI、信息方案對RPC方案等)中誕生。它并沒有試圖去解決所有的問題,只是定義了一個簡單的基于XML的通信格式。但就是這個簡單的目標(biāo),再加上其強(qiáng)大的擴(kuò)展機(jī)制,SOAP實(shí)現(xiàn)了人們一直追求的目標(biāo),成為一種綜合各種計算機(jī)技術(shù)的通信協(xié)議。自從出現(xiàn)了SOAP,幾乎所有主要的軟件開發(fā)商都推出了與之相關(guān)的實(shí)現(xiàn)產(chǎn)品。這也是本文選擇它的一個重要原因。
一個從客戶端(Client)發(fā)出的請求建立認(rèn)證過程的SOAP消息如下:
服務(wù)器端(Server)接收到來自客戶端(Client)發(fā)出的認(rèn)證請求后,對來自客戶端的加密用戶名〈user〉username〈/user〉進(jìn)行解密,并查詢該用戶名,若存在該用戶名,便生成該用戶名的四元組:用戶名U,校驗(yàn)碼A,密鑰k和隨機(jī)值R,計算M=H(UID,k),將響應(yīng)消息(M和R作為入口參數(shù))發(fā)回給客戶端:
客戶端接收到計算H(UID,k),與M 比較,若相等說明服務(wù)器合法,然后計算A=H(UID,PWD⊕R);生成一個隨機(jī)數(shù)R1,并計算B=H(UID,PWD⊕R1),B就為下一次身份認(rèn)證的校驗(yàn)符;將A,B,R1加密發(fā)送到服務(wù)器。
服務(wù)器根據(jù)客戶機(jī)的請求經(jīng)驗(yàn)證后,更新檢驗(yàn)碼A和隨機(jī)值R。至此,服務(wù)器和客戶機(jī)完成了雙向的身份認(rèn)證。
Web Services的接口函數(shù)接收通過XML消息傳來的指令。然后根據(jù)客戶端ID等更新數(shù)據(jù)庫。以下將更新的用戶信息封裝成XML格式[4]。
XML技術(shù)是SOAP的基礎(chǔ),XML語言包含的功能非常多,利用國際標(biāo)準(zhǔn)XML建模工具XML Schema,可以實(shí)現(xiàn)將上述的XML實(shí)例文檔轉(zhuǎn)變?yōu)榻Y(jié)構(gòu)化的Schema文檔[5]。
增強(qiáng)型身份認(rèn)證系統(tǒng)中,采用以上身份論證協(xié)議,在客戶端和服務(wù)器端產(chǎn)生惟一的一對有效的隨機(jī)數(shù),它對于防范當(dāng)前流行的網(wǎng)絡(luò)重放攻擊特別有效;利用客戶端和服務(wù)器端的3次握手協(xié)議,建立真正的雙向身份論證。它相對于基于用戶名、口令的身份認(rèn)證系統(tǒng),可以更加有效地解決網(wǎng)絡(luò)應(yīng)用系統(tǒng)中通信雙方的身份認(rèn)證問題。即使在分布式環(huán)境下,該系統(tǒng)在身份論證方面,仍然能取得較佳的安全效果[6]。
[1]AVRIAL J R.The B-Book:Assigning Programs to Meaning[M].Cambridge University Press,1996:21-37.
[2]Altera Corporation.Nios development board reference manual,stratix professional edition[EB/OL].(2008-05-30)[2008-08-20].http://www.altera.com.cn/products/ip/processors/ipm-index.jsp.
[3]丁德勝,許建真,沈麗珍,等.基于強(qiáng)身份認(rèn)證的網(wǎng)絡(luò)應(yīng)用單點(diǎn)登錄系統(tǒng)研究[J].計算機(jī)工程,2006,32(7):163-164.
[4]柴曉路,梁宇路.Web Service技術(shù)、架構(gòu)和應(yīng)用[M].北京:電子工業(yè)出版社,2003:42-67.
[5]余浩,朱成,丁鵬.SOA實(shí)踐[M].北京:電子工業(yè)出版社,2009:34-38.
[6]華蓓,蔣凡,史杏榮,等.計算機(jī)安全[M].北京:人民郵電出版社,2003:137-153.