确保无线J2ME的安全

779 篇文章 0 订阅
<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

  移动商业应用程序的安全性挑战和解决方案

  MichaelJuntaoYuan(juntao@mail.utexas.edu),副研究员,电子商业研究中心,德州大学奥斯汀分校

  JuLong(ju@ruby.bus.utexas.edu),副研究员,电子商业研究中心,德州大学奥斯汀分校

  2002年6月

  请关注本文,它讨论了基于J2ME的移动商业应用程序的一些安全性挑战和解决方案的当前成果。特别地,J2ME开发人员MichaelYuan和JuLong集中讨论了最常用但也最缺乏安全性的J2ME概要文件—MIDP的应用程序开发的挑战。其中包括J2ME相对于瘦客户机(如WAP)和本机应用程序的优点的概述,以及关于J2ME当前和未来安全性框架的优缺点对比的讨论。另外,新兴的Web服务正逐渐成为因特网领域中重要的组件,所以请了解更多关于它的信息,以及这一新技术可能对您的J2ME开发策略有怎样的影响。

  随着移动商业从时髦的口号逐渐变成现实,对于移动用户和无线应用程序开发人员这类人而言,事务安全性正在成为一个重要方面。网络整体安全性的强度取决于其最薄弱环节,而在移动商业网络中,最薄弱环节是客户机端设备。无线信号的可截取本质以及大多数手持设备有限的内存和计算能力,使无线系统极易受到数据窃贼的攻击。

  但客户机并非移动商业网络上的唯一薄弱环节。随着Web服务技术成为因特网领域中日益重要的组件,无线网络将面临一些全新的弱点。Web服务使用开放通信协议并在组织的防火墙之外运行,当在企业中部署这些系统时,这将会造成非常实际的安全性威胁。(请参阅文章侧栏以获得Web服务的定义。)

  解决方案正在形成,尽管尚需时日。尤其是,Web服务本身可以用来提供安全性解决方案。新的Web服务规范计划标准化和集成使用XML消息传递的先进的安全性解决方案(如Kerberos认证和授权、数字证书、数字签名和公/私钥加密)。可互操作的Web服务可以将那些安全性解决方案用作产品和服务供应商的一类实用程序。但即使正在出现这些有希望的解决方案,对于您如何有效地保护自己的无线应用程序及运行应用程序的网络而言,开发平台的选择将始终起到举足轻重的作用。

  在本文中,我们将重点讨论在Java2Platform,MicroEdition(J2ME)上进行开发的优缺点。我们首先对J2ME的基本概念和优点作简单概述。接下来,我们将深入研究基于J2ME的应用程序相对于其它无线备选应用程序(如WAP和本机应用程序)的潜在安全性优点。我们将说明当前在J2ME平台上可用的应用程序安全性模型,以及该平台对于一些可预料未来趋势的适用性。作为讨论的一部分,我们将提出一些增强J2ME应用程序的网络和数据安全性的可能方法。在结束部分,我们将总结使用J2ME技术开发用于最小型无线设备的高级安全应用程序的可行性。在整篇文章中,我们将主要集中讨论当前的和即将出台的(2.0)MIDP规范,假定MIDP是最广泛使用的J2ME概要文件。

  因为Web服务承诺了在移动商业和无线安全性的发展中扮演重要角色,所以在整篇文章中,我们都将讨论包含Web服务的技术。我们将花一些时间研究Web服务对您的J2ME开发策略的影响。但是,我们不会很深入地讨论这个话题。要了解更多Web服务与无线应用程序编程和安全性之间的关系,请参阅参考资料一节。

  J2ME基础知识

  将Java平台用于无线设备开发的最大优点是能够生产可在多种平台上运行的可移植代码。但即使有这个优点,各种无线设备在内存、处理能力、电池寿命、显示屏大小和网络带宽等方面的能力差异还是相当大的。不可能将运行在成熟的机顶盒上的应用程序的全部功能都移植到移动电话上。即使对于类似的设备(如PDA和高级智能电话),在两者间建立可移植性也常常使一种设备超负荷而另一种设备利用不充分。只能在多组类似设备之间实现真正的可移植性。因为认识到一种规格并不能适合所有设备,所以小心地设计J2ME以在可移植性和可用性之间取得平衡。

  什么是Web服务?

  Web服务是具有基于因特网接口的自包含的、自我描述的、动态发现的应用程序。Web服务由远程方法调用驱动,这些调用是用标准的、基于XML的消息和编码封装的,如简单对象访问协议(SimpleObjectAccessProtocol(SOAP))。Web服务用WSDL(Web服务定义语言)定义了它们的编程接口并通过UDDI(通用描述、发现和集成)注册中心来发布它们本身。Web服务在开放的因特网上通过HTTP协议与客户机和其它Web服务通信。这种“HTTP上的XML”模型致力于通过在服务接口之间添加一个开放、健壮和容易被人理解的抽象层来消除它们之间的耦合。Web服务是松散耦合、与平台无关、可重用的分布式软件组件。它们成功的关键在于开放的标准和服务供应商之间的互操作性。

  J2ME分成几种不同的配置和概要文件。配置包含用于一系列设备的Java语言核心库。当前有两种配置:连接的设备配置(ConnectedDeviceConfiguration(CDC))被设计用于相对较大和功能强大的设备(如高端PDA、机顶盒与网络设备);有限连接设备配置(ConnectedLimitedDeviceConfiguration(CLDC))被设计用于小型的资源有限的设备(如移动电话和低端PDA)。CDC的安全性、计算能力和I/O功能比CLDC高级得多。

  每个配置上面都有几个概要文件。概要文件定义了更高级的、特定于设备的API库,包括GUI、联网和持久存储API。每个概要文件有自己的运行时环境并适合于一系列类似的设备。为一个特定概要文件编写的Java应用程序可以在由该概要文件支持的所有硬件/OS平台之间进行移植。移动信息设备概要文件(MobileInformationDeviceProfile(MIDP))和PDA概要文件(PDAProfile)是CLDC的两个比较重要的概要文件。基础概要文件(FoundationProfile)和个人概要文件(PersonalProfile)是CDC的两个重要的概要文件。

  个人概要文件构建在基础概要文件之上,以便在高端PDA上运行。个人概要文件配置了完全兼容Java2的虚拟机实现。个人概要文件应用程序可以利用所有基于Java2标准版(J2SE)域的安全性管理器,以及大量可用于J2SE应用程序的密码术和安全性库。总之,个人概要文件提供了成熟的安全性解决方案,它们类似于用于J2SE应用程序的那些解决方案。(要了解更多关于J2SE安全性的内容,请参阅参考资料一节。)

  实现安全MIDP应用程序要困难得多,因为CLDC配置的数学计算能力有限并且许多底层设备的处理能力不足。但是,MIDP设备是使用最广泛的无线设备,因此在那些设备上启用安全应用程序很重要。在本文中,我们主要集中讨论MIDP应用程序的安全性挑战以及当前可用的或处于开发中的解决方案。

  J2MEvs.WAP

  我们的经验是,无论是在特性还是安全性方面,本机应用程序和J2ME应用程序都比那些以无线应用程序协议(WirelessApplicationProtocol(WAP))构建的应用程序提供多得多的功能。但WAP是一种瘦客户机开发协议,J2ME是一种专用于智能应用程序的开发平台。无论应用程序是用J2ME还是本机技术构建的,智能应用程序都比WAP应用程序多提供了下列安全性优点:

  由于中间没有WAP网关,智能应用程序能够提供从后端到无线设备的可伸缩的端到端安全性。当后端发展成消息驱动的Web服务框架时,这一点就尤其重要。

  智能应用程序能够在本地存储和处理数据,因此减少了网络流量。这不仅节省了宝贵的无线带宽和减少了延迟时间,而且降低了关键信息被截取或阻断(例如,通过拒绝服务攻击)的可能性。

  智能应用程序有效地利用了设备处理能力。胖客户机可以根据内容建立全面分级的安全性策略,而不是无论是否需要都以相同的密钥强度加密所有内容。

  因为智能应用程序比WAP页面能干得多,所以,运行智能应用程序确实增加了软件崩溃和/或病毒攻击的风险。接下来,我们将讨论,与那些设备本机应用程序相比,J2ME应用程序有哪些处理和安全性优点。

  J2MEvs.本机平台

  正如我们已经提到的,与本机平台相比,Java平台的主要优点是它允许我们编写可移植的应用程序。Java平台的可移植性来自其执行模型。具体地说,它是由于在运行时使用JVM来将Java字节码处理成机器码,因而在硬件之上提供了一个兼容性层。Java平台的执行模型还引入了一些在设备本机应用程序中缺乏的重要安全性优点。这些优点如下:

  JVM验证类装入器中所有的类并确保应用程序不会执行任何危险操作。因为对于MIDPVM而言,运行时类验证在计算上代价很高,所以MIDP有特殊的两步字节码验证模式。我们将在后面一节中讨论这种方案。

  JVM有用来防止运行时应用程序错误的监控机制。垃圾收集器是一个好示例。JVM能够在运行时自动清理应用程序内存堆。这有助于避免发生内存泄漏,内存泄漏是导致本机应用程序崩溃的主要原因。

  JVM可以提供用于应用程序的安全性管理器或沙箱。从Web上偶然下载的病毒和其它敌意代码可能造成严重的安全性风险。在Java平台上,可以对整个应用程序(例如JAR文件)进行数字签名。JVM安全性管理器根据签名者的信任级别,向签名的应用程序授予访问特定API(域)的特权。在后面的一节中,我们将更详细地讨论基于域的移动代码安全性。

  与WAP和本机应用程序相比,智能的、注重可用性的设计和Java平台内置的执行模式赋予了J2ME应用程序显著的性能和安全性优势。但J2ME并不完美。在后面的一节中,我们将研究J2ME安全性框架的优缺点,尤其是当它应用于MIDP应用程序时。我们将首先研究应用程序安全性,然后继续讨论网络和数据安全性。

  字节码验证

  正如我们已经讨论的,JVM提供了防止恶意代码进入企业系统的服务。字节码验证过程保证了应用程序不能访问内存空间或使用其域外的资源。字节码验证还防止应用程序重载Java语言核心库,这是一种可以用来绕过其它应用程序级安全性措施的方法。

  但是,由于这种操作高昂的计算开销,MIDPVM不在运行时执行完整的字节码验证。相反,应用程序开发人员必须在把应用程序部署到移动设备中之前,在开发平台或登台区域上预先验证类。预验证过程优化执行流,创建应用程序中包含指令目录的堆栈映射(stackmap),然后将堆栈映射添加到经预验证的类文件。在运行时,MIDPVM迅速地对字节码进行线性扫描,将每个有效的指令与合适的堆栈映射项相匹配。

  因为MIDP缺少完整的安全性模型,所以在MIDP中禁用了一些J2SE特性以使潜在的安全性风险降到最低。例如,为了防止对核心类的非法重载,MIDPVM不允许用户定义的类装入器。MIDP也不支持Java本机接口(JavaNativeInterface(JNI))或反射(reflection)。即使适当地采取了这些安全性措施,也并非所有通过字节码验证的代码都被允许运行。代码签名是J2ME应用程序安全性策略中下一个重要元素。

  代码签名

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

  在传输之前,applet服务器用其数字证书对appletJAR文件进行签名。

  在接收时,浏览器端Java安全性管理器验证签名并判断应用程序的发送方和完整性是否可信。

  如果不能验证数字签名,则运行时退出并给出错误信息。如果能够验证签名,则安全性管理器使用数字证书,通过查询客户机或通过使用表来查询可信实体的权限来确定实体的权限域。

  在成功完成验证过程之后,应用程序代码被传递到客户机。

  注:每个权限域包含一组访问特定API的规则。例如,不允许来自不太了解的来源的应用程序读/写本地存储设备或建立任意网络连接。

  可以用和Javaapplet一样的方式对基于J2ME/CDC的移动代码进行签名和传递。理论上,也可以用相同的方法保护MIDP应用程序。但是,由于处理能力和内存有限,MIDP1.0规范中还不可以使用基于域的安全性管理器。当前的MIDPVM只能提供最小的安全性沙箱。例如,MIDlet套件只能访问它自己创建的持久记录存储。

  即将出台的MIDP2.0规范将需要对域安全性模型的支持,包括基于域的安全性管理器、应用程序代码签名和数字证书验证功能。为了更好地支持安全移动代码保障,MIDP2.0还将正式包含无线下载(OTA)保障规范。MIDP2.0OTA规范描述了谁拥有安装和删除无线应用程序的权限;什么操作必须由用户确认以及哪些操作可以自动完成;必须向用户提供哪些警告;以及当更新应用程序时可以共享哪些数据。

  网络与数据安全

  可以通过建立点对点安全连接来保证网络与数据安全性。象SSL/TLS(安全套接字层/传输层安全性—以后简称为SSL)这样的安全性协议允许我们在因特网主机之间打开安全套接字。在连接握手时,SSL利用公钥算法和数字证书在素不相识的各方之间建立信任并交换当前会话的私钥。于是,SSL通信各方使用快速的私钥算法来加密和解密通信数据。SSL协议支持认证、数据完整性和机密性。在电子商业应用程序中,基于SSL的安全HTTP(HTTPS)已经成为传输敏感数据的标准协议。

  J2SE以其通用连接框架(GenericConnectionFraMEwork)提供对HTTPS的优秀的和透明的支持。所有J2ME/CDC应用程序都有权访问HTTPS功能,但在MIDP1.0规范中并不正式需要HTTPS支持。考虑到HTTPS在移动商业中显而易见的重要性,许多MIDP设备供应商已经将对HTTPS的支持添加到它们自己的MIDP运行时实现中。SunMicrosystems也在其J2MEWirelessToolkit版本1.0.2及后续版本中添加了HTTPS支持。在即将出台的MIDP2.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(SimpleAPIforXML(SAX))和有限的文档对象模型(DocuMEntObjectModel(DOM))能力。kXML包还包含一种称为kSOAP的特殊实用程序,用于为Web服务解析SOAP消息。原本计划将内置轻量级XML解析支持用于MIDP2.0规范,但最近更改了这一计划。JSR118专家组已经决定在即将出台的JSR172J2MEWeb服务规范(请参阅参考资料)中包含XML解析支持,该规范还将包含用于CDC和CLDC应用程序的基于XML的远程过程调用(RPC)。

  通过安全XML保护内容

  XML是我们为J2ME无线应用程序和后端服务之间的数据通信所选的格式。为了提供端到端安全性,我们需要确保XML文档的安全。因此,我们需要特殊的XML标准以将安全性元信息与单个文档相关联。

  已提出了几个XML安全性协议以在XML应用程序中支持通信数据安全性。其中有下列协议:

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

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

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

  Web服务安全XML协议族(WS-Security)是一个由IBM和Microsoft认可的向Web服务提供安全性的完整的解决方案。它以XML数字签名、XML加密以及类似于SAML的认证和授权方案为基础。

  所有上述安全性协议都可以绑定到Web服务消息传递协议。例如,我们可以将SAML段嵌入到SOAP消息头中来认证和授权对所请求服务的访问。我们也可以将XML数字签名段嵌入到SOAP头以认证消息中的信用卡号。

  因为缺乏XML和密码API,当前的MIDP1.0规范不支持安全XML标准。实际上,甚至MIDP2.0也将不包含通用密码API。这使得开发人员只能依靠第三方库(如BouncyCastle轻量级密码术包)以在MIDP应用程序中支持安全XML。对于CDC和CLDC设备,JSR177提出了使用SIM卡的用于安全性和信任服务的API。加上SAML或WS-Security,新API就能够支持自动标识和单点登录Web服务了。

  结束语

  尽管情况复杂,我们还是可以得出结论,与WAP和本机应用程序开发方式相比,J2ME确实提供了许多优点,包括安全性优点。在高端,CDC的个人概要文件将J2SE的全部功能赋予无线应用程序,在大多数情况下包括在严格的安全性需求下实现成熟的应用程序的能力。

  在安全性API方面,当前的MIDP1.0规范没有提供足够的支持。但在第三方库和供应商支持的帮助下,我们发现可以用MIDP1.0来实现安全应用程序。而且,正如我们所见,即将出台的MIDP2.0规范承诺提供一套核心安全性API,这些API应该允许我们创建具有更高级和灵活安全性特性的移动商业应用程序。

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

  参考资料

  通过单击文章顶部或底部的讨论参与本文的论坛。

  对J2ME刚入门?请下载J2ME无线工具箱(J2MEWirelessToolkit)。

  有关更多J2ME信息,从正式的J2ME网站开始学习。

  您也许还想学习developerWorksJava技术专区中的J2ME开发教程。(ShariJones和StevenGould,2001年6月)

  要了解更多关于MIDP的知识,请访问正式的MIDP网站。

  要研究MIDP未来的发展,请参阅提议中的MIDP2.0规范。

  如果您对用MIDP进行开发感兴趣,请查看关于MIDP应用程序开发的developerWorks教程“TheMIDletsadvantage”。(JohnMuchow,2002年3月)

  另请参阅MichaelYuan和JuLong撰写的文章“Builddatabase-poweredmobileapplicationsontheJavaplatform”。(JavaWorld,2002年1月)

  无线Java开发者网络是J2ME参考资料总目录。

  有关最新的编程技巧和参考资料,请访问developerWorksJava技术专区的Java安全性讨论板。

  在不远的将来,Web服务将成为J2ME开发工作中的重要部分。现在就开始准备,研究一下IBM/Microsoft联合的白皮书“SecurityinaWebServicesWorld:AProposedArchitectureandRoadmap”。(2002年4月)

  了解更多关于即将出台的J2MEWeb服务规范的内容,请参阅JavaCommunityProcessJSR页面。

  IBM是Web服务技术发展中的领导者。要及时了解这一领域中最新的发展,请参阅IBMWeb服务主页。

  另请研究developerWorksWeb服务专区。

  在developerWorks无线专区的安全性专栏“SecuringtheAir:Incodewetrust”中了解无线应用程序的代码签名。(KimGetgen,2002年3月)

  BouncyCastleCryptoAPI包含一个用于CLDC/MIDP的轻量级密码API。

  kXML解析器包支持CLDC/MIDP。

  在即将发表的developerWorks文章“SecuringyourJ2ME/MIDPapps”中,MichaelYuan讨论了XML数字签名的重要性和BouncyCastle密码术包的数字签名API(编者按:这篇文章是指developerWorksJava技术专区2002年6月18日发表的文章)。

  JSR177SecurityandTrustServicesAPIforJ2ME提出了使用SIM卡的用于安全性和信任的API。

  关于作者

  MichaelJ.Yuan是德州大学奥斯汀分校的博士研究生。他对用Java技术推动科学教育和研究感兴趣。您可以通过juntao@mail.utexas.edu与他联系。

  JuLong是德州大学奥斯汀分校的博士研究生。她对移动商业和将无线技术用于市场研究感兴趣。您可以通过ju@ruby.bus.utexas.edu与她联系。

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值