1997年NIST(NationalInstituteofStandardsandTechnology)向全世界招募在21世纪替代DES的高级加密标准AES(AdvancedEncryptionStandard),1999年,NIST宣布有5个加密算法作为最后的候选者接受全世界将近一年的考察。这其中就有RC6加密算法算法。
RC6加密算法是在RC5基础上发展起来的,按照AES的要求设计的新型加密算法。跟RC5类似,RC6使用的是相关数据循环移位的思想。RC5本身是一个非常快的分组密码,但它在处理128位分组块时使用2个64位的工作寄存器,而AES目前在讲究效率和简洁方面不支持64位操作,所以RC6对此做了修改,改用四个32位工作寄存器,这样使得在每次循环中要做两次循环移位操作,让更多的数据位来决定循环次数。RC6中又添加了整数乘法操作。乘法操作在RC6中被用来计算循环移位的位数,使得循环移位的位数将与另一个寄存器中的所有位相关,因此RC6每次循环都比RC5有更快的扩散性。这使得RC6可以利用较少的循环次数达到要求的安全性能,从而提高了数据的吞吐能力。
RC6加密算法的性能
算法时间测试
以上数据取的是时间平均值,每个测试执行10遍,并统一换算到200MHzCPU的情况下。从上表可以看出,RC6的加密速度很快。在VPN的加密方案中,由于为了确保要求的安全性往往会影响到数据的传输速率。RC6在这一方面有很强的优势。
RC6加密算法的安全性
这里假设攻击RC6加密算法最好的途径是穷举法,穷举b位的密钥(或者扩展密钥),这种野蛮的攻击方式对任何的块加密都适用,但只能在一定长度的密钥下进行分析。
从数据上可以看出,RC6加密算法在加入了二次函数f(x)=x(2x+1)以及二次函数变换,大大提高了密码扩散性和密码的非线性。而且,RC6的加解密的时间都与数据无关,可以有效地避免“时间攻击”。