熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java高級技術 >> 正文

SOAP技術及其安全性研究

2013-11-23 19:45:00  來源: Java高級技術 

  段智華 ()
  
  
  
  
  
  一SOAP簡介以及SOAP安全介紹
  
  SOAP(Simple Object Access Protocol )簡單對象訪問協議是在分散或分布式的環境中交換信息的簡單的協議是一個基於XML的協議它包括四個部分SOAP封裝(envelop)封裝定義了一個描述消息中的內容是什麼是誰發送的誰應當接受並處理它以及如何處理它們的框架SOAP編碼規則(encoding rules)用於表示應用程序需要使用的數據類型的實例; SOAP RPC表示(RPC representation)表示遠程過程調用和應答的協定;SOAP綁定(binding)使用底層協議交換信息
  
  雖然這四個部分都作為SOAP的一部分作為一個整體定義的但他們在功能上是相交的彼此獨立的特別的信封和編碼規則是被定義在不同的XML命名空間(namespace)中這樣使得定義更加簡單
  
  
  
  SOAP的兩個主要設計目標是簡單性和可擴展性這就意味著有一些傳統消息系統或分布式對象系統中的某些性質將不是SOAP規范的一部分比如分布式垃圾收集 (Distributed garbage collection)成批傳送消息(Boxcarring or batching of messages)對象引用 (Objectsbyreference(which requires distributed garbage collection))對象激活 (Activation(which requires objectsbyreference))
  
  
  
  自從SOAP規范從去年發布以來 SOAP規范的加密性認證和授權等安全機制一直受到人們的廣泛關注這三個方面對於任何的BB來說都是很重要的 但SOAP標准在制定規范時並沒有過多考慮SOAP 的安全性要求因為SOAP一個很重要的設計目標就在於它的簡單性盡可能的利用已有的標准和協議來實現相應的功能而不是另起爐灶重新定義一個嶄新的協議如果這樣的話會大大的降低它的實用性和兼容性
  
  
  
  安全性是個復雜的問題在最低層SOAP 消息可通過 HTTPS 傳遞 通用 SSL 傳輸信息這就確保被編碼消息內容可以避免被竊聽也確保客戶端和服務器可互相驗證身份盡管 HTTPS 解決了對竊聽者屏蔽消息的問題但不能滿足安全性更高的特殊用戶認證的特定 Web 服務的要求比如下面需要SOAP安全的幾個場景僅僅依靠SSL的安全機制是不滿足信息的安全要求的
  
  
  
  端對端的信息傳送(Endtoend messaging)SOAP消息可以與不同的運輸層協議(如HTTPSMTP等)捆綁在一起進行傳輸傳輸的過程中可能經過一系列中間設備或應用程序假如應用程序對SOAP消息進行惡意破壞可以在SOAP消息插入一系列相似的頭元素再傳給下一個中間設備或程序從而破壞了信息的完整性在這種情況之下中間設備或應用程序是不值得完全信任的它們隨時可以修改傳輸的信息因此SSL/TLS並不能保證端到端傳輸的安全性
  
  中間件的獨立性(Middleware independence)在應用層中保證端對端的安全要求如果在傳輸中的傳輸的消息是平文而不是是經過加密 的密文極易受到黑客的攻擊但假如在應用程序中進行安全加密的處理需要用戶對加密算法有詳細的了解有許多不同的加密算法適合不同的安全要求這對於用戶來說是額外的負擔因此標准的安全的獨立的透明的運輸層是必要的在SOAP中進行適當的安全擴展保證了中間件應用程序的獨立性不用考慮過多的加密算法細節
  
  傳輸的獨立性 (Transport independence) SOAP消息在傳輸的時候可以與不同的運輸層協議進行捆綁如HTTPSMTP協議有可能存在這麼一個場景所有的通信連接是安全的中間層應用程序也是值得信賴的但是安全信息需要經過兩個運輸層協議比如前一段是經過HTTP協議傳輸在下一個階段則需要通過SMTP協議進行傳輸兩者之間的轉換是煩瑣的易出錯的因此在SOAP中加入擴展信息保證了運輸層的獨立性從而使與運輸層無關
  
  駐留信息的安全性運輸層可以進行安全傳輸但不能保證信息駐留時也是安全的假如消息保存後繼續向前傳輸駐留信息的安全十分重要在電子商務中常常要求用戶填寫帳號和密碼這些信息通常保留在本地的COOKIE中對於這些持久保存的信息進行加密可通過SOAP的安全擴展來實現
  
  
  
  在目前應用最廣泛的INTERNET運行著許多基於TCP/IP協議的應用由於TCP/IP協議本身的不安全性造成了這些應用的不安全性幾乎所有的數據在網絡上都是明文傳輸和用戶在網絡上的身份僅通過IP地址表現由於這兩個原因使得一些軟件產品的安全工作形同虛設比如一些網絡應用通過網絡將用戶口令傳輸的服務方由服務方驗證用戶的合法性由於用戶口令在網絡上傳輸是明文的它很容易被網絡監聽者獲取又如一些防火牆進行的IP過濾工作是通過IP數據包中的IP地址來實現的實際上在NTERNET上偽造一個IP地址是相當容易的SOAP協議基於運輸層之上有必要通過SOAP的擴展來增強SOAP的安全功能因此我們必須了解當前Internet網絡面臨哪些威脅以及網絡網絡安全的要求是什麼這不僅僅是SOAP必須考慮的問題也是其他基於Internet網絡分布式應用程序必須考慮的只有更好的了解各種無所不在的攻擊手段和侵犯方式才能更好的建立安全的防范機制
  
  
  
  二互聯網絡的安全要求以及存在的安全威脅
  
  總的來說網絡安全的五個基本的安全要求
  
  
  
  機密性(Confidentiality) 保證沒有經過授權的用戶實體或進程無法竊取信息在 一個開放的網絡環境裡維護信息機密是全面推廣應用的重要保障因此要預防非法的信息存取和信息在傳輸過程中被非法竊取
  
  授權(Authorization) 授權是確定允許用戶做什麼的過程可將不同的特權給予不同類型的用戶例如每個人都能閱讀公共圖書館的聯機卡片目錄甚至不必是該系統的認證用戶換句話說所有用戶都被授權可閱讀目錄但系統可能會將借書的權限僅限於已認證用戶這裡已認證是指持有此圖書館的有效借書卡取決於認證機制的復雜程度系統可能根據所持的卡來限制用戶的特權例如可能授權某些用戶可以借的書不限數量而限制其他用戶只能借一定數量的書籍
  
  數據完整性(Data integrity)保證沒有經過授權的用戶不能改變或者刪除信息從而信息在傳送的過程中不會被偶然或故意破壞保持信息的完整統一因此要預防對信息的隨意生成修改和刪除同時要防止數據傳送過程中信息的丟失和重復
  
  原始性證明(Proof of Origin) 對信息或數據的發送者的進行標示保證信息被經過標示的發送者所傳送從而避免以前的數據包被重復發送
  
  防止抵賴(Nonrepudiation): 保證信息的發送者不能抵賴或否認對信息的發送當然信息發送前需要對發送者進行安全認證要在信息的傳輸過程中為參與交易的個人企業或國家提供可靠的標識
  
  
  
  最後的三個安全要求是彼此相關的數據完整性與原始性證明的區別在於數據是完整的並不能保證信息不被重復發送換句話說數據完整性不能防止反復攻擊哈希散列算法如 HMAC認證時使用一個經過加密的密鑰對於原始性證明來說是合適的但並不適用於防止抵賴
  
  
  
  相應的目前網絡存在的威脅主要表現在以下幾個方面
  
  
  
  非授權訪問沒有預先經過同意就使用網絡或計算機資源被看作非授權訪問它主要有以下幾種形式假冒身份攻擊非法用戶進入網絡系統進行違法操作合法用戶以未授權方式進行操作等
  
  信息遺漏丟失指敏感數據在有意或無意中被洩漏出去或丟失
  
  破壞數據完整性以非法手段竊得對數據的使用權刪除修改插入或重發某些重要信息以取得有益於攻擊者的響應惡意添加修改數據以干擾用戶的正常使用
  
  拒絕服務攻擊是一種比較簡單但又日益流行的攻擊和禁用企業信息資源的方法在拒絕服務攻擊中作惡者發送大量的信息流量使 Web 服務器主機路由器和其它網絡設備負擔過重通過這種方式發送的信息流量非常之大致使企業的用戶客戶和合作伙伴都在好長一段時間內無法訪問網絡
  
  
  
  基於以上的安全威脅以及網絡安全的迫切要求僅僅依靠SSL的安全機制不能解決所有的問題SOAP安全的解決方案基於三個WC的XML規范來實現XML Digital Signature XML encryption and XML Key Management ServicesSOAP層安全處於傳輸層和應用層之上對SOAP層的安全性進行擴展把關於安全的五個基本要求應用到整個的SOAP信息中包括SOAP頭以及SOAP體同時更多的安全措施也可結合SOAP層安全與傳輸層以及應用程序 來共同解決由於網絡安全十分復雜目前WC正在嘗試制定相應的規范不斷的完善和更新下面介紹SOAP數字簽名的一個草案
  
  
  
  三SOAP 安全擴展: 數字簽名
  
   SOAP Security Extensions: Digital Signature這個文本目前只是WC的討論方案正處於不斷修改的過程中提出此文本的最初設想是利用XML的數字簽名(XML Digital Signature syntax [XMLSignature])對SOAP進行擴展在SOAP的頭元素中定義簽名屬性()來實現以下部分是我翻譯了WC的SOAP數字簽名草案中的一部分以供大家參考如有不當之處敬請大家指正
  
  
  
  
  
  工作組在SOAP頭元素的擴展命名空間中加入安全特征通過擴展在方案中加入一個新的元素這個元素在schema中可以不用改變如果要在SOAP協議的進行加密性擴展可以在命名空間中引入適當的標准實現
From:http://tw.wingwit.com/Article/program/Java/gj/201311/27395.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.