我的问题是,假设您有一些AES-ECB加密哈希,并且您想要解码它。你还获得了一堆示例明文和哈希。例如:
我想:hash_hash哈希的unknown_plaintext 我有一堆使用相同密钥加密的known_plaintexts和哈希。它们(显然)与给定的哈希值完全相同。
如果您能提供帮助,请与我们联系。这不是恶意意图,只是为了了解密码学和AES系统如何工作。
答案 0 :(得分:1)
这在计算上是不可行的。即,你不能这样做。
像AES这样的现代加密算法可以抵抗known-plaintext attacks,,这就是你所描述的。
在一个名为daptive chosen plaintext attacks.的类别中已经取得了一些成功。通常这些类别利用"oracle."在这种情况下,攻击者可以通过反复询问受害者是否可以成功解密来解密单个邮件猜测是由攻击者生成的。通过巧妙地选择连续的猜测,攻击者可以用大约一百万次尝试来解密消息,这是一个相对较小的数字。但即使在这种情况下,攻击者也无法恢复密钥。
顺便说一下,密码不会产生哈希值。他们输出密文。散列函数(也称为消息摘要)生成散列。
答案 1 :(得分:1)
对于任何可尊重的分组密码(并且AES是一种可尊重的分组密码),解密密文块(不是“散列”)的唯一方法是知道密钥,以及从一堆密钥中找到密钥的唯一方法。明文 - 密文对是通过猜测一个密钥并查看它是否将已知的明文映射到相应的密文上。如果您对如何选择密钥有一些了解(例如,宠物名称的SHA-256),这可能会起作用;但如果密钥是从所有可能的AES密钥集合中随机选择的,那么产生巨大成功概率所需的猜测数量是如此之大,以至于你会漫游到宇宙年龄的手中。
答案 2 :(得分:0)
如果您知道所有加密的哈希值都使用相同的密钥加密,您可以首先尝试使用明文对和加密哈希值来查找该密钥。最明显的方法是只取一个明文,首先对其进行哈希处理,然后尝试所有可能的密钥对其进行加密,直到它与您知道的加密哈希匹配为止。如果您要查找的密钥只是许多可能的AES密钥中的一个,则设置为失败,因为尝试所有密钥需要花费太长时间。
假设您能够以某种方式恢复AES密钥,您可以解密那个没有明文的哈希,并开始寻找明文。 你对明文的了解越多,这种猜测就越容易。你可以把解密的哈希值扔到google上,查看它吐出来的内容,查询已知哈希值的数据库,或者以最有效的方式猜测。 如果散列足够强且明文足够随机,此步骤将再次失败。
答案 3 :(得分:0)
正如其他人所指出的那样,现代加密算法专门用于抵御这种攻击。即使像微小加密算法这样的相当弱的加密算法也需要超过8个百万选择的明文来做这样的事情。更好的算法,如AES,Blowfish等,需要的远不止这些。
截至目前,对AES没有实际攻击。
如果您有兴趣了解加密技术,那么旧的数据加密标准(DES)实际上可能比AES更有趣;有很多关于它的文献,它已经被破坏了(这样做的代码仍然在网上免费提供 - 研究它实际上非常有用)。