Twofish
在密码学中,Twofish是一种对称密钥块密码,块大小为128位,密钥长度可达256位。
1997年,NIST宣布竞争选择DES的继任者,称为AES,Twofish是高级加密标准竞争的五个入围者之一,但没有被选为标准。
Twofish与早期的块密码Blowfish有关。Twofish的主要特点是使用预先计算的密钥依赖性S盒,以及相对复杂的密钥时间表。n位密钥的一半被用作实际的加密密钥,而n位密钥的另一半被用来修改加密算法(密钥依赖性S-boxes)。Twofish使用了其他设计中的一些元素;例如,SAFER系列密码器中的伪哈达玛德变换(PHT)。Twofish使用与DES相同的Feistel结构。
在大多数软件平台上,对于128位密钥,Twofish比Rijndael(高级加密标准选择的算法)稍慢,但对于256位密钥,则要快一些。
Twofish是由Bruce Schneier、John Kelsey、Doug Whiting、David Wagner、Chris Hall和Niels Ferguson设计的。"扩展的Twofish团队"开会对Twofish和其他AES竞争者做了进一步的加密分析,包括Stefan Lucks、Tadayoshi Kohno和Mike Stay。
Twofish算法是免费的,任何人都可以使用,没有任何限制。Twofish密码没有获得专利,其规范的软件实例已被置于公共领域。不过,Twofish不像Blowfish那样被广泛使用,它的使用时间较长。
密码分析
截至2008年,关于Twofish块密码的最佳发表的密码分析是对完整的16轮版本的截断差分密码分析。该论文声称,每一个块的截断差分攻击概率为2-57.3,需要大约251个选定的明文(价值32 PiB的数据)才能找到一对好的截断差分。
Bruce Schneier在2005年的一篇博客中回应说,这篇论文并没有提出完整的密码分析攻击,而只是提出了一些假设的差异特征。"但即使从理论上看,Twofish也没有被破解。这些结果自2000年发表以来,没有任何扩展"。
问题和答案
问:什么是Twofish?答:Twofish是一种对称密钥区块密码,区块大小为128比特,密钥长度可达256比特。
问:Twofish与早期的区块密码Blowfish有什么关系?
答: Twofish的主要特点是使用预先计算好的依赖密钥的S-boxes,以及相对复杂的密钥计划。n位密钥的一半被用作实际的加密密钥,而n位密钥的另一半被用来修改加密算法(密钥依赖的S-boxes)。
问: Twofish被选为高级加密标准吗?
答: 没有,在1997年,NIST宣布竞争选择DES的继任者,这将被称为AES,然而Twofish没有被选为标准。
问: Twofish使用了其他设计中的哪些元素?
答: Twofish使用了其他设计的一些元素,例如,SAFER系列密码中的伪哈达玛德转换(PHT)。
问: 它是否像DES一样使用Feistel结构?
答:是的,它确实像DES一样使用Feistel结构。
问:对于128位密钥,它是否比Rijndael快?
答:在大多数软件平台上,Twofish比Rijndael的128位密钥稍慢。
问: 对于256位的密钥,它是否比Rijndael快?
答: 对于256位的密钥,它比Rijndael快一些。