第1章计算机和网络安全基础 1
10.7.2密钥和参数算法 (23 1
12.6.3策略文件范例 (28 1
1.1 密码学与计算机安全 2
译序 3
目录 3
1.2威胁和防护 3
1.3外围防护 4
1.3.1 防火墙 6
1.3.2仅仅使用外围防护的不足之处 7
1.4访问控制与安全模型 8
1.4.1 MAC和DAC模型 8
1.4.2对数据和信息的访问 9
1.4.3静态和动态模型 10
1.4.4关于使用安全模型的几点考虑 11
1.5密码系统的使用 12
1.5.1 单向散列函数 13
1.5.2对称密码 14
第二版序言 15
1.5.3非对称密码 15
1.6鉴别 16
本书的组织结构 16
致谢 18
1.7 移动代码 19
13.3.6安全管理 (3 19
1.8 Java安全性的适用范围 20
作者介绍 20
第一版序言 21
第一版致谢 22
第2章Java语言的基本安全特点 23
2.1Java语言和平台 24
2.2早期的基本安全构架 25
2.3字节码验证和类型安全 27
2.4签名Applet 29
2.5进一步增强 30
第3章Java 2安全体系结构 31
3.1 Java 2平台安全体系结构的需求 31
3.1.1灵活的访问控制 32
3.1.2将策略表示和策略执行分离开来 33
3.1.3执行灵活的可扩展的安全策略 33
3.1.4灵活且可定制的安全策略 33
3.2 Java 2安全体系结构综述 34
3.1.5完善而简单的内部安全机制 34
3.3体系结构总结 35
3.4经验教训 38
第4章类的安全装载 41
4.2常用的类装载器实例 42
4.1类文件、类型以及类装载器的定义 42
4.3.1类装载器继承层级体系 43
4.3类装载器的层级体系 43
4.3.2类装载器委托层级体系 45
4.4类的加载 47
4.4.1类的查找 47
4.4.2类的定义 50
4.4.3 ClassLoader的其它方法 51
4.5有关SecureClassLoader的细节 52
4.6有关URLClassLoader的细节 53
4.7类路径(Class Paths) 55
第5章 安全策略的元素 57
5.1许可权限(Permissions) 58
5.1.1许可权限类层级体系 59
5.1.2常用的许可权限类 60
5.1.3许可权限集合 66
5.1.4许可权限中的隐含意义 68
5.1.5正向与负向许可权限 68
5.2描述代码 69
5.2.1 CodeSource 69
5.2.2测试CodeSource的等同性以及隐含(Implication)的使用 71
5.3保护域(ProtectionDomain) 74
5.2.3身份(Principal) 74
5.3.1 ProtectionDomain构造函数 75
5.3.2 ProtectionDomain的implies方法 77
5.3.3 ProtectionDomain的优点 78
5.4安全策略 79
5.5分配许可权限 83
5.6动态安全策略 84
第6章执行安全策略 87
6.1 SecurityManager类 87
6.1.1安全管理器使用范例 88
6.1.2 SecurityManager API 88
6.1.3 checkPermission方法 89
6.2 AccessControlContext 90
6.3 DomainCombiner 91
6.4 AccessController 92
6.4.1 AccessController的接口设计 93
6.4.2基本访问控制算法 94
6.4.3方法的继承 97
6.4.4用特权操作扩展基本算法 98
6.4.5特权行为编程习惯用语 102
6.4.6继承访问控制上下文 105
6.4.7特权访问控制上下文 106
6.4.8完全访问控制算法 107
6.4.9 SecurityManager vs.AccessController 109
6.4.10特权操作简史 110
7.1创建新的许可类型 113
第7章定制安全架构 113
7.2定制安全策略 118
7.2.1 定制安全策略的执行 118
7.2.2定制安全策略决定 120
7.3定制访问控制上下文 124
第8章建立信任 127
8.1 数字证书 128
8.1.1 X.500识别名(Distinguished Name) 129
8.1.2 X.509证书版本 129
8.1.3 X.509证书内容 130
8.1.4获取证书 131
8.2用认证路径建立信任 132
8.2.1核心认证API 133
8.2.2基本认证路径类 135
8.2.3认证路径验证类 135
8.2.4认证路径创建类 136
8.2.5证书/CRL存储类 137
8.2.6 PKIX类 137
8.3在签名代码中建立信任 138
8.3.1 用数字签名来保护消息 138
8.3.2 JAR文件格式概述 139
8.3.3在运行时建立信任 141
8.4使用JAAS进行以用户为中心的鉴别和授权 141
8.4.1 主题(Subjects)和身份(Principals) 143
8.4.2凭证(Credentials) 144
8.4.3可插拔和堆栈式鉴别 145
8.4.4回调 148
8.4.5授权(Authorization) 149
8.4.6基于Principal的访问控制 150
8.4.7访问控制的实现 150
8.5分布式终端实体鉴别 152
8.5.1 java.net.Authenticator 153
8.5.2 Kerberized环境中的单点登录 153
8.5.3 JSSE鉴别机制 155
第9章对象安全 157
9.1 安全异常 158
9.2字段和方法 158
9.3静态字段 160
9.4私有对象状态和对象不变性 161
9.5特权代码 162
9.6串行化 163
9.8本地方法 167
9.7 内部类 167
9.9签名对象 168
9.10对象密封 171
9.11警觉对象(Guarding Objects) 172
第10章 密码学编程 177
10.1密码学概念 178
10.2设计原则 179
10.3密码服务和服务提供者 180
10.4核心密码类 187
10.4.1 Security类 187
10.4.2 Provider类 188
10.4.3 MessageDigest类 188
10.4.4 Signature类 190
10.4.5算法参数 192
10.4.6 Key类和KeySpec类 196
10.4.7 KeyFactory类和CertificateFactory类 200
10.4.8KeyPair类和KeyPairGenerator类 202
10.4.9 KeyStore类 203
10.4.10随机性和种子生成器 206
10.5其它密码学类 208
10.5.1 Cipher类 208
10.5.2 KeyGenerator类 215
10.5.3 SecretKeyFactory类 216
10.5.4KeyAgreement类 217
10.5.5 Mac类 219
10.6代码实例 220
10.6.1计算消息摘要 220
10.6.2生成公私钥对 222
10.6.3生成并且验证签名 222
10.6.4读取包含证书的文件 225
10.6.5使用加密 226
10.6.6使用基于密码的加密 227
10.7标准名 230
10.7.1消息摘要算法 230
10.6.7其它样例程序 230
10.7.3数字签名算法 231
10.7.4随机数生成算法 232
10.7.5证书类型 232
10.7.8加密算法、模式和填充方式 233
10.7.6密钥库类型 233
10.7.7服务属性 233
10.7.9密钥生成算法 236
10.7.10密钥算法 236
10.7.11 MAC算法 236
10.8算法规范 237
10.8.1 SHA-1消息摘要算法 238
10.8.2 MD2消息摘要算法 238
10.8.3 MD5消息摘要算法 238
10.8.4数字签名算法 238
10.8.5基于RSA的签名算法 238
10.8.6 DSA密钥对生成算法 239
10.8.8 DSA参数生成算法 240
10.8.7 RSA密钥对生成算法 240
第11章 网络安全 241
11.1 Java GSS-API 242
11.1.1 Java GSS-API中使用Kerberos凭证 242
11.1.2建立安全上下文 247
11.1.3消息安全 249
11.2 JSSE 249
11.2.1 建立SSL上下文 250
11.2.2 SocketFactory和ServerSocketFactory类 250
11.2.3 SSLSocket和SSLServerSocket类 251
11.2.4 SSLSocketFactory和SSLServerSocketFactory类 251
11.2.5 SSLSession接口 252
11.2.6 HttpsURLConnection类 253
11.2.7 SunJSSE提供者 254
11.2.8 SSLContext类 254
11.2.9生成SSLContext对象 255
11.2.11TrustManagerFactory类 256
11.2.10TrustManager接口 256
11.2.12 KeyManager接口 258
11.2.13 KeyManagerFactory类 258
11.3远程方法调用(RMI) 260
11.3.1 RMI安全基础 260
11.3.2 RMI激活 261
11.3.3安全RMI通讯 261
第12章部署安全架构 265
12.1 安装最新的Java2平台软件 266
12.2〈java.home〉的安装目录 266
12.3.1设置系统属性 267
12.3设置系统和安全属性 267
12.3.2 user.home系统属性的默认值 268
12.3.3设置安全属性 268
12.4为部署提供安全性 269
12.4.1 限制属性重写机制 270
12.4.2配置应用相关的策略 270
12.5安装提供者包 271
12.5.1安装提供者类 272
12.5.2配置提供者 273
12.6策略配置 274
12.6.1 配置系统范围和用户指定的策略 274
12.6.2默认策略文件格式 276
12.6.4策略文件中的属性扩展 283
12.6.5配置可选的策略类实现 285
12.7.1登录配置文件结构和内容 286
12.7 JAAS登录配置文件 286
12.7.2登录配置文件位置 288
12.8安全工具 289
12.8.1 Keystore数据库 289
12.8.2 keytool工具 292
12.8.3 jarsigner 301
12.9 X.500识别名(Distinguished Names) 306
12.10为非专业用户管理安全策略 307
第13章其它平台和未来发展方向 309
13.1 Java Card概述 310
13.1.1虚拟机寿命 311
13.1.2 Java Card远程方法调用(JCRMI) 312
13.1.3 Java Card的Applet隔离和对象共享模型 313
13.1.4 Java Card安全API 314
13.2 Java 2 Micro Edition(J2ME)介绍 314
13.3.2语言增强 316
13.3.1虚拟机增强 316
13.3 J2SE范围内的安全增强 316
13.3.3可信计算基础的增强 317
13.3.4可插入式安全提供者的发展 318
13.3.5安全表达式 319
13.4 Jini网络技术简介 320
13.4.1 Jini技术安全体系架构简介 320
13.4.2约束模型 321
13.4.3建立策略信任 322
13.4.4动态代理 322
13.5 J2EE简介 323
13.6客户端容器 324
13.7 结论 325
参考书目 327
索引 339