我想知道其他密码,如毒蛇、双倍甚至三重密码在现实生活中是否真的有用,因为AES在大多数情况下似乎是非常有效的。
但是,例如,TrueCrypt或VeraCrypt提供了服务器和Twofish作为加密驱动器的算法,那么为什么会有人选择那些密码而不是AES呢?(我知道Threefish是可调整的,因此在加密磁盘方面是有效的)。
因此,为了澄清我的问题:使用Twofish、Serpent或Threefish代替AES是否有真正的目的?
发布于 2018-03-20 16:00:04
由于位切片设计,蛇的实现非常简单,具有侧通道电阻.因为AES中包含了一个S-Box,它最简单地实现为一个查找表,所以它的实现往往是容易受到侧通道攻击。
Threefish是为SHA-3竞赛设计的,目的是成为一种密码原语包的一部分,包括加密、散列和MAC。如果您想要一个不需要实现大量不同算法的密码库,那么Threefish可能是一个不错的选择。
使用AES的一个令人信服的原因是许多现代CPU支持AES-NI指令,这将使使用AES的加密几乎肯定比任何其他算法都快。一个更快的算法总是更好的,但是除非你加密大量的数据,否则你可能永远不会注意到其中的区别。由于AES-NI需要更少的CPU周期,它可能会在您的电源账单上节省几美分。
当然,作为用户,这些实现细节可能是不可见的。您提到的库已经实现了大量不同的算法,所以在您所关注的情况下,这种优势是可以忽略不计的。
提供多个选项通常比一个选项好(在合理的范围内-太多的选择是不好的)。这有点像问为什么一家餐馆的菜单上有不止一个项目。有些人可能因为武断的原因而不关心这一项。
发布于 2019-11-19 19:55:31
在大多数情况下,您可能应该使用AES,特别是在硬件支持的情况下。
在某些情况下,使用另一种可能是有意义的。例如,Threefish的简单性对于使用缺乏AES硬件支持的微控制器来说是有意义的。它缺少S盒,减少了所需ROM的数量。如果您不需要微调功能,则部分预先计算的密钥计划只需要少量的RAM。您可以预计算KN子密钥(从K0到K恩-1),然后在将子密钥注入加密/解密操作时添加子密钥号“动态”。
理论上,如果加密/解密的数据量足够小,则可以对调整的子值执行类似的操作。(这很可能发生在嵌入式控制器中。)
另一方面,在具有预先计算的密钥计划的嵌入式应用程序中,我认为使用不同的键而不是使用调整功能更有意义。
此外,在使用预先计算的密钥计划时,应使用CBC或其他使用初始化向量的模式。
https://crypto.stackexchange.com/questions/57652
复制相似问题