国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

保護您的 J2ME/MIDP 應用程序

2019-11-18 15:53:39
字體:
來源:轉載
供稿:網友

  無線 Web 服務中的 java 技術
  基于 Java 的 Web 服務和無線 Java 開發是 JavaOne 2002 的兩個最突出的主題。它們代表普及計算領域中未來的后端和前端 Java 技術。
  
  Web 服務是基于標準 xml 通信協議的松耦合的可互操作的軟件組件。Web 服務的使用使供給商能夠在其核心競爭力所在的特定市場中提供服務。然后,客戶可以根據其不同需要,從多個供給商選擇采購服務。這種便利意味著 Web 服務完全適合于為無線前端提供服務。無線信息設備的便利和動態本質答應移動用戶利用模塊化的且動態可重新配置的后端服務。
  
  Java 平臺可以在無線 Web 服務應用程序開發中扮演幾個重要角色。在無線端,Java 2 Micro Edition(J2ME)為所有無線設備(從蜂窩電話到復雜的家用無線信息家電)提供了跨設備的兼容性、高級語言功能和大量庫。J2ME 的一個要害組件是移動信息設備框架(Mobile Information Device PRofile(MIDP)),它在蜂窩電話和低端 PDA 上定義 Java API 和運行時環境。由于龐大數量的低端設備,期望在將來能夠廣泛部署 MIDP。
  
  從 Web 服務端,Java 2 企業版(J2EE)已經具有所有必需的 API 和庫來處理 Web 服務 XML 消息。通過 Web 服務接口或網關,可以方便地將用 EJB 技術實現的核心 J2EE 功能、JDBC API 和 RMI API 用于外部世界。為了將這些特性集合起來并啟用無線 Web 服務應用程序,還提出了 J2ME Web 服務規范,目前它在 Java Community Process(JSR 172)中。
  
  無線 Web 服務中的安全性
  雖然基于 Java 的無線 Web 服務在普及移動商業世界中有一個光明的前途,但當前技術仍不成熟。安全性仍是剩下待解決的問題之一。無線通信是無線電波攔截輕易獲取的目標,而無線設備幾乎沒有任何計算能力來支持所有通信數據的強加密。此外,在后端,Web 服務運行在企業防火墻之外并使用開放消息傳遞協議來彼此交互。無線 Web 服務同樣是易招受各種破解攻擊的目標。已開發得很好的點對點安全性技術(如 SSL/TLS 和 HTTPS)不適合于多供給商、多中間 Web 服務網絡拓撲圖 ? 重點必需集中在保護內容本身而不是傳遞內容的連接上。盡管面臨新挑戰,然而 Web 服務本身還是能用來增強移動商業安全性。新興的 Web 服務安全性規范的出現使您能夠將 Web 服務用作安全性實用程序。
  
  在下面的段落中,我將討論一種常用的安全性技術:數字簽名。我將向您演示如何在 XML 消息中使用數字簽名來保證端對端的數據完整性。我將應用一些示例來說明如何通過在無線端上使用流行的 J2ME/MIDP 平臺并在后端上使用 JavaServer Pages(jsp)技術來實現 XML 數字簽名。最后,我將討論性能問題以及在當前 MIDP 設備上使用數字簽名的可行性。MIDP 編程細節不在本文范圍內;假如您需要復習一下,請參閱參考資料一節。
  
  安全通信的元素
  數據完整性只是保護通信的一個方面。數字簽名也可以提供其它方面的解決方案。通常,安全的網絡通信必須符合下列標準:
  
  認證:通信雙方必須標識其本身。公鑰證書上的數字簽名可以驗證該公鑰的可靠性以及持有它的那一方的可靠性。
  
  數據完整性:通信雙方必須確保內容在傳送期間不被改變。數字簽名是保證數據完整性的最常用技術。
  
  數據機密性:有時候,通信數據是敏感的,必須保密。數字簽名不提供數據機密性。我們必須使用數據加密。
  
  不可抵賴性:消息發送之后,發送方隨后應該不能否認它。數字簽名提供了部分解決方案。假如以數字方式對消息進行簽名,則發送方無法否認其責任,因為只有他能提供這種簽名。
  
  使用數字簽名保證數據完整性
  讓我們假設一下,您是一位股票交易者,當您不在交易大廳時,使用蜂窩電話來跟蹤股票價格變化。在上下班途中,您的電話提醒您正在監視的一只股票的價格已經跌入您的心理最低價。現在,您應根據此提示買進它并利用此低價來賺一筆嗎?在您采取任何行動之前,您必須絕對確保提示本身是可信的。假如競爭者可能攔截并更改消息(例如,更改股票代碼),那么他就可能引誘您買進弄錯的股票,并將他的高價位股票拋給您。您如何知道消息在從監視服務到您電話的途中沒有被篡改呢?
  
  數據完整性確實是通信安全性的最重要方面之一。物理上安全的網絡十分昂貴,而且并不覆蓋范圍很廣的地理區域。假如您的業務必須依靠因特網才能通信,那么您必須面對因特網本身幾乎不提供安全性這一事實。因特網數據包在到達其目的地之前必須途經由非對話雙方控制的多個路由器和主機。數據通信在無線因特網上非凡輕易受到攻擊。
  
  及時出現的援救工具是公鑰基礎設施(PKI)和數字簽名。(和 MIDP 編程一樣,數字簽名不在本文范圍內;感愛好的讀者可以參考參考資料一節來獲取更多信息。)概括地說,在 PKI 數字簽名模式中,每一方都有兩個密碼術密鑰:公鑰,任何人都可以使用它,而私鑰,是保密的,只有某個人本身可以使用。用私鑰加密的消息只能由相應的公鑰正確解密。當發送方發送消息時,他可以將相同消息的私鑰加密版以及他的公鑰與該消息一起發送。接收方使用發送方的公鑰來解密加密版本。假如它與明文消息匹配,那么接收方可以知道該消息確實可信。該消息的私鑰加密版用作完整性驗證記號,我們將它稱為“數字簽名”。
  
  因為原始消息可能相當長,而且生成和驗證數字簽名的公鑰算法是資源密集的,所以發送方通常計算稱為“摘要”的原始消息的短版本并且僅對該版本進行數字形式的簽署。摘要具有固定長度,它是任何長度的輸入消息的單向散列;其計算速度非常快。接收方首先驗證接收的消息是否產生正確摘要。假如該摘要不匹配,則在執行任何公鑰算法之前拒絕該消息。這可以有助于防止攻擊造成堵塞,在這種攻擊中,攻擊者通過用偽造的公鑰請求填斥服務器,以耗盡它的計算資源。
  
  在大多數實際應用程序中,公鑰本身由可信的權威部門進行數字簽名,并成為“數字證書”來驗證發送方的標識。不過,數字證書的處理不在本文范圍內,所以在下列示例中,我將假設發送方是可信的并使用未簽署的公鑰來說明方法。
  
  定義的 XML 數字簽名
  正如我早先提到的那樣,XML 正成為 Web 服務世界中一個主要的數據交換協議。驅動 Web 服務的 XML 消息在到達目的地之前,通常需要經過多個中間環節。因此,我們保護從端到端的通信內容是重要的。完成這一任務的最好方法是,將 XML 文檔及其安全性信息(如簽名、摘要和密鑰等等)都裝運在一起,作為單個文檔。
  
  XML 數字簽名是將數字簽名添加到 XML 文檔的 W3C 規范。發送方可以選擇對整個文檔或者僅它的一部分進行數字簽名。數字簽名、摘要和公鑰被格式化成 XML 元素。那些安全性信息的額外元素可以封裝整個原始 XML 消息,或者可以將它們嵌入原始消息。為了方便起見,我將在本文中使用封裝格式。
  
  為了清楚起見,我在本文中使用的 XML 數字簽名示例并不完全與 W3C 相符。例如,我省去了標準(XML 標記的標準化)部分,因為它僅確保 XML 文檔的一致性而與安全性本身無關。另外,我將密鑰分成幾個參數并將那些參數傳遞到公鑰元素 KeyInfo 下的單獨 XML 元素中,以代替使用編碼的公鑰證書。這在密鑰和處理它們的 Java 代碼之間建立了更明顯的連接。
  
  處理 MIDP 應用程序中的 XML 數字簽名
  IBM alphaWorks 開發了一種稱為 XML Security Suite 的 Java 包,它支持最新的 XML 數字簽名規范。JSR 105 是標準化一組 Java API 以處理 XML 數字簽名的一項社區成果。然而,它們僅作用于 Java 2 標準版(J2SE),這意味著可以在服務器端上使用 XML Security Suite 或 JSR 105 Java XML 數字簽名 API,但不能在 MIDP 無線設備端上使用它們。
  
  要處理 XML 數字簽名,正在使用的無線設備需要支持下列功能:
  
  對 XML 文檔讀寫數據。在示例 MIDP 應用程序中,kXML 解析器將 XML 文檔和元素解析成 Java 對象(請參閱參考資料)。除了 kXML 外,還有幾個可在不同許可證條款下使用的其它 MIDP XML 解析器。
  
  簽署消息并驗證簽名。這些功能需要一個不屬于當前 MIDP 1.0 規范的密碼術 API。
  
  在下一節中,我將討論一種輕量級 Java 密碼術包,您可以在服務器端和無線 MIDP 設備端上使用它來生成并驗證 XML 數字簽名。
  
  安全移動代碼中的數字簽名
  數字簽名不僅有助于保護應用程序數據通信,它們還有助于保護應用程序本身。無線設備經常需要從無線網絡下載應用程序來動態調整自身,以使其適合新環境和任務。懷有敵意的各方可能攔截移動代碼分發版并將病毒和其它有害的特洛伊代碼段插入下載的應用程序中。我們怎么樣才能確保移動代碼可信呢?移動代碼供給商可以用其數字證書對整個 JAR 壓縮文檔進行數字簽名。無線用戶可以根據供給商的可信級別來確定該應用程序的安全性域。
  
  Bouncy Castle Crypto API
  Bouncy Castle 是一種用于 Java 平臺的開放源碼的輕量級密碼術包。它支持大量的密碼術算法,并提供 JCE 1.2.1 的實現。因為 Bouncy Castle 被設計成輕量級的,所以從 J2SE 1.4 到 J2ME(包括 MIDP)平臺,它都可以運行。它是在 MIDP 上運行的唯一完整的密碼術包。
  
  不管 Bouncy Castle 包的功能有多強大,它有一個主要問題:缺少文檔。不存在在線文檔,其 JavaDoc 寫得并不好。與許多其它高級密碼術包相似,Bouncy Castle 包廣泛使用類型多態性來將常規概念與實現算法分開。對于初學者來說,辨認類之間的關系以及方法參數和返回值的正確類型是很困難的。通常,開發人員必須瀏覽一下源代碼和測試用例來研究做事的正確方法。顯然,Bouncy Castle 包的指南非常合適。
  
  在本文的其

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 麻阳| 桃江县| 莆田市| 五大连池市| 桐梓县| 琼海市| 双鸭山市| 江都市| 嘉鱼县| 年辖:市辖区| 汝城县| 白城市| 大城县| 三穗县| 吉水县| 秦皇岛市| 新化县| 浦城县| 杂多县| 信阳市| 贺兰县| 大田县| 泸水县| 高雄市| 屯昌县| 威海市| 赤水市| 威远县| 高唐县| 都安| 山阳县| 印江| 特克斯县| 奈曼旗| 桦甸市| 棋牌| 洛阳市| 周至县| 巍山| 高台县| 兴城市|