第1页共36页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第1页共36页Java安全性本教程是关于什么方面的?第1页(共5页)恐怕没有什么软件工程主题的重要性比应用程序安全性更紧迫了。无论是来自内部或外部的攻击都会带来巨大损失,某些攻击会使软件公司对造成的损失承担赔偿责任。随着计算机(尤其是因特网)技术的发展,安全性攻击正在变得越来越成熟和频繁。利用各种最新技术和工具是应用程序安全性的一个关键;另一个关键是由经过考验的技术(如数据加密、认证和授权)构筑的牢固的基础。Java平台的基本语言和库扩展都提供了用于编写安全应用程序的极佳基础。本教程讨论了密码术基础知识与如何用Java编程语言实现密码术,并提供了样本代码来说明这些概念。在这个两部分教程的第一部分中,我们讨论库扩展(现在是JDK1.4库的一部分)中的内容,这些库扩展被称为Java密码术扩展(JavaCryptographyExtension(JCE))和Java安全套接字扩展(JavaSecureSocketsExtension(JSSE))。此外,本教程还介绍了CertPathAPI,这是JDK1.4中新增加的特性。在本教程第二部分(请参阅参考资料)中,我们将把讨论范围扩大到由Java平台中Java认证和授权服务(JavaAuthenticationandAuthorizationService(JAAS))管理的访问控制。我应该学习本教程吗?第2页(共5页)这是一篇中级教程;它假设您知道如何阅读和编写基本的Java程序,包括应用程序和applet。如果您已经是Java程序员并且对密码术(关于诸如私钥和公钥加密、RSA、SSL、证书之类的主题)以及支持它们的Java库(JCE、JSSE)感到好奇,那么本教程就是为您准备的。本教程不要求您已经具有任何密码术、JCE或JSSE等方面的知识背景。本教程介绍了基本密码构件概念。每个概念都附有Java实现考虑事项、代码示例和示例执行的结果。第2页共36页第1页共36页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第2页共36页工具、代码样本和安装需求第3页(共5页)您将需要以下几项以完成本教程中的编程练习:JDK1.4,标准版本教程源代码和类,以便您能够随着我们的进度理解示例用于RSA示例的BouncyCastleCrypto库支持Java1.4插件的浏览器您可以使用JDK1.3.x,但必须自行安装JCE和JSSE。关于代码示例的说明第4页(共5页)代码示例直接将已加密的数据显示到屏幕上。大多数情况下,这会产生奇形怪状的控制字符,其中的一些偶尔可能会引起屏幕格式化问题。这不是良好的编程实践(将它们转换成可显示的ASCII字符或十进制表示会更好),但我们这样做是为了保持代码示例及其输出的简洁。在示例执行章节的大多数情况下,我们修改了实际字符串以便与本教程中的字符集需求兼容。还有,我们在大多数示例中查询和显示了用于给定算法的实际安全性提供程序库。这样做是为了让用户更好地了解哪个功能是调用哪个库实现的。为什么这样做呢?因为,在大多数安装中都安装了许多这样的提供程序。关于作者第5页(共5页)BradRubin是BradRubin&AssociatesInc.的负责人,该公司是一家专门从事无线网络和Java应用程序安全性和教育的计算机安全性咨询公司。Brad在IBM(位于明尼苏达州的Rochester)工作了14年,他从AS/400的第一个发行版就开始从事其所有方面的硬件和软件开发。他是促使IBM转而支持Java平台的关键人物,并且是IBM最大的Java应用程序第3页共36页第2页共36页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第3页共36页―称为SanFrancisco(现在是WebSphere―的一部分)的商业应用程序框架产品的首席架构设计师。他还是ImationCorp.数据存储部门的首席技术官,以及该公司研发组织的领导。Brad拥有计算机和电子工程学位,以及威斯康星大学麦迪逊分校计算机科学博士头衔。他目前在明尼苏达大学教授电子和计算机工程高级设计课程,并将于2002年秋季开设和教授该大学的计算机安全性课程。可通过BradRubin@BradRubin.com与Brad联系。Java安全性编程概念Java平台是如何使安全编程更方便的第1页(共5页)Java编程语言和环境有许多特性使安全编程更方便:无指针,这意味着Java程序不能对地址空间中的任意内存位置寻址。...