首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

確保無線 J2ME 應用安全:從架構選擇到端對端加密策略

     編輯:Java 相關知識

隨著移動商務從口號變為現實,交易安全性對移動使用者與無線應用開發人員成為重要議題。網路整體安全強度取決於最薄弱環節,移動商務網路中最弱一環是客戶端設備。無線訊號可截取本質與手持設備有限記憶體、運算能力,使無線系統極易受資料竊賊攻擊。但客戶端非唯一弱點。Web 服務技術成為網際網路重要組件,無線網路面臨全新弱點:Web 服務用開放通訊協定、在組織防火牆外運行,企業部署時造成實際安全威脅。解決方案正形成中,Web 服務本身可提供安全方案。新規範計劃標準化整合 XML 訊息傳遞的先進安全方案(Kerberos 認證授權、數位憑證、數位簽章、公/私鑰加密)。可互操作 Web 服務將這些方案作為產品服務供應商實用程式。但即使出現有希望方案,開發平台選擇對有效保護無線應用及網路仍舉足輕重。

本文重點討論 Java 2 Platform, Micro Edition(J2ME)開發優缺點。簡述 J2ME 基礎與優勢,深入研究基於 J2ME 應用相對於 WAP 與本機應用的潛在安全優勢,說明 J2ME 平台當前可用應用安全模型及對未來趨勢適宜性。提出增強 J2ME 應用網路與資料安全性可能方法。總結用 J2ME 技術開發用於最小無線設備高階安全應用可行性。全文主要集中當前與即將推出(2.0)MIDP 規範,假定 MIDP 為最廣泛使用的 J2ME 設定檔。因 Web 服務承諾在移動商務與無線安全發展扮演重要角色,全文討論包含 Web 服務技術,但不深入探討,詳細請參考參考資料。

J2ME 基礎知識

用 Java 平台開發無線設備最大優點:產生可在多平台運行的可移植代碼。但各種無線設備在記憶體、處理能力、電池壽命、顯示器大小、網路頻寬等能力差異極大。無法將成熟機頂盒應用全功能移植至蜂巢式電話。即使類似設備(PDA、高階智慧型手機),建立可移植性常使一設備超負荷、另一利用不足。真正可移植性僅能在多組類似設備間實現。因認識到單一規格不適合所有設備,J2ME 設計在可移植性與可用性間取得平衡。

J2ME 分為配置與設定檔。配置包含一系列設備的 Java 語言核心庫。目前兩種配置:

  • 連接設備配置(CDC): 設計用於較大功能強大設備(PDA、機頂盒、網路設備)。安全性、運算能力、I/O 功能遠超 CLDC。
  • 有限連接設備配置(CLDC): 設計用於小型資源受限設備(蜂巢式電話、低階 PDA)。

每個配置上有多個設定檔。設定檔定義更高階、特定設備 API 庫,含 GUI、聯網、持久儲存 API。每設定檔有獨立運行環境,適合一系列類似設備。為特定設定檔寫的 Java 應用可在所有該設定檔支援的硬體/OS 平台移植。移動資訊設備設定檔(MIDP)與 PDA 設定檔是 CLDC 兩重要設定檔。基礎設定檔與個人設定檔是 CDC 兩重要設定檔。個人設定檔建構於基礎設定檔上,在高階 PDA 運行,配置完全兼容 Java 2 虛擬機實現。個人設定檔應用可利用所有基於 J2SE 領域的安全管理器、大量可用於 J2SE 應用的密碼學與安全庫。總之,個人設定檔提供成熟安全方案,類似 J2SE 應用方案。實現安全 MIDP 應用困難得多,因 CLDC 數學運算能力有限、底層設備處理能力不足。但 MIDP 設備使用最廣,故在該設備啟用安全應用重要。本文主要集中討論 MIDP 應用安全挑戰與當前可用或開發中方案。

J2ME vs WAP

經驗顯示:本機應用與 J2ME 應用均比無線應用協定(WAP)構建應用提供更多特性與安全性。但 WAP 是瘦客戶端開發協定,J2ME 是專用於智慧應用開發平台。無論用 J2ME 或本機技術構建,智慧應用比 WAP 應用多提供安全優勢:

  • 無 WAP 閘道,智慧應用提供從後端到無線設備可擴展端對端安全性。後端演進為訊息驅動 Web 服務框架時尤其重要。
  • 智慧應用能本地儲存處理資料,減少網路流量。不僅節省寶貴無線頻寬、降低延遲,也降低關鍵資訊被截取阻斷(如阻斷服務攻擊)可能性。
  • 智慧應用有效利用設備處理能力。胖客戶端可依內容建立全面分級安全策略,而非無論是否需要都以相同金鑰強度加密所有東西。
  • 智慧應用比 WAP 頁面能做更多事,確實增加軟體崩潰/病毒攻擊風險。下節討論 J2ME 應用相對本機應用的處理與安全優勢。

J2ME vs 本機平台

Java 平台主要優點:允許編寫可移植應用。可移植性源於執行模型:運行時用 JVM 將 Java 位元碼處理成機器碼,在硬體上提供相容層。執行模型還引入本機應用缺乏的重要安全優勢:

  • JVM 驗證類載入器中所有類,確保應用不執行危險操作。因 MIDP VM 運行時類驗證計算代價高,MIDP 有特殊兩步位元碼驗證方案(後節討論)。
  • JVM 有防止運行時應用錯誤的監控機制。垃圾收集器是好例子:JVM 能運行時自動清理應用記憶體堆,避免記憶體洩漏——本機應用崩潰主因。
  • JVM 可提供應用安全管理器或沙箱。從網路偶然下載的病毒與敵意代碼可能造成嚴重安全危險。Java 平台可對整個應用(如 JAR 檔)數位簽章。JVM 安全管理器依簽章者信任等級,授予簽章應用存取特定 API(域)特權。稍後詳細討論基於域的移動代碼安全性。

智慧、注重可用性設計與 Java 內建執行模式賦予 J2ME 應用顯著效能與安全優勢。但 J2ME 不完美。後節研究 J2ME 安全框架優缺點,特別應用於 MIDP 應用。先研究應用安全性,繼續討論網路與資料安全性。

位元碼驗證

JVM 提供服務防止惡意代碼進入企業系統。位元碼驗證過程保證應用不存取記憶體空間或使用其域外資源,防止應用重載 Java 語言核心庫(繞過其他應用級安全措施方法)。但因高昂計算開銷,MIDP VM 不在運行時執行完整位元碼驗證。相反,應用開發人員必須在部署到移動設備前,在開發平台或預備區預先驗證類。預驗證優化執行流,建立應用中包含指令目錄的堆疊映射,加入經預驗證類檔。運行時 MIDP VM 迅速線性掃描位元碼,將每個有效指令與適合堆疊映射項匹配。

因 MIDP 缺乏完整安全模型,為將潛在安全風險降至最低,禁用部分 J2SE 特性。如防止非法重載核心類,MIDP VM 不允許使用者定義類載入器。MIDP 也不支援 Java Native Interface (JNI) 或反射。即使採取適當安全措施,非所有通過位元碼驗證代碼都被允許運行。代碼簽章是 J2ME 應用安全策略下一重要元素。

代碼簽章

參考 Java Applet 使用數位簽章與安全沙箱確保網路代碼安全:

  1. 傳輸前,Applet 伺服器用數位憑證簽章 Applet JAR 檔。
  2. 接收時,瀏覽器端 Java 安全管理器驗證簽章,判斷發送方與完整性是否可信。
  3. 無法驗證數位簽章 → 運行時退出報錯。能驗證 → 安全管理器用數位憑證,查詢客戶端或用表查詢可信實體權限確定實體權限域。
  4. 驗證成功 → 應用代碼傳遞給客戶端。

註:每個權限域包含存取特定 API 規則集。如不允許來自較不瞭解來源應用讀/寫本地儲存裝置或建立任意網路連線。可用相同方式對基於 J2ME/CDC 移動代碼簽章發送。理論上也可同樣保護 MIDP 應用。但因處理能力與記憶體有限,MIDP 1.0 規範中尚不可用基於域安全管理器。當前 MIDP VM 僅提供最小安全沙箱。如 MIDlet 套件只能存取自己創建的持久記錄存儲。即將推出 MIDP 2.0 規範將需支援域安全模型,含基於域安全管理器、應用代碼簽章、數位憑證驗證功能。為更好支援安全移動代碼保障,MIDP 2.0 將正式包含無線下載(OTA)保障規範。MIDP 2.0 OTA 規範描述誰擁有安裝刪除無線應用權限;什麼操作必須使用者確認、哪些可自動完成;必須向使用者提供哪些警告;更新應用時共享哪些資料。

網路與資料安全性

可透過建立點對點安全連線保證網路與資料安全性。如 SSL/TLS(安全通訊協定)允許在網際網路主機間開啟安全通訊端。連線握手時,SSL 利用公鑰演算法與數位憑證在陌生各方間建立信任、交換當前會話私鑰。於是 SSL 通訊雙方用快速私鑰演算法加密解密通訊資料。SSL 協定支援認證、資料完整性、機密性。電子商務應用中,基於 SSL 的安全 HTTP(HTTPS)已成傳輸敏感資料標準協定。

J2SE 以通用連接框架提供優秀透明 HTTPS 支援。所有 J2ME/CDC 應用有權存取 HTTPS 功能,但 MIDP 1.0 規範不正式要求 HTTPS 支援。考慮 HTTPS 在移動商務顯而易見重要性,許多 MIDP 設備供應商已將 HTTPS 支援加入自家 MIDP 運行時實現。Sun Microsystems 也在 J2ME Wireless Toolkit 1.0.2 及後續版本加入 HTTPS 支援。即將推出 MIDP 2.0 規範中,HTTPS 支援將成正式需求。

保護內容而非連線

雖 HTTPS/SSL 協定流行強大,但原為有線網際網路設計。將 SSL 應用於新一代動態無線應用時,出現嚴重問題:

  • 對等點群組與基於訂閱多播應用將成未來智慧無線應用主要模型。作為一對一協定,SSL 不能良好支援多播應用。
  • SSL 是保護主機間直接連線點對點協定。但新興網際網路領域基於 Web 服務,需多中介協助處理傳遞基於 XML 服務請求。因而出現端對端安全方案需求。
  • SSL 不加選擇地用同一金鑰強度加密所有資料,對某些應用不必要甚至不合要求。對某些無線應用,建立運行 SSL 連線計算開銷顯然太高。
  • 移動商務網路擴展時,SSL 相關問題只會更嚴重。需具靈活加密方案的端對端安全模型滿足多樣需求。需關注保護內容而非連線。研究幾種有前途的(實現端對端無線安全)內容格式、安全協定、工具結束討論。

XML 優勢

J2ME 應用可在 HTTP 協定上用 XML 資料格式與後端伺服器及其他 J2ME 應用通訊。遺憾額外標籤使 XML 對有限無線頻寬成相當龐大格式。儘管如此,XML 提供重要優勢:極健壯、易被人理解的訊息格式,也是新一代開放、可互操作 Web 服務選定通訊資料格式。故使用 J2ME 無線設備必須有處理 XML 能力以存取 Web 服務世界。此時 XML 優勢遠勝頻寬開銷。

MIDP 應用支援 XML 困難,因 CLDC 基礎類字串功能有限。幸運的是,MIDP 應用已有幾個第三方輕量級 XML 解析器可用。kXML 套件(Enhydra 開發)提供簡單 API for XML (SAX) 與有限 Document Object Model (DOM) 能力。kXML 還包含特殊工具 kSOAP,用於為 Web 服務解析 SOAP 訊息。原計劃內建輕量級 XML 解析支援用於 MIDP 2.0 規範,近期變更計劃。JSR 118 專家組決定在即將推出 JSR 172 J2ME Web 服務規範(參考資料)包含 XML 解析支援,該規範還將包含用於 CDC 與 CLDC 應用的基於 XML 遠程程序呼叫(RPC)。

透過安全 XML 保護內容

XML 是 J2ME 無線應用與後端服務間資料通訊選定格式。為提供端對端安全,需確保 XML 文檔安全。故需特殊 XML 標準將安全性中繼資訊關聯單個文檔。已提出幾個 XML 安全協定支援 XML 應用通訊資料安全性:

  • SAML: 以 XML 訊息傳遞認證授權資訊協定,可提供單點登入 Web 服務。
  • XML 數位簽章: 定義如何對 XML 文檔全部或部分數位簽章保證資料完整性。公鑰可用 XML 金鑰管理規範(XKMS)格式封裝分發。
  • XML 加密: 允許應用用預先約定對稱金鑰引用加密部分或全部 XML 文檔。
  • WS-Security: IBM 與 Microsoft 認可,為 Web 服務提供安全性完整方案。基於 XML 數位簽章、XML 加密、類 SAML 認證授權方案。

所有上述安全協定可綁定至 Web 服務訊息傳遞協定。如將 SAML 片段嵌入 SOAP 訊息頭認證授權所請求服務存取;將 XML 數位簽章片段嵌入 SOAP 頭認證訊息中信用卡號。因缺乏 XML 與密碼 API,當前 MIDP 1.0 規範不支援安全 XML 標準。實際上即使 MIDP 2.0 也不包含通用密碼 API。使開發人員只能仰賴第三方庫(如 Bouncy Castle 輕量級密碼學套件)在 MIDP 應用支援安全 XML。對 CDC 與 CLDC 設備,JSR 177 提出用 SIM 卡的安全性與信任服務 API。結合 SAML 或 WS-Security,新 API 能支援自動識別與單點登入 Web 服務。

結語

雖情況複雜,仍可結論:相較 WAP 與本機應用開發方式,J2ME 確實提供許多優勢,含安全優勢。高階 CDC 個人設定檔賦予無線應用 J2SE 全部功能,大多數情況下含嚴格安全需求下實現成熟應用能力。安全性 API 方面,當前 MIDP 1.0 規範支援不足。但在第三方庫與廠商支援幫助下,發現可用 MIDP 1.0 實現安全應用。即將推出 MIDP 2.0 規範承諾提供核心安全 API 組,應允許創建具更高階靈活安全特性的移動商務應用。開發移動商務應用時,最重要考量因素之一是它們將如何適應 Web 服務領域。Web 服務技術快速發展,整個網際網路領域隨之發展。本文花時間討論應用於基於 J2ME 應用開發的 Web 服務技術。鼓勵您從參考資料部分參考資料開始,深入研究此主題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved