确保无线 J2ME 的安全

时间:2007-02-04 22:47:27   来源:IBM  作者:michael  点击:次  出处:技术无忧
关键字:移动用户 Java J2ME 基础知识


代码签名

要获得高级移动代码安全性的优秀示例,我们只需研究 Java applet,它使用数字签名和安全性沙箱以确保 Web 上的代码安全。这里是关于 applet 安全性工作原理的简要概述:

在传输之前,applet 服务器用其数字证书对 applet JAR 文件进行签名。
在接收时,浏览器端 Java 安全性管理器验证签名并判断应用程序的发送方和完整性是否可信。
如果不能验证数字签名,则运行时退出并给出错误信息。
如果能够验证签名,则安全性管理器使用数字证书,通过查询客户机或通过使用表来查询可信实体的权限来确定实体的权限域。
在成功完成验证过程之后,应用程序代码被传递到客户机。
注:每个权限域包含一组访问特定 API 的规则。例如,不允许来自不太了解的来源的应用程序读/写本地存储设备或建立任意网络连接。

可以用和 Java applet 一样的方式对基于 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 协议支持认证、数据完整性和机密性。在电子商业应用程序中,基于 SSL 的安全 HTTP(HTTPS)已经成为传输敏感数据的标准协议。

J2SE 以其通用连接框架(Generic Connection Framework)提供对 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 还是提供了一些很重要的优点。XML 是一种非常健壮的、易于理解的消息格式。这也是为新一代开放、可互操作的 Web 服务所选的通信数据格式。因此,使用 J2ME 的无线设备必须有处理 XML 的能力,以便访问 Web 服务的世界。此时,使用 XML 的优点远胜于其带宽开销。

在基于 MIDP 的应用程序上支持 XML 很困难,因为 CLDC 基类中的字符串功能很有限。幸运的是,MIDP 应用程序已有几个第三方的、轻量级 XML 解析器可以使用。kXML 包(由 Enhydra 开发)提供了用于 XML 的简单 API(Simple 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 应用程序中支持通信数据安全性。其中有下列协议:

安全性断言标记语言(Security Assertion Markup Language (SAML))是以 XML 消息传输认证和授权信息的协议。它可以用来提供单点登录 Web 服务。

XML 数字签名定义了如何对 XML 文档的部分或全部进行数字签名以保证数据完整性。可以用 XML 密钥管理规范(XML Key Management Specification (XKMS))格式封装与 XML 数字签名一起分发的公钥。

XML 加密允许应用程序使用对预先约定的对称密钥的引用来加密部分或全部 XML 文档。

Web 服务安全 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,这些 API 应该允许我们创建具有更高级和灵活安全性特性的移动商业应用程序。

当开发移动商业应用程序时,要考虑的最重要的因素之一是它们将如何适应 Web 服务域。Web 服务技术正在迅速发展,整个因特网领域也随之发展。我们已经花了一些时间讨论应用于基于 J2ME 的应用程序开发的 Web 服务技术。我们鼓励您从 参考资料一节中的一些参考资料开始,深入研究这个主题。



上一篇:下面没有链接了

相关文章

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面

特别推荐