在Properly Encrypting with CommonCrypto上阅读了Rob Napier的博文后,我仍然无法理解为什么增加散列迭代次数会让攻击者“浪费一些时间”。
CCKeyDerivationPBKDF的手册页将轮次描述为:
要使用的伪随机算法的轮数。
这里的原则是攻击者试图通过一系列的猜测来破解密码,但为了将密码转换为密钥以查看它是否有效,他们自己必须迭代次数?
答案 0 :(得分:3)
这是一个原则。另一个好处是潜在目标之间不同数量的回合使得一刀切的攻击更难以发挥作用。就像盐,多样性和加密工作一样,攻击者必须对每个目标进行昂贵的攻击。这些障碍可能会阻止攻击者攻击您的网站:他或她注意到有更容易的目标和移动的网站。
如果您的网站很重要,那么现实情况是攻击者通常会在加密工作而不是通过加密工作。 Bruce Schneier指出加密通常是最强的联系。他们更有可能拥有你的盒子或利用他们的网络应用程序中的缺陷。一旦他们掌握了控制权,他们就可以拦截或操纵他们想要的任何数据。因此,最好只使用加密的最佳实践配置,然后将大部分精力用于在应用层查找问题。
答案 1 :(得分:2)
是的,攻击者还必须进行相同数量的轮次,以增加他的工作和时间。
答案 2 :(得分:2)
是的,这是对的。随着硬件随着时间的推移变得越来越快,为大量潜在输入计算关键值变得更加便宜和容易。随着硬件变得更好而不必切换到全新的,更昂贵的算法,增加需要执行的迭代次数允许计算密钥的成本随着时间的推移而增加。