我练习了一些python编程,我决定实现一个简单的DES加密函数,所以我决定采用一些快捷方式,所以我使用的不是DES扩展框和S框,我只是使用一个简单的键控SHA3哈希函数,输入是:32-bit right side + key(any length I want but I used 128-bit),哈希的第一个32-bit是xor,左边是xor,用来生成密文。所以现在我忽略了我设计了自己的密码,而且我使用了一个非常简单的密钥调度函数。使用这个哈希函数而不是普通哈希函数有什么安全优势(请记住它使用的128-bit密钥比普通DES的56-bit密钥大),如果我使用SHA2 ( SHA2对长度扩展攻击的敏感性会影响安全性),它会有什么不同。最后,使用这种方法的优点是什么?
发布于 2020-11-13 17:44:50
最初提出的问题本质上考虑一个64位对称Feistel密码16轮,一个大(128位)密钥,一个近乎理想的圆函数,但在每轮相同的函数和键。滑动攻击至少允许一个区分器,我认为按照2^{31}对加密甲骨文的查询顺序。有了更多的信息,就有可能构造不被查询的明文/密文对。这是一个有趣的练习。从几个角度来看,这使得安全性低于DES的安全性。
如果有一个很好的密钥调度(例如,如果将圆形计数器附加到哈希的输入中),那么我们将返回Feistel网络,该网络具有块大小和足够的轮数是非常安全的。我很怀疑有比128位键的蛮力更好的攻击。安全性远高于DES (但在本机代码中的性能要低得多)。
有了一个基于轮转的关键计划,就像在评论中一样,事情取决于旋转计数。但如果是奇数位数,那么对于绝大多数关键值来说,都不会发生灾难性的后果。
如果SHA-2和SHA-3之间存在安全差异,这将意味着其中一种的中断(相对于恒定输入长度的随机oracle模型)。最重要的是,它将与被攻击的哈希嵌入在一个极其敌视攻击的设置中。我认为这是事实。
https://crypto.stackexchange.com/questions/86153
复制相似问题