本书以系统、全面的视角,深入剖析了现代密码软件实现和密钥安全的相关知识,主要内容包括:密码算法和密钥、计算机存储单元和操作系统内存管理、典型的密码软件实现方案、密码软件实现面临的攻击、基于寄存器的密钥安全方案、基于Cache的密钥安全方案、基于处理器扩展特性的密钥安全方案以及基于门限密码算法的密钥安全方案。书中内容兼具理论深度与实践指导性,不仅适合作为高校网络空间安全专业高年级本科生或研究生的教材,也可供从事密码软件研发的技术人员参考。
本书特色
方向前沿,所涉及的密钥安全问题是近年来网络空间安全研究的热门方向,结合计算机体系结构和密码技术的新发展,探讨了密码软件实现的新机遇和新挑战。
形式新颖,既不是单纯从密码学角度讲解密码算法理论,也不是单纯从密码工程角度讨论密码算法实现,而是横跨密码学和计算机两个学科,深入探讨了多种思路新颖、实用性强的密码软件实现密钥保护方案。
内容全面,从底层的密码算法、计算机存储单元、操作系统内存管理谈起,既讨论了传统的密码软件实现,也讨论了多种前沿的密钥安全方案,涉及密码软件实现的基础知识、主流实现和前沿研究,可以帮助读者建立密码软件实现相关的知识体系。
前 言
密码学是一门古老而又年轻的学科。几千年来,密码技术主要用于军事和外交领域的重要保密通信。香农于1949年发表的论文《保密系统的通信理论》为密码技术建立了完善的理论基础,之后,密码学逐渐成为一门严谨的学科。如今的密码学应用已不再局限于军事和外交领域,密码技术已经成为实现网络空间安全的关键核心技术,在维护国家安全和保障国计民生等方面都发挥着重要的基础性作用。
在传统的应用场景下,密码算法大多实现为专用的硬件形态,例如,密码机、密码卡和密码芯片等,利用隔离的密码计算环境和专用的密钥存储介质保护密码算法中最关键的数据密钥。近年来,随着密码技术的广泛应用,密码技术与计算机技术日益融合,密码软件实现蓬勃发展。软件形态的密码实现由于具有开发便捷、使用灵活、部署快速和维护方便的特点,已经在网络空间中得到广泛部署和应用。
在现有信息系统中,软件已经成为密码实现的主流形态。密码软件实现也是持续扩大密码学应用范围的推动力量之一。然而,由于密码软件实现依赖于计算机操作系统、没有独立的密钥存储空间和密码计算环境,在计算机系统面临各种漏洞和攻击的情况下,保证密钥安全是密码软件实现的巨大技术挑战。按照密码学原理,密码技术发挥安全作用的前提是密钥安全。密钥一旦泄露,攻击者就可以随意访问密钥,基于密码技术的安全服务就形同虚设。
相比于传统的密码硬件实现,密码软件实现的密钥安全技术风险没有得到应有的关注。在现有的密码软件实现中,密钥的安全保护措施与其他数据一样,并没有得到应有的专门处理。密码软件与其他计算机软件共享运行环境,面临着同样的敏感数据泄露威胁,即计算机系统的各种漏洞和攻击同样会影响密码软件,有可能导致密钥泄露,使攻击者非授权地读取密钥。如何保证密码软件实现的密钥安全,已经成为亟待解决而又极具挑战的重要问题。2014年OpenSSL心脏滴血漏洞事件的大规模爆发为我们敲响了警钟。
本书围绕密码软件实现的密钥安全这条主线,系统地介绍了多种密码软件实现的密钥安全方案的基本原理和实际应用,通过密码软件实现面临的攻击引出密钥安全方案的设计和实现。全书共有8章,内容如下:第1章主要介绍密码算法以及密钥相关的基本知识和概念,帮助读者对密码算法实现和密钥安全建立初步的认识;第2章简要介绍密码软件实现所依赖的运行环境,包括计算机体系架构和操作系统的相关知识;第3章和第4章分别介绍常规密码软件实现及其所面临的各种攻击风险;第5~8章是本书的主体部分,分别详细介绍基于寄存器、基于Cache、基于处理器扩展特性、基于门限密码算法等的新型密码软件实现密钥安全方案。
本书可作为高等院校网络空间安全和密码学等相关专业学生的教材,也可作为网络空间安全和密码行业技术人员的参考书。
本书部分密钥安全方案的源代码已开放在 />
林璟锵,博士,现任中国科学院信息工程研究所信息安全国家重点实验室副主任,教授,博士生导师。主要研究方向是密码工程和密码应用。在国际顶级会议和期刊上发表过多篇论文,主持或参与了多项密码学研究相关的国家自然科学基金、国家973计划,国家863计划,国家科技支撑计划项目。获得2016年中国密码学会密码创新二等奖,2015年党政密码科技进步一等奖,2005年国家科技进步二等奖,2004年北京市科技进步二等奖。
推荐序
前言
第1章 密码算法和密钥1
1.1 密码算法1
1.1.1 密码算法和数据安全2
1.1.2 密码杂凑算法3
1.1.3 对称密码算法6
1.1.4 公钥密码算法10
1.2 密钥管理和密钥安全33
1.2.1 密钥管理33
1.2.2 密钥安全41
1.3 密码算法实现47
1.3.1 密码软件实现48
1.3.2 密码硬件实现49
1.3.3 密码算法软硬件实现对比50
1.4 本章小结51
思考题52
参考文献52
第2章 计算机存储单元和操作系统
内存管理55
2.1 计算机存储单元55
2.1.1 寄存器57
2.1.2 内存63
2.1.3 Cache65
2.2 操作系统内存管理72
2.2.1 内核态和用户态的隔离72
2.2.2 用户态进程隔离73
2.3 本章小结81
思考题82
参考文献82
第3章 典型的密码软件实现方案84
3.1 用户态密码软件实现84
3.1.1 常见的用户态密码库84
3.1.2 现有用户态密码库的
安全防护89
3.2 内核态密码软件实现92
3.2.1 Windows CryptoAPI和
Windows CNG92
3.2.2 Linux Kernel Crypto API96
3.3 虚拟机监控器密码软件实现98
3.3.1 虚拟密码设备方案99
3.3.2 虚拟化环境的虚拟密码设备
管理方案101
3.3.3 虚拟密码设备的使用
控制103
3.4 本章小结105
思考题105
参考文献106
第4章 密码软件实现面临的
攻击威胁107
4.1 软件攻击107
4.1.1 利用操作系统隔离机制
漏洞的攻击107
4.1.2 利用内存数据残余的攻击108
4.1.3 利用密码软件实现自身漏洞的
攻击109
4.2 物理攻击110
4.2.1 冷启动攻击110
4.2.2 DMA攻击111
4.3 间接攻击112
4.3.1 Cache侧信道攻击113
4.3.2 CPU硬件漏洞攻击123
4.4 本章小结128
思考题129
参考文献129
第5章 基于寄存器的密钥
安全方案131
5.1 方案原理131
5.2 攻击假设和安全目标132
5.3 基于寄存器的对称密码算法
实现方案133
5.3.1 方案设计133
5.3.2 系统实现136
5.3.3 结合虚拟机监控器的
实现139
5.3.4 评估分析139
5.4 基于寄存器的公钥密码算法
实现方案140
5.4.1 方案设计140
5.4.2 系统实现143
5.4.3 实现评估152
5.4.4 利用密码算法等价变形的ECC
数字签名密钥安全方案154
5.5 本章小结161
思考题163
参考文献163
第6章 基于Cache的密钥
安全方案165
6.1 方案原理166
6.2 针对公钥密码算法的Copker
方案166
6.2.1 安全假设和安全目标166
6.2.2 方案设计167
6.2.3 系统实现171
6.2.4 实现评估175
6.2.5 用户态实现178
6.3 针对嵌入式设备的Sentry方案179
6.3.1 安全假设和安全目标179
6.3.2 方案设计和系统实现180
6.3.3 实现评估183
6.4 本章小结183
思考题185
参考文献185
第7章 基于处理器扩展特性的
密钥安全方案187
7.1 基于可信执行环境的密钥
安全方案187
7.1.1 可信执行环境简介187
7.1.2 方案原理194
7.1.3 安全假设和安全目标194
7.1.4 密钥安全方案设计和
示例195
7.2 基于事务内存机制的密钥
安全方案202
7.2.1 Intel TSX工作机制203
7.2.2 安全假设和安全目标204
7.2.3 方案设计204
7.2.4 系统实现206
7.2.5 实现评估211
7.2.6 针对抗量子签名算法
Dilithium的方案扩展213
7.3 本章小结215
思考题216
参考文献216
第8章 基于门限密码算法的
密钥安全方案218
8.1 秘密分享218
8.1.1 Shamir秘密分享方案219
8.1.2 基于Shamir秘密分享方案的
扩展计算220
8.2 门限密码算法221
8.2.1 RSA算法门限密码
方案示例222
8.2.2 SM2算法(t,n)门限密码
方案示例223
8.3 基于两方门限密码算法的密钥
安全方案224
8.3.1 方案原理225
8.3.2 安全假设和安全目标225
8.3.3 系统架构和工作流程226
8.3.4 实现评估232
8.4 SM2两方门限签名算法的一般性
框架236
8.4.1 SM2两方门限签名
算法237
8.4.2 用户隐私保护的SM2两方门限
密码算法244
8.5 本章小结248
思考题248
参考文献249
缩略语表250