一个非常简单的问题-但是我似乎找不到更多的信息。
什么是“调整”?它只是一个字节序列吗?它具有什么特殊性质吗?
可调整的分组密码是否更适合任何特定情况?
Twofish(传统的分组密码)与Threefish(可调整的分组密码)相比如何? br />

评论

主要参考资料是:cs.berkeley.edu/~daw/papers/tweak-crypto02.pdf

谢谢@ Mok-KongShen-我已经看到了-但是我希望有一个更简化的解释(如果存在这样的解释)。 Wikipedia对该主题有5个句子-而PDF的深度非常大。我正在寻找介于两者之间的东西。

#1 楼

分组密码是排列族,其中密钥从该族中选择特定排列。通过可调整的密钥,可以使用key和tweak来选择置换。因此,调整和密钥非常相似。

主要区别在于调整的安全性和性能要求:调整必须便宜。

使用所选的攻击者时要安全,或者至少相关的密钥不是密码的主要安全属性。通常,在假设随机选择密钥的情况下对它们进行分析。相关的关键攻击相当学术。例如,尽管对它进行了相关的密钥攻击,但AES仍然被认为是安全的。

相关的或攻击者选择的调整必须仍然是安全的。调整通常是一种反击,因此调整通常是相关的。更改其中一项很便宜,并且不会遭受相关的密钥攻击。

如果另一方面使用AES-256并使用部分密钥进行调整,那将是行不通的好。重新加密AES会产生成本,并且会遭受相关的密钥攻击。


可调整的分组密码的一种应用是磁盘加密。您使用相同的密钥对每个块进行加密,但是要进行相应于块索引的调整。目前,我们通常不为此使用可调整的分组密码,而是使用XTS模式,它将普通的分组密码转换为可调整的分组密码。一个标准名称)通常很好。这很简单,类似于ECB。它是可并行化的,不会受到欧洲央行的弱点的困扰。重用密钥(或密钥iv对)时,它也不会像CTR模式那样灾难性地失败。

评论


$ \ begingroup $
很好的解释。那么可以为每个块更新该调整吗?这是否意味着它应该或者应该是?我读过,对于Threefish,调整始终是128位。如果要为每个块进行更新,我假设它总是来自同一源,即hash(originalValue + indexOfBlock)(作为示例)?在CBC模式下使用Threefish是否有意义?
$ \ endgroup $
–猎人
13年1月31日在18:51

$ \ begingroup $
典型的用途是使用块号进行调整。无需哈希。 Skein将计数器放在Threefish的调整中,并加上一些其他信息,例如最后一个块的标志。当用作磁盘加密时,XTS只是将计数器用作调整项。您可以在CBC或任何其他常规模式下以不断调整的方式使用Threefish。与普通分组密码相比,可调整分组密码支持其他链接模式,但可在使用普通分组密码的任何地方使用。
$ \ endgroup $
– CodesInChaos
13年1月31日在18:58

$ \ begingroup $
出于好奇,说“更换钥匙会很昂贵”是什么意思? Threefish与使密钥“便宜”的AES有何不同?
$ \ endgroup $
–斯蒂芬·托瑟(Stephen Touset)
14-10-15在19:34

$ \ begingroup $
@StephenTouset:如果有要计算的密钥扩展例程(例如AES),则更改密钥可能会非常昂贵,而不必调整消息。一种常见的方法是采用分组密码$ E_k(\ cdot)$并定义可调整的分组密码$ E ^ T_k(M):= H(T)\ oplus E_k(M \ oplus H(T))$其中H是带有自己的秘密密钥的有限域乘法(即$ H(T):= T \ cdot K_2 $)。因此,整个计算由两个xor和一个有限域乘法组成,而要调整密钥,将需要重新计算整个AES密钥调度表(以及向相关密钥攻击开放)。
$ \ endgroup $
–密码学家
15年1月14日在9:33

$ \ begingroup $
@ pushpen.paul这取决于可调整的分组密码的用户。通常,它是一个公共值,例如消息中当前块的索引。
$ \ endgroup $
– CodesInChaos
17年7月7日在7:49