第1章 绪论 1
1.1 信息安全与密码技术 1
1.1.1 信息安全简述 1
1.1.2 密码技术简述 2
1.1.3 信息安全与密码技术的关系 2
1.2 密码技术发展简介 2
1.2.1 古代密码 2
1.2.2 近代密码 3
1.2.3 现代密码 3
1.3 密码工程学的基本概念 4
1.3.1 密码工程学的主要任务 4
1.3.2 密码系统的概念 4
1.3.3 对密码系统的攻击 4
1.3.4 密码系统的安全性 5
1.3.5 密码体制的分类 6
1.3.6 对称与非对称密码体制的主要特点 7
习题1 8
第2章 密码工程学的基础技术 10
2.1 密码工程学的VC基础 10
2.1.1 简述 10
2.1.2 密码算法的C/C++实现 10
2.1.3 C++程序开发过程 13
2.1.4 实例 14
2.2 密码算法的硬件实现技术 17
2.2.1 Verilog HDL 17
2.2.2 仿真软件ModelSim 24
习题2 29
第3章 分组密码体制 30
3.1 分组密码的设计原则与评估 30
3.1.1 分组密码的设计原则 30
3.1.2 分组密码评估 30
3.2 分组密码的设计方法 31
3.2.1 Feistel结构 31
3.2.2 SPN结构 31
3.2.3 Lai-Massey结构 31
3.3 数据加密标准 32
3.3.1 DES概述 32
3.3.2 DES的设计准则 35
3.3.3 DES的加密原理 36
3.3.4 DES的加密算法程序实现 38
3.4 高级加密标准 39
3.4.1 算法的总体设计思想 39
3.4.2 算法基本运算 39
3.4.3 算法变换 42
3.4.4 AES解密 43
3.4.5 密钥扩展算法 44
3.4.6 算法实例 46
3.5 分组密码工作模式 46
3.5.1 电子密码本模式 46
3.5.2 密码分组链接模式 47
3.5.3 密码反馈模式 48
3.5.4 输出反馈模式 49
3.5.5 其他模式 50
习题3 52
第4章 公钥密码体制 53
4.1 概述 53
4.1.1 公钥密码体制提出的背景 53
4.1.2 公钥密码体制的基本思想 54
4.1.3 公钥密码的应用 54
4.2 公钥密码的数学基础 55
4.2.1 素数和互素数 55
4.2.2 模运算 55
4.2.3 费马定理和欧拉定理 56
4.2.4 素性检验 56
4.2.5 欧几里得算法 57
4.2.6 中国剩余定理 57
4.2.7 离散对数 58
4.2.8 平方剩余 59
4.2.9 群论 59
4.2.10 有限域 60
4.3 RSA公钥密码体制 60
4.3.1 RSA算法描述 60
4.3.2 RSA的实现 61
4.3.3 RSA算法的程序实现 63
4.3.4 RSA的安全性 63
4.3.5 对RSA的攻击 64
4.4 ElGamal公钥密码体制 65
4.4.1 ElGamal密码体制描述 65
4.4.2 ElGamal算法程序实现 66
4.5 椭圆曲线密码体制 67
4.5.1 概述 67
4.5.2 椭圆曲线的概念与运算 68
4.5.3 椭圆曲线密码的编程实现 70
习题4 70
第5章 序列密码 72
5.1 序列密码的基本概念 72
5.1.1 同步序列密码 72
5.1.2 自同步序列密码 73
5.2 线性反馈移位寄存器 73
5.3 基于LFSR的序列密码 75
5.3.1 基于LFSR的序列密码密钥流生成器 75
5.3.2 基于LFSR的序列密码体制 77
5.4 序列密码算法RC4 80
习题5 81
第6章 Hash函数与消息鉴别 82
6.1 Hash函数的概念 82
6.1.1 Hash函数的性质 82
6.1.2 Hash函数的应用 82
6.2 Hash函数的构造与设计 84
6.2.1 安全Hash函数的结构 84
6.2.2 Hash函数的设计方法 84
6.3 安全散列算法SHA 86
6.3.1 SHA-1 86
6.3.2 其他SHA算法 90
6.4 对散列函数的攻击 95
6.4.1 生日悖论 95
6.4.2 生日攻击 96
6.5 消息鉴别 97
6.5.1 基于消息加密的鉴别 97
6.5.2 基于Hash函数的消息鉴别 98
6.5.3 HMAC 100
习题6 101
第7章 数字签名技术 103
7.1 数字签名概述 103
7.1.1 数字签名的特性 103
7.1.2 数字签名的要求 104
7.1.3 数字签名的执行方式 105
7.1.4 数字签名的分类 105
7.2 基于公钥密码体制的典型数字签名方案 105
7.2.1 RSA数字签名方案及编程实现 105
7.2.2 ElGamal数字签名方案 108
7.2.3 数字签名标准及编程实现 110
7.2.4 基于椭圆曲线密码的数字签名算法 111
7.3 特殊数字签名方案 113
7.3.1 收方不可否认数字签名 113
7.3.2 盲签名 114
7.3.3 门限签名 115
习题7 116
第8章 轻量级分组密码 117
8.1 轻量级密码算法简介 117
8.1.1 轻量级分组密码算法的产生 117
8.1.2 轻量级分组密码算法的发展历程 117
8.1.3 轻量级分组密码算法的设计原则与评估 117
8.2 典型轻量级密码算法的优化实现方法 119
8.2.1 PRESENT密码算法 121
8.2.2 Piccolo密码算法 128
8.3 新轻量级分组密码算法Magpie 138
8.3.1 Magpie技术背景 138
8.3.2 Magpie算法描述 138
习题8 146
第9章 密码算法的FPGA实现 147
9.1 AES密码算法的Verilog HDL实现 147
9.1.1 字节 替换模块 147
9.1.2 列混合模块 148
9.1.3 密钥扩展模块 149
9.1.4 AES算法的主模块 150
9.1.5 S盒变换模块与tab模块 151
9.2 AES密码算法的FPGA实现 152
9.2.1 AES的主要优化 152
9.2.2 实验分析 153
9.2.3 AES算法的FPGA实现 154
9.2.4 AES算法优化效果分析 161
9.3 DES密码算法的Verilog HDL实现 161
9.3.1 初始置换IP及逆初始置换IP-1模块 162
9.3.2 轮函数F模块 163
9.3.3 密钥扩展模块设计 164
9.3.4 主模块 165
9.4 DES密码算法的FPGA实现 165
9.4.1 实验分析 165
9.4.2 DES优化实现 165
9.4.3 DES算法的EDK操作流程 166
9.4.4 优化效果分析 166
习题9 167
第10章 密码芯片的主要攻击与防御技术 168
10.1 简述 168
10.2 差分攻击与防御技术 169
10.2.1 差分攻击原理 169
10.2.2 DES差分分析 172
10.2.3 差分攻击防御技术 174
10.2.4 差分密码的分析推广 175
10.3 代数攻击 176
10.3.1 解方程法 176
10.3.2 MQ问题转化为SAT问题的求解 179
10.3.3 对AES单轮代数的攻击 180
10.4 故障攻击与防御技术 182
10.4.1 故障攻击模型研究 182
10.4.2 故障攻击技术 183
10.4.3 故障攻击防御技术 188
10.5 功耗攻击与防御技术 188
10.5.1 功耗攻击模型研究 188
10.5.2 功耗攻击技术 189
10.5.3 功耗攻击防御技术 192
10.5.4 实验方法 192
10.5.5 分析与讨论 193
10.6 一种SMS4加密算法的差分功耗攻击 194
10.6.1 SMS4加密算法简介 194
10.6.2 SMS4加密算法的功耗攻击模型 195
10.6.3 SMS4加密算法的差分功耗攻击点 196
10.6.4 SMS4加密算法的差分功耗攻击实验 197
10.6.5 SMS4差分功耗攻击仿真平台设计 197
10.7 一种防御高阶功耗攻击的SMS4掩码方法 198
10.7.1 抗高阶功耗攻击SMS4算法 198
10.7.2 抗高阶功耗攻击随机掩码 SMS4算法 198
10.7.3 伪随机固定值掩码SMS4算法 200
10.7.4 实验结果与分析 202
习题10 202
附录A密码工程学实验 204
A1实验一DES程序实现 204
A2实验二AES程序实现 208
A3实验三RSA程序实现 214
A4实验四ECC程序实现 217
A5实验五PRESENT程序实现 219
A6实验六Piccolo程序实现 223
附录B主要习题参考答案 231
参考文献 239