付茂洺
(中國民航飛行學院計算機學院,四川 廣漢618307)
伴隨著開放式網絡系統的飛速發展,譬如銀行結算系統等關系國計民生的大型網絡系統的普及應用,認證用戶身份和保證用戶使用時的安全,正日益受到各方面的挑戰。在不與網絡連接的個人計算機中,資源和個人信息可以通過物理保護來實現。在分時計算環境中,操作系統管理所有資源,并保護用戶信息不被其他未授權的用戶使用。這時操作系統需要認證每一個用戶,以保證每個用戶的權限,操作系統在用戶登錄時完成這項工作。
傳統的做法是采取用戶名加口令來驗證用戶的身份,但是,口令很容易被竊取、字典攻擊以及暴力攻擊,在網絡應用系統中,存在著較大的安全隱患[1,2]。并且上述認證方式僅能完成服務器對用戶的單向認證。本文提出基于強身份認證系統的機制,提出了一種基于SOAP的雙向身份認證系統,具有良好的安全性、兼容性和廣泛適用性。
目前,比較成熟的身份認證機制有兩類:一是基于隱藏信息的單因素身份認證;二是基于物理安全的雙因素身份認證?;陔[藏信息的單因素身份認證主要方法有:基于用戶名口令的身份認證、基于Kerberos的認證機制、基于數字證書、數字簽名機制以及基于Challenge/Response的認證機制。基于物理安全的身份認證方法有:基于生物特征(指紋、虹膜)和基于智能卡等方法。基于用戶名和口令的機制最大缺點就是簡單。在Web環境下,最典型的論證有:H1TrP Basic和HTrP Digest認證。基于Kerberos和基于數字證書或數字簽名機制的用戶論證形式雖然很安全,并且在功能上能夠實現雙向身份認證,但是,該機制要求通信雙方進行多次交互,在并發數據處理中消耗大量的硬件資源,且實現起來比較復雜[3]。例如,在基于數字證書的身份驗證中,要求將用戶的數字證書驗證轉換為應用系統訪問控制機制并以此控制的用戶身份。通過硬件的投入,可以建立更安全的雙因素身份認證機制。上述兩類身份認證機制在安全上完全達到ASP甚至JSP應用服務平臺的要求。但由于消耗大量的硬件資源,并且要增加實現的復雜度和難度,在特殊用戶有特別需求的情況下可以考慮應用這一方案;可是在一般情況下產出沒有達到投入的目的,也就沒必要實施這一方案。
認證的機制可為3類:自主訪問認證、強制訪問認證以及基于角色的訪問認證。自主訪問認證機制只有用戶名和密碼被服務器系統校驗,且允許服務器對訪問資源的用戶設置訪問控制權限。自主訪問控制是基于用戶的,因此具有很高的靈活性,這使得該策略適合各類操作系統和應用程序,特別是商業和工業領域。但是,該機制以明文形式來保存密碼,在網上傳輸時極容易被不法用戶竊聽或截取,目前流行的解決辦法是輔加一次性口令(OTP)機制。由此,改進后的自主訪問認證實現了的用戶口令無需在網上傳輸。由于其具有一次性的特點,它對于重放攻擊也有很好的隔阻作用。強制訪問認證機制通常運用密碼學中的多種加密手段來保護相互交換的信息,在目前的認證協議中,Kerberos協議是比較完善的協議,主要用于在兩個通信實體間建立共享會話密鑰,其交換的過程依賴認證服務器。目前,該認證協議較為普及。基于角色的訪問認證將用戶的控制轉換成對角色的控制,從而使授權管理更為方便實用,效率更高。同時,角色和角色之間也可以繼承權限,各個角色的權限劃分更為清楚、明確,降低了權限管理的復雜性。
目前的網絡應用系統,多采用3層B/S結構或C/S結構來構建,如網絡購物和網銀系統等。在系統服務器端,由應用系統完成業務邏輯處理,而數據的存儲和管理由數據庫服務器來完成;在系統客戶端,安裝網頁瀏覽器或專用客戶端程序,從而實現基于客戶端業務邏輯處理。以3層B/S架構的應用系統為例,來實現增強型身份認證系統的結構(圖1)。

圖1 系統邏輯結構圖System architecture drawing
在增強型身份認證系統的應用服務器端,部署認證服務器端程序,同時也包括了認證服務器其他功能;在客戶端,用戶執行從認證服務器下載的客戶端程序,包括基本認證客戶端功能;在數據服務器端,存儲用戶列表,并優化存儲結構。
當用戶向服務器提出注冊請求時,需要輸入用戶名UID和口令PWD。接著用戶生成一個隨機數R,計算A=H(UID,PWD⊕R)(H 為一個單向的散列函數)。用戶將UID,A,R以及與服務器共享的密鑰k存儲起來,作為下一次身份認證使用。
首先用戶向服務器提出認證請求,然后進行類似于TCP協議的3次握手的認證過程。
認證過程:
a.用戶輸入用戶名,經加密后發送給服務器提出認證請求。
貴州省某磷復肥企業負責人告訴記者,目前開磷集團和甕福集團的融合在技術層面是可以實現的,比如磷石膏的處理技術已經成熟,但是是否能真正實現生態效益和經濟效益雙豐收,在何光亮面前仍有較大阻礙。他說:“兩家企業都是國有老牌企業,負債率都比較高,而且企業包袱重,所以首先要解決資金問題。如果資金瓶頸無法解決,后續很多想法是難以落地的。另外是市場的問題,磷石膏綠色建材的發展思路固然很好,但是目前市場不成熟,有待開發。”
b.服務器經解密后,若此用戶在用戶列表則合法。然后服務器計算M=H(UID,k),將R和M 加密后傳送給用戶。
c.用戶計算H(UID,k),并與M 比較。若相等說明服務器合法,繼續執行;否則用戶終止與服務器對話,重新登陸。
d.用戶再計算A=H(UID,PWD⊕R);生成一個新的隨機數R1,并計算B=H(UID,PWD⊕R1),B就成為下一次身份認證的校驗符;同時,將A,B,R1加密發送到服務器。
e.服務器用接收的A與存儲的A比較,若相等則通過驗證;并把存儲的校驗符和隨機數更新(A=B,R=R1),以便下一次身份認證使用。
上述的認證流程實現了一個完整的雙向身份認證。通過該論證流程,可以使整個系統更加安全和有效地解決通信雙方的身份認證這一問題。它也是一個全新的、具有很強實踐意義的實施方案。
根據上述的認證過程分析,本文設計了基于SOAP的強身份認證方案的實現,通過在SOAP頭中加入〈Auth〉標記,實現了使用SOAP消息傳遞身份認證信息的目的。
SOAP(Simple Object Access Protocol,簡單對象訪問協議)是在混亂的“通信戰爭”(CORBA對DCOM、DCOM對RMI、信息方案對RPC方案等)中誕生。它并沒有試圖去解決所有的問題,只是定義了一個簡單的基于XML的通信格式。但就是這個簡單的目標,再加上其強大的擴展機制,SOAP實現了人們一直追求的目標,成為一種綜合各種計算機技術的通信協議。自從出現了SOAP,幾乎所有主要的軟件開發商都推出了與之相關的實現產品。這也是本文選擇它的一個重要原因。
一個從客戶端(Client)發出的請求建立認證過程的SOAP消息如下:

服務器端(Server)接收到來自客戶端(Client)發出的認證請求后,對來自客戶端的加密用戶名〈user〉username〈/user〉進行解密,并查詢該用戶名,若存在該用戶名,便生成該用戶名的四元組:用戶名U,校驗碼A,密鑰k和隨機值R,計算M=H(UID,k),將響應消息(M和R作為入口參數)發回給客戶端:


客戶端接收到計算H(UID,k),與M 比較,若相等說明服務器合法,然后計算A=H(UID,PWD⊕R);生成一個隨機數R1,并計算B=H(UID,PWD⊕R1),B就為下一次身份認證的校驗符;將A,B,R1加密發送到服務器。

服務器根據客戶機的請求經驗證后,更新檢驗碼A和隨機值R。至此,服務器和客戶機完成了雙向的身份認證。
Web Services的接口函數接收通過XML消息傳來的指令。然后根據客戶端ID等更新數據庫。以下將更新的用戶信息封裝成XML格式[4]。

XML技術是SOAP的基礎,XML語言包含的功能非常多,利用國際標準XML建模工具XML Schema,可以實現將上述的XML實例文檔轉變為結構化的Schema文檔[5]。
增強型身份認證系統中,采用以上身份論證協議,在客戶端和服務器端產生惟一的一對有效的隨機數,它對于防范當前流行的網絡重放攻擊特別有效;利用客戶端和服務器端的3次握手協議,建立真正的雙向身份論證。它相對于基于用戶名、口令的身份認證系統,可以更加有效地解決網絡應用系統中通信雙方的身份認證問題。即使在分布式環境下,該系統在身份論證方面,仍然能取得較佳的安全效果[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]丁德勝,許建真,沈麗珍,等.基于強身份認證的網絡應用單點登錄系統研究[J].計算機工程,2006,32(7):163-164.
[4]柴曉路,梁宇路.Web Service技術、架構和應用[M].北京:電子工業出版社,2003:42-67.
[5]余浩,朱成,丁鵬.SOA實踐[M].北京:電子工業出版社,2009:34-38.
[6]華蓓,蔣凡,史杏榮,等.計算機安全[M].北京:人民郵電出版社,2003:137-153.