斯坦福大学密码学公开课——Block Ciphers (2)
Data Encryption Standard(DES)
这一章节主要讲解的是DES加密算法。DES是由IBM所提出的,1976年美国国家统计局(NBS)采纳了DES作为联邦标准。后来于1997年被穷举算法所攻破,2000年NIPS采用了AES作为新的标准。
它的核心的想法是利用Feistel Network构建可逆函数。
Feistel Network
值得注意的是Feistel Network的逆函数和本身是一样的结构,因此这个网络也广泛应用在Block Cipher里面。
Luby-Rackoff在85年的时候就证明了只要有三轮Feistel Network结构,便可以构建一个安全的PRP。
下面Dan着重讲解了在之前框架中的F和f函数。
image
image
查找表的样子如下:
image
补充Look-up Table
通过已经列出已经计算好的值,让CPU在计算时可以有参考,避免重复计算,一般适用于复杂的计算过程简化。
在这里Dan告诫我们S-box(出现在)不能是线性的原因在于,如果我们对多个数据分别做DES加密然后异或计算,其结果等价于对多个数据异或处理然后再做DES加密。这样子攻击者就更加容易的找出对应的key值。因此,输出对比于输入来说不应该接近于线性结果。
Exhaustive Search
这里Dan着重讲解了穷举搜索攻击方式,即给定几个输入输出对,我们要找到的key值。
一般而言,两个输入输出对就足够可以支持穷举搜索了。然后,就开始将DES被攻击历史了..从此以后56bit(key)的DES肯定是不安全了。
Dan在这里主要讲解的是用来抵御穷举法攻击的手段:
- 方法一是使用Triple-DES
让 成为一个block cipher
然后定义 为
,其中key-size为168bits(3倍的56bits)。
有同学可能会问,为什么这里的顺序是E,D,E,Dan在这里给出解释是,如果三个k值相等,那么这个就是普通的DES。在某些场景下,我们还需要同时实现DES,相当于增强了兼容性吧。值得一提的是,在这里简单攻击所需要的时间为.
或许还有同学会问,为什么不用2DES呢?上来就用3DES?Dan就给出了具体的原因。对于2DES,我们可以用一种“Meet in the middle attack”的方式去破解它,时间复杂度为。在现代密码学中,时间复杂度的基准线是。
- 方法二是使用DESX
a block cipher,
Define EX as
对于DESX来说,key-len为184bits,攻击需要的时间为。
这里Dan说明,和不会起任何的作用,具体情况可以参考本章节的作业。
More Attacks on block ciphers
这一章节的内容可以看作是关于密码学的拓展部分。
- Side channel attacks
通过测量加密解密的时间和所需要的能量来进行攻击( Kocher,Jaffe,Jun, 1998 ).
- Fault Attacks
通过物理攻击的方式,使得加密或解密环节出现故障,从而进行攻击。
在这里Dan就劝我们不要试图自己实现加密算法..直接用现成的就好了,造轮子这种事情需要很强的基础才行。
- Linear and differential attacks
目标是给定多个输入输出对,我们便可以在时间内恢复出key. 在这里,Dan做了一些简单的线性密码学分析(Linear Cryptanalysis)。比如,对于DES而言,我们可以先在时间内用线性攻击获得14位的key,然后再用暴力搜索的方式(在时间内)获得剩下的key值。这里,Dan告诫我们不要自己尝试设计加密方式。
- Quantum Attacks
量子计算机的概念可以使得当代计算机的速度大幅增强..在那种概念下,甚至AES-256都变的不安全了..
Quantum Attacks Quantum exhausitve search