文章目录
- DES Encryption
- DES Decryption
- Example
- The Avalanche Effect
- The Strength of DES
- The Use of 56-Bit Keys
- The Nature of the DES Algorithm
- References
在 2001 年引入 AEC(Advanced Encryption Standard)之前,最为普遍使用的加密机制就是 DES(Data Encryption Standard)。DES 使用的就是我们在《对称加密算法(二)(分组密码,Feistel Cipher)》中所介绍的费斯妥密码结构(Feistel cipher),其中,输入数据会被分组为 64 比特大小的块且密钥长度为 56 比特。
DES Encryption
DES 的加密过程如下图所示:
虽然算法的输入是一个 64 比特的密钥,但实际上我们只会使用到 56 比特,剩下的 8 比特可以是奇偶校验位或者随便设置成啥都行。
首先,64 比特的明文输入会经过一个初始置换(Initial permutation
)来将比特位置打乱。这个初始置换的规则如下表所示:
即输入的第 58 位换到第一位,第 50 位换到第 2 位……依此类推,最后一位是原来的第 7 位。
接下来就是 16 轮的运算,会包含位置换(permutation)以及替换(substitution)等一系列操作。最后一轮(16)的输出首先会经过一个 32-bit swap
来将其左半边的 32 比特和右半边的 32 比特互换。互换之后的输出经过初始排列(initial permutation
)的逆函数,就得到了最终的 64 比特输出密文。
再来看图中的右半边部分。最初,密钥被传递到一个置换函数(permuted choice 1
)中。然后,对于 16 轮中的每一轮,会产生一个子密钥(
K
i
K_i
Ki),它由一个左循环移位(Left circular shift
)和一个置换(permuted choice i
)的组合产生。每一轮的置换函数都是相同的,但由于我们不断的在进行循环移位,所以会产生不同的子密钥。
DES Decryption
和费斯妥密码完全一样,DES 的解密过程和加密过程算法相同,除了子密钥的使用顺序颠倒了。且 Inverse initial permutation
和 Initial permutation
的顺序也要颠倒一下。
Example
我们下面通过一个具体例子来说明 DES 的算法流程。
我们的明文、密钥和密文如下(16 进制形式):
加密的具体过程如下图所示。其中第一行表示经过初始置换(Initial permutation
)后的明文的左右半边部分。剩下的 16 行就是 16 轮各自的输出结果以及该轮使用的 48 比特子密钥。从表中我们不难看出下面的关系:
L
i
=
R
i
−
1
L_i=R_{i-1}
Li=Ri−1
The Avalanche Effect
雪崩效应(avalanche effect),指加密算法(尤其是块密码和加密散列函数)的一种理想属性。雪崩效应是指当输入发生最微小的改变(例如,反转一个二进制位)时,也会导致输出的不可区分性改变(密文可以产生巨大变化)。
百度百科
我们假设明文的第四个比特改变,对应的 16 进制形式变为 12468aceeca86420
。下图中,第二列为原来的每轮输出以及改变明文后的每轮输出的对比,第三列帮我们统计了改变的比特数量,可以看到,仅仅 3 轮过后,就有 18 比特发生了变换。最终的密文会产生 32 比特的变化。
同理,当密钥的第 4 比特改变时,密钥变为 1f1571c947d9e859
,每轮的比特变化数量如下:
最终也会有将近一半的比特数量发生改变。
The Strength of DES
The Use of 56-Bit Keys
56 比特的密钥意味着我们会有 2 56 2^{56} 256 个可能的密钥,即大约 7.2 × 1 0 16 7.2\times 10^{16} 7.2×1016 个。因此暴力破解法似乎是很难进行解密了。
假设平均需要搜索一半的密钥空间,那么一台机器每微秒进行一次 DES 加密,就需要超过一千年的时间来破解密码。
然而,每微秒进行一次加密的假设过于保守。 早在 1977 年,Diffie 和 Hellman 就推测,以当时现有的技术可以建立一个拥有 100 万个加密设备的并行机器,每个设备可以每微秒进行一次加密。这将使平均搜索时间降至约 10 小时。他们估计,以 1977 年的美元计算,成本约为 2000 万美元。
以目前的技术,甚至没有必要使用特殊的、专门的硬件。相反,商业的、现成的(非特别定制)处理器的速度就可以威胁到 DES 的安全性。希捷科技公司(Seagate Technology)最近的一篇论文表明,对于今天的多核计算机来说,每秒 10 亿( 1 0 9 10^9 109)次的加密是完全可行的。且以当代超级计算机技术,甚至可以达到每秒 1 0 13 10^{13} 1013 次的加密率。下图展示了使用这些方法时暴力破解所需要的时间:
可以看出,一台个人电脑可以在一年左右的时间内破解 DES;如果多台个人电脑并行工作,时间会大大缩短。而今天的超级计算机应该能够在大约一个小时内找到一个密钥。128 位或更大的密钥大小实际上是无法通过简单的暴力方法来破解的。表中提到的 AES 我们也会在后面的文章中进行介绍。
The Nature of the DES Algorithm
我们还需考虑的问题是,密码分析是否能通过 DES 的一些性质来做出破解。
人们关注的焦点是每个迭代中使用的八个替换表(substitution tables),即所谓的 S-boxes。
S 盒 (Substitution-box) 是对称密钥算法执行置换计算的基本结构。S 盒用在分组密码算法中,是唯一的非线性结构,其 S 盒的指标的好坏直接决定了密码算法的好坏。
百度百科
由于这些 S 盒的设计标准,甚至整个算法的设计标准都没有公开,人们怀疑对于 S 盒的弱点了解的攻击者可能通过密码分析破译 DES。但目前为止,并没有人发现 S 盒的致命弱点。
References
Cryptography and Network Security: Principles and Practice, 7th Edition, ISBN 978-0-13-444428-4, by William Stallings, published by Pearson Education.