close

在Web Services 的架構中,交易雙方利用SOAP 通訊協定傳輸交易訊息時,其內容為一般明文格式,意謂著訊息內容可以被有心人士所攔截並窺視。因此,在傳輸SOAP 訊息時,對於具有機密性的資料應該作加密的動作。

建立Web Services Security 可以採用前述加解密的方式,也可以採用SSL(Secure Socket Layer)的方式。但使用SSL 的問題是SSL只能使用HTTP(Hyper Text Transmission Protocol)通訊協定,而不能用在其他傳輸協定如SMTP(Simple Mail Transfer Protocol)、FTP(File Transfer Protocol)等。

另外,使用SSL 會產生較大的負荷,因為SSL 會對整個SOAP 訊息都做加密的動作。因此,另一項方案就是只針對SOAP 訊息中需要加密的部分做加密,除可以減少處理時間外,也不會受到傳輸通訊協定的限制。


雖然W3C 的Web Services Activity 在制訂SOAP 時,並未提供安全性的要素,但在SOAP 訊息的封裝中可以利用XML 的延伸性,將金鑰封裝至SOAP 訊息中,提供在Web Services 訊息中傳送公開金鑰和數位簽章。另外,微軟、IBM 及VeriSign 也於2002 年4 月聯合發表網路服務安全規格(WS-Security)。規格中整合了微軟與IBM 先前所分別訂定的不同安全規格,後面章節將會針對在Web Services 的SOAP 訊息中如何加入憑證資訊的技術與應用作說明。


另外,在2001 年3 月,由VeriSign、Microsoft、webMethods 三家公司也共同制訂出一項XML金鑰管理規格(XML Key ManagementSpecification,XKMS),其結合XML 的互通性和PKI 的安全性,並提供一些方法讓應用能夠管理並使用公開金鑰來交換資料。
W3C 組織的Web Services Activity 所制訂的SOAP 1.2 版的Messaging Framework 文件中,對於SOAP 的安全性考量表示,SOAP的訊息架構中並不直接提供控制存取(Access Control)、機密性(Confidentiality)、整合性(Integrity)、和不可否認性(Non-repudiation)等機制。若需使用上述機制,則需要使用SOAP 所提供的延伸功能,稱為SOAP 可延伸性模式(SOAP Extensibility Model)。


SOAP 提供了SOAP 訊息架構的可延伸模式,讓SOAP 訊息的實作者可以在訊息中增加可信賴性、安全性、關連性、路由,及訊息交換格式。另外,SOAP 訊息架構的規格中亦強烈建議SOAP 訊息的實作者應該要在SOAP 的訊息中加入可信賴的功能,而SOAP 訊息的接收者則應該判斷其所接受的訊息的可靠度。
SOAP 可以將應用所定義的資料放在訊息格式的標頭區塊(Header Blocks)或是本體的內容(Body Contents)中,對加密籌載物(Payload)的請求:
當傳送者欲對籌載物加密並傳送訊息給接收者時,傳送端的應用會將資料加密,封裝至SOAP 訊息中傳送給接收者。而當資料抵達接收端時,接收端的應用可能會使用相同的方式解密,亦即可使用對稱式金鑰來對訊息作加解密。

當應用欲對內容加密時,會隨機產生一組對稱式金鑰,並用此金鑰對內容加密,由於對稱式加密法的速度快,因此不會對系統產生太大負擔。但是接收端的應用並不知道這把對稱式金鑰的值,所以接收端需將此把金鑰封裝至SOAP 訊息中,並使用接收端的公開金鑰對此對稱式金鑰加密,以確保只有接收端可以使用這把對稱式金鑰。在SOAP 訊息中需包含公開金鑰資訊、加密過的對稱式金鑰、加密內文等。本例為將加密的資料置入內文中的封裝格式。

 

WS-Security 規格提出一套標準SOAP 的延伸規格,用於建立安全的Web Services 訊息。WS-Security 標準提供在Web Services 訊息中加入安全性的機制,由於此標準為一廣泛的安全性標準,故WS-Security 中並無對於Security Token 的限制。規格中包含多種安全模式的應用,如PKI、Kerberos、SSL,且支援在訊息中使用多重Security Token 格式、多重Trust Domains、多重簽章格式、和多重加密技術。
該規格中也提供了三項主要機制:在訊息中可以傳送Security Token、訊息整合性、和訊息機密性。


WS-Security 規格說明了如何將Security Token 和數位簽章結合至Web Services 的SOAP 訊息中,使得當交易進行時,可以確保訊息的安全性和鑑別性。以下針對WS-Security 規格中關於PKI 的安全應用作一說明:


Security Header
利用… 的標頭區塊標籤可以在標頭檔中宣告欲使用的Security Token 的相關資訊。欲使用多個Security
Token,則可重複使用 的標籤,參考多個Security 應用範例:(Web Services Security – X509 Certificate Token Profile)
Security Tokens
在Security Header 中可以加入對於Security Token 的資訊,資訊內容包含:
l User Name Token:在安全性標頭中可以選擇是否要提供使用者名稱。
應用範例:(Web Services Security – X.509 Certificate Token Profile)
Binary Security Token:提供X.509 憑證、Kerberos Tickets 或其他
非XML格式的Security Tokens 的相關資訊,包括ID、Value Type
和EncodingType。
應用範例:(Web Services Security – X509 Certificate Token Profile)

 

 

當在SOAP 訊息中使用X.509 憑證中的金鑰來作為簽章金鑰時,該簽章演算法必須為一個數位簽章演算法。另外,當在SOAP 訊息中使用X.509 憑證中的金鑰來作為加密金鑰時,該加密演算法必須為一個公開金鑰加密演算法。另外,當使用X.509 憑證時,使用者必須使用WS-Security 規格中所定義的錯誤訊息。若實作者需要使用自訂的錯誤訊息時,建議應改採用延伸定義訊息的方式,將自己定義的訊息包含在規格中所定義的錯誤訊息中。

參考資料
l XML Key Management Specification
http://www.w3.org/TR/xkms/
l XML Signature WG
http://www.w3.org/Signature/
l SOAP Version 1.2 Usage Scenarios
http://www.w3.org/TR/2002/WD-xmlp-scenarios-20020626/
l SOAP Version 1.2 Part 1: Messaging Framework
http://www.w3.org/TR/2003/PR-soap12-part1-20030507/
l Specification: Web Services Secur ity
http://www-106.ibm.com/developerworks/library/ws-secure/
l Web Services Security: X.509 Certificate Token Profile
http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wss
l .Net Magazine - Secure Web Services
http://www.fawcette.com/dotnetmag/2001_12/magazine/columns/yshohoud/
l .Net Magazine - Create Secure Web Services With PKI
http://www.fawcette.com/dotnetmag/2002_04/online/online_print/abrown/
l Visual Studio Magazine - Secure Your Web Services
http://www.fawcette.com/vsm/2002_06/online/menglee/
l XML & Web Services Magazine - Compare Web Service Security Metrics
http://www.fawcette.com/xmlmag/2002_10/online/webServices_rjennings_10_1
6_02/
l XML & Web Services Magazine - Encrypting SOAP Messages in .Net
http://www.fawcette.com/xmlmag/2002_10/magazine/columns/netdomain/
l XML & Web Services Magazine - The Crux of SOAP Encryption
http://www.fawcette.com/xmlmag/2002_12/magazine/columns/dwahlin/

 

arrow
arrow
    全站熱搜

    白努力電腦日記 發表在 痞客邦 留言(0) 人氣()