什么是加密哈希碰撞,有哪些碰撞类型?

 2023-11-09 16:51:48发布 2023-11-09 16:52:44更新

加密哈希函数是一种数学算法,它接受输入并生成固定长度的字符串,通常是每个会输入唯一的片段。它是一种单向函数,这意味着,在计算上不可能从哈希中检索原始输入。这些函数的主要用于验证数据完整性。当两个不同的输入产生相同的输出哈希时,就会发生加密哈希碰撞。

碰撞攻击的类型

经典碰撞攻击

此类攻击者试图找到两个不同的消息,例如m1和m2,使得m1的哈希值等于m2的哈希值。该算法会选择此类攻击中两条消息的内容;攻击者无法控制它们。

经典碰撞攻击

经典碰撞攻击

选择前缀碰撞攻击

给定两个不同的前缀p1和p2,攻击者尝试找到两个附加项m1和m2,使得p1与m1连接的哈希值等于p2与m2连接的哈希值。这种攻击比经典的碰撞攻击更能成功。

选择前缀碰撞攻击

选择前缀碰撞攻击

哈希碰撞的危害

碰撞是有问题的,因为它们能通过多种方式被恶意使用。

例如,如果在数字签名中使用哈希函数,则攻击者可能能够创建具有与合法文档相同的哈希值的文档。这将允许攻击者冒充其他实体并伪造数字签名。

针对MD5哈希函数的碰撞攻击就是一个很好的实例。研究人员生成了两个不同的128字节序列,它们通过哈希得到相同的MD5哈希值。

由于此漏洞,一个流氓证书颁发机构得以创建,该机构随后可用于为任何网站生成欺诈性SSL证书。

生日悖论和碰撞

一种被称为“生日悖论”或“生日问题”的现象让碰撞更有可能发生。简单来说,生日悖论指出,在一个23人的团体中,有两个人同一天生日的可能性大于均等。

同样,找到哈希为相同值的两个不同输入的可能性要比预期的大,尤其在输入数量增加的情况下更是如。

降低碰撞风险

虽然没有一个哈希函数是完全抗碰撞的,但有些函数比其他函数更难利用。当碰撞攻击对于特定哈希函数变得可行时,出于加密目的,它被视为“已损坏”,并且不再支持使用它,而是建议使用更稳健的算法。

例如,在发现MD5和SHA-1中的漏洞后,业界转向了更安全的替代方案,例如SHA-256。

加密哈希的应用

加密哈希可以让比特币交易变得安全,或者以太坊智能合约顺利执行。

比特币

将比特币想象成一张极好的数字彩票。世界各地的矿工竞相解决复杂的难题。第一个破解它的人将获得这张宝贵的彩票:向比特币区块链添加新区块的权利。

本次竞赛由SHA-256哈希算法提供支持。但这里有一个问题:如果哈希碰撞潜入,那如同两个人领取了同一张彩票。混乱将会随之而来,并可能出现双花和虚假交易。

以太坊

以太坊凭借其智能合约将加密货币游戏提升到了一个新的水平。将这些合约视为自动执行的数字协议,其中的条款是一成不变的(或者更确切地说,已是一种不变的代码)。

这些合约依赖于以太坊的加密骨主链。在哈希过程中遇到故障?那么这些故障可能会使这些智能合约变得不那么智能,从而危及整个执行过程。

山寨币

除了比特币和以太坊之外,还有一个充满活力的山寨币世界,在这里每种加密货币都按照自己的加密曲调运行。

从Scrypt到X11再到CryptoNight,这些不同的算法各有利弊。这就像加密自助餐一样,但有一点不同:每道菜发生哈希碰撞的可能性各不相同。开发人员和用户都需要知道他们正在吃的什么菜!

区块链

将区块链想象成一本数字日记,其中每一页(或块)都引用之前的一页。这种引用就是加密哈希的魔力。如果有人试图偷偷地更改某一页,整本日记都会出现被篡改的迹象。

但如果发生哈希碰撞,就好像两个页面占据了同一个位置一样,这就威胁到了我们对日记故事的信任度。

推荐阅读