如何从 RIJNDAEL 128 恢复密钥?

How can I recover the key from RIJNDAEL 128?

我有这样的代码:

$result = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $plain_text, "ecb");

另外,我有 $result 和 $plain_text 的值。

有什么方法可以恢复 $key 吗?

您无法从直接密码分析中恢复密钥。

您可以使用已知明文攻击来关联 known/repeated 密文,尤其是在重用 ECB 模式时。您可以使用 Vaudenay 的 CBC 填充 oracle 攻击来一次解密一个字节的消息(通过选择的密文攻击)。您可以利用 CTR 模式随机数重用从密文中恢复明文。

您不能简单地恢复给定明文和密文的密钥。

存在 侧信道攻击,例如 cache-timing attacks against AES (PDF),允许攻击者恢复密钥。但是,如果您使用的是恒定时间 AES(即由 AES-NI 提供),那么这些都不在 table.