最新的流密码被认为是相当安全的&容易实现?

时间:2010-06-07 14:53:45

标签: security random

(A)RC4曾经适合这项法案,因为写起来很简单。但这些天它也不那么安全。

我想知道是否有继任者:

  • 代码足够小以便编写&使用伪代码作为模板在一小时左右的时间内调试。
  • 截至2010年仍被视为安全。
  • 针对软件进行了优化。
  • 不受许可问题的影响。

我不能使用加密库,否则所有这些都没有实际意义。此外,我会考虑块算法,但我认为大多数都非常重要。

感谢。

2 个答案:

答案 0 :(得分:1)

老实说,你最好的选择是使用加密库。它已经是一个经过测试的平台,甚至加密库也无法实现算法......最好使用预先存在的加密库,它已经足够强大,可以正确地使用API​​进行加密/解密,因为它是就像这篇关于编码恐怖的帖子:Why Isn't My Encryption.. Encrypting?

现在我已经阅读了关于Stream ciphers的维基百科文章,可能值得浏览文章中的密码列表,自1987年RC4以来已经开发了几个密码,以及我非常有限的密码学知识他们中的一些人似乎比RC4更安全。您可能还想考虑查看eSTREAM上的维基百科文章。投资组合中有几个密码:HC-128RabbitSalsa20/12SOSEMANUK

答案 1 :(得分:0)

没有密码易于实现,特别是对称密码,它们永远不会。有很多可能出错,大多数程序员都没有意识到这一点。你需要更多地阅读这个主题。

使用分组密码,您必须关注您使用的the mode,并且不同的模式满足不同的需求(但ECB始终是错误的选择)。您还必须非常小心地为每条消息维护unique IV。如果您使用“密码”作为密钥,则必须使用string2key函数。

流密码没有IV或模式,这实际上使更难。流密码功能仅接受密钥,输出是无限大的“PRNG流”。然后将此随机数据流与您的消息进行异或。因此,如果您使用相同的密钥,您将获得相同的PRNG流。如果攻击者知道1条消息的明文(或消息的一部分),那么他可以从密文中删除PRNG,然后在恒定时间O(1)中使用该密钥解密所有其他消息。对于实际上安全的流密码,您永远不能重复使用相同的密钥。

我强烈建议您选择一本实用密码术,其中有几章专门介绍对称密码攻击。这本书很直接,不需要很多数学。如果不真正关心实现自己的实现,那么你可以使用经过验证的密码实现,例如Jasypt,它“以正常的方式工作”。