本书以美国AES计划和欧洲NESSIE计划等推出的著名分组密码算法为背景,系统地介绍分组密码的攻击方法和实例分析,包括差分密码攻击、线性密码攻击、高阶差分密码攻击、截断差分密码攻击、不可能差分密码攻击、积分攻击、插值攻击和相关密钥攻击等主要攻击方法的基本原理及其应用实例。
更多科学出版社服务,请扫码获取。
分组密码算法是许多密码系统的核心要素,是保障信息机密性和完整性的重要技术。分组密码的研究主要围绕分组密码的设计、分析、工作模式、快速实现和检测等方面展开。分组密码的设计与分析是一对既相互对立又相互统一的矛盾体,二者的互动决定了分组密码的发展,分组密码的安全性分析为分组密码的设计提供了源源不断的新鲜思想,而各种深思熟虑的设计又给分组密码的分析提出了严峻的挑战。只有对分组密码分析具有深刻的理解和敏锐的洞察,才有可能设计出安全高效的分组密码。
近年来,随着美国AES计划和欧洲NESSIE计划的实施,针对美国高级加密标准AES和欧洲分组密码标准Camellia,MSITY1以及SHACAL-2等算法的安全性分析已经成为分组密码研究中的热点问题,在SHA-3计划中,可以发现很多基于分组密码组件设计的Hash函数,有些算法甚至直接使用AES算法的组件,之所以基于分组密码设计Hash函数,是因为密码设计者对现有分组密码算法特别是AES算法的安全性有足够的信心,对这些基于分组密码的Hash函数的安全性分析必将促进分组密码的设计与分析理论的发展。因此,掌握分组密码的分析技术对研究分组密码的安全性和Hash函数的安全性至关重要。
考虑到分组密码的攻击方法是密码学领域的难点问题,且大量关于分组密码设计与分析的学术论文散见于密码学与信息安全的国际会议论文集,特别是与密码学密切相关的EUROCRYPT,CRYPTO,ASIACRYPT,FSE,CHES和SAC等国际会议。为便于国内从事分组密码理论与方法研究的研究生和年轻学者对分组密码的攻击方法有一个比较系统和深入的了解,我们试图对国际上最近20年已有的分组密码攻击方法进行梳理,通过对一些具体的分组密码算法的实例分析,介绍分组密码攻击方法的原理与实践。在写作过程中,我们特别注重自身对分组密码攻击方法的理解,书中部分内容包含了作者及其课题组成员近年来在分组密码攻击方面所取得的研究成果,
全书共分10章,第1章给出分组密码的基本概念;第2章介绍8个典型的分组密码算法;第3章介绍差分密码分析的原理与实例分析;第4章介绍线性密码分析的原理与实例分析;第5章介绍高阶差分密码分析的原理与实例分析;第6章介绍截断差分密码分析的原理与实例分析;第7章介绍不可能差分密码分析的原理与实例分析;第8章介绍积分攻击的原理与实例分析;第9章介绍插值攻击的原理与实例分析;第10章介绍相关密钥攻击的原理与实例分析。
目录
序
前言
第1章 分组密码的基本概念 1
1.1 分组密码概述 1
1.2 分组密码的设计原理 2
1.2.1 分组密码的设计原则 3
1.2.2 分组密码的结构 3
1.3 分组密码的分析方法 5
1.3.1 密码分析中常见的假设和原则 5
1.3.2 强力攻击 6
1.3.3 基于数学方法研究算法的安全性 7
1.3.4 结合物理实现方式研究算法的安全性 10
1.3.5 不同使用模式下的算法安全性 10
1.4 本书的内容安排 10
参考文献 11
第2章 典型分组密码算法 14
2.1 数据加密标准DES 14
2.1.1 加密流程 15
2.1.2 解密流程 18
2.1.3 密钥扩展方案 19
2.2 国际数据加密算法IDEA 20
2.2.1 加密流程 21
2.2.2 解密流程 22
2.2.3 密钥扩展方案 25
2.3 高级加密标准AES 25
2.3.1 加密流程 26
2.3.2 解密流程 30
2.3.3 密钥扩展方案 32
2.4 Camellia算法 33
2.4.1 加密流程 34
2.4.2 解密流程 37
2.4.3 密钥扩展方案 38
2.5 ARIA算法 40
2.5.1 加密流程 40
2.5.2 解密流程 44
2.5.3 密钥扩展方案 45
2.6 FOX算法 47
2.6.1 加密流程 47
2.6.2 解密流程 50
2.6.3 密钥扩展方案 51
2.7 SMS4算法 54
2.7.1 加密流程 54
2.7.2 解密流程 56
2.7.3 密钥扩展方案 56
2.8 CLEFIA算法 57
2.8.1 加密流程 57
2.8.2 解密流程 59
2.8.3 密钥扩展方案 60
2.9 进一步阅读建议 61
参考文献 62
第3章 差分密码分析的原理与实例分析 64
3.1 差分密码分析的基本原理 64
3.2 DES算法的差分密码分析 72
3.2.1 S盒的差分分布表 72
3.2.2 DES算法的差分分析 77
3.3 Camellia算法的差分密码分析 84
3.4 SMS4算法的差分密码分析 87
3.5 进一步阅读建议 88
参考文献 89
第4章 线性密码分析的原理与实例分析 93
4.1 线性密码分析的基本原理 93
4.2 DES算法的线性密码分析 98
4.2.1 S盒的线性逼近表 99
4.2.2 DES算法的线性分析 101
4.3 Camellia算法的线性密码分析 110
4.4 SMS4算法的线性密码分析 113
4.5 进一步阅读建议 114
参考文献 116
第5章 高阶差分密码分析的原理与实例分析 119
5.1 高阶差分密码分析的基本原理 119
5.1.1 基本概念 119
5.1.2 高阶差分密码分析的一般流程 123
5.1.3 对Feistel结构算法的高阶差分密码分析 123
5.2 KN算法的高阶差分密码分析 126
5.2.1 KN算法简介 126
5.2.2 对6轮KN算法的高阶差分密码分析 127
5.3 Camellia算法的高阶差分密码分析 128
5.3.1 对6轮Camellia算法的基本攻击 128
5.3.2 对7轮Camellia算法的高阶差分密码分析 130
5.4 进一步阅读建议 131
参考文献 132
第6章 截断差分密码分析的原理与实例分析 134
6.1 截断差分密码分析的基本原理 134
6.1.1 基本概念 134
6.1.2 截断差分分析的一般流程 135
6.2 Camellia算法的截断差分密码分析 137
6.2.1 Camellia算法的5轮截断差分 137
6.2.2 对6轮Camellia算法的截断差分密码分析 139
6.3 ARIA算法的截断差分密码分析 140
6.3.1 ARIA算法7轮截断差分 140
6.3.2 对7轮ARIA算法的截断差分密码攻击 141
6.4 进一步阅读建议 142
参考文献 143
第7章 不可能差分密码分析的原理与实例分析 144
7.1 不可能差分密码分析的基本原理 144
7.1.1 基本概念 144
7.1.2 不可能差分密码分析的基本过程 145
7.2 寻找不可能差分的一般方法 148
7.2.1 DEAL算法5轮不可能差分 148
7.2.2 Zodiac算法16轮不可能差分 149
7.2.3 FOX算法4轮不可能差分 151
7.2.4 ARIA算法4轮不可能差分 152
7.2.5 n-Cell结构n2+n-2轮不可能差分 157
7.3 AES算法的不可能差分密码分析 158
7.3.1 AES算法4轮不可能差分 158
7.3.2 对6轮AES算法的不可能差分密码分析 159
7.4 Camellia算法的不可能差分密码分析 161
7.4.1 Camellia算法8轮不可能差分 161
7.4.2 对12轮Camellia算法的不可能差分密码分析 163
7.5 CLEFIA算法的不可能差分密码分析 166
7.5.1 CLEFIA算法9轮不可能差分 166
7.5.2 对12轮CLEFIA算法的不可能差分密码分析 169
7.6 进一步阅读建议 170
参考文献 172
第8章 积分攻击的原理与实例分析 175
8.1 积分攻击的基本原理 176
8.1.1 基本概念 176
8.1.2 积分攻击的基本过程 179
8.2 寻找积分区分器的一般方法 180
8.2.1 Rijndael-256算法3轮积分区分器(I) 180
8.2.2 SMS4算法8积分区分器 181
8.2.3 Zodiac算法9轮积分区分器 183
8.2.4 n-Cell结构n2轮积分区分器 183
8.2.5 Rijndael-256算法3轮积分区分器(II) 185
8.2.6 ARIA算法3轮积分区分器 186
8.3 AES算法的积分攻击 189
8.3.1 AES算法3轮积分区分器 189
8.3.2 对4轮AES算法的积分攻击 191
8.3.3 对5轮AES算法的积分攻击 193
8.4 Camellia算法的积分攻击 196
8.4.1 Feistel密码的等价结构 196
8.4.2 对5轮Camellia算法的积分攻击 199
8.4.3 对6轮Camellia算法基于等价结构的积分攻击 200
8.5 进一步阅读建议 202
参考文献 204
第9章 插值攻击的原理与实例分析 207
9.1 插值攻击的基本原理 207
9.1.1 基本概念和数学基础 207
9.1.2 插值攻击的步骤 210
9.2 PUR*算法的插值攻击 211
9.2.1 PUR*算法简介 211
9.2.2 对PUR*算法的插值攻击 211
9.2.3 对PUR*算法的改进插值攻击 213
9.3 Rijndael算法的插值攻击 215
9.3.1 简化Rijndael算法介绍 215
9.3.2 有理分式插值攻击 215
9.4 高次积分攻击 218
9.4.1 高次积分 218
9.4.2 对PUR*算法的插值高次积分攻击 219
9.5 进一步阅读建议 220
参考文献 221
第10章 相关密钥攻击的原理与实例分析 223
10.1 相关密钥攻击的基本原理 223
10.2 LOKI算法的相关密钥攻击 223
10.3 AES算法的相关密钥攻击 230
10.4 进一步阅读建议 231
参考文献 232
《分组密码的攻击方法与实例分析》:
1.3.2强力攻击
对任意一个分组密码,都存在如下4种攻击方法:
(1)穷尽密钥搜索,在唯密文攻击下,攻击者利用所有可能的密钥对一个或多个密文进行解密,直至得到有意义的明文;在已知明文攻击或选择明文攻击时,攻击者利用所有可能的密钥对一个已知明文加密,直到加密结果与正确的密文相符合。穷尽密钥搜索理论上可以破译任何分组密码算法,但它的效率是最低的,在实际密码分析中,通常将穷尽密钥搜索与其他分析方法结合使用。
(2)字典攻击。攻击者收集明密文对,并将它们编排成一个“字典”,当看到一个密文时,攻击者检查这个密文是否在字典中,如果在,则攻击者获得该密文对应的明文。
(3)查表攻击。该方法是选择明文攻击,攻击者利用所有可能的密钥对同一个明文加密,将密钥和对应的密文存储起来。当获得该明文及相应密文后,攻击者只需从存储表中找到相对应的密钥即可。
(4)时间空间权衡攻击,这是一种选择明文攻击方法,由Hellmma提出,通过结合使用穷尽密钥搜索攻击和查表攻击,在选择明文攻击中用时间换取空间,因此该方法比穷尽密钥搜索攻击的时间复杂度小,比查表攻击的空间复杂度低,
除了上述4种通用的攻击方法,在对一个具体的分组密码算法进行安全性分析时,根据算法的特点,往往会有其他不同的攻击方法。而比较不同攻击算法的优劣,最主要的指标是数据复杂度、时间复杂度和空间复杂度。数据复杂度是指为了实现一个特定的攻击所需要的数据总和;时间复杂度是指密码分析者为了恢复密钥,对采集到的数据进行分析和处理所消耗的时间;空间复杂度是指为了完成攻击所需要的存储空间。
一般而言,假设分组长度为n,密钥长度为k,则穷尽搜索的数据复杂度、时间复杂度和空间复杂度分别为1,2k和1,字典攻击的数据复杂度、时间复杂度和空间复杂度分别为2n,1和2n,查表攻击的数据复杂度、时间复杂度和空间复杂度分别为2k,1和2k,如果一个攻击方法,当其相应的时间复杂度、数据复杂度或空间复杂度中某一项指标比(1),(2)和(3)对应的指标低时,就称从理论上破译了这个算法,当然,这离现实破译可能还有很大的差距。这里需要注意的是,在很多攻击方法中,人们更倾向于以穷尽搜索的复杂度作为指标来度量一个攻击算法的优劣。
对分组密码算法的安全性分析主要包括以下三个方面:一是基于数学方法研究算法的安全性,二是结合物理实现方式研究算法的安全性,三是研究算法在不同使用模式下的安全性。
……