摘 要: 網(wǎng)格是在互聯(lián)網(wǎng)的基礎(chǔ)上發(fā)展起來(lái)并得到應(yīng)用的。伴隨著互聯(lián)網(wǎng)開放性所帶來(lái)的信息安全問(wèn)題日趨嚴(yán)重,用于網(wǎng)格中數(shù)據(jù)交換" title="數(shù)據(jù)交換">數(shù)據(jù)交換的安全需求也越來(lái)越重要。分析了基于可擴(kuò)展" title="可擴(kuò)展">可擴(kuò)展標(biāo)記語(yǔ)言XML的數(shù)據(jù)交換的安全需求,介紹了XML安全服務(wù)中加密與簽名的標(biāo)準(zhǔn)。針對(duì)XML數(shù)據(jù)交換的請(qǐng)求/響應(yīng)機(jī)制, 給出了XML數(shù)據(jù)交換的加密與簽名機(jī)制及實(shí)例。
關(guān)鍵詞: 網(wǎng)格 可擴(kuò)展標(biāo)記語(yǔ)言 加密 簽名
1 網(wǎng)格概述
網(wǎng)格是基于計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)技術(shù)發(fā)展起來(lái)的,它將地理位置上分散的資源集成起來(lái),從而建立起一種構(gòu)筑在國(guó)際互聯(lián)網(wǎng)" title="國(guó)際互聯(lián)網(wǎng)">國(guó)際互聯(lián)網(wǎng)上的新型計(jì)算平臺(tái)。通過(guò)網(wǎng)格,人們可以獲得諸如計(jì)算機(jī)、集群、計(jì)算機(jī)池、儀器、存儲(chǔ)設(shè)施、數(shù)據(jù)、軟件等各種資源、功能和服務(wù)。使人們共享計(jì)算資源、存儲(chǔ)資源及其他資源[1]。
有了這種以現(xiàn)有的國(guó)際互聯(lián)網(wǎng)為基礎(chǔ)建立的滿足人們對(duì)資源更高共享需求的計(jì)算機(jī)平臺(tái),人們就可以實(shí)現(xiàn)跨組織、跨管理域的管理資源,并為網(wǎng)格應(yīng)用提供全面的資源共享接口,實(shí)現(xiàn)分布資源的有效集成,提供共享各種資源的手段,從而提高資源的利用率,滿足人們對(duì)廣域范圍內(nèi)各種資源的共享需求。
在網(wǎng)格環(huán)境下,人們不僅可以向網(wǎng)格發(fā)出請(qǐng)求資源消息,由網(wǎng)格接收請(qǐng)求并做出響應(yīng),而且客戶提出的請(qǐng)求能夠同時(shí)驅(qū)動(dòng)多個(gè)資源工作。多個(gè)請(qǐng)求可以向多個(gè)服務(wù)器請(qǐng)求連接??蛻舫绦蛸Y源可以被其他客戶請(qǐng)求作為資源使用。網(wǎng)格的目的是無(wú)論地理位置的遠(yuǎn)近、設(shè)備類型的異同,都可以為用戶提供統(tǒng)一且簡(jiǎn)單的共享網(wǎng)格資源的環(huán)境。為達(dá)到網(wǎng)格的目的,需要建立相應(yīng)的網(wǎng)格體系結(jié)構(gòu)。最簡(jiǎn)單的一種就是由分布式資源、網(wǎng)格系統(tǒng)" title="網(wǎng)格系統(tǒng)">網(wǎng)格系統(tǒng)及網(wǎng)格用戶組成的三層結(jié)構(gòu)(如圖1)。底層是網(wǎng)格的物理層,它是分布式網(wǎng)格資源的集合,是建立網(wǎng)格的基礎(chǔ)。頂層是網(wǎng)格的應(yīng)用層,它是應(yīng)用分布式網(wǎng)格資源的集合,是網(wǎng)格應(yīng)用的基礎(chǔ)。網(wǎng)格系統(tǒng)在物理層和應(yīng)用層的中間,將用戶和資源聯(lián)系起來(lái)提供透明的使用,以支持全方位的資源共享。網(wǎng)格系統(tǒng)提供的功能就是應(yīng)用層的需求,它直接影響著網(wǎng)格所要達(dá)到的目的。
網(wǎng)格是一個(gè)開放、動(dòng)態(tài)、異構(gòu)、分布的系統(tǒng),要想將互聯(lián)網(wǎng)上分布的各種已經(jīng)接入網(wǎng)絡(luò)的設(shè)備以及將要接入網(wǎng)絡(luò)的設(shè)備有機(jī)地集成,不是簡(jiǎn)單的連通問(wèn)題。網(wǎng)格要為用戶和應(yīng)用提供訪問(wèn)使用資源的統(tǒng)一接口。它要對(duì)不同的物理資源進(jìn)行不同層次的抽象,使不同的模塊協(xié)調(diào)起來(lái);定義好各模塊的關(guān)系、模塊間進(jìn)行交互的協(xié)議及相應(yīng)的方法與規(guī)則。網(wǎng)格是以原有的國(guó)際互聯(lián)網(wǎng)為基礎(chǔ)構(gòu)建的,需要已有的一些協(xié)議和規(guī)范作為支持。圖2所示為支持國(guó)際互聯(lián)網(wǎng)的各網(wǎng)格協(xié)議的層次。HTTP、FTP、SMTP都是網(wǎng)格協(xié)議的傳輸載體,同時(shí)也都是網(wǎng)格建設(shè)的基礎(chǔ)。無(wú)論網(wǎng)格的具體實(shí)現(xiàn)細(xì)節(jié)如何,從用戶的角度來(lái)看,它的確只是一個(gè)網(wǎng)格接口。通過(guò)這個(gè)接口,用戶向網(wǎng)格發(fā)送請(qǐng)求和接收來(lái)自網(wǎng)格的信息。網(wǎng)格接口就是要定義實(shí)現(xiàn)數(shù)據(jù)交換的協(xié)議,采用相同協(xié)議的雙方要能夠相互理解對(duì)方的含義。在協(xié)議中還要指明數(shù)據(jù)表示格式和數(shù)據(jù)內(nèi)容的具體含義。XML就是適合網(wǎng)絡(luò)上使用的一種數(shù)據(jù)交換語(yǔ)言,它已經(jīng)在網(wǎng)格領(lǐng)域得到廣泛使用。
2 XML的運(yùn)用
目前網(wǎng)格上最常用的數(shù)據(jù)交換表示形式中最重要和最常用的就是XML。XML是SGML的一個(gè)子集,以結(jié)構(gòu)化" title="結(jié)構(gòu)化">結(jié)構(gòu)化的方式描述各種類型的數(shù)據(jù)。它允許文檔制作人員創(chuàng)建新的標(biāo)記,以便更準(zhǔn)確地描述數(shù)據(jù)。XML幾乎可以描述所有領(lǐng)域的數(shù)據(jù)。它用嚴(yán)格的嵌套標(biāo)記表示數(shù)據(jù)信息,特別適合在國(guó)際互聯(lián)網(wǎng)的多點(diǎn)數(shù)據(jù)交換環(huán)境下使用[2]。
XML本身是可擴(kuò)展的,只規(guī)定了標(biāo)準(zhǔn)的語(yǔ)法。XML是可以創(chuàng)建行業(yè)詞匯和應(yīng)用的語(yǔ)言,其文檔的基本語(yǔ)法由W3C創(chuàng)建文檔定義的XML模式所規(guī)定。在XML文檔中所有開始標(biāo)記都必須有對(duì)應(yīng)的結(jié)束標(biāo)記,并且這種標(biāo)記有元素和屬性兩種類型。元素由起始標(biāo)記、數(shù)據(jù)和結(jié)束標(biāo)記三部分組成,如:<data>123</data>就是一個(gè)元素。而屬性是修飾成分,由屬性名后跟一個(gè)等號(hào)加屬性值的形式構(gòu)成,用來(lái)描述元素的某些性質(zhì)。屬性必須有一個(gè)屬性值。例如:<數(shù)據(jù) 編號(hào)=“56789”>我的數(shù)據(jù)</數(shù)據(jù)>就是一個(gè)有屬性的,其中“編號(hào)”是屬性,“56789”是屬性值。
在網(wǎng)格環(huán)境下,由于XML文檔的結(jié)構(gòu)化和可讀性, XML數(shù)據(jù)經(jīng)常作為公文或流程數(shù)據(jù),以合作的形式流轉(zhuǎn),因此還需要用加密和簽名來(lái)保證基于XML的數(shù)據(jù)交換活動(dòng)中信息的安全性[3]。XML語(yǔ)言的安全是網(wǎng)格上信息交換的基礎(chǔ)。為保障XML數(shù)據(jù)交換的安全性,國(guó)際標(biāo)準(zhǔn)化組織W3C提出了一系列XML安全服務(wù)的新標(biāo)準(zhǔn),為以XML作為數(shù)據(jù)交換載體的應(yīng)用提供安全性保障。這些標(biāo)準(zhǔn)包括:XML加密(XML Encryption)、XML數(shù)字簽名(XML Signature)、XML密鑰管理規(guī)范(XKMS)、XML訪問(wèn)控制標(biāo)記語(yǔ)言(XACML)等。
XML語(yǔ)言的搜索是明確的、無(wú)二義性的。在交換敏感信息時(shí),發(fā)信方及收信方必須建立安全的通信機(jī)制。為確保安全性,在使用XML交換數(shù)據(jù)時(shí),需要在數(shù)據(jù)上使用加密及簽名技術(shù)。
2.1 XML加密機(jī)制
XML加密(XML Encryption)是對(duì)XML文檔中的全部數(shù)據(jù)或其中部分元素進(jìn)行加密。對(duì)同一文檔的不同部分,可采用不同的密鑰進(jìn)行加密,將同一個(gè)XML文件分別發(fā)給不同的接收者后,接收者只能訪問(wèn)擁有權(quán)限的那部分信息。XML加密語(yǔ)法的核心元素是EncryptedData元素,該元素與EncryptedKey元素一起用來(lái)將加密密鑰從發(fā)送方傳送到已知的接收方,它描述了一個(gè)加密數(shù)據(jù)包含的所有信息[1]。加密時(shí),EncryptedData 元素替換 XML 文檔加密版本中的該元素或內(nèi)容。當(dāng)加密的數(shù)據(jù)是任意數(shù)據(jù)時(shí),EncryptedData 元素可能成為新 XML 文檔的根,或成為一個(gè)子元素。當(dāng)加密整個(gè) XML 文檔時(shí),EncryptedData元素則成為新文檔的根[4]。
在加密過(guò)程中,對(duì)于經(jīng)過(guò)加密的數(shù)據(jù),只有指定的接收者才可以從中還原出密碼本身。XML加密定義了一些元素: EncryptionMethod子元素使用URI惟一標(biāo)識(shí)中所采用的加密算法,目的是確保通信雙方可以在加密算法上保持一致。KeyInfo子元素表達(dá)了加密時(shí)所使用的密鑰信息,它可以根據(jù)通信雙方的約定,記錄密鑰名稱、密鑰值、數(shù)字證書,甚至獲得密鑰轉(zhuǎn)換方法的描述,從而確保密鑰的安全性。CipherData子元素標(biāo)記為被加密的數(shù)據(jù)。EncryptionProperties子元素可以用來(lái)描述加密數(shù)據(jù)和密鑰的附加信息,如時(shí)間戳、加密序列號(hào)[4]。發(fā)送者創(chuàng)建符合以上結(jié)構(gòu)的EncryptedData元素發(fā)給接收者;接收者可以根據(jù)從EncryptedData元素中得到的解密所需的加密算法、參數(shù)和密鑰信息,正確地解密信息。
2.2 XML簽名機(jī)制
XML簽名標(biāo)準(zhǔn)可對(duì)任何數(shù)據(jù)類型提供完整性、消息認(rèn)證、簽名認(rèn)證等服務(wù)。XML簽名的主要目的是確保XML文件內(nèi)容沒(méi)有被篡改,對(duì)來(lái)源的可靠性進(jìn)行驗(yàn)證[4]。XML簽名是使用XML應(yīng)用開發(fā)工具實(shí)現(xiàn)的,而不是使用專用軟件。簽名時(shí)可直接對(duì)XML內(nèi)容進(jìn)行處理。
Signature是XML簽名的元素,描述傳輸一個(gè)數(shù)字簽名的完整信息。SignedInfo子元素記錄被簽署的原始信息。CanoniclizationMethod子元素使用URI惟一標(biāo)識(shí)。該數(shù)字簽名采用XML的數(shù)據(jù)算法,它是正確解析XML數(shù)據(jù)簽名的前提。因?yàn)閄ML數(shù)字簽名對(duì)SignedInfo子元素的字節(jié)流進(jìn)行運(yùn)算處理時(shí),采用Canonicalization使XML簽名適應(yīng)各種文件系統(tǒng)和處理器在版式上的差異,使 XML簽名適應(yīng)XML文件可能遇到的各種環(huán)境。SignatureMethod元素記錄的是簽名所采用的算法。Reference子元素指定的是摘要算法和摘要值。經(jīng)過(guò)運(yùn)算的SignedInfo子元素記錄在SignedValue中。KeyInfo子元素是接收者用來(lái)得到有效簽名的密鑰信息。接收者可以根據(jù)Signature元素包含的信息確定數(shù)據(jù)的完整性和可靠性。
2.3 XML數(shù)據(jù)交換安全中實(shí)現(xiàn)加密、簽名的實(shí)例
XML作為實(shí)現(xiàn)跨平臺(tái)信息交換和提高異構(gòu)系統(tǒng)之間互操作性的最佳解決方案而被提出,這極大地促進(jìn)了數(shù)據(jù)交換應(yīng)用的發(fā)展。而基于XML強(qiáng)大的可擴(kuò)展性而提出的XML安全服務(wù)標(biāo)準(zhǔn),使得可以在考慮XML數(shù)據(jù)信息交換的安全控制問(wèn)題上,完全采用基于XML標(biāo)準(zhǔn)的體系結(jié)構(gòu),繼承XML的靈活性和可擴(kuò)展性。圖3給出一個(gè)安全的XML數(shù)據(jù)交換請(qǐng)求/響應(yīng)流程。
在安全處理模塊中,操作的對(duì)象是根據(jù)訪問(wèn)請(qǐng)求生成的原始XML文檔,因此可以采用XML加密規(guī)范和XML簽名規(guī)范進(jìn)行安全處理。首先,對(duì)其中包含的敏感信息元素采用特定的加密算法加密,或者采用非對(duì)稱密鑰體系的公鑰進(jìn)行加密。加密時(shí),首先將算法信息和密鑰信息放在<EncryptionMethod>和<KeyInfo>子元素中,加密后的信息構(gòu)成<CipherData>元素,然后建立符合XML加密規(guī)范的EncrypedData元素,取代文檔中被加密元素。其次,對(duì)該文檔進(jìn)行數(shù)字簽名。簽名時(shí),首先通過(guò)消息摘要運(yùn)算得到摘要值,放在<DigestValue>元素中,再建立<Reference>元素和<SignedInfo>元素;然后通過(guò)對(duì)
<SignedInfo>元素進(jìn)行規(guī)范化處理產(chǎn)生<SignatureValue>元素;最后生成包含<SignedInfo>、<SignatureValue>和可選的<KeyInfo>、<Object>等元素的<Signature>元素,嵌入XML文檔內(nèi)部作為目標(biāo)文檔發(fā)送,或者以外部文檔形式隨同目標(biāo)文檔發(fā)送。下面給是一個(gè)用XML實(shí)現(xiàn)加密與簽名的例子[1]:
?。??xml version=″1.0″ encoding=″UTF-8″?>
?。約ignature xmlns=″http://www.w3.org/2001/08/xmldsig#″>
?。約ignedInfo>
……
<Reference URI=″″>
?。糡ransforms>
?。糡ransform Algorithm=″http://″>
<DataReference URI=″#encl″ xmls=http:///>
?。?Transform>
?。糡randsform Algorithm=″″/>
?。?Transforms>
……
?。?Reference>
?。?SignedInfo>
?。糞ignatureValue>
……
?。?SignatureValue>
<KeyInfo>
?。?- 密鑰信息-->
</KeyInfo>
?。糘bject>
<--數(shù)據(jù)-->
?。紓€(gè)人數(shù)據(jù)>
<客戶 標(biāo)識(shí)=″12000″>
<名字>張三</名字>
?。冀痤~>2500</金額>
?。假~號(hào)>2000036547892</賬號(hào)>
<EncryptedData>
?。糆ncryptionMethod Algorithm=″3des-cbc″>
?。糑eyInfo>Total Security Key</KeyInfo>
?。糃ipherData>……</CipherData>
?。?EncryptedData>
?。?客戶>
?。?個(gè)人數(shù)據(jù)>
?。糘bject>
?。?Signature>
上例對(duì)XML加密的數(shù)據(jù)進(jìn)行了簽名,被簽名的內(nèi)容包含在object元素中。
作為一個(gè)開放的平臺(tái),由于資源的共享性和互操作性,互聯(lián)網(wǎng)也面臨著各種各樣的安全威脅,如信息竊取、惡意欺騙、偽裝、非法修改以及各種擾亂破壞等。隨著XML技術(shù)的廣泛應(yīng)用和深入發(fā)展,在開放環(huán)境下進(jìn)行XML數(shù)據(jù)交換,確保信息的安全性是XML應(yīng)用順利開展的首要條件。XML數(shù)據(jù)經(jīng)常作為公文或流程數(shù)據(jù),以合作的形式流轉(zhuǎn),因此需要有加密和簽名來(lái)支持。依據(jù)XML語(yǔ)言自身具有的結(jié)構(gòu)化特征,XML文檔同時(shí)也具有結(jié)構(gòu)化和可讀性,通過(guò)對(duì)加密機(jī)制和簽名機(jī)制的運(yùn)用,可以保證XML數(shù)據(jù)交換活動(dòng)中信息的安全性。XML的安全機(jī)制為確保網(wǎng)格資源的安全共享提供了保障。
參考文獻(xiàn)
1 徐志偉,馮百明,李偉編.網(wǎng)格計(jì)算機(jī)技術(shù).北京:電子工業(yè)出版社,2004
2 Deitel H M,Deitel P J著,康博譯.XML編程技術(shù)大全.北京:清華大學(xué)出版社,2002
3 金可仲,陳慶章.XML數(shù)據(jù)交換的安全解決方案.http://www.ahcit.com/200306/37.doc,2004-6