我正在使用.net 3.5和vb.net。我对下面提到的每种加密的内部工作知之甚少。我只使用.net类库中提供的类。
我有一条信息已经使用TripleDes加密,然后是Rijndael,最后是RC2算法。并且这些算法的所有KEY和IV分别使用1024密钥用RSA加密。
现在和长期是否安全?
因为我听说RSA加密只能在某些年份被认为是安全的。例如,在本文768-bit RSA cracked, 1024-bit safe (for now)
中我应该将RSA密钥大小增加到2048或更多吗?
更新:
这里的保险箱意味着长期和非常重要的秘密
答案 0 :(得分:6)
以下列出了不同加密算法的密钥长度:http://www.keylength.com。本网站列出的数字被视为标准。如有疑问,请检查那里。 Ecrypt II方法是最新出版物。您可以在此处找到PDF:http://www.ecrypt.eu.org/documents/D.SPA.13.pdf。它是一个有趣的阅读,即使你对密码学知之甚少也看起来相当容易(虽然我不能确定,因为我在该领域工作)。
对于使用不同算法多次加密原始数据:只要您使用强大的加密算法,这是没有用的。我的建议是使用事实上的标准AES(= Rijndael)。
至于你的symmetic键长度,如果你坚持使用AES,三个选项(128,192或256位)中的任何一个都可以。事实上,对于128位版本存在某些攻击,这些攻击不适用于128位版本(由于密钥调度)。无论如何,到目前为止,所公布的AES攻击都没有任何实际用途,所以选择你想要的任何东西。
如果您想确定您的密钥不会被解密,是的,请使用RSA-2048。顺便说一下,正如您在此表中所见:http://www.keylength.com/en/3/,AES-128的强度与RSA-3248相同。
[编辑] 但有一个问题:为什么要加密密钥?您实际上必须将2048位RSA密钥存储在安全位置才能解密128位AES密钥。我没有看到这一点。您可以将128位密钥存储在安全的地方并完成它。或者您使用多个RSA密钥来建立对称密钥?
此外,IV应该是公开的,没有用于隐藏/加密它们,这有效地使它们成为第二个关键。你已经有了钥匙。所以不要费心加密它们。
答案 1 :(得分:3)
这实际上取决于你所存储的内容,以及是否有任何人通过破解获得了巨大价值。对于大多数没有处理财务数据或国家机密的东西,1024位加密应该没问题。
但是,如果你想编写你的代码并且不必再回到它上面超过十年(假设没有错误^ _ ^)那么就去寻找更高位的加密。只要确保你永远记住没有加密是不可破解的,高位加密只能保证很长时间。
这是一个interesting link,它讨论了如何通过降低处理器的功率来破解1024位加密。我认为这也可以扩展到更复杂的加密方案。
This reference似乎也很好。页面上的图形显示RSA的解密时间是指数级的。
这里是one more article,直接来自RSA实验室,它讨论了某些大小的密钥被认为不太安全的时间。
结论:如果您正在寻找可以长期工作的东西,那么一定要使用2048位加密。它现在可以工作了,虽然你的服务器需要花费更多的时间来加密(并且需要更长时间才能解密),并且将来会有效。