Encryption 如果攻击者知道密钥的一部分,AES-256的安全性会降低吗?

Encryption 如果攻击者知道密钥的一部分,AES-256的安全性会降低吗?,encryption,aes,Encryption,Aes,免责声明:这只是出于好奇;说到密码学,我根本不是专家 假设256位密钥由以下(UTF-16)字符组成: aaaaaa bbbbccc 进一步假设攻击者知道密钥的最后4个字符是cccc 这些知识是否使攻击者更容易使用 我的猜测是,它使攻击者更容易暴力破解加密文本,但我的理解是,暴力破解AES-256是一个非常困难的问题。再说一次,AES本身可能有一些我不了解的地方,使这种知识对攻击者更有价值。我不这么认为。黑客可以猜测最后4个字节(通过蛮力运行),即使他们不知道,因此知道最后4个字节只会减少密钥空

免责声明:这只是出于好奇;说到密码学,我根本不是专家

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

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


我的猜测是,它使攻击者更容易暴力破解加密文本,但我的理解是,暴力破解AES-256是一个非常困难的问题。再说一次,AES本身可能有一些我不了解的地方,使这种知识对攻击者更有价值。

我不这么认为。黑客可以猜测最后4个字节(通过蛮力运行),即使他们不知道,因此知道最后4个字节只会减少密钥空间。
[顺便说一句,我也不是专家。]

我不这么认为。黑客可以猜测最后4个字节(通过蛮力运行),即使他们不知道,因此知道最后4个字节只会减少密钥空间。
[顺便说一句,我也不是一个“专家”。

理论上,它现在不太安全


实际上,只要攻击者还不知道至少有80位,就可以使用。

从理论上讲,现在的安全性较低


实际上,只要攻击者还不知道至少有80位,就可以使用。

我想说,更大的问题是,您的密钥字节来自UTF-16字符,但在ASCII字符空间中(意味着您的密钥可能有32个ASCII字符长)。因此,已知密钥的32个字节中有16个为0x00。知道最后4个是
c
意味着又有4个字节被破坏

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

如果攻击者使用字母数字字符空间,则也会将其减少四分之一(62/256)

对于您正在使用的密钥,您的密钥受到了相当大的威胁(但不仅仅是因为它的4个字符是已知的)

一个256位的密钥应该给人1/1.16×10^77的猜对机会。 根据你的情况,这是大约1/3.23 x 10^21的机会(基本上是62^12),这要小得多

更新:
我是个书呆子,不得不做数学题。12个字母数字字符(大写和小写)大约是71位加密强度。(Math check=log(62^12)/log(2))

我想说,一个更大的问题是,您的密钥的字节来自UTF-16字符,但在ASCII字符空间中(这意味着您的密钥可能有32个ASCII字符长)。因此,已知密钥的32个字节中有16个为0x00。知道最后4个是
c
意味着又有4个字节被破坏

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

如果攻击者使用字母数字字符空间,则也会将其减少四分之一(62/256)

对于您正在使用的密钥,您的密钥受到了相当大的威胁(但不仅仅是因为它的4个字符是已知的)

一个256位的密钥应该给人1/1.16×10^77的猜对机会。 根据你的情况,这是大约1/3.23 x 10^21的机会(基本上是62^12),这要小得多

更新:
我是个书呆子,不得不做数学题。12个字母数字字符(大写和小写)大约是71位加密强度。(Math check=log(62^12)/log(2))

@unforgiven3:您不应该将文本直接用作AES密钥。密码文本应通过密钥派生函数进行处理,如PBKDF2(在中定义)。(这并不能解决需要更多熵的问题——只有更长的密码文本才能做到这一点。但它允许使用UTF16格式的超过32字节的更长密码来生成256位密钥)。谢谢各位,这真的为我澄清了问题。我很感激:-)@unforgiven3:你不应该直接将文本用作AES密钥。密码文本应通过密钥派生函数进行处理,如PBKDF2(在中定义)。(这并不能解决需要更多熵的问题——只有更长的密码文本才能做到这一点。但它允许使用UTF16格式的超过32字节的更长密码来生成256位密钥)。谢谢各位,这真的为我澄清了问题。我很感激:-)