发布于 2022-11-23 22:09:37
正如您在其中一个评论中提到的,如果您不能信任客户端不进行散列泛滥尝试,那么您就不能相信客户端会给出适当的散列。必须在服务器上重新计算哈希以验证它,从而违背了让客户端计算哈希的目的。否则,客户端可以简单地分配不正确的散列以导致散列泛滥。
此外,正如维基百科关于SipHash的文章中所讨论的:
没有键的散列函数(如SHA )只有在使用整个输出时才能抵抗冲突。如果用于生成一个小的输出,例如将索引放入实际大小的哈希表中,那么任何算法都无法避免冲突;攻击者只需尽可能多地尝试就可以得到可能的输出。
这就是说,即使您使用加密安全的哈希函数,当您通过只获取部分位或通过使用哈希模块计算哈希桶来减少值集时,您已经增加了碰撞概率。因此,如果攻击者同时知道哈希算法和约简算法,则只需生成随机值、散列,并将其还原,直到在约简空间中发现冲突。这将比试图找到原始哈希函数的冲突要容易得多。因此,防止散列泛滥的唯一方法是使用适当的键控哈希函数,在该函数中,攻击者不知道密钥。
https://crypto.stackexchange.com/questions/101669
复制相似问题