《应用密码学协议、算法与C源程序》PDF下载

  • 购买积分:16 如何计算积分?
  • 作  者:(美)B.施奈尔(Bruce Schneier)著;吴世忠等译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2000
  • ISBN:7111075889
  • 页数:545 页
图书介绍:本书真实系统地介绍了密码学及该领域全面的参考文献。全书共分四个部分,首先定义了密码学的多个术语,介绍了密码学的发展及背景,描述了密码学从简单到复杂的各种协议,详细讨论了密码技术,并在此基础上列举了如DES、IDEA、RSA、DSA等10多个算法以及多个应用实例,并提供了算法的源代码清单。全书内容广博权威,具有极大的实用价值。自出版以来,得到业内专家的高度赞誉,是致力于密码学研究的专业及非专业人员一本难得的好书。作者简介:BruceSchneier是CounterpaneSystems公司的总裁,该公司是一个密码学和计算机安全方而后专业咨询公司。Bruce还是《E-MailSecurity》(JohnWiley&Sons,1995)和《ProtectYourMacintosh》(PeachpitPress,1994)两书的作者,并在主要的密码学杂志上发表了数十篇论文。他是《Dr.Dobb'sJournal》责任编辑之一,同时担任《ComputerandCommunicationsSecurityReviews》的编辑。Bruce是国际密研究协会的理事会成员、电子隐私的信息中心的顾问成员和

第1章 基础知识 1

1.1 专业术语 1

1.1.1 发送者和接收者 1

1.1.2 消息和加密 1

1.1.3 鉴别、完整性和抗抵赖 2

1.1.4 算法和密钥 2

1.1.5 对称算法 3

1.1.6 公开密钥算法 3

1.1.7 密码分析 4

1.1.8 算法的安全性 6

1.1.9 过去的术语 7

1.2 隐写术 7

1.3 代替密码和换位密码 7

1.3.1 代替密码 7

1.3.2 换位密码 8

1.3.3 转轮机 9

1.3.4 进一步的读物 10

1.4 简单异或 10

1.5 一次一密乱码本 11

1.6 计算机算法 13

1.7 大数 13

第一部分 密码协议 15

第2章 协议结构模块 15

2.1 协议概述 15

2.1.1 协议的目的 16

2.1.2 协议中的角色 16

2.1.3 仲裁协议 16

2.1.4 裁决协议 18

2.1.5 自动执行协议 19

2.1.6 对协议的攻击 19

2.2 使用对称密码学通信 20

2.3 单向函数 21

2.4 单向散列函数 21

2.5 使用公开密钥密码学通信 22

2.5.1 混合密码系统 23

2.5.2 Merkle的难题 24

2.6 数字签名 24

2.6.1 使用对称密码系统和仲裁者对文件签名 25

2.6.2 数字签名树 26

2.6.3 使用公开密钥密码术对文件签名 26

2.6.4 文件签名和时间标记 26

2.6.5 使用公开密钥密码学和单向散列函数对文件签名 27

2.6.6 算法和术语 27

2.6.7 多重签名 28

2.6.8 抗抵赖和数字签名 28

2.6.9 数字签名的应用 29

2.7 带加密的数字签名 29

2.7.1 重新发送消息作为收据 29

2.7.2 阻止重新发送攻击 30

2.7.3 对公开密钥密码术的攻击 30

2.8 随机和伪随机序列的产生 31

2.8.1 伪随机序列 31

2.8.2 密码学意义上安全的伪随机序列 32

2.8.3 真正的随机序列 32

第3章 基本协议 33

3.1 密钥交换 33

3.1.1 对称密码学的密钥交换 33

3.1.2 公开密钥密码学的密钥交换 33

3.1.3 中间人攻击 34

3.1.4 联锁协议 34

3.1.5 使用数字签名的密钥交换 35

3.1.6 密钥和消息传输 35

3.1.7 密钥和消息广播 36

3.2 鉴别 36

3.2.1 使用单向函数鉴别 36

3.2.2 字典式攻击和salt 36

3.2.3 SKEY 37

3.2.4 使用公开密钥密码术鉴别 37

3.2.5 使用联锁协议互相鉴别 38

3.2.6 SKID 39

3.2.7 消息鉴别 39

3.3 鉴别和密钥交换 39

3.3.1 Wide-Mouth Frog协议 40

3.3.2 Yahalom协议 40

3.3.3 Needham-Schroeder协议 41

3.3.4 Otway-Rees协议 41

3.3.5 Kerberos协议 42

3.3.6 Neuman-Stubblebine协议 42

3.3.7 DASS协议 43

3.3.8 Denning-Sacoo协议 44

3.3.9 Woo-Lam协议 44

3.3.10 其他协议 45

3.3.11 学术上的教训 45

3.4 鉴别和密钥交换协议的形式分析 45

3.5 多密钥公开密钥密码学 47

3.6 秘密分割 49

3.7 秘密共享 49

3.7.1 有骗子的秘密共享 50

3.7.2 没有Trent的秘密共享 51

3.7.3 不暴露共享的秘密共享 51

3.7.4 可验证的秘密共享 51

3.7.5 带预防的秘密共享 51

3.7.6 带除名的秘密共享 51

3.8 数据库的密码保护 52

第4章 中级协议 53

4.1 时间标记服务 53

4.1.1 仲裁解决方法 53

4.1.2 改进的仲裁解决方法 53

4.1.3 链接协议 54

4.1.4 分布式协议 54

4.1.5 进一步的工作 55

4.2 阈下信道 55

4.2.1 阈下信道的应用 56

4.2.2 杜绝阈下的签名 56

4.3 不可抵赖的数字签名 57

4.4 指定的确认人签名 58

4.5 代理签名 58

4.6 团体签名 59

4.7 失败-终止数字签名 60

4.8 加密数据计算 60

4.9 位承诺 60

4.9.1 使用对称密码学的位承诺 61

4.9.2 使用单向函数的位承诺 61

4.9.3 使用伪随机序列发生器的位承诺 62

4.9.4 模糊点 62

4.10 公平的硬币抛掷 62

4.10.1 使用单向函数的抛币协议 63

4.10.2 使用公开密钥密码术的抛币协议 64

4.10.3 抛币入井协议 64

4.10.4 使用抛币产生密钥 65

4.11 智力扑克 65

4.11.1 三方智力扑克 65

4.11.2 对扑克协议的攻击 66

4.11.3 匿名密钥分配 66

4.12 单向累加器 67

4.13 秘密的全或无泄露 68

4.14 密钥托管 68

第5章 高级协议 71

5.1 零知识证明 71

5.1.1 基本的零知识协议 71

5.1.2 图同构 73

5.1.3 汉密尔顿圈 74

5.1.4 并行零知识证明 74

5.1.5 非交互式零知识证明 75

5.1.6 一般性 76

5.2 身份的零知识证明 76

5.2.1 国际象棋特级大师问题 77

5.2.2 黑手党骗局 77

5.2.3 恐怖分子骗局 77

5.2.4 建议的解决方法 77

5.2.5 多重身份骗局 78

5.2.6 出租护照 78

5.2.7 成员资格证明 78

5.3 盲签名 79

5.3.1 完全盲签名 79

5.3.2 盲签名协议 79

5.3.3 专利 81

5.4 基于身份的公开密钥密码学 81

5.5 不经意传输 81

5.6 不经意签名 83

5.7 同时签约 83

5.7.1 带有仲裁者的签约 83

5.7.2 无需仲裁者的同时签约:面对面 83

5.7.3 无需仲裁者的同时签约:非面对面 84

5.7.4 无需仲裁者的同时签约:使用密码术 85

5.8 数字证明邮件 86

5.9 秘密的同时交换 87

第6章 深奥的协议 88

6.1 保密选举 88

6.1.1 简单投票协议1 88

6.1.2 简单投票协议2 88

6.1.3 使用盲签名投票 89

6.1.4 带有两个中央机构的投票 89

6.1.5 带有单个中央机构的投票 90

6.1.6 改进的带有单个中央机构的投票 90

6.1.7 无需中央制表机构的投票 91

6.1.8 其他投票方案 94

6.2 保密的多方计算 94

6.2.1 协议1 94

6.2.2 协议2 95

6.2.3 协议3 95

6.2.4 协议4 96

6.2.5 无条件多方安全协议 96

6.2.6 保密电路计算 96

6.3 匿名消息广播 97

6.4 数字现金 98

6.4.1 协议1 99

6.4.2 协议2 99

6.4.3 协议3 100

6.4.4 协议4 100

6.4.5 数字现金和高明的犯罪 102

6.4.6 实用化的数字现金 103

6.4.7 其他数字现金协议 103

6.4.8 匿名信用卡 104

第二部分 密码技术 105

第7章 密钥长度 105

7.1 对称密钥长度 105

7.1.1 穷举攻击所需时间和金钱估计 106

7.1.2 软件破译机 107

7.1.3 神经网络 108

7.1.4 病毒 108

7.1.5 中国式抽彩法 108

7.1.6 生物工程技术 109

7.1.7 热力学的局限性 110

7.2 公开密钥长度 110

7.2.1 DNA计算法 114

7.2.2 量子计算法 115

7.3 对称密钥和公开密钥长度的比较 115

7.4 对单向散列函数的生日攻击 116

7.5 密钥应该多长 116

7.6 小结 117

第8章 密钥管理 118

8.1 产生密钥 118

8.1.1 减少的密钥空间 118

8.1.2 弱密钥选择 119

8.1.3 随机密钥 120

8.1.4 通行短语 121

8.1.5 X9.17密钥产生 122

8.1.6 DoD密钥产生 122

8.2 非线性密钥空间 122

8.3 传输密钥 123

8.4 验证密钥 124

8.4.1 密钥传输中的错误检测 125

8.4.2 解密过程中的错误检测 125

8.5 使用密钥 125

8.6 更新密钥 126

8.7 存储密钥 126

8.8 备份密钥 127

8.9 泄露密钥 128

8.10 密钥有效期 128

8.11 销毁密钥 129

8.12 公开密钥的密钥管理 129

8.12.1 公开密钥证书 130

8.12.2 分布式密钥管理 131

第9章 算法类型和模式 132

9.1 电子密码本模式 132

9.2 分组重放 133

9.3 密码分组链接模式 135

9.3.1 初始向量 135

9.3.2 填充 136

9.3.3 错误扩散 137

9.3.4 安全问题 137

9.4 序列密码算法 138

9.5 自同步序列密码 139

9.6 密码反馈模式 140

9.6.1 初始化向量 140

9.6.2 错误扩散 141

9.7 同步序列密码 141

9.8 输出反馈模式 142

9.8.1 初始化向量 142

9.8.2 错误扩散 143

9.8.3 安全问题 143

9.8.4 OFB模式中的序列密码 144

9.9 计数器模式 144

9.10 其他分组密码模式 144

9.10.1 分组链接模式 144

9.10.2 扩散密码分组链接模式 145

9.10.3 带校验和的密码分组链接 145

9.10.4 带非线性函数的输出反馈 145

9.10.5 其他模式 146

9.11 选择密码模式 146

9.12 交错 147

9.13 分组密码与序列密码 147

第10章 使用算法 149

10.1 选择算法 149

10.2 公开密钥密码学与对称密码学 150

10.3 通信信道加密 151

10.3.1 链-链加密 151

10.3.2 端-端加密 152

10.3.3 两者的结合 153

10.4 用于存储的加密数据 154

10.4.1 非关联密钥 155

10.4.2 驱动器级与文件级加密 155

10.4.3 提供加密驱动器的随机存取 155

10.5 硬件加密与软件加密 156

10.5.1 硬件 156

10.5.2 软件 157

10.6 压缩,编码及加密 157

10.7 检测加密 158

10.8 密文中隐藏密文 158

10.9 销毁信息 159

第三部分 密码算法 161

第11章 数学背景 161

11.1 信息论 161

11.1.1 熵和不确定性 161

11.1.2 语言信息率 161

11.1.3 密码系统的安全性 162

11.1.4 唯一解距离 163

11.1.5 信息论的运用 163

11.1.6 混乱和扩散 164

11.2 复杂性理论 164

11.2.1 算法的复杂性 164

11.2.2 问题的复杂性 165

11.2.3 NP完全问题 167

11.3 数论 167

11.3.1 模运算 167

11.3.2 素数 169

11.3.3 最大公因子 170

11.3.4 求模逆元 171

11.3.5 求系数 173

11.3.6 费尔马小定理 173

11.3.7 欧拉ψ函数 173

11.3.8 中国剩余定理 173

11.3.9 二次剩余 175

11.3.10 勒让德符号 175

11.3.11 雅可比符号 176

11.3.12 Blum整数 177

11.3.13 生成元 177

11.3.14 伽罗瓦域中的计算 178

11.4 因子分解 179

11.5. 素数的产生 181

11.5.1 Solovag-Strassen 181

11.5.2 Lehmann 182

11.5.3 Rabin-Miller 182

11.5.4 实际考虑 182

11.5.5 强素数 183

11.6 有限域上的离散对数 183

第12章 数据加密标准 185

12.1 背景 185

12.1.1 标准的开发 185

12.1.2 标准的采用 186

12.1.3 DES设备的鉴定和认证 187

12.1.4 1987年的标准 187

12.1.5 1993年的标准 188

12.2 DES的描述 188

12.2.1 算法概要 189

12.2.2 初始置换 190

12.2.3 密钥置换 190

12.2.4 扩展置换 191

12.2.5 S-盒代替 192

12.2.6 P-盒置换 194

12.2.7 末置换 194

12.2.8 DES解密 194

12.2.9 DES的工作模式 194

12.2.10 DES的硬件和软件实观 195

12.3 DES的安全性 196

12.3.1 弱密钥 197

12.3.2 补密钥 198

12.3.3 代数结构 199

12.3.4 密钥的长度 199

12.3.5 迭代的次数 200

12.3.6 S-盒的设计 200

12.3.7 其他结论 201

12.4 差分及线性分析 201

12.4.1 差分密码分析 201

12.4.2 相关密钥密码分析 204

12.4.3 线性密码分析 204

12.4.4 未来的方向 206

12.5 实际设计的准则 206

12.6 DES的各种变型 207

12.6.1 多重DES 207

12.6.2 使用独立子密钥的DES 207

12.6.3 DESX 208

12.6.4 CRYPT(3) 208

12.6.5 GDES 208

12.6.6 更换S-盒的DES 209

12.6.7 RDES 210

12.6.8 SnDES 210

12.6.9 使用相关密钥S-盒的DES 211

12.7 DES现今的安全性如何 212

第13章 其他分组密码算法 213

13.1 Lucifer算法 213

13.2 Madryga算法 213

13.2.1 Madryga的描述 214

13.2.2 Madryga的密码分析 215

13.3 NewDES算法 215

13.4 FEAL算法 216

13.4.1 FEAL的描述 216

13.4.2 FEAL的密码分析 219

13.4.3 专利 220

13.5 REDOC算法 220

13.5.1 REDOCⅢ 220

13.5.2 专利和许可证 221

13.6 LOKI算法 221

13.6.1 LOKI91 221

13.6.2 LOKI91的描述 221

13.6.3 LOKI91的密码分析 223

13.6.4 专利和许可证 223

13.7 Khufu和Khafre算法 223

13.7.1 Khufu 224

13.7.2 Khafre 224

13.7.3 专利 224

13.8 RC2算法 224

13.9 IDEA算法 225

13.9.1 IDEA 226

13.9.2 IDEA的描述 226

13.9.3 IDEA的速度 228

13.9.4 IDEA的密码分析 228

13.9.5 IDEA的操作方式和变型 229

13.9.6 敬告使用者 230

13.9.7 专利和许可证 230

13.10 MMB算法 230

13.11 CA-1.1算法 232

13.12 Skipjack算法 232

第14章 其他分组密码算法(续) 234

14.1 GOST算法 234

14.1.1 GOST的描述 234

14.1.2 GOST的密码分析 236

14.2 CAST算法 236

14.3 Blowfish算法 237

14.3.1 Blowfish的描述 237

14.3.2 Blowfish的安全性 239

14.4 SAFER算法 239

14.4.1 SAFER K-64的描述 239

14.4.2 SAFER K-128 241

14.4.3 SAFER K-64的安全性 241

14.5 3-WAY算法 241

14.6 Crab算法 242

14.7 SXAL8/MBAL算法 243

14.8 RC5算法 243

14.9 其他分组密码算法 244

14.10 分组密码设计理论 245

14.10.1 Feistel网络 245

14.10.2 简单关系 246

14.10.3 群结构 246

14.10.4 弱密钥 246

14.10.5 强的抗差分攻击和线性攻击 246

14.10.6 S-盒的设计 247

14.10.7 设计分组密码 248

14.11 使用单向散列函数 248

14.11.1 Kam 248

14.11.2 Luby-Rackoff 249

14.11.3 消息摘要密码 249

14.11.4 基于单向散列函数的密码安全性 250

14.12 分组密码算法的选择 250

第15章 组合分组密码 252

15.1 双重加密 252

15.2 三重加密 253

15.2.1 用两个密钥进行三重加密 253

15.2.2 用三个密钥进行三重加密 254

15.2.3 用最小密钥进行三重加密 254

15.2.4 三重加密模式 254

15.2.5 三重加密的变型 256

15.3 加倍分组长度 257

15.4 其他多重加密方案 257

15.4.1 双重OFB/计数器 257

15.4.2 ECB+OFB 258

15.4.3 xDES 258

15.4.4 五重加密 259

15.5 缩短CDMF密钥 259

15.6 白化 259

15.7 级联多重加密算法 260

15.8 组合多重分组算法 260

第16章 伪随机序列发生器和序列密码 261

16.1 线性同余发生器 261

16.2 线性反馈移位寄存器 264

16.3 序列密码的设计与分析 269

16.3.1 线性复杂性 270

16.3.2 相关免疫性 270

16.3.3 其他攻击 270

16.4 使用LFSR的序列密码 270

16.4.1 Geffe发生器 271

16.4.2 推广的Geffe发生器 272

16.4.3 Jennings发生器 272

16.4.4 Beth-Piper停走式发生器 272

16.4.5 交替停走式发生器 273

16.4.6 双侧停走式发生器 273

16.4.7 门限发生器 274

16.4.8 自采样发生器 274

16.4.9 多倍速率内积式发生器 275

16.4.10 求和式发生器 275

16.4.11 DNRSG 275

16.4.12 Gollmann级联 275

16.4.13 收缩式发生器 276

16.4.14 自收缩式发生器 276

16.5 A5算法 276

16.6 Hughes XPD/KPD算法 277

16.7 Nanoteq算法 277

16.8 Rambutan算法 277

16.9 附加式发生器 278

16.9.1 Fish发生器 278

16.9.2 Pike发生器 279

16.9.3 Mush发生器 279

16.10 Gifford算法 279

16.11 M算法 280

16.12 PKZIP算法 280

第17章 其他序列密码和真随机序列发生器 282

17.1 RC4算法 282

17.2 SEAL算法 283

17.2.1 伪随机函数族 283

17.2.2 SEAL的描述 283

17.2.3 SEAL的安全性 284

17.2.4 专利和许可证 284

17.3 WAKE算法 284

17.4 带进位的反馈移位寄存器 285

17.5 使用FCSR的序列密码 292

17.5.1 级联发生器 292

17.5.2 FCSR组合发生器 292

17.5.3 CFSR/FCSR加法/奇偶级联 293

17.5.4 交替停走式发生器 293

17.5.5 收缩式发生器 294

17.6 非线性反馈移位寄存器 294

17.7 其他序列密码 295

17.7.1 Pless发生器 295

17.7.2 蜂窝式自动发生器 295

17.7.3 1/p发生器 295

17.7.4 crypt(1) 296

17.7.5 其他方案 296

17.8 序列密码设计的系统理论方法 296

17.9 序列密码设计的复杂性理论方法 297

17.9.1 Shamir伪随机数发生器 297

17.9.2 Blum-Micali发生器 297

17.9.3 RSA 297

17.9.4 Blum,Blum和Shub 297

17.10 序列密码设计的其他方法 298

17.10.1 Rip van Winkle密码 298

17.10.2 Diffie随机序列密码 299

17.10.3 Maurer随机序列密码 299

17.11 级联多个序列密码 299

17.12 选择序列密码 300

17.13 从单个伪随机序列发生器产生多个序列 300

17.14 真随机序列发生器 301

17.14.1 RAND表 301

17.14.2 使用随机噪声 302

17.14.3 使用计算机时钟 302

17.14.4 测量键盘反应时间 303

17.14.5 偏差和相关性 303

17.14.6 提取随机性 304

第18章 单向散列函数 307

18.1 背景 307

18.1.1 单向散列函数的长度 308

18.1.2 单向散列函数综述 308

18.2 Snefru算法 308

18.3 N-Hash算法 309

18.4 MD4算法 311

18.5 MD5算法 311

18.5.1 MD5的描述 312

18.5.2 MD5的安全性 315

18.6 MD2算法 315

18.7 安全散列算法 316

18.7.1 SHA的描述 316

18.7.2 SHA的安全性 318

18.8 RIPE-MD算法 319

18.9 HAVAL算法 319

18.10 其他单向散列函数 319

18.11 使用对称分组算法的单向散列函数 320

18.11.1 散列长度等于分组长度的方案 320

18.11.2 改进的Davies-Meyer 322

18.11.3 Preneel-Bosselaers-Govaerts-Vandewalle 322

18.11.4 Quisqater-Girault 322

18.11.5 LOKI双分组 323

18.11.6 并行Davies-Meyer 323

18.11.7 串联和并联Davies-Meyer 323

18.11.8 MDC-2和MDC-4 324

18.11.9 AR散列函数 325

18.11.10 GOST散列函数 326

18.11.11 其他方案 326

18.12 使用公开密钥算法 326

18.13 选择单向散列函数 326

18.14 消息鉴别码 327

18.14.1 CBC-MAC 327

18.14.2 信息鉴别算法 327

18.14.3 双向MAC 328

18.14.4 Jueneman方法 328

18.14.5 RIPE-MAC 328

18.14.6 IBC-Hash 328

18.14.7 单向散列函数MAC 329

18.14.8 序列密码MAC 329

第19章 公开密钥算法 330

19.1 背景 330

19.2 背包算法 331

19.2.1 超递增背包 331

19.2.2 由私人密钥产生公开密钥 332

19.2.3 加密 332

19.2.4 解密 332

19.2.5 实际实现方案 333

19.2.6 背包的安全性 333

19.2.7 背包变型 333

19.2.8 专利 333

19.3 RSA算法 334

19.3.1 RSA的硬件实现 335

19.3.2 RSA的速度 336

19.3.3 软件加速 336

19.3.4 RSA的安全性 337

19.3.5 对RSA的选择密文攻击 338

19.3.6 对RSA的公共模数攻击 338

19.3.7 对RSA的低加密指数攻击 338

19.3.8 对RSA的低解密指数攻击 339

19.3.9 经验 339

19.3.10 对RSA的加密和签名的攻击 339

19.3.11 标准 339

19.3.12 专利 340

19.4 Pohlig-Hellman算法 340

19.5 Rabin算法 340

19.6 ElGamal算法 341

19.6.1 ElGamal签名 342

19.6.2 ElGamal加密 342

19.6.3 速度 343

19.6.4 专利 343

19.7 McEliece算法 343

19.8 椭圆曲线密码系统 344

19.9 LUC算法 345

19.10 有限自动机公开密钥密码系统 345

第20章 公开密钥数字签名算法 347

20.1 数字签名算法 347

20.1.1 对通告的反应 347

20.1.2 DSA的描述 349

20.1.3 快速预计算 350

20.1.4 DSA的素数产生 351

20.1.5 使用DSA的ElGamal加密 352

20.1.6 使用DSA的RSA加密 352

20.1.7 DSA的安全性 352

20.1.8 攻击k 353

20.1.9 公共模数的危险 354

20.1.10 DSA中的阈下信道 354

20.1.11 专利 354

20.2 DSA的变型 354

20.3 GOST数字签名算法 355

20.4 离散对数签名方案 356

20.5 Ong-Schnorr-Shamir签名方案 358

20.6 ESIGN签名方案 358

20.6.1 ESIGN的安全性 359

20.6.2 专利 359

20.7 细胞自动机 359

20.8 其他公开密钥算法 359

第21章 鉴别方案 361

21.1 Feige-Fiat-Shamir算法 361

21.1.1 简化的Feige-Fiat-Shamir身份鉴别方案 361

21.1.2 Feige-Fiat-Shamir身份鉴别方案 362

21.1.3 例子 362

21.1.4 加强方案 363

21.1.5 Fiat-Shamir签名方案 363

21.1.6 改进的Fiat-Shamir签名方案 364

21.1.7 其他加强方案 364

21.1.8 Ohta-Okamoto身份鉴别方案 364

21.1.9 专利 364

21.2 Guillou-Quisquater算法 365

21.2.1 Guillou-Quisquater身份鉴别方案 365

21.2.2 Guillou-Quisquater数字签名方案 365

21.2.3 多重签名 366

21.3 Schnorr算法 366

21.3.1 鉴别协议 366

21.3.2 数字签名协议 367

21.3.3 专利 367

21.4 将身份鉴别方案转为数字签名方案 367

第22章 密钥交换算法 368

22.1 Diffie-Hellman算法 368

22.1.1 三方或多方Diffie-Hellman 368

22.1.2 扩展Diffie-Hellman 369

22.1.3 Hughes 369

22.1.4 不用交换密钥的密钥交换 369

22.1.5 专利 369

22.2 站间协议 369

22.3 Shamir的三次传递协议 370

22.4 COMSET协议 371

22.5 加密密钥交换 371

22.5.1 基本EKE协议 371

22.5.2 用RSA实现EKE 372

22.5.3 用ElGamal实现EKE 372

22.5.4 用Diffie-Hellman实现EKE 372

22.5.5 加强的EKE 373

22.5.6 扩充的EKE 373

22.5.7 EKE的应用 373

22.6 加强的密钥协商 374

22.7 会议密钥分发和秘密广播 375

22.7.1 会议密钥分发 375

22.7.2 Tatebayashi-Matsuzaki-Newman 376

第23章 协议的专用算法 377

23.1 多重密钥的公开密钥密码学 377

23.2 秘密共享算法 377

23.2.1 LaGrange插值多项式方案 377

23.2.2 矢量方案 378

23.2.3 Asmuth-Bloom 378

23.2.4 Kamin-Greene-Hellman 379

23.2.5 高级门限方案 379

23.2.6 有骗子情况下的秘密共享 379

23.3 阈下信道 380

23.3.1 Ong-Schnorr-Shamir 380

23.3.2 ElGamal 380

23.3.3 ESIGN 381

23.3.4 DSA 382

23.3.5 挫败DSA阈下信道 383

23.3.6 其他方案 384

23.4 不可抵赖的数字签名 384

23.5 指定的确认者签名 386

23.6 用加密数据计算 387

23.7 公正的硬币抛掷 387

23.7.1 利用平方根的硬币抛掷 387

23.7.2 利用模p指数运算的硬币抛掷 388

23.7.3 利用Blum整数的硬币抛掷 389

23.8 单向累加器 389

23.9 秘密的全或无泄露 389

23.10 公正和故障保险密码系统 391

23.10.1 公正的Diffie-Hellman 391

23.10.2 故障保险的Diffie-Hellman 392

23.11 知识的零知识证明 392

23.11.1 离散对数的零知识证明 392

23.11.2 破译RSA的能力的零知识证明 393

23.11.3 n是一个Blum整数的零知识证明 393

23.12 盲签名 394

23.13 不经意传输 394

23.14 保密的多方计算 395

23.15 概率加密 396

23.16 量子密码学 397

第四部分 真实世界 401

第24章 实现方案实例 401

24.1 IBM秘密密钥管理协议 401

24.2 MITRENET 402

24.3 ISDN 402

24.3.1 密钥 402

24.3.2 呼叫 403

24.4 STU-Ⅲ 404

24.5 Kerberos 404

24.5.1 Kerberos模型 404

24.5.2 Kerberos工作原理 405

24.5.3 凭证 405

24.5.4 Kerberos第5版消息 406

24.5.5 最初票据的获取 406

24.5.6 服务器票据的获取 407

24.5.7 服务请求 407

24.5.8 Kerberos第4版 407

24.5.9 Kerberos的安全性 408

24.5.10 许可证 408

24.6 KryptoKnight 408

24.7 SESAME 409

24.8 IBM通用密码体系 409

24.9 ISO鉴别框架 410

24.9.1 证书 410

24.9.2 鉴别协议 411

24.10 保密性增强邮件 412

24.10.1 PEM的有关文件 412

24.10.2 证书 413

24.10.3 PEM的消息 413

24.10.4 PEM的安全性 416

24.10.5 TIS/PEM 416

24.10.6 RIPEM 416

24.11 消息安全协议 417

24.12 Pretty Good Privacy 417

24.13 智能卡 419

24.14 公开密钥密码学标准 419

24.15 通用电子支付系统 420

24.16 Clipper 422

24.17 Capstone 423

24.18 AT T 3600型电话保密设备 424

第25章 政治 425

25.1 国家安全局 425

25.2 国家计算机安全中心 426

25.3 国家标准技术所 427

25.4 RSA数据安全有限公司 429

25.5 公开密钥合作商 430

25.6 国际密码研究协会 431

25.7 RACE完整性基本评估 431

25.8 对欧洲的有条件访问 431

25.9 ISO/IEC 9979 432

25.10 专业人员、公民自由和工业组织 432

25.10.1 电子秘密信息中心 432

25.10.2 电子战线基金会 432

25.10.3 计算机协会 433

25.10.4 电气和电子工程师学会 433

25.10.5 软件出版商协会 433

25.11 Sci.crypt 433

25.12 Cypherpunks 433

25.13 专利 433

25.14 美国出口法规 434

25.15 其他国家的密码进出口 438

25.16 合法性问题 439

附录A 源代码 440

A.1 DES 440

A.2 LOK191 448

A.3 IDEA 452

A.4 GOST 457

A.5 BLOWFISH 460

A.6 3-Way 467

A.7 RC5 471

A.8 A5 474

A.9 SEAL 478

参考文献 484

Matt Blaze跋 544