我不是在翻我自己的密码什么的--我只是想了解密码学的Dos和Don‘’ts:特别是关于AES加密和生成密钥的方法。
据我所知,创建密码安全密钥时的一个选项是从/dev/urandom收集熵,然后通过Salsa20密码提供数据。
然而,我不太确定接下来的步骤,因为这是搜索引擎不再对我有用的地方。据我所知,使用Salsa20生成的输出似乎不够安全,无法作为关键材料使用。如果这是正确的,那么在获得Salsa20输出之后,下一步的“密码学”更正是什么?
此外,如果你知道任何相关的文件,并乐于分享,他们将非常欢迎!
发布于 2014-04-07 21:35:11
正如注释中所述,/dev/随机已经生成加密安全的随机字节,这些字节非常适合用于加密密钥。通过另一个CSPRNG运行这些字节是完全多余的。
据我所知,创建加密安全密钥的选项之一是从/dev/urandom收集熵,然后通过Salsa20密码提供这些数据。
对称密码 (例如Salsa20 )本身并不是正确的密码原语。您需要一个CSPRNG (例如/dev/随机)。
但我对下一步还不太确定,因为那是搜索引擎不再对我有用的地方。据我所知,使用Salsa20生成的输出似乎不够安全,无法作为关键材料使用。我说的对吗?如果,在我检索到Salsa20输出之后,下一步的密码学上正确的是什么?
如果您有一些理由不使用/dev/随机(方便、不信任等),并且有一些其他强的(我确实是指强大的,而不仅仅是鼠标移动的巨型)熵源,那么您应该参考NIST特别出版物800-90A中定义的CSPRNG之一。您可能对CTR_DRBG特别感兴趣,它在内部使用块密码(在CTR模式下运行,本质上是类似于Salsa20的流密码)。您可以在许多语言中找到这方面的实现。
贴士:避免双重_EC_DRBG
https://crypto.stackexchange.com/questions/15428
复制相似问题