目目目录
前言
第1章 计算机与网络安全基础 1
1.1 密码学与计算机安全 1
1.2 危险和保护 2
1.3 外围防护 3
1.3.1 防火墙 4
1.3.2 仅仅使用外围防护的不足之处 4
1.4 访问控制与安全模型 4
1.4.1 MAC和DAC模型 5
1.4.2 对数据和信息的访问 5
1.4.3 静态和动态模型 6
1.4.4 关于使用安全模型的几点考虑 6
1.5 密码系统的使用 7
1.5.1 单向散列函数 7
1.5.2 对称密码 8
1.5.3 非对称密码 9
1.6 鉴别 9
1.7 移动代码 10
1.8 Java安全性的适用范围 11
第2章 Java语言的基本安全特点 12
2.1 Java语言和平台 12
2.2 基本安全结构 13
2.3 字节代码验证和类型安全 14
2.4 签名应用小程序 15
2.5 关于安全错误及其修复的简要历史 16
第3章 JDK1.2安全结构 19
3.1 起源 19
3.2 为什么需要一个新型的安全结构 19
3.2.1 关于applet的沙盒模型的局限性 19
3.2.2 策略和实施分离的不彻底性 20
3.2.3 安全核查的不易扩展性 20
3.2.4 对本地安装的applet过于信任 20
3.2.5 内部安全机制的脆弱性 21
3.2.6 总结 21
3.3 java.Security.General
SecurityException 21
3.4 安全策略 22
3.5 CodeSource 24
3.5.1 测试等同性和利用隐含 25
3.6 许可权层次 26
3.6.1 java.security.Permission 27
3.6.2 许可权集合 28
3.6.3 java.security.Unresolved
Permission 29
3.6.4 java.io.FilePermission 31
3.6.5 java.net.SocketPermission 33
3.6.6 java.security.BasicPermission 35
3.6.7 java.util.PropertyPermission 36
3.6.8 java.lang.RuntimePermission 37
3.6.9 java.awt.AWTPermission 38
3.6.10 java.net.NetPermission 38
3.6.11 java.lang.reflect Reflect
Permission 39
3.6.12 java.io .Serializable
Permission 39
3.6.13 java.security.Security
Permission 39
3.6.14 java.security.AllPermission 40
3.6.15 许可权隐含中的隐含 40
3.7 分配许可权 41
3.8 Protection Domain 42
3.9 安全地加载类 44
3.9.1 类加载器的层次 44
3.9.2 java.lang.ClassLoader和授权 46
3.9.3 java.security.SecureClassLoader 49
3.9.4 java.net.URLClassLoader 49
3.9.5 类的路径 50
3.10 java.lang.SecurityManager 51
3.10.1 使用安全管理器的实例 51
3.10.2 JDK1.2中没有改变的API 52
3.10.3 JDK1.2中禁用的方法 53
3.11 java.security.AccessController 56
3.11.1 AceessController的界面设计 57
3.11.2 基础访问控制算法 57
3.11.3 继承方法 59
3.11.4 扩展带有特权操作的基本算法 59
3.11.5 特权操作的三种类型 61
3.11.6 访问控制语境 63
3.11.7 完整的访问控制算法 64
3.11.8 SecurityManager与
AccessController 65
3.11.9 特权操作发展史 66
3.12 小结 67
第4章 安全结构的使用 70
4.1 安装JDK1.2 70
4.2 策略配置 71
4.2.1 配置系统型和用户专用型策略 71
4.2.2 配置应用程序专用型策略 72
4.2.3 配置一个可选Policy类的实现 72
4.2.4 缺省的策略文件格式 72
4.2.5 策略文件举例 75
4.2.6 策略文件中的属性扩展 76
4.3 数字证书 77
4.4 有用的安全工具 80
4.4.1 密钥数据库 80
4.4.2 keytool 82
4.4.3 策略工具 86
4.4.4 jarsigner 88
4.4.5 代码签名实例 91
4.5 非专业安全策略管理 92
第5章 结构定制安全 94
5.1 创建新的许可权类型 94
5.2 复合许可权 95
5.3 定制安全策略 96
5.4 移植基于JDK1.1的安全管理器 97
5.4.1 JDK1.1安全管理器类 97
5.4.2 使JDK1.1安全管理器
适应JDK1.2 98
5.4.3 为JDK1.2而改进JDK1.1
安全管理器 100
第6章 对象的安全 106
6.1 安全异常 106
6.2 域和方法 107
6.3 静态域 107
6.4 私有对象状态和对象不变性 108
6.5 特权代码 109
6.6 连续性 110
6.7 内部类 111
6.8 本机方法 111
6.9 签署对象 111
6.10 密封对象 113
6.11 监护对象 114
第7章 编程密码学 117
7.1 设计原则 117
7.2 密码服务和服务提供器 118
7.3 密码类 121
7.3.1 java.security.Security 121
7.3.2 java.security.Provider 122
7.3.3 java.security.MessageDigest 122
7.3.4 java.security.Signature 123
7.3.5 算法参数 124
7.3.6 java.security.Key和java.security.
spec.KeySpec 126
7.3.7 java.security.KeyFactory和java.
security.cert.CertificateFactory 128
7.3.8 KeyPair和KeyPairGenerator 129
7.3.9 java.security.KeyStore 130
7.4 随机性和种子产生器 131
7.5 代码实例 132
7.5.1 实例1:计算消息摘要 132
7.5.2 实例2:产生公钥/私钥对 133
7.5.3 实例3:产生并且验证签名 134
7.5.4 实例4:读取包含证书的文件 135
7.6 标准名 136
7.6.1 消息摘要算法 136
7.6.2 密钥和参数算法 136
7.6.3 数字签名算法 137
7.6.4 随机数产生算法 137
7.6.5 证书类型 137
7.6.6 密钥库类型 137
7.7 算法 137
7.7.1 SHA-1消息摘要算法 138
7.7.2 MD2消息摘要算法 138
7.7.3 MD5消息摘要算法 138
7.7.4 数字签名算法 138
7.7.5 基于RSA的签名算法 138
7.7.6 DSA密钥对产生算法 138
7.7.7 RSA密钥对产生算法 140
7.7.8 DSA参数产生算法 140
第8章 发展方向 141
8.1 安全管理 141
8.2 JDK 特性的改善 141
8.3 Java鉴别和许可服务 142
8.3.1 主题与主体 144
8.3.2 证件 144
8.3.3 可插入和可堆叠的鉴别 144
8.3.4 回调 147
8.3.5 访问控制 147
8.3.6 JAAS工具 149
8.4 小结 149
参考文献 151
1