我有这样的代码:
$result = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $plain_text, "ecb");
另外,我有$ result和$ plain_text的值。
有没有办法恢复$ key?
答案 0 :(得分:0)
您无法从直接密码分析中恢复密钥。
您可以使用已知明文攻击来关联已知/重复的密文,尤其是在重用ECB模式时。您可以使用Vaudenay的CBC填充oracle攻击一次解密一个字节的消息(通过选择的密文攻击)。您可以利用CTR模式nonce重用来从密文中恢复明文。
你不能简单地恢复给定明文和密文的密钥。
是侧通道攻击,例如cache-timing attacks against AES(PDF),允许攻击者恢复密钥。但如果您使用的是恒定时间AES(即由AES-NI提供),那么这些就不在讨论之列了。