今天,基于PKI的傳統安全中間件已基本滿足了我們大部分的網絡安全需求,但這仍是遠遠不夠的。本文探討了傳統安全中間件與基于Web Services的安全中間件各自的運作模式及區別,進而總結出基于Web Services的安全中間件的優勢:松耦合性、跨平臺性與跨編程語言性。緊接著提出基于Web Services的安全中間件的設計方案,其突出點在于采用了Web Services實現應用程序與安全中間件之間的通訊,并在最后給出了本系統的部分細節實現方案。
隨著Web Services由技術概念到實踐應用的不斷發展,種種跡象表明,Web Services將是未來應用架構的一個極為重要的模式。
安全中間件是中間件的一種,為我們提供了CA認證、數字證書、數字簽名等安全相關的通用編程抽象。應用程序人員不必擁有專業的安全知識,即可通過調用安全中間件的相關API方便地使用所需的安全功能,從而使開發人員能夠專注于業務邏輯的開發。
目前,傳統的基于PKI(Public Key Infrastructure)的安全中間件已經可以滿足我們大部分的安全要求,但是這仍然是不夠的,因為傳統安全中間件基本上都是采用調用API的方式,從而直接導致了應用程序與安全中間件的緊耦合性、平臺相關性與編程語言相關性。
基于Web Services的安全中間件的優勢
具有松耦合性與跨平臺跨編程語言正是Web Services技術的最大特性,下面將討論傳統安全中間件與基于Web Services的安全中間件的各自運作模式及他們的不同,并總結出基于Web Services的安全中間件的優勢。
傳統安全中間件產品一般以PKI為基礎,建立在X.509等安全標準之上,為開發人員提供了加密、認證、授權、驗證等安全接口。下面是傳統安全中間件與基于Web Services的安全中間件的運作模式對比圖:

由圖1左邊可以看出,應用程序是采用API調用方式使用安全中間件的,即傳統安全中間件是作為函數庫與應用程序部署在一起的,這些都使得應用程序與安全中間件之間產生了緊耦合,導致整個系統過于復雜而不好維護,喪失了靈活性。另外,安全算法是需要大規模計算的,對于計算資源寶貴的移動設備來說,以上并不是一個理想的解決方案。
采用Web Services技術的安全中間件,通過SOAP協議實現應用程序與安全中間件之間的通訊。如圖1右邊所示,在本設計中,應用程序與安全中間件之間的通訊采用了Web Services技術,通過SOAP協議進行通訊。同時,為了保證應用程序與安全中間件之間網絡通訊的安全,本系統中采用SSL用于保證傳輸層上的點對點完整性和機密性,在應用層面上則是采用WS-Security規范保證SOAP消息的安全性。
在以上的對比分析中我們可以得知,在基于Web Services的安全中間件中,不管是J2EE或.Net編程技術,都可以通過標準的SOAP協議與安全中間件進行通信,實現了編程語言無關性。再者,由于Web Services技術是基于網絡HTTP協議通過網絡進行通信,從而去掉了應用程序與安全中間件需要部署在同一操作系統、服務器上的限制,進而實現了平臺無關性。最后,假設日后安全中間件內部模塊進行了更新升級,也不會影響到應用程序,無需再編譯、再部署,從而實現了應用程序層與安全中間件層之間的松耦合性。
由此可得出基于Web Services的安全中間件的優勢有:編程語言無關性,平臺無關性與松耦合性。
基于Web Services的安全中間件的總體設計
本文將設計與實現一個基于Web Services的安全中間件,該安全中間件從理論上講,能夠實現傳統安全中間件的所有功能,并且是基于SOAP通訊的,實現了松耦合及跨平臺跨編程語言性。
本中間件的功能主要分成兩大塊——證書模塊與密碼模塊。
證書模塊:證書申請,即個人通過安全中間件向CA申請證書;查詢證書,應用程序可以通過該功能查詢自己或已收到的他人證書狀態;獲取證書,應用程序可通過安全中間件獲取自己或他人的證書;撤銷證書,在個人丟失私鑰時,可以申請撤銷證書;驗證證書,可用于驗證他人證書的有效性。
密碼模塊:加密解密消息,使用各種算法對消息進行加解密操作;生成會話密鑰,為通信的雙方生成會話密鑰;數字簽名,對消息進行數字簽名;簽名驗證,可對已進行數字簽名的消息進行驗證其完整性和發送方身份。
總體框架:
基于Web Services的安全中間件的設計目標,是為了讓所有類型的應用程序都能通過由WS-Security保護的SOAP協議來獲取安全服務。本中間件總體框架如下圖所示:

如圖2所示,本系統采用分層的設計結構。最上層為服務發布接口,以Web Services的形式發布給應用程序,而不是傳統的采用API或RPC遠程調用接口,消除了應用程序層與安全服務層之間的耦合性,也使得應用程序與安全中間件無需部署在一起,大大提高了企業信息系統的整體靈活性。
安全中間件在接收到請求后對其進行解析,然后進行相應的操作并返回。在應用程序接口下面,是兩個主要模塊接口——證書服務與密碼服務接口,設計這兩個接口的目的是為了日后系統的擴展。
在兩個接口的下面,是兩個模塊的具體實現,這里的具體實現有兩種方式,一是使用各種成熟的組件直接實現服務,如Sun提供的JCE、JAAS及JSSE,微軟的CryptAPI或Intel的CDSA等;二是通過統一的PKI接口調用現成的PKI設施,其好處是可以隨以后需求的變更而靈活使用不同的PKI產品。PKI統一接口的下方PKI Provider xx是針對某一PKI產品所設計的專用轉換接口,實現從特定PKI產品自身接口到本系統PKI統一接口的轉換。
實現細節:
下面是本系統的服務接口設計,這里的服務接口是指本安全中間件開發給應用程序的服務接口。本系統的Web Service的實現采用AXIS2開源框架。下面將使用AXIS2的services.xml說明服務接口的設計,并結合使用SOAP消息格式進行詳細說明。

如services.xml文件中申請證書的xml配置如下:
本文就傳統安全中間件與基于Web Services的安全中間件進行探討比較,進而總結出基于Web Services的安全中間件的優勢之處在于松耦合、跨平臺與跨編程語言。接著,提出基于Web Services的安全中間件的設計方案,并實現了上述三點優勢。當然,本系統目前還存在一些不足之處,在完整性方面,目前僅實現了基本的安全服務功能;在標準性方面,目前采用的Web Services安全規范仍處于草案階段而不是公認的標準;最后是實用性,本系統目前仍處于測試階段,最終能否勝任安全強度的要求仍需進一步的考驗。
參考文獻
[1]JP Morgenthal. Web Services for Enterprise Application Integration. [A] Journal, 2002,2(5 ): 14 ~16
[2]張志擦. 中間件技術. 北京:中國石化出版社,2002. 122~123
[3]荊繼武. PKI系統研究:[博士學位論文]. 北京:中國科學院研究生院,2002
[4]張振興. Web服務安全性的研究與實現:[D]. 華北電力大學碩士論文,2004
[5]肖軍模,劉軍. 網絡信息安全. 北京:機械工業出版社,2003. 23~24
[6]Markham T. Security at the network edge. Information Survivability Conference, 2001,11. 279~286
[7]Simple Object Access Protocol(SOAP)1 .1.http://www.w3c.org/TR/2000/NOTE-SOAP-20000508
[8]Paul Kearney. Message level security for Web services, Information Security Technical Report, 2005(10): 41-50