想象一下我有这个:

$cdata = AES_256($data, $pass);

AES_256 实现 AES算法.

如果我知道内容 $cdata 和内容 $data 并且还有 AES_256() 代码,我可以逆向工程并找到 $pass?

有帮助吗?

解决方案

简单回答:不。

这已经过测试,并在Wiki链接中提及。

  

相关密钥攻击可以分解为9   一轮256位AES。一个   选择明文攻击可以打破8   一轮192和256位AES,以及7   一轮128位AES,虽然   2 128 的工作量是不切实际的 -   2 119

或者换句话说:在你赢得彩票的同一天,你有更好的机会被灯光击中......而不是打破它!

其他提示

这称为已知明文攻击。正如其他人所解释的那样,像AES这样的好密码应该对它免疫。

如果 $ pass 实际上是一个密码而不是256位密钥,那么你可能很幸运。

虽然执行起来远非微不足道,但对普通密码的暴力攻击要比强制执行256位密钥快得多。

因此,修改许多密码暴力破解工具中的一个,并且你有一个攻击(取决于密码的强度)可能需要数周到数年 - 但与3x10 ^ 51年相比,这是快速的。

你可以蛮力,但这需要很长时间。如几十年甚至更长时间。这就是AES等加密算法的重点。

另一个引用来自维基百科

  

AES允许使用256位密钥。   打破对称的256位密钥   蛮力需要2 ^ 128倍以上   计算能力比128位   键。可以检查的设备   每个亿亿(10 ^ 18)个AES密钥   第二个需要大约3 x   10 ^ 51年耗尽256位   关键空间。

当你知道原始文本可能会更快但是仍然是3 x 10 ^ 51年是很长时间。此外,还有一个问题,即可能没有能够检测到每秒十亿亿(10 ^ 18)键的设备。

简而言之:一切皆有可能,但这在我们现在生活的世界中是不可行的。

与所有优秀的加密算法一样,AES 不依赖于 通过默默无闻实现安全.

换句话说,代码中没有“秘密”,因此拥有代码不会对您有特别帮助。

已知明文是一个单独的问题,我对此不太了解,所以我将其留给其他回答者。

当然不是 - 唯一的方法是蛮力。 你真的认为NIST是如此愚蠢,以至于选择一个很容易破解新密码的密码吗?

凭借超级计算机的强大功能,大大缩短了AES加密的时间......我听说......

2x2 ^ 256种可能的组合对于暴力来说非常重要。但是强制是唯一的方式。实际上需要大约30年。 AES是现在我说的最好的加密方式。但这只需要花费很多时间来使用CPU。因为GPU(图形处理单元)是严格基于数学的,所以人们制作的程序只使用GPU来破解基于数学的算法比CPU更快。换句话说,AES可能不会持续30年。如果只有永恒代码是可能的。看起来像动态加密可能是人们在不久的将来真正隐藏其信息的唯一方式。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top