如果密钥的一部分被称为攻击者,AES-256会不那么安全?

Rob*_*Rob 1 encryption aes

免责声明:这只是出于好奇; 在加密方面,我根本不是专家.

假设256位密钥由以下(UTF-16)字符组成:
aaaaaaaabbbbcccc

进一步假设攻击者知道密钥的最后4个字符是cccc.
这种知识是否使攻击者更容易?

我的猜测是它使攻击者更容易对加密文本进行强制攻击,但我的理解是强制执行A​​ES-256是一个非常棘手的问题.然后,可能有一些我不了解AES本身的东西,这使得这种类型的知识对攻击者更有价值.

use*_*erx 7

我想说你的密钥字节来自UTF-16字符是一个更大的问题,但是在ASCII字符空间中(意味着你可以有一个长32个ASCII字符的密钥).因此,您的密钥的32个字节中的16个已知为0x00.知道最后4个c意味着还有4个字节被泄露了.

因此,您实际上只有12个字节=> 96位的AES密钥未知.

如果您的攻击者采用字母数字字符空间,则会将其减少大约四分之一(62/256).

随着你的工作,你的密钥相当妥协(但不仅仅因为它的4个字符已知)

一个256位的密钥应该给某人1.16×10 ^ 77的猜测权.根据你的情况,它的概率大约是3.23 x 10 ^ 21(基本上是62 ^ 12),这个数字要小一些.

更新:我是一个书呆子,不得不做数学.12个字母数字字符(大写和小写)大致是71位加密强度.(数学检查= log(62 ^ 12)/ log(2))

  • @ unforgiven3:您不应该直接使用文本作为AES密钥.密码文本应通过*密钥派生函数*处理,如PBKDF2(在[PKCS#5]中定义(http://www.rsa.com/rsalabs/node.asp?id=2127)).(这并不能解决需要更多熵的问题 - 只有更长的密码文本可以做到这一点.但是它允许使用长度超过32字节的UTF16格式的密码来生成256位密钥). (3认同)