SHA-512 是抗碰撞的吗?

is SHA-512 collision resistant?

根据我读过的书,如果输入space是一个1024位数字并且输出S.H.A(Secure Hash Algorithm)是冲突resistant.But space 是一个 512 位的消息摘要那么它不应该冲突吗 (2^1024)/(2^512) 次?由于范围小于被映射的域,因此应该存在冲突。请解释我哪里出错了。

也许你的书里也提到了抗碰撞的定义?这并不意味着不会产生冲突(显然不是这种情况),而是给定一个散列,您无法轻松地创建一条消息来生成该散列。

a hash function H is collision resistant if it is hard to find two inputs that hash to the same output; that is, two inputs a and b such that H(a) = H(b), and a ≠ b

来自维基百科

发生碰撞的几率与输入大小无关。发生 512 位哈希冲突的几率是 1.4×10^77,参见 Probability table

如您所述:由于输入 space(任意大小)大于输出 space(例如 sha512 为 512 位),因此总是存在冲突。

“抗碰撞”的意思是,完全不可能发生碰撞。

在考虑输出 space“512 位”实际有多大时,您的困惑得到了解答:

2^512(512位数组的可能配置数)数量级为10^154。

作为比较:可见宇宙中的原子数在 10^80 的范围内。 一百万是 10^6。 所以我们的 'visible universes' 中有 100 万个有 10^86 个原子。 一百万乘以一百万个宇宙有 10^92 个原子。

如果您可以在单个原子上存储单个 512 位值,您需要多少个宇宙才能存储所有可能的 512 位值?

从一个特定的 512 位数字开始(假设 has 函数没有被破坏),获得碰撞的概率 p 是假设你可以产生速率为 R 的新散列并且有t 完成此操作的总时间是:

p = R*t/(2^(512/2))

(指数减半,见“birthday attach”。预期搜索space成功是在n位中找到碰撞是n/2。) 让我们插入一些示例数字:

比特币网络的拥有率目前约为 R = 200*10^15 / s(每秒 2 亿 terrahashes)。

考虑这样一种情况,即自宇宙开始以来,比特币网络的当前哈希容量就可以用于查找特定哈希值的冲突的唯一目的,即可用时间 t=13.787*10^9 years ,

那么现在发现碰撞的概率大约是 7 × 10^-41 %

同样,很难理解这个数字有多小。

编辑:在这里找到了一个有很好答案的类似问题:https://crypto.stackexchange.com/questions/89558/are-sha-256-and-sha-512-collision-resistant