Java安全编程实践:加密、证书与授权

需积分: 0 0 下载量 123 浏览量 更新于2024-07-29 收藏 1.96MB PDF 举报
"Java安全性编程实例 - 徐迎晓 编著 - 清华大学出版社" 本书《Java安全性编程实例》由徐迎晓编写,旨在通过丰富的实例介绍Java安全编程的相关概念和技术。全书分为9个章节,内容涵盖Java加密与解密、反编译与反反编译、类与成员变量的保护、消息摘要、消息验证码、数字签名、口令保护、数字证书和证书链的管理、SSL和HTTPS的使用、基于代码位置和签发者的授权、签名Java Applet以及基于身份的验证和授权(JAAS)等多个关键领域。 作者强调,每个小节的实例都精心设计,专注于阐述一个特定的安全问题,并与其他章节内容相互关联。实例代码简洁且可运行,使得初学者也能轻松理解和掌握复杂的Java安全概念。这本书不仅适合Java初学者,也适合作为安全技术入门和高校Java教学的参考资料。 前言中提到,随着互联网的发展,安全问题日益重要,Java平台从一开始就将安全性纳入设计考虑。Java 2 SDK 1.4引入了JCE(Java Cryptography Extension)、JSSE(Java Secure Socket Extension)和JAAS(Java Authentication and Authorization Service)等安全扩展,为构建基于J2EE的企业级应用提供了坚实的安全基础。 本书的独特之处在于以实例驱动,用易于理解的方式讲解安全理论,避免了通常安全书籍中的复杂理论。每个实例都是一个独立的“积木”,既可单独学习,也可组合使用来构建更复杂的安全系统。 书中9个章节的具体内容包括: 1. 软件需求:列出运行书中程序所需的软件环境。 2. Java加密与解密:介绍如何在Java中实现数据的加密和解密操作。 3. 反编译与反反编译:讨论如何保护Java代码不被轻易反编译,以防止源码泄露。 4. 类、成员变量和方法的保护:讲述如何确保类和其内部元素的安全性。 5. 消息摘要和消息验证码:介绍用于验证数据完整性的技术。 6. 数字签名:探讨如何使用数字签名来确保信息的不可否认性和完整性。 7. 口令保护:讲解如何安全地处理和存储用户密码。 8. 数字证书与证书链:讲解如何生成、签发、验证和维护数字证书,以及证书链的概念。 9. SSL与HTTPS:介绍如何在Java中实现安全套接层(SSL)和超文本传输安全协议(HTTPS),以保证网络通信的安全。 10. 授权与认证:涵盖基于代码位置和签发者的授权策略,以及Java Applet的签名,以及使用JAAS进行身份验证和授权。 通过阅读本书,读者不仅可以深入了解Java安全框架,还能通过实践掌握构建安全Java应用程序的关键技能。
2011-12-21 上传
# 本书共分9章,主要内容如下: # 第一章 # 解决的主要问题 # 运行本书的程序需要哪些软件? # 主要内容 # 介绍本书所使用的主要软件及其安装和配置 # 第二章 # 解决的主要问题——内容的安全性 # 数据在网上传递怎么样防止被黑客窃取听到? # 硬盘上的文件中有敏感数据,如何防止被黑客看到? # 主要内容 # 本章解决的是数据内容的安全性,介绍Java的加密和解密技术。学完该章可以通过Java编程对各种数据进行各种形式的加密。密码学也是安全机制的基础。 # 第三章 # 解决的主要问题——和源代码相关的安全性 # 编写好的程序给用户后,用户如果能反编译出源代码怎么办? # 定义类、成员变量、方法时如何防止恶意或无意的攻击? # 主要内容 # 本章解决的是和源代码相关的保护。包括源代码、类、成员变量、方法的保护。通过常用的反编译工具加强对源代码保护的认识,使用混淆器和加密等方式对源代码作了初步保护。同时演示了编写程序时如何考虑攻击者对类、成员变量、方法等方面的攻击。 # 第四章 # 解决的主要问题——确定数据的完整性和所有者 # 网上下载了一个程序,如何确定它确实是某某公司开发的? # 如何确定黑客没有将程序修改过? # 某公司或人发来一个文件,后来他不承认发过这个文件怎么办? # 主要内容 # 第四章起开始介绍和身份认证相关的技术。包括身份确定性、不可篡改性、不可否认性等,该章介绍的消息摘要和签名技术可解决这些问题。 # 第五章、第六章 # 解决的主要问题——数字化身份的凭证 # 实际应用中如何方便地使用摘要和签名技术? # 如何确定某个签名确实是某个人或机构的? # 主要内容 # 第五章和第六章介绍基于摘要和签名技术的数字证书。这是Java安全中确定身份的主要技术。其中第五章介绍了数字证书的创建、签发、验证和维护等,第六章介绍了多个证书组成的证书链(CertPath)的创建和验证。 # 第七章 # 解决的主要问题——数据安全传输,服务器和用户身份的确定 # 客户机和服务器之间的通信如何自动进行加密传输? # 客户机和服务器之间的通信如何相互确定身份? # 浏览器访问一个站点,如何确定这个站点不是黑客的服务器? # 主要内容 # 本章介绍介绍使用加密技术和证书机制的一个实际应用,基于SSL和HTTPS的编程。学完本章可以编写自己的SSL和HTTPS客户及服务器程序。 # 第八章 # 解决的主要问题——基于代码来源的程序的安全运行 # 网上下载了一个程序,运行时会不会删除我的文件,或将某些文件泄漏给黑客? # 编写了一个Java Applet,如何让其能访问硬盘上的文件? # 主要内容 # 本章介绍基于代码来源的程序的安全运行,可以基于运行时代码在哪个URL、或代码是谁签名的限制其可以访问哪些用户资源。还介绍了定义自己的权限以及签名Java Applet。 # 第九章 # 解决的主要问题——身份验证和基于执行者身份的程序的安全运行 # 程序需要用户输入账号和口令到数据库登录,但以后可能需要改为智能卡验证。 # 程序需要访问某个用户资源,但只有用户以某些特殊身份登录时才需要该权限。 # 主要内容 # 本章介绍Java验证和授权服务(JAAS),可以方便地更换验证模块,并实现基于身份的授权。