站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2ME 专题保护您的 J2ME/MIDP 应用程序(4)-汉土网络

保护您的 J2ME/MIDP 应用程序(4)-汉土网络

摘要: 保护您的 J2ME/MIDP 应用程序(4)-汉土网络
<tr> <td> <tr> <td colspan="3">IT技术资料馆|编程语言|java系列|J2ME资料|保护您的 J2ME/MIDP 应用程序(4)</td> </tr> <tr> <td height="38" colspan="3" align="center">

保护您的 J2ME/MIDP 应用程序(4)

</td> </tr> <tr> <td colspan="3" align="center"></td> </tr> <tr> <td colspan="3" class="text">公钥以参数 Modulus 来描述,并且用 pubKey.getModulus() 方法来检索它。清单 14 显示了 RSAUtil 类中的方法。这些方法检索 Exponent 和 Modulus 、模型以及密钥参数,它们是重新构造公钥对象所必需的。清单 14. 用于检索模型和密钥参数的 RSAUtil 方法

通过使用生成的私钥,实用程序类 RSASigUtil 可以从摘要获取一个字节数组 RSA 签名:

清单 15. 获取字节数组 RSA 签名

验证 MIDP 应用程序从 XML 文档解析出摘要、密钥参数和签名,重新构造公钥并使用下列方法来验证签名:

清单 17. 验证签名 我的测试说明了无线设备上的 XML 解析和摘要生成都非常快。正如预料的那样,主要的性能瓶颈是公钥算法的速度很慢。

Bouncy Castle Crypto 包提供几个使用 DSA、RSA 和 ECC 算法的签名引擎类来签署和验证消息。但在实际设备中,它们并不都是实用的。因为 Bouncy Castle Crypto 包完全基于Java 语言,所以它在没有特殊优化的情况下依靠很慢的 JVM 来执行甚至是最密集的大整数数学运算。

结果,只有 RSA 算法提供了一个合理的性能,而且是勉强接受的。它只要花一分多钟就可以在 16MHz Palm VII 设备上验证具有 1024 位公钥的简单数字签名。通过选择较弱的密钥可以改进性能。但虽然如此,验证进程在任何实际的应用程序中还是必须作为后台线程运行,以避免用户界面锁定。

DSA 和 ECC 算法性能在其当前实现中是完全不可接受的。具有 1024 位密钥的 DSA 签名和具有 192 位密钥的 ECC 签名要花一个多小时在标准的 Palm VII MIDP 上进行验证。

性能问题强烈暗示我们需要为大整数数学运算和公钥算法对 JVM 进行优化。JVM 还必须利用可用的特殊硬件和底层的 OS 功能来促进与安全性相关的数学运算。公钥算法用于安全连接(如 HTTPS)中的信息交换。许多当前的 MIDP VM 可以用合理的性能来支持 HTTPS 协议。MIDP4Palm VM 可以利用 Palm OS 的底层的 inethttps 协议来建立安全连接。可以想象未来的 VM 和核心语言库不仅优化与安全连接相关的公钥操作,而且还使优化可用于一般安全性功能(如数字签名)。

结束语
在本文中,您学习了安全性在无线 Web 服务中的重要性并说明了在无线和 Web 服务端处理 XML 数字签名的技巧。我使用了 Bouncy Castle Java 密码术包的纯 Java 实现来处理数字签名。在 Bouncy Castle 提供的所有算法中,只有 RSA 算法提供了无线设备上可勉强接受的性能。然而,未来在 MIDP 运行时环境上的进步可以使数字签名更易于移动用户使用。

参考资料 您可以参阅本文在 developerWorks 全球站点上的英文原文 . 下载本文中示例的样本代码 。 Michael Yuan 和他的合著者 Ju Long 集中讨论了J2ME/MIDP 平台的一般安全性问题 (developerWorks,2002 年 6 月),可从 developerWorks 无线专区获得该篇文章。 在“J2ME grows up ”(developerWorks,2001 年 5 月)中,Todd Sundsted 演示了 J2ME 如何向开发人员提供在各种各样的设备上利用其技能的方法。 在“Make your software behave: Cryptography essentials ”(developerWorks,2000 年 7 月)中,安全性专家 Gary McGraw 解释了安全散列和数字签名的基本知识。 IBM alphaWorksXML Security Suite 支持最新的 XML 数字签名和其它安全 XML 协议。请查找由 Larry Loeb 编写的一篇综合性文章(developerWorks,2001 年 12 月)中有关XML 数字签名 的更多信息。 请阅读W3C XML 数字签名标准 。 要处理服务器端 Java 平台上的 XML 数字签名,请查阅这个提出的Java XML 数字签名 API 。 J2ME Web 服务规范 提出了处理 J2ME 平台上的 XML 消息和 Web 服务 XML-RPC 的 API。 JavaOne 2002 会议集中讨论 Web 服务和无线应用程序。在“JavaOne 2002: Top innovations ”(developerWorks,2002 年 3 月)中,Govind Seshadri 对他所倡导的创新进行了总结。在“Security in a Web Services World: A Proposed Architecture and Roadmap ”(developerWorks,2002 年 4 月)中,IBM 和 Microsoft 提出了解决 Web 服务环境中安全性的策略和模型。 本文使用kXML 解析器来解析示例中的 XML 文档。 Bouncy Castle Crypto 轻量级密码术包运行在 J2SE 和 J2ME/MIDP 平台上。 大多数 Bouncy Castle 算法实现直接来自 CRC Press 出版社 1996 年出版的由 Alfred J. Menezes、Paul C. Van Oorschot、Scott A. Vanstone 编著的Handbook of Applied Cryptography 一书。这个对照表 强调了 DSA、RSA 和 ECC 算法的密码术强度和性能。 请查找developerWorks上的其它 Java 编程参考资料。
Michael J. Yuan 是德州大学奥斯汀分校的博士研究生。他对使用 Java 技术来促进科学教育和研究很感兴趣。可以通过 juntao@mail.utexas.edu 与他联系。
(全文完)

</td> </tr> <tr>
↑返回目录
前一篇: 解决J2ME开发中的连续按键问题(1)-汉土网络
后一篇: 保护您的 J2ME/MIDP 应用程序(3)-汉土网络