受关于破解KeePass数据库的困难的问题的启发,我想知道在加密应用程序(例如,KeePass)中更改默认迭代次数是否会增加安全性。我希望这个问题适用于各种应用程序;如果不是,我想今天我对KeePass很好奇。
我的推理是,攻击者不知道迭代的次数,因此有两个选项:
因为#2的工作要多得多,所以对用户来说更改默认值是一个更安全的选择。我的理论是,使用像6,001这样的数字实际上大大提高了安全性,因为攻击者将把精力集中在默认值6,000上。
我读过一些相关的问题,它们通常讨论要选择多少次迭代。我不清楚的是,使用KeePass这样的应用程序(攻击者知道默认编号)是否会使更改默认值变得重要。如果我的预感是错误的,您将告诉我,在KeePass中使用6,001次迭代和使用6,000次迭代一样安全。
发布于 2015-03-16 16:34:36
在开始之前,我认为重要的是要指出,循环计数存储在KeePass字典文件头中,这样KeePass本身就可以打开您的密码文件,而不管其首选项中的设置如何。否则,如果另一台机器有不同的迭代次数,您就无法在另一台机器上打开KeePass文件,而不首先将KeePass重新配置为相同的迭代值(您甚至可能不记得)。
试图保持迭代次数的秘密在很大程度上是没有意义的,这与克尔霍夫原理是直接矛盾的-只有密码应该被认为是秘密的;算法及其一般参数应该被认为是已知的。
要记住的最重要的一点是,PBKDF2的设计是为了防止预计算攻击(例如彩虹表)和暴力攻击,攻击者可以立即访问哈希或类似的甲骨文。增加迭代次数会使攻击者在每次猜测密码时更加努力,而代价是合法地打开保险库所需的时间更长。
本质上,安全系统依赖于这样一个事实:在输入已知密码时,必须执行一项工作量(让我们称之为W),但攻击者必须尝试数十万个密码(100000 * W),因此必须完成比您多几十万倍的工作。如果你的KDF特别快,那么W可能只需要一毫秒左右的计算,这意味着100000 *W只是一分钟左右。但是,如果可以容忍一秒钟的延迟,则可以增加工作因子W,使得攻击者的工作需要数天或数年,而不是几分钟。
发布于 2015-03-16 16:34:14
您不正确地假设:迭代次数是keepass文件格式的“公共”标题的一部分。
它是必要的,否则Keepass本身就不知道要执行多少次迭代(它必须执行all)。您可以通过检查keepass源代码来验证这一点。
这并不意味着增加keepass用于密钥派生的迭代量是没有用的,它只是意味着增加一个迭代对安全性没有多大作用(它或多或少会增加1/6000)
https://security.stackexchange.com/questions/83900
复制相似问题