《電子技術應用》
您所在的位置:首頁 > 通信與網(wǎng)絡 > 業(yè)界動態(tài) > 基于網(wǎng)格安全的XML數(shù)據(jù)交換技術的原理與實現(xiàn)

基于網(wǎng)格安全的XML數(shù)據(jù)交換技術的原理與實現(xiàn)

2008-06-13
作者:徐 秀,張 申

  摘 要: 網(wǎng)格是在互聯(lián)網(wǎng)的基礎上發(fā)展起來并得到應用的。伴隨著互聯(lián)網(wǎng)開放性所帶來的信息安全問題日趨嚴重,用于網(wǎng)格中數(shù)據(jù)交換" title="數(shù)據(jù)交換">數(shù)據(jù)交換的安全需求也越來越重要。分析了基于可擴展" title="可擴展">可擴展標記語言XML的數(shù)據(jù)交換的安全需求,介紹了XML安全服務中加密與簽名的標準。針對XML數(shù)據(jù)交換的請求/響應機制, 給出了XML數(shù)據(jù)交換的加密與簽名機制及實例。
  關鍵詞: 網(wǎng)格 可擴展標記語言 加密 簽名


1 網(wǎng)格概述
  網(wǎng)格是基于計算機技術和網(wǎng)絡技術發(fā)展起來的,它將地理位置上分散的資源集成起來,從而建立起一種構筑在國際互聯(lián)網(wǎng)" title="國際互聯(lián)網(wǎng)">國際互聯(lián)網(wǎng)上的新型計算平臺。通過網(wǎng)格,人們可以獲得諸如計算機、集群、計算機池、儀器、存儲設施、數(shù)據(jù)、軟件等各種資源、功能和服務。使人們共享計算資源、存儲資源及其他資源[1]。
  有了這種以現(xiàn)有的國際互聯(lián)網(wǎng)為基礎建立的滿足人們對資源更高共享需求的計算機平臺,人們就可以實現(xiàn)跨組織、跨管理域的管理資源,并為網(wǎng)格應用提供全面的資源共享接口,實現(xiàn)分布資源的有效集成,提供共享各種資源的手段,從而提高資源的利用率,滿足人們對廣域范圍內(nèi)各種資源的共享需求。
  在網(wǎng)格環(huán)境下,人們不僅可以向網(wǎng)格發(fā)出請求資源消息,由網(wǎng)格接收請求并做出響應,而且客戶提出的請求能夠同時驅(qū)動多個資源工作。多個請求可以向多個服務器請求連接??蛻舫绦蛸Y源可以被其他客戶請求作為資源使用。網(wǎng)格的目的是無論地理位置的遠近、設備類型的異同,都可以為用戶提供統(tǒng)一且簡單的共享網(wǎng)格資源的環(huán)境。為達到網(wǎng)格的目的,需要建立相應的網(wǎng)格體系結構。最簡單的一種就是由分布式資源、網(wǎng)格系統(tǒng)" title="網(wǎng)格系統(tǒng)">網(wǎng)格系統(tǒng)及網(wǎng)格用戶組成的三層結構(如圖1)。底層是網(wǎng)格的物理層,它是分布式網(wǎng)格資源的集合,是建立網(wǎng)格的基礎。頂層是網(wǎng)格的應用層,它是應用分布式網(wǎng)格資源的集合,是網(wǎng)格應用的基礎。網(wǎng)格系統(tǒng)在物理層和應用層的中間,將用戶和資源聯(lián)系起來提供透明的使用,以支持全方位的資源共享。網(wǎng)格系統(tǒng)提供的功能就是應用層的需求,它直接影響著網(wǎng)格所要達到的目的。


  網(wǎng)格是一個開放、動態(tài)、異構、分布的系統(tǒng),要想將互聯(lián)網(wǎng)上分布的各種已經(jīng)接入網(wǎng)絡的設備以及將要接入網(wǎng)絡的設備有機地集成,不是簡單的連通問題。網(wǎng)格要為用戶和應用提供訪問使用資源的統(tǒng)一接口。它要對不同的物理資源進行不同層次的抽象,使不同的模塊協(xié)調(diào)起來;定義好各模塊的關系、模塊間進行交互的協(xié)議及相應的方法與規(guī)則。網(wǎng)格是以原有的國際互聯(lián)網(wǎng)為基礎構建的,需要已有的一些協(xié)議和規(guī)范作為支持。圖2所示為支持國際互聯(lián)網(wǎng)的各網(wǎng)格協(xié)議的層次。HTTP、FTP、SMTP都是網(wǎng)格協(xié)議的傳輸載體,同時也都是網(wǎng)格建設的基礎。無論網(wǎng)格的具體實現(xiàn)細節(jié)如何,從用戶的角度來看,它的確只是一個網(wǎng)格接口。通過這個接口,用戶向網(wǎng)格發(fā)送請求和接收來自網(wǎng)格的信息。網(wǎng)格接口就是要定義實現(xiàn)數(shù)據(jù)交換的協(xié)議,采用相同協(xié)議的雙方要能夠相互理解對方的含義。在協(xié)議中還要指明數(shù)據(jù)表示格式和數(shù)據(jù)內(nèi)容的具體含義。XML就是適合網(wǎng)絡上使用的一種數(shù)據(jù)交換語言,它已經(jīng)在網(wǎng)格領域得到廣泛使用。


2 XML的運用
  目前網(wǎng)格上最常用的數(shù)據(jù)交換表示形式中最重要和最常用的就是XML。XML是SGML的一個子集,以結構化" title="結構化">結構化的方式描述各種類型的數(shù)據(jù)。它允許文檔制作人員創(chuàng)建新的標記,以便更準確地描述數(shù)據(jù)。XML幾乎可以描述所有領域的數(shù)據(jù)。它用嚴格的嵌套標記表示數(shù)據(jù)信息,特別適合在國際互聯(lián)網(wǎng)的多點數(shù)據(jù)交換環(huán)境下使用[2]。
  XML本身是可擴展的,只規(guī)定了標準的語法。XML是可以創(chuàng)建行業(yè)詞匯和應用的語言,其文檔的基本語法由W3C創(chuàng)建文檔定義的XML模式所規(guī)定。在XML文檔中所有開始標記都必須有對應的結束標記,并且這種標記有元素和屬性兩種類型。元素由起始標記、數(shù)據(jù)和結束標記三部分組成,如:<data>123</data>就是一個元素。而屬性是修飾成分,由屬性名后跟一個等號加屬性值的形式構成,用來描述元素的某些性質(zhì)。屬性必須有一個屬性值。例如:<數(shù)據(jù) 編號=“56789”>我的數(shù)據(jù)</數(shù)據(jù)>就是一個有屬性的,其中“編號”是屬性,“56789”是屬性值。
  在網(wǎng)格環(huán)境下,由于XML文檔的結構化和可讀性, XML數(shù)據(jù)經(jīng)常作為公文或流程數(shù)據(jù),以合作的形式流轉(zhuǎn),因此還需要用加密和簽名來保證基于XML的數(shù)據(jù)交換活動中信息的安全性[3]。XML語言的安全是網(wǎng)格上信息交換的基礎。為保障XML數(shù)據(jù)交換的安全性,國際標準化組織W3C提出了一系列XML安全服務的新標準,為以XML作為數(shù)據(jù)交換載體的應用提供安全性保障。這些標準包括:XML加密(XML Encryption)、XML數(shù)字簽名(XML Signature)、XML密鑰管理規(guī)范(XKMS)、XML訪問控制標記語言(XACML)等。
  XML語言的搜索是明確的、無二義性的。在交換敏感信息時,發(fā)信方及收信方必須建立安全的通信機制。為確保安全性,在使用XML交換數(shù)據(jù)時,需要在數(shù)據(jù)上使用加密及簽名技術。
2.1 XML加密機制
  XML加密(XML Encryption)是對XML文檔中的全部數(shù)據(jù)或其中部分元素進行加密。對同一文檔的不同部分,可采用不同的密鑰進行加密,將同一個XML文件分別發(fā)給不同的接收者后,接收者只能訪問擁有權限的那部分信息。XML加密語法的核心元素是EncryptedData元素,該元素與EncryptedKey元素一起用來將加密密鑰從發(fā)送方傳送到已知的接收方,它描述了一個加密數(shù)據(jù)包含的所有信息[1]。加密時,EncryptedData 元素替換 XML 文檔加密版本中的該元素或內(nèi)容。當加密的數(shù)據(jù)是任意數(shù)據(jù)時,EncryptedData 元素可能成為新 XML 文檔的根,或成為一個子元素。當加密整個 XML 文檔時,EncryptedData元素則成為新文檔的根[4]。
  在加密過程中,對于經(jīng)過加密的數(shù)據(jù),只有指定的接收者才可以從中還原出密碼本身。XML加密定義了一些元素: EncryptionMethod子元素使用URI惟一標識中所采用的加密算法,目的是確保通信雙方可以在加密算法上保持一致。KeyInfo子元素表達了加密時所使用的密鑰信息,它可以根據(jù)通信雙方的約定,記錄密鑰名稱、密鑰值、數(shù)字證書,甚至獲得密鑰轉(zhuǎn)換方法的描述,從而確保密鑰的安全性。CipherData子元素標記為被加密的數(shù)據(jù)。EncryptionProperties子元素可以用來描述加密數(shù)據(jù)和密鑰的附加信息,如時間戳、加密序列號[4]。發(fā)送者創(chuàng)建符合以上結構的EncryptedData元素發(fā)給接收者;接收者可以根據(jù)從EncryptedData元素中得到的解密所需的加密算法、參數(shù)和密鑰信息,正確地解密信息。
2.2 XML簽名機制
  XML簽名標準可對任何數(shù)據(jù)類型提供完整性、消息認證、簽名認證等服務。XML簽名的主要目的是確保XML文件內(nèi)容沒有被篡改,對來源的可靠性進行驗證[4]。XML簽名是使用XML應用開發(fā)工具實現(xiàn)的,而不是使用專用軟件。簽名時可直接對XML內(nèi)容進行處理。
  Signature是XML簽名的元素,描述傳輸一個數(shù)字簽名的完整信息。SignedInfo子元素記錄被簽署的原始信息。CanoniclizationMethod子元素使用URI惟一標識。該數(shù)字簽名采用XML的數(shù)據(jù)算法,它是正確解析XML數(shù)據(jù)簽名的前提。因為XML數(shù)字簽名對SignedInfo子元素的字節(jié)流進行運算處理時,采用Canonicalization使XML簽名適應各種文件系統(tǒng)和處理器在版式上的差異,使 XML簽名適應XML文件可能遇到的各種環(huán)境。SignatureMethod元素記錄的是簽名所采用的算法。Reference子元素指定的是摘要算法和摘要值。經(jīng)過運算的SignedInfo子元素記錄在SignedValue中。KeyInfo子元素是接收者用來得到有效簽名的密鑰信息。接收者可以根據(jù)Signature元素包含的信息確定數(shù)據(jù)的完整性和可靠性。
2.3 XML數(shù)據(jù)交換安全中實現(xiàn)加密、簽名的實例
  XML作為實現(xiàn)跨平臺信息交換和提高異構系統(tǒng)之間互操作性的最佳解決方案而被提出,這極大地促進了數(shù)據(jù)交換應用的發(fā)展。而基于XML強大的可擴展性而提出的XML安全服務標準,使得可以在考慮XML數(shù)據(jù)信息交換的安全控制問題上,完全采用基于XML標準的體系結構,繼承XML的靈活性和可擴展性。圖3給出一個安全的XML數(shù)據(jù)交換請求/響應流程。


  在安全處理模塊中,操作的對象是根據(jù)訪問請求生成的原始XML文檔,因此可以采用XML加密規(guī)范和XML簽名規(guī)范進行安全處理。首先,對其中包含的敏感信息元素采用特定的加密算法加密,或者采用非對稱密鑰體系的公鑰進行加密。加密時,首先將算法信息和密鑰信息放在<EncryptionMethod>和<KeyInfo>子元素中,加密后的信息構成<CipherData>元素,然后建立符合XML加密規(guī)范的EncrypedData元素,取代文檔中被加密元素。其次,對該文檔進行數(shù)字簽名。簽名時,首先通過消息摘要運算得到摘要值,放在<DigestValue>元素中,再建立<Reference>元素和<SignedInfo>元素;然后通過對
 ?。糞ignedInfo>元素進行規(guī)范化處理產(chǎn)生<SignatureValue>元素;最后生成包含<SignedInfo>、<SignatureValue>和可選的<KeyInfo>、<Object>等元素的<Signature>元素,嵌入XML文檔內(nèi)部作為目標文檔發(fā)送,或者以外部文檔形式隨同目標文檔發(fā)送。下面給是一個用XML實現(xiàn)加密與簽名的例子[1]
  <?xml version=″1.0″ encoding=″UTF-8″?>
  <signature xmlns=″http://www.w3.org/2001/08/xmldsig#″>
 ?。約ignedInfo>
   ……
 ?。糝eference URI=″″>
  <Transforms>
 ?。糡ransform Algorithm=″http://″>
   <DataReference URI=″#encl″ xmls=http:///>
 ?。?Transform>
  <Trandsform Algorithm=″″/>
 ?。?Transforms>
   ……
 ?。?Reference>
 ?。?SignedInfo>
  <SignatureValue>
  ……
 ?。?SignatureValue>
 ?。糑eyInfo>
 ?。?- 密鑰信息-->
  </KeyInfo>
 ?。糘bject>
 ?。?-數(shù)據(jù)-->
 ?。紓€人數(shù)據(jù)>
 ?。伎蛻?標識=″12000″>
 ?。济郑緩埲?名字>
 ?。冀痤~>2500</金額>
 ?。假~號>2000036547892</賬號>
  <EncryptedData>
 ?。糆ncryptionMethod Algorithm=″3des-cbc″>
 ?。糑eyInfo>Total Security Key</KeyInfo>
 ?。糃ipherData>……</CipherData>
 ?。?EncryptedData>
  </客戶>
 ?。?個人數(shù)據(jù)>
 ?。糘bject>
  </Signature>
  上例對XML加密的數(shù)據(jù)進行了簽名,被簽名的內(nèi)容包含在object元素中。
  作為一個開放的平臺,由于資源的共享性和互操作性,互聯(lián)網(wǎng)也面臨著各種各樣的安全威脅,如信息竊取、惡意欺騙、偽裝、非法修改以及各種擾亂破壞等。隨著XML技術的廣泛應用和深入發(fā)展,在開放環(huán)境下進行XML數(shù)據(jù)交換,確保信息的安全性是XML應用順利開展的首要條件。XML數(shù)據(jù)經(jīng)常作為公文或流程數(shù)據(jù),以合作的形式流轉(zhuǎn),因此需要有加密和簽名來支持。依據(jù)XML語言自身具有的結構化特征,XML文檔同時也具有結構化和可讀性,通過對加密機制和簽名機制的運用,可以保證XML數(shù)據(jù)交換活動中信息的安全性。XML的安全機制為確保網(wǎng)格資源的安全共享提供了保障。
參考文獻
1 徐志偉,馮百明,李偉編.網(wǎng)格計算機技術.北京:電子工業(yè)出版社,2004
2 Deitel H M,Deitel P J著,康博譯.XML編程技術大全.北京:清華大學出版社,2002
3 金可仲,陳慶章.XML數(shù)據(jù)交換的安全解決方案.http://www.ahcit.com/200306/37.doc,2004-6

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權者。如涉及作品內(nèi)容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。