本书从密码算法的软硬件实现及其优化的角度进行论述,内容包括密码算法实现的基础技术、分组密码原理与实现技术、公钥密码原理与实现技术、序列密码原理与实现技术、Hash函数实现原理与技术、数字签名实现原理与技术。本书也重点论述了适应目前资源约束物联网环境下的轻量级密码算法原理与优化实现技术,包括典型轻量级密码算法优化的实现方法,轻量级密码算法的设计原理与方法,并以作者提出的Magpie轻量级密码算法为例进行设计方法学的介绍,以经典的DES和AES密码算法为例介绍密码算法FPGA的实现方法。最后,论述了密码芯片的主要攻击与防御技术。
信息安全在当代信息社会无比重要,密码是信息安全的基石。社会需要大批的信息安全人才,一本好的密码学教材显得非常重要。
作者多年从事信息安全研究与教学,发现目前特别需要一本既汇聚密码学基础,又能体现密码算法与硬件优化实现,同时又能有最新密码技术的书籍。本书能够让读者阅读之后,快速入门并迅速掌握密码软硬件的实现技术,能够对密码算法安全设计有所思考。
对常见的密码算法原理及其实现技术进行了概括性提高,对目前适合资源约束的新型轻量级分组密码算法进行了优化实现,并以有自主知识产权的Magpie轻量级密码算法为例,结合设计方法学论述了轻量级密码算法的设计理念。密码算法及其芯片仍然是攻击者的重点攻击对象,论述了主要攻击技术及其防御方法。有些内容是作者的最新研究成果,还有一些内容是作者博士期间的研究工作。
本书的主要特点是: 以初学者的角度进行论述、强调基础、注重实践操作能力的培养,力求使学习者在掌握密码算法基本原理的基础上,能够对密码设计与优化方法有所掌握,特别是对硬件语言实现及密码算法优化有较深的理解,对目前密码算法的主要攻击技术及其防御方法有所掌握。
本书主要由李浪教授负责编写与组织统稿,其中李浪负责编写第1~第6章、第8章和第10.1、第10.2、第10.5节,邹祎负责编写第7章与第10.4节,许琼方负责编写第10.3节,王玉奇对目录和内容架构提出了宝贵意见,中南大学郭迎博士对相关章节进行了详细的校对,同时提出了许多建设性的意见。特别值得指出的是,李浪教授负责的嵌入式计算与信息安全研究所的刘波涛、余孝忠、曾婷、杜国权、李配对本书的附录进行了编写,并为全书进行了大量的基础性工作,如对程序源码及其实现都进行了认真的实验与校对。本书的编写得到了清华大学出版社张民老师的大力支持,同时一些基础性原理与内容参考了大量同行的相关著作与教材,在参考文献中也进行了注明,作者在此一并表示感谢。
本书获得了湖南省普通高等学校教学改革研究项目“基于协同创新的地方本科院校计算机专业应用人才培养研究”的资助(NO.2014382)。
尽管作者以最大的努力去编著本书,但由于作者的学识和水平毕竟有限,特别是书中有些内容是作者教学与科研中的原创成果,因此难免有需要商榷之处,诚望读者不吝赐教斧正。
本书制作了配套的电子课件,方便使用本书的老师进行教学使用,课件可从清华大学出版社网站http://www.tup.tsinghua.edu.cn下载,也可联系作者索取。
李浪2014年5月
第1章 绪论
1.1 信息安全与密码技术
1.1.1 信息安全简述
1.1.2 密码技术简述
1.1.3 信息安全与密码技术的关系
1.2 密码技术发展简介
1.2.1 古代密码
1.2.2 近代密码
1.2.3 现代密码
1.3 密码工程学的基本概念
1.3.1 密码工程学的主要任务
1.3.2 密码系统的概念
1.3.3 对密码系统的攻击
1.3.4 密码系统的安全性
1.3.5 密码体制的分类
1.3.6 对称与非对称密码体制的主要特点
习题
第2章 密码工程学的基础技术
2.1 密码工程学的VC基础
2.1.1 简述
2.1.2 密码算法的C/C++实现
2.1.3 C++程序开发过程
2.1.4 实例
2.2 密码算法的硬件实现技术
2.2.1 Verilog HDL
2.2.2 仿真软件ModelSim
第3章 分组密码体制
3.1 分组密码的设计原则与评估
3.1.1 分组密码的设计原则
3.1.2 分组密码评估
3.2 分组密码的设计方法
3.2.1 Feistel结构
3.2.2 SPN结构
3.2.3 Lai-Massey结构
3.3 数据加密标准
3.3.1 DES概述
3.3.2 DES的设计准则
3.3.3 DES的加密原理
3.3.4 DES的加密算法程序实现
3.4 高级加密标准
3.4.1 算法的总体设计思想
3.4.2 算法基本运算
3.4.3 算法变换
3.4.4 AES解密
3.4.5 密钥扩展算法
3.4.6 算法实例
3.5 分组密码工作模式
3.5.1 电子密码本模式
3.5.2 密码分组链接模式
3.5.3 密码反馈模式
3.5.4 输出反馈模式
3.5.5 其他模式
习题
第4章 公钥密码体制
4.1 概述
4.1.1 公钥密码体制提出的背景
4.1.2 公钥密码体制的基本思想
4.1.3 公钥密码的应用
4.2 公钥密码的数学基础
4.2.1 素数和互素数
4.2.2 模运算
4.2.3 费马定理和欧拉定理
4.2.4 素性检验
4.2.5 欧几里得算法
4.2.6 中国剩余定理
4.2.7 离散对数
4.2.8 平方剩余
4.2.9 群论
4.2.10 有限域
4.3 RSA公钥密码体制
4.3.1 RSA算法描述
4.3.2 RSA的实现
4.3.3 RSA算法的程序实现
4.3.4 RSA的安全性
4.3.5 对RSA的攻击
4.4 ElGamal公钥密码体制
4.4.1 ElGamal密码体制描述
4.4.2 ElGamal算法程序实现
4.5 椭圆曲线密码体制
4.5.1 概述
4.5.2 椭圆曲线的概念与运算
4.5.3 椭圆曲线密码的编程实现
习题
第5章 序列密码
5.1 序列密码的基本概念
5.1.1 同步序列密码
5.1.2 自同步序列密码
5.2 线性反馈移位寄存器
5.3 基于LFSR的序列密码
5.3.1 基于LFSR的序列密码密钥流生成器
5.3.2 基于LFSR的序列密码体制
5.4 序列密码算法RC4
习题
第6章 Hash函数与消息鉴别
6.1 Hash函数的概念
6.1.1 Hash函数的性质
6.1.2 Hash函数的应用
6.2 Hash函数的构造与设计
6.2.1 安全Hash函数的结构
6.2.2 Hash函数的设计方法
6.3 安全散列算法SHA
6.3.1 SHA-1
6.3.2 其他SHA算法
6.4 对散列函数的攻击
6.4.1 生日悖论
6.4.2 生日攻击
6.5 消息鉴别
6.5.1 基于消息加密的鉴别
6.5.2 基于Hash函数的消息鉴别
6.5.3 HMAC
习题
第7章 数字签名技术
7.1 数字签名概述
7.1.1 数字签名的特性
7.1.2 数字签名的要求
7.1.3 数字签名的执行方式
7.1.4 数字签名的分类
7.2 基于公钥密码体制的典型数字签名方案
7.2.1 RSA数字签名方案及编程实现
7.2.2 ElGamal数字签名方案
7.2.3 数字签名标准及编程实现
7.2.4 基于椭圆曲线密码的数字签名算法
7.3 特殊数字签名方案
7.3.1 收方不可否认数字签名
7.3.2 盲签名
7.3.3 门限签名
习题
第8章 轻量级分组密码
8.1 轻量级密码算法简介
8.1.1 轻量级分组密码算法的产生
8.1.2 轻量级分组密码算法的发展历程
8.1.3 轻量级分组密码算法的设计原则与评估
8.2 典型轻量级密码算法的优化实现方法
8.2.1 PRESENT密码算法
8.2.2 Piccolo密码算法
8.3 新轻量级分组密码算法Magpie
8.3.1 Magpie技术背景
8.3.2 Magpie算法描述
习题
第9章 密码算法的FPGA实现
9.1 AES密码算法的Verilog HDL实现
9.1.1 字节替换模块
9.1.2 列混合模块
9.1.3 密钥扩展模块
9.1.4 AES算法的主模块
9.1.5 S盒变换模块与tab模块
9.2 AES密码算法的FPGA实现
9.2.1 AES的主要优化
9.2.2 实验分析
9.2.3 AES算法的FPGA实现
9.2.4 AES算法优化效果分析
9.3 DES密码算法的Verilog HDL实现
9.3.1 初始置换IP及逆初始置换IP-1模块
9.3.2 轮函数F模块
9.3.3 密钥扩展模块设计
9.3.4 主模块
9.4 DES密码算法的FPGA实现
9.4.1 实验分析
9.4.2 DES优化实现
9.4.3 DES算法的EDK操作流程
9.4.4 优化效果分析
习题
第10章 密码芯片的主要攻击与防御技术
10.1 简述
10.2 差分攻击与防御技术
10.2.1 差分攻击原理
10.2.2 DES差分分析
10.2.3 差分攻击防御技术
10.2.4 差分密码的分析推广
10.3 代数攻击
10.3.1 解方程法
10.3.2 MQ问题转化为 SAT问题的求解
10.3.3 对AES单轮代数的攻击
10.4 故障攻击与防御技术
10.4.1 故障攻击模型研究
10.4.2 故障攻击技术
10.4.3 故障攻击防御技术
10.5 功耗攻击与防御技术
10.5.1 功耗攻击模型研究
10.5.2 功耗攻击技术
10.5.3 功耗攻击防御技术
10.5.4 实验方法
10.5.5 分析与讨论
10.6 一种SMS4加密算法的差分功耗攻击
10.6.1 SMS4加密算法简介
10.6.2 SMS4加密算法的功耗攻击模型
10.6.3 SMS4加密算法的差分功耗攻击点
10.6.4 SMS4加密算法的差分功耗攻击实验
10.6.5 SMS4差分功耗攻击仿真平台设计
10.7 一种防御高阶功耗攻击的SMS4掩码方法
10.7.1 抗高阶功耗攻击SMS4算法
10.7.2 抗高阶功耗攻击随机掩码SMS4算法
10.7.3 伪随机固定值掩码SMS4算法
10.7.4 实验结果与分析
习题
附录A 密码工程学实验
A1 实验一DES程序实现
A2 实验二AES程序实现
A3 实验三RSA程序实现
A4 实验四ECC程序实现
A5 实验五PRESENT程序实现
A6 实验六Piccolo程序实现
附录B 主要习题参考答案
参考文献