第1章 绪论 1
1.1 信息安全 1
1.1.1 信息安全的目的 1
1.1.2 信息安全中攻击的基本类别 2
1.1.3 信息安全的基本模型 4
1.1.4 信息安全研究的基本内容 5
1.2 密码学 5
1.2.1 密码学发展简史 6
1.2.2 密码体制分类 20
1.2.3 密码体制的攻击类型 22
1.2.4 密码学的基本术语 22
1.2.5 密码学的基本模型 23
1.2.6 密码学与信息安全的关系 24
习题 24
第2章 信息安全初步 26
2.1 引言 26
2.2 身份识别 29
2.2.1 基于物理形式的身份识别技术 29
2.2.2 基于密码技术的身份识别协议 30
2.3 机密性保护 31
2.3.1 机密性保护粒度 31
2.3.2 机密性保护方法 32
2.4 数据完整性保护 32
2.4.1 完整性保护粒度 32
2.4.2 完整性保护方法 33
2.5 不可抵赖性 34
2.6 访问控制 35
2.6.1 访问控制粒度 35
2.6.2 访问控制策略 36
2.6.3 访问控制实现机制与方法 40
习题 43
第3章 信息安全技术 45
3.1 保护技术 45
3.1.1 加密技术 45
3.1.2 数字签名 46
3.1.3 访问控制 47
3.1.4 身份识别 47
3.1.5 通信量填充与信息隐藏 48
3.1.6 路由控制 49
3.1.7 公证 49
3.1.8 安全标记 49
3.2 检测技术 50
3.2.1 数据完整性 50
3.2.2 事件检测与安全审计 51
3.3 恢复技术 52
3.3.1 运行状态恢复 52
3.3.2 数据恢复 52
3.4 信息安全体系 53
3.4.1 信息安全技术体系 54
3.4.2 信息安全组织体系 56
3.4.3 管理体系 57
习题 57
第4章 传统密码学 58
4.1 传统密码学的基本知识 58
4.1.1 机密性要求 60
4.1.2 完整性要求 60
4.2 DES加密算法 61
4.2.1 初始置换IP 63
4.2.2 圈函数 64
4.2.3 密钥扩展 67
4.2.4 脱密 69
4.2.5 DES的安全性 69
4.3 三重DES 70
4.4 AES 71
4.4.1 数学基础 72
4.4.2 Rijndael的状态、密钥和圈密钥 74
4.4.3 圈变换 75
4.4.4 密钥扩展 77
4.4.5 加/脱密流程图 78
4.5 其他算法 79
4.5.1 IDEA 79
4.5.2 Blowfish 81
4.5.3 RC5 83
4.5.4 CAST-128 83
习题 84
第5章 公钥密码算法 87
5.1 RSA密码算法 89
5.1.1 算法的描述 89
5.1.2 计算方面 93
5.1.3 安全性方面 95
5.2 ElGamal算法 96
5.2.1 ElGamal算法描述 96
5.2.2 离散对数问题与ElGamal密码体制的安全性 97
5.3 椭圆曲线密码体制 98
5.3.1 有限域上的椭圆曲线 99
5.3.2 Menezes-Vanstone椭圆曲线密码体制 103
5.3.3 椭圆曲线离散对数问题与安全性 105
5.4 Diffie-Hellman算法 106
5.4.1 Diffie-Hellman算法描述 106
5.4.2 Diffie-Hellman算法举例 106
5.4.3 Diffie-Hellman算法的椭圆曲线版本 107
5.5 MH背包公钥密码系统 107
5.5.1 背包(Knapsack)问题 108
5.5.2 MH背包公钥密码系统描述 109
5.6 其他公钥密码算法简介 110
5.6.1 Rabin公钥密码体制 110
5.6.2 Goldwasser-Micali概率公钥密码体制 111
5.6.3 NTRU公钥密码体制 113
习题 116
第6章 Hash函数 120
6.1 Hash函数的性质 121
6.2 Hash函数MD5 121
6.2.1 MD5算法描述 122
6.2.2 MD5算法的安全性 126
6.3 Hash函数SHA-1 127
6.3.1 SHA-1算法描述 128
6.3.2 SHA-1算法的安全性 130
6.4 基于分组密码的Hash函数 131
6.4.1 构造Hash函数的一般性原则 131
6.4.2 基于分组密码算法构造Hash函数 132
习题 133
第7章 计算复杂性理论 136
7.1 图灵机 137
7.2 语言、问题、算法及计算复杂度表示 139
7.3 P、NP与NP-完全问题 142
7.3.1 三类问题的相关定义 143
7.3.2 P类问题和NP类问题举例 146
7.4 单向函数与陷门单向函数 148
7.4.1 单向函数 148
7.4.2 陷门单向函数 150
习题 152
第8章 零知识证明与比特承诺 155
8.1 零知识证明 156
8.1.1 零知识证明协议示例 156
8.1.2 零知识证明协议的定义 160
8.2 基于零知识证明的身份识别协议 166
8.2.1 Schnorr身份识别协议 166
8.2.2 Fiat-Shamir身份识别协议 167
8.2.3 Okamoto身份识别协议 169
8.3 比特承诺 171
8.3.1 比特承诺方案的数学构造 171
8.3.2 利用对称密码算法的比特承诺方案 172
8.3.3 利用单向函数的比特承诺方案 173
8.4 NP-问题的零知识证明简述 177
习题 177
第9章 基于身份的公钥密码学 178
9.1 基于身份的签名 179
9.1.1 Shamir的基于身份的数字签名体制的构成 180
9.1.2 Shamir的基于身份的数字签名体制的算法描述 180
9.1.3 Shamir的基于身份的数字签名体制安全性分析 182
9.2 利用椭圆曲线的Weil对的基于身份的公钥密码体制 183
9.2.1 超奇异椭圆曲线与Weil配对 183
9.2.2 DDH问题与CDH问题 185
9.2.3 利用Weil配对的基于身份密钥共享体制 187
9.2.4 利用Weil配对的三方Diffie-Hellman密钥协议 190
9.3 Boneh与Franklin的基于身份的公钥加密体制 191
9.3.1 Boneh与Franklin的公钥加密体制的构成 191
9.3.2 Boneh与Franklin的公钥加密体制的算法描述 192
9.3.3 公开系统环境中的Boneh与Franklin的公钥加密体制 195
习题 197
第10章 数字签名 198
10.1 RSA数字签名方案 199
10.1.1 RSA数字签名算法描述 200
10.1.2 RSA数字签名算法安全性考虑 200
10.2 ElGamal数字签名方案 202
10.2.1 ElGamal数字签名算法描述 202
10.2.2 ElGamal数字签名算法安全性考虑 203
10.3 数字签名标准DSS 203
10.3.1 DSA数字签名算法描述 204
10.3.2 DSA数字签名算法安全性考虑 205
10.4 椭圆曲线数字签名算法 205
10.4.1 椭圆曲线数字签名算法ECDSA描述 206
10.4.2 椭圆曲线数字签名算法ECDSA安全性考虑 207
10.5 基于离散对数问题的一般数字签名方案 208
10.5.1 基于离散对数问题的一般数字签名方案描述 208
10.5.2 基于离散对数问题的一般数字签名方案的几点说明 209
10.6 盲数字签名方案 210
习题 213
第11章 密钥管理 214
11.1 密钥管理绪论 214
11.2 基于传统密码体制的密钥分发 217
11.2.1 ANSI X9.17标准 217
11.2.2 Kerberos协议 219
11.3 基于公钥密码体制的密钥分发 220
11.3.1 简单型的秘密密钥分发 221
11.3.2 具有身份鉴别能力型的秘密密钥分发 221
11.3.3 混合型的秘密密钥分发 222
11.3.4 Diffie-Hellman密钥交换协议 223
11.3.5 Blom密钥交换协议 223
11.4 量子密钥分配协议 224
11.5 公钥密码的密钥管理 228
11.5.1 X.509证书标准 229
11.5.2 认证机构及其信任链 231
11.5.3 密钥与证书管理 234
11.5.4 黑名单CRL 237
习题 239
附录A 密码学中的基本数学知识 241
A.1 数论基本知识 241
A.1.1 整除与素数 241
A.1.2 同余与模运算 243
A.1.3 模乘运算中的逆元与欧氏算法 246
A.1.4 Miller-Rabin素性检测算法 248
A.1.5 一次同余式 249
A.1.6 中国剩余定理 250
A.1.7 二次剩余、Legendre(勒让德)符号与Jacobi(雅可比)符号 252
A.2 代数基本知识 257
A.2.1 群 257
A.2.2 环 259
A.2.3 域 259
A.2.4 多项式环 261
A.2.5 有限域GF(pn)中的运算 265
参考文献 270