《深入Java 2平台安全:体系架构、API设计和实现(第二》
作者:[美]Li Gong 等
译者:朱岱
定价:39.00
页码:356
开本:短16开
出版时间:2004-09-01
Dearbook订购地址
《深入Java 2平台安全》一书,是关于Java安全平台的权威且全面的指南。本书针对当前诸多领先科技企业所采用的Java安全技术进行了更新,以体现其关键的内容追加和版本修订。本书为第二版,由Sun Microsystems的Java安全专家撰写,提供对Java安全体系核心机制的深入解析,描述即使在最苛刻计算环境中仍然可以成功实现的工具和技术。Java总是提供比其它平台更强的安全模型,而本书则回顾了用来增强安全性而不会牺牲功能特性的方法和实践。通过采用一些定制、扩展和优化Java安全体系结构的技巧,用户将能够使用所需的一切方法来保护其信息资产免受内外攻击。
本书深入讲述了安全体系结构、部署、定制、最新进展等诸多方面,包括:
·安全基础知识
·类的安全加载
·制定粒度适合的安全策略
·使用AccessController、SecurityManager等来执行安全策略
·数字证书、证书路径、代码签名、JAAS,以及其它鉴别方法
·基于Java的密码学机制,并提供了代码范例
·用于网络安全的JSSE、Java GSS-API和RMI
·预览了其它平台的安全议题,包括Java Card、J2ME和Jini
《深入Java 2平台安全》一书为系统管理员和软件从业者撰写,提供用Java 2平台构建和维护安全系统的关键知识。本书还提供了详细的代码和使用范例,为平台安全所需的各方面内容提供了不可缺少的资源。
Gong Li(宫力)是位于北京的Sun Microsystems工程研究院院长。在此之前,他是Java安全和网络、Java嵌入式服务器和JXTA项目的负责人。他在清华大学获得了学士和硕士学位,在剑桥大学获得了博士学位。他还是IEEE Internet Computing的副总编。
Gary Ellison是Sun Microsystems的资深工程师,在那里他设计了安全网络计算平台。他主要负责信任、安全和隐私保护等方面的技术。从1999年到2002年,他领导架构、设计和实现了J2SE的安全和网络组件。他从俄亥俄州立大学获得了数理学学士学位。
Mary Dageforde是一名自由职业顾问,她为硅谷的许多计算机公司撰写软件文档。她从斯坦福大学获得了计算机科学的硕士学位,她拥有软件设计和开发的背景。从1990年开始,她就专门为各种API、语言、工具和系统撰写文档。目录
译序 (iii)
第二版序言 (xv)
本书的组织结构 (xvi)
致谢 (xvii)
作者介绍 (xx)
第一版序言 (xxi)
第一版致谢 (xxii)
第1章计算机和网络安全基础 (1)
第2章Java语言的基本安全特点 (23)
第3章Java 2安全体系结构 (31)
第4章类的安全装载 (41)
第5章安全策略的元素 (57)
第6章执行安全策略 (87)
第7章定制安全架构 (113)
第8章建立信任 (127)
第9章对象安全 (157)
第10章密码学编程 (177)
第11章网络安全 (241)
第12章部署安全架构 (265)
第13章其它平台和未来发展方向 (309)
参考书目 (327)
索引 (339) 序
创造是大脑和原材料的结合。如果您更多使用大脑,您就只需更少的原材料。
——Charles Kettering
“计算机安全”、“网络安全”和“信息安全”等类似的术语给听众们带来了许多的概念和内容。有些人倾向于以密码学这样的尺度作为安全唯一的含义,而另外一些人则承认各种安全技术的局限性,他们只是将这些技术和其它技术组合在一起,将它们当作完成任务的工具。这之间的差别是微妙而又重要的。“平台安全性”这个词反映了安全的全局观点,它意味着基础是安全的,并且在构建大型系统时可以信赖,或者将其直接作为一个安全的子系统。构建一个安全的平台是一个非常困难和艰巨的任务,从历史上看来,只有当安全性在一开始就被作为一个设计要求时,这个目标才有可能实现。安全性能够“一蹴而就”的想法被证明是不可靠的和失败的,这已经导致了大量的安全缺陷。
Java技术可能是唯一的通用安全计算平台,它在商业上是成功的。假如设计者从一开始没有认真地考虑安全性,那么这是不可能出现的。Java技术有许多安全特性,而Java平台通过建立在自身基础上来实现一个可靠安全的平台。如果没有Java语言自身提供的安全性,那么Java 2的安全模型是不可能实现可信赖特征的。Java语言规范了类型安全和引用完整性的语义,但是如果没有Java虚拟机提供的执行和保证,Java语言仍然是很失败的。因此,通过采用这些各种各样的安全子系统,我们创建了一个强大的安全体系。
本书的目标读者群是多样的。对于那些希望对Java 2安全架构所提供和依赖的安全基础有个大体理解的人来说,我们相信本书将是有所助益的。同样,本书特别有助于那些构建企业级应用的软件从业者,他们构建的应用程序可能需要满足多样的安全需求,包括从鉴别到授权到信息保护。本书还提供了我们开发平台时所做的一些设计权衡,以及我们在持续升级和改进平台过程中所获得的一些经验教训。对那些由于特定的需求而需要定制安全模型的人,我们在本书中提供了指导,我们还描述了设计到平台中的变化,以适应那些不常见但重要的定制工作。上述大多数主题是针对系统开发人员的,当然我们认为安全不仅仅局限于应用的实现,应用的部署同样重要。针对部署人员,我们提供从快速安全策略到强化安装运行时环境的描述。
本书没有解释Java语言任何层次上的细节,我们推荐Arnold和Gosling的书[3]作为Java学习的起点。同样,我们也不打算全面介绍各种安全方面的API,对此我们推荐读者参考Java 2 SDK文档。
本书的组织结构
本书的内容是为满足不同的读者而组织的。开始两章提供背景知识,这些知识是后续章节介绍的具体内容的基础,读者无需精通Java语言就可以理解这些介绍性章节。第3章到第6章讲述了Java 2的安全架构,提供了从一般的概念到安全策略执行的全面介绍。第7章到第11章的内容是针对企业应用开发者,覆盖了从信任建立到密码学和网络安全方面的主题。对于这些章节,我们假定读者精通Java语言。第12章是直接针对部署者,他们还应该阅读第8章以获得有关信任建立方面的细节。我们认为部署者无需精通Java语言,他们可以忽略第8章中所描述的API。
本书各章的内容如下:
第1章:有关计算机、网络和信息安全方面的综合背景知识。
第2章:讲述从最初的沙盒模型到精细访问控制模型的发展,提供了Java安全模型的概览。
第3章:深入介绍了Java 2安全架构,这是一个策略驱动、并且能实现精细访问控制模型的体系架构。
第4章:详细介绍类装载,包括类装载继承层级体系以及运行时委托层级体系的说明。
第5章:介绍为运行时安全策略执行提供支持基础的安全类。
第6章:全面介绍策略执行类,以及Java 2安全架构访问控制算法的设计。
第7章:说明了定制要点,这是为那些需要增强核心安全架构的系统开发人员准备的。
第8章:提供了安全架构所支持的信任建功能和机制的概述。
第9章:常见程序缺陷和防御性程序设计策略的介绍。
第10章:全面介绍与加解密相关的API。
第11章:用于安全网络协议的API综述,包括鉴别、机密性和完整性保护等方面。
第12章:介绍了部署选项,用于安全部署Java运行时环境和基于Java技术的应用。
第13章:介绍各种Java安全技术平台和Java安全性的未来展望。
第一版序言
给我一根杠杆和一个支点,我就能撬起整个地球。
——阿基米德
自从Java技术出现,特别是在1995年春天她第一次公开亮相以来,关于Java平台的安全性就吸引了越来越多的关注,而且大家也很关心由于部署Java技术而带来的新的安全内容。对于安全性有如此高的关注程度在计算技术史上还是相当新鲜的现象。大多数新的计算机技术在刚出现的时候,总是容易忽略安全方面的考虑,其中又有大多数在以后也从未变得更加安全。试图使其更加安全的尝试常常不那么顺利,现在我们知道改进安全性通常是非常困难的,而且即使不是不可能,也通常会导致向后兼容的问题。
非常幸运的是,当Java技术开始出现在Internet世界中时,安全性就是其主要设计目标之一。它最初的安全模式尽管非常简单,但却是一个了不起的开始,好比阿基米德的支点。而JavaSoft团队中的天才工程师和强有力的管理团队就是杠杆,他们一起将Java可扩展安全体系机构变成现实。
从一个技术提供者的角度来看,Java平台的安全性集中在两个方面。首先是提供了Java平台,这主要是通过JDK来实现的。它本身就是一个安全的平台,在这个平台上可以安全地运行Java应用程序。第二是在Java编程语言中实现了安全工具和服务,这使得人们可以开发各种各样安全敏感的应用,比如企业应用领域。
我写这本书有多个目的。首先,我想让读者对整个系统和网络安全方面有一个简明而清晰的理解,特别是在当前的Internet环境中,Java技术在其中扮演着主要角色,而许多安全技术又是彼此相关的,获得全局理解显得更为重要。
其次,我打算对Java平台当前的安全架构提供一个全面的说明。这包括语言特性、平台API、安全策略以及它们的运行机制等。我尽量做到不仅只讨论某个特性功能,而且讲述为什么要这样设计,以及我们——Sun Microsystems的Java安全开发小组——曾经测试和否决的替代方案。当示范一个类或其方法的使用时,我尽可能采用现实世界中的代码范例。这些范例中有些是从Java 2 SDK的源代码中直接获取的。
第三,我试图告诉读者有关安全部署的事项,包括独立软件供应商或者一个企业怎样管理安全性,也包括怎样定制、扩展和增强现有的安全架构。
最后,我想通过分析许多常见的错误,以及提供一些能够立即用到当前项目中去的安全编程技巧,以帮助开发人员避免编程时的错误。