首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >避免没有秘密密钥的散列泛滥?

避免没有秘密密钥的散列泛滥?
EN

Cryptography用户
提问于 2022-08-29 10:32:56
回答 1查看 86关注 0票数 3

我目前正在构建一个发电机文件育托的实现。把它想象成一个巨大的、分布的、散列图。

要找到保存密钥的节点,我使用会合散列 (与一致性散列相比),这需要4哈希。为了避免哈希泛滥攻击,我使用一个键控哈希函数,使用客户端未知的密钥。

我的目标是让客户端执行哈希而不是服务器。是否有一种替代键控哈希的方法,这样我就可以抵御散列泛滥攻击,但这样客户端本身就可以执行散列了吗?

如果我使用的不是像xx散列这样的非密码散列,而是使用像blake这样的加密哈希,那么我能在防散列泛滥的同时丢弃密钥吗?

EN

回答 1

Cryptography用户

回答已采纳

发布于 2022-11-23 22:09:37

正如您在其中一个评论中提到的,如果您不能信任客户端不进行散列泛滥尝试,那么您就不能相信客户端会给出适当的散列。必须在服务器上重新计算哈希以验证它,从而违背了让客户端计算哈希的目的。否则,客户端可以简单地分配不正确的散列以导致散列泛滥。

此外,正如维基百科关于SipHash的文章中所讨论的:

没有键的散列函数(如SHA )只有在使用整个输出时才能抵抗冲突。如果用于生成一个小的输出,例如将索引放入实际大小的哈希表中,那么任何算法都无法避免冲突;攻击者只需尽可能多地尝试就可以得到可能的输出。

这就是说,即使您使用加密安全的哈希函数,当您通过只获取部分位或通过使用哈希模块计算哈希桶来减少值集时,您已经增加了碰撞概率。因此,如果攻击者同时知道哈希算法和约简算法,则只需生成随机值、散列,并将其还原,直到在约简空间中发现冲突。这将比试图找到原始哈希函数的冲突要容易得多。因此,防止散列泛滥的唯一方法是使用适当的键控哈希函数,在该函数中,攻击者不知道密钥。

票数 1
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/101669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档