第1章 绪论 1
1.1 通信安全 1
1.2 保密通信系统 2
1.2.1 香农保密通信系统 2
1.2.2 加密系统基本原理 3
1.2.3 加密体制 4
1.3 现场可编程门阵列 5
1.4 VHDL编程 6
1.5 Quartus Ⅱ仿真软件 8
1.6 DSPBuilder的设计 10
第2章 分组密码DES 14
2.1 DES算法描述 14
2.2 DES中的初始置换与初始逆置换 16
2.3 密码函数 16
2.4 轮密钥的生成过程 19
第3章 基于FPGA的分组密码AES实现 22
3.1 AES加密算法 22
3.1.1 AES算法的数学知识 22
3.1.2 AES算法描述 24
3.1.3 AES算法一轮迭代 29
3.2 AES算法的FPGA实现 30
3.2.1 开发环境 30
3.2.2 整体结构设计 30
3.2.3 系统分支模块设计 31
3.2.4 AES加密系统的片上测试 39
第4章 基于FPGA的RSA公钥密码实现 47
4.1 RSA算法数论知识 47
4.1.1 模运算的定义 47
4.1.2 欧几里得算法 48
4.1.3 扩展欧几里得算法 49
4.1.4 模幂算法 50
4.1.5 模乘算法 51
4.1.6 公开密钥算法的密钥交换原理 51
4.2 RSA加解密算法 52
4.2.1 RSA加解密算法原理 52
4.2.2 基于Matlab编程实现RSA加密算法 54
4.2.3 RSA算法举例及其仿真 56
4.3 基于FPGA硬件实现RSA算法设计 59
4.3.1 实现RSA公钥算法的顶层设计 59
4.3.2 实现公钥e的互素判断模块设计 61
4.3.3 实现私钥d的模块设计 62
4.3.4 求模幂算法模块设计 65
第5章 基于FPGA的椭圆曲线加密算法实现 71
5.1 椭圆曲线加密算法理论 71
5.1.1 椭圆曲线相关理论 71
5.1.2 椭圆曲线群的运算法则 72
5.2 椭圆曲线加解密原理 73
5.2.1 椭圆曲线离散对数问题 73
5.2.2 系统建立和密钥生成 73
5.2.3 椭圆曲线密码体制加解密过程 74
5.2.4 椭圆曲线相关参数 74
5.3 密钥交换协议 75
5.3.1 Diffie-Hellman密钥交换协议 75
5.3.2 ECDH密钥交换协议 76
5.4 椭圆曲线加密有限域运算模块设计 77
5.4.1 有限域加法模块 77
5.4.2 有限域乘法模块 79
5.4.3 有限域平方模块 81
5.4.4 有限域求逆模块 82
5.4.5 有限域运算模块的验证 84
5.5 点加和点倍单元设计 86
5.6 点乘单元设计 90
第6章 基于FPGA的序列密码实现 95
6.1 序列密码体制 95
6.1.1 序列密码加密原理 95
6.1.2 序列密码分类 96
6.2 序列密码的性质 97
6.2.1 序列的周期性 97
6.2.2 序列的随机特性 98
6.2.3 序列的线性复杂度 100
6.2.4 对密钥序列的要求 100
6.3 反馈移位寄存器 101
6.3.1 线性移位寄存器结构 101
6.3.2 线性反馈移位寄存器的特征多项式 102
6.3.3 序列密码的破译 106
6.3.4 非线性序列密码 109
6.4 A5/1码 110
6.4.1 A5/1算法原理 110
6.4.2 A5/1算法的硬件实现 111
6.4.3 A5/1模块设计 111
6.5 其他几种序列密码 117
6.5.1 E0码 117
6.5.2 W7码 120
6.5.3 Helix码 120
6.5.4 几种序列密码实现结果比较 122
6.6 序列密码安全分析方法 123
6.6.1 Kerckhoff假设与密码系统的安全性 123
6.6.2 攻击密码的方法 124
第7章 混沌序列密码 127
7.1 混沌基本理论 127
7.1.1 混沌的定义 128
7.1.2 混沌运动的特征 128
7.1.3 混沌的分析识别方法 129
7.1.4 相关混沌特性分析与计算 131
7.2 典型的混沌系统 141
7.2.1 离散混沌系统 141
7.2.2 连续混沌系统 144
7.3 数字混沌模块设计 150
7.3.1 数字混沌模块设计原理 150
7.3.2 Logistic数字混沌电路设计 151
7.3.3 DSPBuilder中Altbus模块 153
7.4 数字混沌特性中的分岔现象 155
7.5 数字混沌密钥序列发生器的周期扩展方法 159
7.5.1 周期扩展理论方法分析 159
7.5.2 Logistic数字混沌周期扩展电路实现 160
7.5.3 Logistic数字混沌序列测试 163
7.6 数字混沌序列周期测试的新方法 165
第8章 纠错卷积编码的DSP实现 168
8.1 卷积编码概述 168
8.2 卷积码结构特性及维特比译码 169
8.2.1 卷积码的状态图和网格描述 169
8.2.2 卷积码的传递函数 170
8.2.3 维特比算法 172
8.3 卷积码的Matlab仿真实现 174
8.3.1 (2,1,7)卷积码编码器 174
8.3.2 (2,1,7)编码器的Matlab仿真 175
8.3.3 维特比译码原理分析与Matlab仿真 176
8.3.4 基于Matlab的(2,1,7)卷积码性能分析 176
8.3.5 DSP实现的(2,1,7)卷积码性能仿真 179
8.4 卷积码的硬件平台实现 180
8.4.1 卷积码编码的DSP实现 180
8.4.2 维特比译码的DSP实现 181
8.4.3 卷积码的纠错能力验证 182
第9章 调制与解调 184
9.1 调制与解调的基本原理 184
9.1.1 BPSK调制的基本原理 184
9.1.2 BPSK解调的基本原理 185
9.1.3 载波同步的概念 185
9.1.4 几种常见的载波同步算法 186
9.2 载波同步系统的设计 190
9.2.1 系统的总体设计 190
9.2.2 载波同步环路主要模块的设计 191
9.3 调制解调的Matlab仿真实现 198
9.3.1 发送部分的Matlab仿真 198
9.3.2 接收部分的Matlab仿真 199
9.4 调制解调的FPGA实现 207
9.4.1 数字发射机的FPGA实现 207
9.4.2 数字接收机的FPGA实现 210
第10章 数据传输加密系统 215
10.1 数据传输加密系统总体构思 215
10.2 数据传输加密卡硬件电路设计 217
10.2.1 电平转换电路设计 218
10.2.2 配置电路设计 219
10.2.3 时钟电路设计 219
10.2.4 扩展I/O口电路设计 220
10.2.5 电源电路 220
10.3 数据传输加密系统模块设计 224
10.3.1 异步串行接收模块 226
10.3.2 异步串行发送模块 233
10.3.3 波特率发生器模块 235
10.3.4 加密模块 237
10.3.5 多路选择模块 237
10.3.6 密码发生模块 238
10.3.7 主控制器模块 246
10.4 数据传输加密系统测试 251
第11章 无线数据传输加密系统 254
11.1 无线数据传输加密系统的总体构架 254
11.2 无线数据传输加密系统的硬件电路设计 255
11.2.1 下载电路设计 256
11.2.2 键盘输入电路设计 256
11.2.3 串口通信模块设计 258
11.2.4 显示电路设计 258
11.3 无线数据传输加密系统的模块设计 259
11.3.1 程序设计原理 260
11.3.2 波特率发生器模块 261
11.3.3 发送端PS2键盘输入模块 261
11.3.4 12864液晶显示模块 262
11.3.5 主控制CPU模块 263
11.3.6 混沌密钥发生模块 264
11.3.7 缓冲模块 267
11.3.8 异步串行发送模块 267
11.3.9 异步串行接收模块 268
11.4 无线混沌加密通信系统测试 270
11.4.1 发送接收数据测试 271
11.4.2 正确解密模式 271
11.4.3 错误解密模式 271
第12章 网络加密卡的硬件设计 273
12.1 网卡的功能、结构及性能指标 273
12.1.1 网卡的功能流程 273
12.1.2 DM9000A的主要性能 274
12.1.3 DM9000A的内部结构及工作原理 275
12.1.4 网络加密卡的总体性能指标 276
12.2 网络数据加密卡FPGA选型 277
12.3 网络数据加密卡硬件电路设计 278
12.3.1 总体设计 278
12.3.2 接口设计 279
12.3.3 模块设计 282
12.3.4 电路测试 285
第13章 网络加密卡PCI设备驱动开发 287
13.1 WDM设备驱动开发基础 287
13.1.1 网络加密卡硬件框图 287
13.1.2 Windows NT内部结构 288
13.1.3 开发Windows内核驱动的基础知识 289
13.1.4 DriverStudio驱动开发环境搭建 293
13.2 DriverEntry、AddDevice和StartDevice例程 293
13.2.1 DriverEntry驱动入口 293
13.2.2 AddDevice创建设备 296
13.2.3 StartDevice启动设备 297
13.3 DeviceControl设备I/O控制 298
13.3.1 IOCTL DM9000 EVENT传递事件 299
13.3.2 IOCTL DM9000 INIT初始化芯片 299
13.3.3 IOCTL DM9000 PASSWORD初始化密钥 301
13.4 StartIo、SerialRead和SerialWrite 301
13.4.1 StartIo串行处理IRP 301
13.4.2 SerialRead串行读 302
13.4.3 SerialWrite串行写 302
13.5 ISR和DPC 303
13.5.1 ISR中断服务例程 303
13.5.2 DPC延迟过程调用例程 304
13.6 内核调试和测试 305
13.6.1 驱动程序安装 305
13.6.2 内核调试工具使用 307
13.6.3 WinDbg串口调试 310
13.6.4 驱动程序测试 312
第14章 网络加密卡动态链接库开发 314
14.1 动态链接库技术 314
14.1.1 动态链接库的优点 314
14.1.2 VC动态链接库的开发 315
14.2 网络加密卡TCP/IP协议栈接口函数 315
14.2.1 以太网数据结构 315
14.2.2 ARP地址解析协议 318
14.2.3 16位CRC校验和 319
14.2.4 UDP类型的以太网帧封包 320
14.3 网络加密卡调用驱动程序接口函数 322
14.3.1 GUID打开设备 322
14.3.2 应用程序和驱动程序的通信方式 323
14.3.3 用于应用程序和驱动程序通信的函数 324
14.4 网络加密卡动态库的导出接口函数 325
14.4.1 接口的定义 325
14.4.2 接收回调函数的实现 327
14.5 网络加密卡动态链接库调试和测试 328
14.5.1 动态链接库调试 328
14.5.2 动态链接库测试 328
第15章 视频加密网络传输系统 330
15.1 视频加密网络传输系统设计 330
15.2 开发环境 330
15.2.1 设备驱动程序开发环境 331
15.2.2 应用程序开发环境 332
15.2.3 硬件开发环境 333
15.3 图像采集卡软件二次开发 335
15.3.1 图像采集卡的初始化API 336
15.3.2 图像采集卡的本地预览API 337
15.3.3 图像采集卡的编码参数配置API 338
15.3.4 图像采集卡的数据捕获API 340
15.4 H.2 64播放器二次开发 341
15.4.1 播放器开发流程 342
15.4.2 播放器初始化API 342
15.4.3 播放器设置API 343
15.4.4 播放器解码API 343
15.5 视频加密网络传输系统测试 344
15.5.1 视频加密网络传输系统的客户端软件开发 344
15.5.2 视频加密传输客户端软件的工作线程 345
15.5.3 视频加密网络传输系统的服务器软件开发 346
15.5.4 FTP网络存储 346
15.5.5 视频加密传输服务器软件的工作线程 347
15.5.6 视频加密网络传输系统测试 347
参考文献 351
名词索引 363