第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