首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否有一个简单的公式来计算密码散列函数中有多少输入产生相同的输出,即输入大于输入?

是否有一个简单的公式来计算密码散列函数中有多少输入产生相同的输出,即输入大于输入?
EN

Cryptography用户
提问于 2023-04-03 06:39:14
回答 1查看 445关注 0票数 2

假设我使用加密哈希函数散列384位消息,并生成128位的哈希摘要。我知道,由于针孔原理,许多相同大小的输入将产生相同的128位哈希摘要。

在加密哈希函数中,将产生相同128位摘要的384位消息的估计数量如何?有一个简单的公式来估计我给出的一个比输出更大的输入的碰撞次数吗?

我找到了论坛上的一个问题,但我不知道这个公式在这里是否适用:

(2^384)/(2^128)

/\,这是计算我在这个问题中要求什么的公式吗?

EN

回答 1

Cryptography用户

回答已采纳

发布于 2023-04-03 07:04:53

产生相同输出的平均输入数显然是输入数除以输出数,即数量。

2^{384}/2^{128}

在这种情况下。为了进一步澄清,如在注释中,这里的“平均”是在集合(2^{128})^(2^{384})可能的函数从384-bit位字符串到128位位字符串,因为假设是我们一致地绘制这些函数之一随机。

由于一个好的哈希函数可以建模为一个随机映射,我们可以说更多关于这一点,基于垃圾桶-球范式。

要开始,请参阅维基百科获得更多细节这里。在他们的定义中,我们将有m=2^{384}n=2^{128}.,例如,一旦m>n \ln n,所有的输出都被一些输入方法1所达到的概率。这就是所谓的优惠券收集器问题,请查一下。我们也可以用大多数的球、最少的球等来估计垃圾箱的负荷。拉布在网上有一篇论文,标题是“垃圾箱中的球:一个严密的分析”,上面有更多的技术细节。

在注释中,输入数的分布导致一个固定的散列输出值,可以使用泊松近似,然后用平均\mu=2^{256}和标准差\sigma=2^{128}.的高斯近似。

请注意,这只是一个模型,虽然通常非常精确,因为任何给定的哈希函数都是确定性的。

编辑:

Raab和Steger available 这里的论文中也有关于有多少输入映射到最流行的哈希输出的结果。这里有m=n^3n=2^{128}.,因此我们在定理1的最后一个例子中,mn大,即m\geq c n (\ln n)^3. (事实上,自从\log_2(\ln 2^{128})^3 \approx 19.4.以来,甚至m>2^{148}也会把我们放到这个情况中)。

应用这一结果,我们可以看到,最大载荷的概率很高,等于

\frac{m}{n}+\sqrt{\frac{2 m \ln n}{n}(1-o(1))}

在那里,o(1)很快就会变成零。快速计算

2^{256}+\sqrt{2^{385-128} \ln (2^{128})}\approx 2^{256}+\sqrt{2^{257+6.5}}=2^{256}+2^{131.5}

作为bin中期望的最大负载(即固定哈希输出)。有趣的是,与Ilmari在评论中给出的近似值相比,这个值大约在2^{3.5} \sigma \approx 11.3 \sigma

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

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

复制
相关文章

相似问题

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