想象一下我有这个:
$cdata = AES_256($data, $pass);
AES_256 实现了AES 算法。
如果我知道的内容$cdata
和内容$data
并且也有AES_256()
代码,我可以逆向工程并找到$pass
吗?
想象一下我有这个:
$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 允许使用 256 位密钥。通过暴力破解对称的 256 位密钥需要比 128 位密钥多 2^128 倍的计算能力。每秒可以检查十亿 (10^18) 个 AES 密钥的设备需要大约 3 x 10^51 年才能耗尽 256 位密钥空间。
当您知道原始文本可能会更快时,暴力破解可能会更快,但 3 x 10^51 年仍然很长。另外还有可能没有可以检查十亿 (10^18) 键/秒的设备的问题。
简而言之:一切皆有可能,但这在我们现在生活的世界中是不可行的。
你可以暴力破解它,但这需要很长时间。几十年甚至更长的时间。这就是像 AES 这样的加密算法的意义所在。
当然不是——唯一的方法是蛮力。你真的认为 NIST 愚蠢到选择一个很容易破解的密码来制定新标准吗?
2x2^256 种可能的组合对于蛮力来说是很多的。但是暴力破解是唯一的方法。这实际上需要大约 3 年的时间。AES 是目前我想说的最好的加密。但这只需要使用 CPU 的时间。由于 GPU(图形处理单元)严格基于数学,人们一直在制作仅使用 GPU 破解基于数学的算法的程序,其速度比 CPU 快得多。换句话说,AES 可能不会持续 3 年。如果只有永恒密码是可能的。看起来动态加密可能是人们在不久的将来真正隐藏他们的信息的唯一方法。
借助超级计算机的强大功能,AES 加密崩溃的时间将大大缩短……我听说……