如果攻击者想黑2^{10}用户的密码。所有这些用户都从2^{50}密码**的空间中生成一个密码,并且每个密码都使用PBKDF2来使用2^{10}迭代**。
在最坏的情况下,攻击者需要做多少散列才能获得所有密码?
我认为这将是2^{10} \cdot 2^{50} \cdot 2^{10} = 2^{70},因为在本例中,每个密码都将使用2^{10}迭代进行散列。
发布于 2023-01-30 16:48:58
我想对这个计算提出三项反对意见:
发布于 2023-02-02 00:09:50
你是怎么到达2^{10} \cdot 2^{50} \cdot 2^{10}的?据推测,它的目的是代表如下内容:
For each user u
For each password p
Compute PBKDF2(p) and compare with u.hashed_password它提供对PBKDF的2^{10} \cdot 2^{50}调用,每个调用都是2^{10}哈希函数调用。但考虑一下这一做法:
For each password p
For each user u
Compute PBKDF2(p) and compare with u.hashed_password注意,没有必要计算循环中的PBKDF,您可以这样做:
For each password p
Compute h = PBKDF2(p)
For each user u
compare h with u.hashed_password这给出了对散列函数的总共2^{10} \cdot 2^{50}调用。因此,实际上,用户数量并不会影响所需的哈希调用数。防止这种优化恰恰是盐的目的。这意味着PBKDF的输入依赖于用户的属性,因此不能将哈希计算从内部循环中吊起。
https://crypto.stackexchange.com/questions/102824
复制相似问题