AES-高迭代次数与密码熵

本文关键字:密码 高迭代 迭代 AES- | 更新日期: 2023-09-27 18:24:58

希望对AES问题有一些澄清/理解,我是加密货币的新手,请耐心等待。

我的任务是为一个客户加密数据。基于我在Stack Overflow上找到的这篇文章,我已经使用RijndaelManagedSHA256为密码哈希编写了一个c#类。我使用随机的4字节salt值,以及附加到原始数据预加密的静态8字节salt。

我选择了AES 128位加密,因为256位的速度要慢得多(在我的应用程序中约为35%),在这种情况下,由于它不是非常敏感的数据(但我们的客户要求在休息时对其进行加密),这就显得有些过头了。下一个性能瓶颈似乎是迭代,我在1000时就有了迭代。在测试中,加密10K值大约需要4分钟,这并不可怕,但也不太好。将迭代次数减少到100次,减少到大约1.5分钟。

由于速度是关键,我想确认一下,如果我使用的是来自http://passwordsgenerator.net/,我可以安全地减少Rfc2898DeriveBytes上的迭代计数器。

迭代主要用于向低熵密码添加熵,这一点我正确吗?将迭代次数减少到1000次以下(这似乎是公认的阈值)是否弊大于利?

干杯。

AES-高迭代次数与密码熵

如果你有一个256个字符的密码,那么你似乎有足够的熵来处理一个密钥。你只需要一次迭代和一个随机>=8字节的salt的PBKDF2。您也可以使用HKDF(不确定是否有C#实现)而不是PBKDF2。对于AES-256来说,这甚至是足够的熵。

我看到的问题是您使用在线服务生成密码不要这样做。你不能确定他们不会出售他们为你生成的密码。只需用RNGCryptoServiceProvider生成一个32字节的主密钥,并用Base64对其进行编码,就可以获得一个可以存储在字符串中的"密码"。