我很确定这是一个非常糟糕的方法(理论上),但我的一个客户正在这样做,我想知道…以这种方式执行pbkdf-2 (使用2000次迭代)有多糟糕?
a = PBKDF2(x, y)
b = PBKDF2(y, x)
x is the username (password in pbkdf2)
y is the password (salt in pbkdf2)
2000 iterations然后,a用于系统中的某些身份验证,"b“用于加密。
a和x也是存储的,因此是已知的。
它是受到某种类型的攻击,还是仅仅是一个非常糟糕的密码噩梦,只会受到暴力攻击?
更具体地说:a被用作从DB检索用户数据的密钥(因此,一个被发送到服务器),数据被返回并被部分加密。你需要b来解密你得到的东西。
假设攻击者可以访问存储这些散列的数据库。他会发动什么样的攻击?
发布于 2014-06-25 09:32:41
它是受到某种类型的攻击,还是仅仅是一个非常糟糕的密码噩梦,只会受到暴力攻击?
您正在计算两次PBKDF2,这需要两倍的时间。攻击者执行蛮力或字典攻击只需计算其中一个来验证他的猜测。
这意味着,如果您只使用了一次PBKDF2和两次迭代,然后使用香港发展基金快速地派生出两个键,那么攻击就会变得比它们简单一倍。
实际上,如果在PBKDF2中使用128位键和SHA-256,则只需拆分输出。
更具体地说:a被用作从DB检索用户数据的密钥(因此,a被发送到服务器),返回数据并对其进行部分加密。你需要b来解密你得到的。
如果a是在清除发送,窃听者可以使用它的野蛮武力或字典攻击,这也会找到b。PBKDF2的2000迭代并不能使密码对此类攻击无懈可击,尽管它显然有帮助。
假设攻击者可以访问存储这些散列的数据库。他会发动什么样的攻击?
暴力攻击和字典攻击,可能并不比只知道b更容易,但就像我上面写的那样,就像使用了更好的密钥派生系统一样容易两倍。
就像其他答案提到的,如果有人使用他们的用户名作为密码,这将立即作为a=b可见,因此不需要搜索。然而,这将是第一次猜测在任何情况下,所以这可能不是什么大问题。
https://crypto.stackexchange.com/questions/17743
复制相似问题