RC5和RC6都是安全、简单、高效的分组密码算法,且参数可以灵活设置。
RC5算法的安全性分析
RC5最显著的两个特点是算法简单和数据确定移位。从混淆和扩散性出发,逐比特异或部件与(mod 2w)加法部件的组合存在明显漏洞,比如当a和b对应分量不同时,ab =a+b。移位是算法中惟一的非线性运算,Rivest认为,正是这个非线性运算使得对该算法的线性分析和差分分析都很困难。对RC5,目前还没有特别有效的攻击法,大部分的研究还只在理论上,一般都基于旋转的次数与输入的明文数无关。
RC5设计之初,RSA试验室曾经花费了相当的时间来分析64位分组的RC5算法,分析结果表明:在5轮循环后统计特性看起来非常好。在8轮循环后,每一个明文位至少影响一个循环移位。如果进行差分分析,对5轮循环需要224个已知的明文,对10轮循环需要245个已知的明文,事实上,6轮循环后差分分析就是安全的了,Rivest推荐至少12轮,甚至可能是16轮。
RC6算法的安全性分析
作为RC5强化版的RC6通过引入乘法运算来决定循环移位次数的方法,对RC5进行改进,弥补了RC5在扩散速度上的不足,并且RC6中的非线性部分是由多个部件共同实现的,这都大大增强了RC6的安全性。但是,RC6算法的所有安全性都依赖于“数据的循环移位”,而没有任何其他安全保护,这是RC6的安全隐患,也是它未被采纳为AES的原因之一。
攻击RC6 的最好的方法是穷举法,穷举b字节的用户密钥或扩展密钥,但这种穷举法需要min{286,21024}次操作,理论上需要超过2704 字节的内存。如果对RC6进行中间相遇攻击,则需要2700 次计算,这样要恢复扩展密钥最少需要min{286,2704}次操作。另外,RC6的加解密时间都与数据无关,这样可以有效地避免“时间攻击”。对RC6的差分分析和线性分析只有在迭代轮数较少时有效,对20轮循环的RC6,用线性分析法至少需要2155个明文,用差分分析法至少需要2238个明文。
RC5算法和RC6算法的性能比较
此外,与大多数分组密码不同,RC6在加密过程中不需要查表,乘法运算也可以用平方代替,所以该算法对内存的要求较低,这可以使得RC6可以方便地使用于IC 卡等内存空间小的产品中,这一特点还使得RC6很适合用单片机来实现。
RC5算法和RC6算法是分组密码算法,它们的字长、迭代次数、密钥长度都可以根据具体情况灵活设置,运算简单高效,非常适合软硬件实现。但它们也有自己各自的优缺点,在实际应用中应根据实际需要选择。目前,RC5算法已经被RSA公司正式采纳并使用,如用在S/MAIL(用于能用s/mime 的产品))、BSAFE(用于c++)、JSAFE(用于java)等软件中,还有几大手机厂家如Nokia,Motorala,Erison等的WAP手机的首选分组加密算法就是RC5加密算法。RC6算法也被广泛应用,如天网防火墙,Tak-C系列智能卡等。