区块链科技:哈希算法的过去、现在和未来
如果你学习区块链科技,你就会听说哈希和哈希算法,这似乎是无处不在的安全保障。例如,像比特币或以太坊这样管理去中心化网络和共识的机器将拥有通过 P2P 连接的数万个节点,并且需要“可信”和可验证的效率。这些系统要求信息以紧凑的格式写入,以便参与者安全、快速地进行验证。
比特币和以太坊的主要原语是区块通知,这是一种包含传输信息、时间戳和其他重要数据的数据结构。其安全性的一个关键部分是能够将所有网络状态信息压缩为简短的标准信息,必要时可以对其进行有效验证。这就是所谓的哈希。
![]()
Crypto哈希 将用于从密码存储到文件身份验证系统的任何地方。使用确定性算法的基本原理是每次获取输入并产生固定长度的序列。也就是说,使用相同的输入总是会产生相同的输出。
确定性不仅对哈希很重要,而且改变输入的单个字符也会产生完全不同的哈希。
哈希算法的问题是不可避免的碰撞。哈希是一个固定的字符串,这意味着对于任何给定的输入,不同的输入将产生相同的输出。碰撞是不好的。这意味着,如果攻击者能够按需引发此类冲突,他就可以使欺诈性文件或数据看起来是正确且适用的,并伪装成合法的。好的哈希函数的目标是让攻击者很难找到获取输入数据的方法。
哈希的计算不能太简单,这样攻击者很容易计算出碰撞。哈希算法必须能够抵抗“预攻击”。也就是说,给定哈希,应该很难计算出遵循确定性步骤来再现哈希所创造的数值的步骤。
给定 s= hash(x),查找输入会产生雪崩效应,导致完全不同的 哈希
- 碰撞的可能性非常低
- 提高效率,但不要牺牲敌对性质冲突
突破 哈希
最初的哈希算法标准之一是 MD5 哈希,它广泛用于文件集成身份验证以及在 Web 应用程序数据库中存储哈希密码。该函数非常简单,因为输出是每个输入的 128 个字符串的固定序列,并使用几轮简单的单向运算来计算确定性输出。较短的输出长度和简单的操作使MD5完全容易受到攻击,也称为生日攻击。
什么是“生日袭击”?
我们有没有听说过,如果你把 23 个人放在一个房间里,其中 2 个人生日相同的概率是 50%?如果房间里有 70 人,则概率为 99.9%。我们称之为鸽舍原则,也就是说,如果你将100只鸽子放入99个盒子中,那么你还必须将2只鸽子放入1个盒子中。换句话说,固定输出意味着碰撞可以找到固定的顺序。事实上,
![]()
MD5 非常容易受到碰撞。家里使用的2.4GHz处理器可以在几秒钟内计算出哈希碰撞。另外,为了当今网页的早期使用,网上也可以制作出很多MD5预制图形,在Google上搜索哈希就可以轻松找到。
哈希算法的多元化与创新
起点:SHA1和SHA2
NAS被誉为哈希算法标准的先驱,最初的想法是Secure Kong算法或SHA1,它是一个160个固定长度创建退出。不幸的是,SHA1 通过增加输出长度、单向操作的数量以及单向操作的复杂性来增加 MD5 算法,但这并没有对更强大的机器提供任何根本性的改进。尝试不同的攻击。
我们怎样才能做得更好?
进入SHA3时代
2006年,美国国家标准技术研究所提出了一场寻找SHA2替代品的竞赛,SHA2在性质上有九个不同,从而制定了标准。因此,SHA3,作为哈希算法的一部分,现在被称为KECCAK,诞生了。
虽然表面看起来一样,但SHA3内部却大不相同,这是由于一种称为海绵结构的机制,它使用随机排列来进行数据输入和输出,同时也为未来的输入提供随机性。其根源在于哈希算法。
![]()
SHA3 保留了内部状态并具有有关输出的更多信息,避免了以前算法的限制。 2015 年,它通过 NIST 成为标准。
哈希算法和工作量证明
在考虑将哈希算法集成到区块链协议中时,比特币使用较旧的 SHA256 算法,但以太坊使用修改后的 SHA3 算法作为工作量证明算法。选择抗工作负载的区块链哈希函数是重要一环,但计算效率堪称哈希。
比特币 SHA256 算法通过专用硬件 ASIC 执行高效计算。在矿池中,很多算法都是写在ASIC上的,但这也将保证整个协议走向中心化计算。换句话说,工作量证明鼓励高效的计算机聚集到矿池中,同时也增加了哈希的力量。或者是一台计算每个时间间隔哈希数量的机器。
以太坊使用改进的 SHA3,称为 KECCAK256。此外,以太坊的工作量证明算法 Dagger-Hashimoto 意味着内存很难在硬件上计算。
![]()
为什么比特币使用双重SHA256算法?
比特币将有有趣的方式通过 SHA256 算法获取哈希数据,因为它将在协议中运行该算法的两次迭代。需要注意的是,这并不是针对生日攻击的对策,因为如果 hash(x) = hash(y),则 hash(hash(x)) = hash(hash(y))。然而,双SHA256算法用于缓解长度扩展攻击。
从本质上讲,这种类型的攻击涉及恶意欺诈者,他知道哈希输入的长度,并可以利用它通过向哈希值添加私有字符串来欺骗哈希启动一些内部状态。 SHA256 是 SHA2 算法家族的一员,它逃脱了这个陷阱,而比特币通过计算哈希两次来缓解这个陷阱。
以太坊 2.0 和 BLAKE 算法
SHA3 并不是 2006 年 NIST 哈希竞赛中唯一的突破,虽然 SHA3 获胜,但一种名为 BLAKE 的算法位居第二。对于以太坊2.0分片技术的部署,更有效的哈希几乎是一个特性需求,研究团队对此非常重视。 BLAKE2b 哈希算法,这是BLAKE的更新版本。与KECCAK256算法相比,因其效率高、安全性高而得到广泛应用。
BLAKE2b 的计算速度实际上比现代 CPU 上的 KECCAK 快 3 倍。
哈希算法的未来
无论我们做什么,我们只能(1)增加哈希内部运算的复杂度,或者(2)增加哈希输出的长度,希望攻击者的计算机速度不够快,无法有效计算碰撞。
在网络安全成为一条单行道之前,我们依赖于图像的模糊性。换句话说,哈希算法的安全目标是让任何人都尽可能难以找到能够获得相同哈希输出的值,尽管该值对于可能的冲突是有限的。
未来会有量子计算机吗?哈希算法还安全吗?
根据目前的知识,答案是肯定的。哈希算法将通过量子计算机的考验。量子计算能够突破的是底层的数学结构,它是严谨的,是用巧妙的技术和理论构建的,比如RSA加密。另一方面,哈希算法的内部框架结构不太正式。
量子计算机可以加快计算速度,就像哈希算法一样,但最终它们也会被利用来执行攻击,就像今天的计算机一样。
无论我们为我们的协议选择哪种算法,很明显我们都处于高效计算的未来,我们必须使用最好的方法来获得正确的工具,而那些希望经受住考验的人时间的考验。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网