首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在AES加密中,迭代次数真的能增加安全性吗?

在AES加密中,迭代次数真的能增加安全性吗?
EN

Stack Overflow用户
提问于 2012-07-11 00:59:06
回答 3查看 4.3K关注 0票数 0

我正在使用AES和一个salt字符串来加密我的“密码”,使用的是我自己制作的java程序。(它使用AES对称加密)

用户设置要加密的消息、盐、迭代和密钥的16个字节。

如果我设置它使用高次数的加密和解密迭代,比如255次,那么我的密码真的会比1次迭代更安全吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-11 01:07:59

简短的回答是肯定的。

把它想象成一个魔方(这不是最好的例子,但请耐心听我说)。明文是处于已解状态的立方体,密文是处于加扰状态的立方体。每一轮加密都是将立方体的一个面旋转一次。如果立方体的杂乱程度较高,那么在尽可能少的移动次数下求解立方体在计算上就会困难得多。破解一轮AES相当于让人解决一个旋转了一面的魔方。

一种这样的攻击可以有效地解决减少的加密轮数是SAT求解器攻击。

无论如何,您应该使用单向密码操作来存储密码。我认为首选的方法是加密,因为它是加密安全的(单向的)和计算密集型的,因此很难暴力破解。

票数 6
EN

Stack Overflow用户

发布于 2012-07-11 01:08:02

简短的回答是否定的。添加加密迭代无济于事。这与在底层算法中添加轮次不同,在底层算法中添加更多轮次实际上是有帮助的。

更长的答案是,您使用了错误的密码存储技术。你不应该使用对称加密,你应该使用单向散列函数,比如bcrypt。

您的解决方案(对称加密)中的弱点是,加密密钥必须对您的软件可用,才能加密或解密密码。这意味着当攻击者侵入您的系统时,他们将能够获得您的密码数据库和密钥,因此对他们来说,解密所有密码将是微不足道的。您应该假设攻击者能够获取您的源代码以及所有数据。

如果你使用散列函数,那么你不需要担心这种情况。即使攻击者获得了您的源代码和密码数据库,他们仍然无法反转单向散列(假设您使用了良好的散列-同样,请考虑bcrypt),因此窃取您的数据不会损害您用户的密码。

当您考虑安全性时,最好使用现有的解决方案(我提到bcrypt了吗?)而不是滚动你自己的。安全性很难正确处理,即使是专家也搞砸了。不要编写自己的密码存储系统。使用一个由专家设计的,更重要的是,已经被其他专家军团分析和攻击。例如,Bcrypt。

票数 8
EN

Stack Overflow用户

发布于 2012-07-11 01:07:37

是的,更多的轮次将使加密更强大,以抵御某些攻击。但您应该只存储加了盐的、散列的密码。不要加密它们。这样,如果有人窃取了你的数据库,他们就无法解密密码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11418236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档