【问题标题】:Does the content of an AES Key matter?AES 密钥的内容重要吗?
【发布时间】:2020-03-16 23:18:13
【问题描述】:

我一直在寻找 AES 密钥生成算法,有点担心“我的密钥是什么”,更关心的是,是否存在“强”和“弱”密钥?

找到了一篇python文章,该文章专门在生成密钥时不使用与此类似的算法:

import random

key = []
for x in range(16):
    key.append(chr(random.randrange(0,255)))
return key

我知道密钥不应该是可预测的,而且我知道基于时间的正常“随机”字节生成并不是完全随机的。

不过,我的问题是,即使您确实对密钥使用了简单的算法(或者甚至是 16 字节的密码)并且正确实施了 AES,但密钥是否比其他密钥更弱?

【问题讨论】:

    标签: python encryption random aes entropy


    【解决方案1】:

    AES 本身没有任何弱密钥。弱密钥是会带来分组密码特殊属性的密钥。例如,弱密钥可能是使用该密钥进行双重加密将再次生成明文的密钥。然而,弱键的定义不是您正在使用的。

    当然,猜测时间是一个真实的选择,随机数生成器可以用那个时间播种,并且可以用这种方式重新生成密钥。所以这肯定不强。如果随机数生成任何其他数据,那么攻击者也可能能够计算先前的状态,包括生成密钥的状态。不是个好主意。

    任何对称密码都要求密钥完全不可预测。这不仅意味着它们很难猜测;他们应该是不可能猜到的。否则不满足密钥的安全强度。例如,如果您使用 16 个完全随机的十六进制字符而不是字节作为密钥,则密钥大小将减半,只剩下 64 位而不是 128 位。

    密码也是同样的问题。不幸的是,人类提出的密码非常脆弱。这就是为什么我们在基于密码的密钥派生函数或 PBKDF 中使用密钥拉伸等技巧来加强基于密码的加密或 PBE。

    所以是的,密钥 比由完全随机字节组成的密钥弱,因为攻击者更容易猜到它。这基本上与使用的(块)密码无关。

    键的内容确实很重要。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-29
      • 2018-05-31
      • 2017-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-21
      相关资源
      最近更新 更多