图书目录

目    录

第1章  密码术简介 1

1.1  加密技术简史 1

1.2  密码术的基础知识 2

1.2.1  定义 3

1.2.2  加密功能 4

1.3  保密性 4

1.3.1  信息交换 4

1.3.2  密钥简介 8

1.3.3  对称密码算法 10

1.3.4  非对称密码算法 14

1.4  完整性 15

1.4.1  MAC—— 消息认证码 17

1.4.2  签名 18

1.4.3  安全保存协议 19

1.5  身份验证 21

1.6  不可否认性 23

1.6.1  不可否认案例 23

1.6.2  不可否认协议 24

1.7  算法 24

1.7.1  加密软件出口问题 25

1.7.2  对称密码算法 25

1.7.3  非对称密码算法 26

1.7.4  消息摘要和散列 26

1.7.5  消息身份验证码 26

1.8  小结 27

第2章  .NET密码术 28

2.1  .NET密码术模型 28

2.1.1  抽象类 30

2.1.2  CryptoConfig 30

2.1.3  配置算法映射 32

2.1.4  高加密支持和Windows 33

2.2  构建块 34

2.2.1  ICryptoTransform接口 34

2.2.2  CryptoStream类 34

2.2.3  加密异常 36

2.3  对称加密 36

2.3.1  对称算法 37

2.3.2  SymmetricAlgorithm类 37

2.3.3  检索密钥数据和默认值 39

2.3.4  二进制数据和文本编码 40

2.3.5  加密和解密流 41

2.3.6  将数据加密到文件 44

2.3.7  生成密钥和使用Salt 45

2.3.8  Base64转换 46

2.4  非对称加密 48

2.4.1  非对称算法 49

2.4.2  AsymmetricAlgorithm类 49

2.4.3  加密数据 50

2.4.4  以XML格式导入和导出密钥 54

2.4.5  使用参数导入和输出密钥 55

2.4.6  使用容器存储CSP密钥 56

2.4.7  CSP和ASP.NET 57

2.5  加密强度 58

2.6  小结 59

第3章  数据的完整性-- 散列码和签名 60

3.1  散列算法 60

3.1.1  .NET 散列类 61

3.1.2  计算散列值 62

3.1.3  散列流中的数据 65

3.2  加salt值的散列 67

3.3  加密的散列码 68

3.3.1  散列并加密文件 68

3.3.2  密钥散列算法 72

3.3.3  数字签名 73

3.3.4  保存散列和签名 76

3.4  XML 签名 77

3.4.1  XML标准 77

3.4.2  XML 签名规范 78

3.4.3  .NET 对已签署XML的支持 80

3.5  小结 89

第4章  保护长期保存的数据 90

4.1  把数据存储到磁盘中 91

4.1.1  选择性加密XML 92

4.1.2  加密对象 98

4.1.3  加密文件系统(EFS) 103

4.2  把数据保存在数据库中 106

4.2.1  保存加密的数据 107

4.2.2  利用口令散列进行身份验证 112

4.2.3  利用加salt值的口令散列进行身份验证 112

4.3  创建防止篡改的文件 116

4.3.1  在代码访问安全系统中使用散列 116

4.3.2  通过编程方式检验散列 118

4.4  小结 120

第5章  保护通信数据 121

5.1  SSL 122

5.1.1  证书简介 123

5.1.2  SSL简介 123

5.1.3  使用证书 125

5.1.4  在IIS中安装证书 125

5.1.5  利用SSL对信息编码 126

5.2  应用层加密 129

5.2.1  简单的非对称加密 129

5.2.2  使用会话 133

5.2.3  使用会话和Web服务 134

5.2.4  自定义方法中的安全风险 138

5.2.5  利用会话进行远程通信 140

5.2.6  密钥交换类 140

5.3  高级选项 142

5.4  小结 144

第6章  密钥和证书管理 145

6.1  数字证书 145

6.1.1  一般用途 147

6.1.2  实际的PKI或身份管理 148

6.1.3  发行 150

6.1.4  检验 151

6.1.5  验证-撤销 151

6.2  数字身份 152

6.2.1  数字身份简介 152

6.2.2  数字签名 152

6.3  Windows中的证书 156

6.3.1  系统存储区 156

6.3.2  证书存储单元 157

6.3.3  手工的系统存储管理 158

6.4  获取证书 159

6.4.1  从公认的CA中获取证书 159

6.4.2  从内部证书服务器中获取证书 159

6.4.3  生成测试证书 161

6.5  证书和WSE 163

6.5.1  Web Services Enhancements for .NET 163

6.5.2  列出自己的存储单元 163

6.5.3  检查自己的证书 164

6.5.4  为简单的纯文本签名 166

6.5.5  检验签名 168

6.5.6  保护另一个密钥 168

6.6  证书和CAPICOM 171

6.6.1  列出自己的存储单元 171

6.6.2  检查自己的证书 172

6.6.3  为简单的纯文本签名 175

6.6.4  检验签名 176

6.6.5  验证证书 177

6.6.6  处理证书链 179

6.6.7  被封装的数据 180

6.7  互操作性 182

6.7.1  ASN.1、DER和PEM 183

6.7.2  显示证书内容 184

6.7.3  在PEM和DER之间进行转换 187

6.8  小结 187

第7章  密码术--最佳和最坏做法 188

7.1  攻击类型 188

7.2  最佳和最坏做法 197

7.3  小结 211

第8章  设计安全的应用程序 212

8.1  VirtualWebDrive 服务概述 213

8.2  安全分析 214

8.3  VirtualWebDrive组件 215

8.3.1  安全组件 215

8.3.2  数据库组件 226

8.4  VirtualWebDrive服务 233

8.4.1  基于票据的身份验证 235

8.4.2  管理文件 237

8.5  Windows客户程序 239

8.6  可能的改进措施 244

8.7  小结 245

附录A  传输层安全 246

A.1  参考模型 246

A.1.1  ISO/OSI 7层参考模型 246

A.1.2  TCP/IP 5层参考模型 247

A.1.3  示例协议栈 247

A.2  传输层安全(TLS) 248

A.3  IPSec 249

A.3.1  网络地址转换(NAT) 249

A.3.2  身份验证头(AH) 250

A.3.3  封装安全负载(ESP) 250

A.3.4  IP负载压缩(IPCOMP) 250

A.3.5  Internet密钥交换(IKE) 250

A.4  虚拟专用网(VPN) 251

A.4.1  点对点的隧道协议(PPTP) 251

A.4.2  2层隧道协议(L2TP) 251

附录B  生成安全的随机数 252

B.1  伪随机数 252

B.2  加密的随机数 254

附录C  支持、勘误表和代码下载 257

C.1  如何下载本书的示例代码 257

C.2  勘误表 257

C.3  E-Mail支持 257

C.4  p2p.wrox.com站点 258