進階加密標準評選過程
進階加密標準評選過程高级加密标准(AES),一种由美国國家標準技術研究所(NIST)批准的对称加密分组密码,从1997年至2000年间的一次持久性选拔得到。比起他的前身資料加密標準(DES),这次选拔是完全公开和透明的。这个选拔比赛赢得了来自公开加密社区的赞誉,而且有助于增加对最终赢得选拔的算法的安全性的信心,而不是像它的前身DES那样被怀疑存在后门。
选出一个新的加密标准是非常必要的,这是因为DES使用的是56位的密钥,相对来说太小,越来越容易受到暴力攻击。此外,DES主要被设计用于硬件以及不这么快的软件实现上。三重DES避免了加密密钥过小的问题,但是非常缓慢,甚至使用专门的硬件依然如此,它不适用于资源有限的平台。而且它可能受到潜在的安全问题的影响,这个问题和它使用了(在今天看来相对较小的)64位的块大小有关。
目录
选拔的开始
1997年1月2日,NIST宣布,他们希望选择一个被称为AES的加密标准,作为DES的继任者。与DES一样,这是一种“不是机密的、加密算法公开披露的,能够在未来一个世纪内保护敏感的政府信息的”加密标准。然而,NIST并没有简单地宣布继任者是谁,而是要求有关各方就如何选择继任者提供方案。来自开放加密社区的兴趣立即高涨,NIST在三个月的评论期期间就收到了大量的提交。
1997年9月12日,最终反馈的结果需要是一种新的算法。这种算法应该都是块密码,支持128位的块大小,以及支持128、192和256位的密钥长度。这种密码在当时宣布的时候是很少见的,当时最著名的这类算法是Square。
第一和第二回合
在接下来的九个月,来自不同国家的十五种不同的设计出现并被提交。按字母顺序排列,他们分别是:CAST-256、CRYPTON、DEAL、DFC、E2、FROG、HPC、LOKI97、MAGENTA、MARS、RC6、Rijndael、SAFER+、Serpent以及Twofish。
在随后进行的辩论中,密码学家们对这些候选算法的优点和缺点进行了调查;他们的评估包括安全方面,也包含在各种各样的情景下算法的使用实现(个人电脑的各种架构、智能卡、硬件实现),以及其在有限资源的环境下的可行性(只有非常有限的内存的智能卡、在低逻辑门数下的实现,FPGA)。
其中的一些设计方案在密码分析中落选,原因是存在微小的缺陷甚至是存在致命的攻击方式,而另一些则是因为在不同环境中不良的性能表现或者是比其他的候选算法表现更差。NIST举行了两次会议讨论这些提交的方案(1998年8月AES1,1999年3月AES2)。在1999年8月,他们宣布,他们将候选名单从15个缩减至5个:MARS (密码)|MARS (cipher)|MARS,RC6,Rijndael,Serpent,以及Twofish。这五个算法,通常称为“AES决赛算法”(AES finalist),都由著名的、在社区中被尊敬的密码学家们所设计。 AES2会议投票如下:
- Rijndael:86赞成,10反对
- Serpent:59赞成,7反对
- Twofish:31赞成,21反对
- RC6:23赞成,37反对
- MARS (密码)|MARS (cipher)|MARS:13赞成,84反对
在另一轮更加激烈的密码分析之后,最终在2000年4月AES3会议上,五个算法的代表团队对关于为什么他们各自的算法应被选作AES的原因做了演讲以及辩论。
最终获胜者的选择
2000年8月2日,NIST宣布拟将Rijndael作为建议的AES标准,并于2001年2月28日通过在聯邦公報上发布公告作为FIPS草案征求意见,以此推进将其作为官方标准的进程。2001年11月,NIST宣布,AES被批准为FIPS PUB[1] 。
NIST由于开放包容的态度以及选拔过程之中的专注,赢得了来自密码社区的赞誉。落选的Twofish算法的作者之一布魯斯·施奈爾,在竞选结束之后写道,“除了对NIST和AES选拔的赞美,我没什么可以说的了。”