自从2000年4月Rijndeal被遴选为AES加密标准之后,AES一直被认为是安全的.因为从结构上来说,它的设计的各个方面融合了各种特色,从而为抵抗各种攻击提供了安全性.具体来说,它的S-Box是通过galois fields中的逆运算来构造的,这样,它的linear approximately和difference distribution table中的各项就区域均匀分布了.这提供了抵御differential cryptanalysis和linear cryptanalysis提供了安全性.类似的,linear transformations(MixColumns),使得攻击者找到包含less active s-box的linear cryptanalysis和differential cryptanalysis成为了mission impossible.显然,对于AES,目前还不存在比穷尽密钥搜索更加高效的密码分析方法.即使是对AES减少轮数的变种而言,"最好"(the believed one)的攻击对10轮的AES也无效.(况且,对于安全程度要求很高的场所,根本不可能减少轮数).
那么,AES真的安全了么?早在1949年,Shannon就提出了三个评价密码体制的安全性的准则,即是computational security, provable security and unconditional security. 现在没有一个已知的密码体系是属于computational security范畴的,所以,AES也并不是绝对安全的.就像当年的DES,在最初公布时也被认为是能够抵御已知攻击的,但是实际情况是,在1973年IBM研制DES时候,研制者就发现了针对DES的linear cryptanalysis和differential cryptanalysis,只不过没有公开而已,然后,近20年后,这两种密码分析方法再次被Biham和Shamir独立发现,IBM把这两种分析方法整整隐藏了近20年.这里我想要说的是,linear cryptanalysis和differential cryptanalysis这两种攻击方法分别是建立在known plaintext attack和chosen plaintext attack上的,这使它们在实际运用的过程中受到很大的限制,因为known plaintext attack要求攻击者知道一个极大数量的明文-密文对(对于一个DES的线性攻击,可能需要上万对),chosen plaintext attack要求更高,要求攻击者对encrypt function有访问权限,这在实际中几乎是不可能的.当然,我们绝对不能把一个密码体制的安全性建立在这种"几乎不可能上",因为在技术上"几乎不可能"的事情,在所谓的社会工程学中,有可能是极易实现的.(这也是为什么我们的密码分析都建立在Kerckhoff 假设之上)当然,DES的s-box是保密的,IBM也承认s-box的某些未公布的设计标准正是为了防止这两种密码分析,这还一度让人们以为s-box中存在trapdoors,这让NIST哑巴吃黄连,有苦说不出啊.(当然,trapdoors可能确实存在,现在没有任何证据证明trapdoors存在,也没有任何证据能证明trapdoors不存在).同DES一样,AES是不是也存在一种我们未知的优秀的密码分析方法呢?我们不得而知(但是它的设计者可能知道).我们只知道,一旦这种攻击方法被发现,现在的加密标准将面临极大的挑战.








评论