我希望将随机密钥文件与密码组合起来,以生成CSPRNG的安全种子。密钥文件被假定具有很高的熵,但是密码将是用户提供的任何内容。怎样才能将两者结合在一起才能使PRNG产生种子呢?当然,目标是除非您同时拥有密钥文件和密码,否则很难预测PRNG的输出。
我的第一个想法是简单地使用PBKDF-2扩展密码,使其与密钥文件大小相同,然后将它们放在一起。我不会传输这个种子或任何东西,所以我认为这本身并不重要,因为它本身加密能力很差。但我还有什么其他的考虑吗?
我将很可能是使用AES在反模式下的PRNG,但一个回答涵盖一个更一般的情况,将不胜感激。另外,我假设密钥文件与PRNG将使用的种子大小相同。
发布于 2012-10-24 20:08:45
如果您的密码具有较低的熵(或“可能具有低熵”),并且“密钥文件”被假定为已知的攻击者,那么您确实需要一些密钥扩展,如PBKDF-2、bcrypt或scrypt,并具有适当的工作因素来拘留可能的攻击者。
由于这些函数也有一个salt输入,而且实际上还有另一个熵源(密钥文件),我将使用密钥文件作为salt输入和密码作为这些方案的密钥输入,并为您的CSPRNG种子生成一个合适大小的输出。
我认为,如果只知道密码(而不是用作salt的密钥文件),同样的方案也是安全的,尽管这不是这些密码散列方案的直接设计目标。
https://crypto.stackexchange.com/questions/5148
复制相似问题