主页 > imtoken安卓怎么下载 > 哈希算法的历史、原理和未来,未来的未来

哈希算法的历史、原理和未来,未来的未来

imtoken安卓怎么下载 2023-12-22 05:13:04

前言:哈希算法对于保证区块链网络的安全非常重要。 为了减少哈希冲突的可能性,要么增加哈希内部运算的复杂度,要么增加哈希输出的长度,希望攻击者的计算速度不够快。 本文分析了哈希算法的历史、原理和未来以太坊用什么算法,对我们理解区块链的安全问题很有帮助。 这篇文章是劳尔·乔丹写的。

初学者在了解区块链时,往往会接触到哈希、哈希算法等概念。 在安全方面,它们无处不在。 比特币、以太坊等节点众多的去中心化网络需要通过 P2P 进行有效的信任和验证。

这意味着这些系统需要找到以高效简洁的方式对信息进行编码的方法,并允许其参与者安全快速地验证信息。

比特币和以太坊涉及的主要概念是“区块”,这是一种包含交易记录、时间戳和其他元数据的数据结构。 这种数据结构的安全性关键在于它可以将大量的全局网络状态信息压缩成一小块信息标准,并使这一小块信息能够得到有效验证。 这条小信息称为散列。

即使仅仅改变输入信息的一个字符也会产生一个完全不同的哈希值!

即使更改输入的一个字符也会产生完全不同的哈希值!

密码哈希用于各种行业,从密码存储到文档验证系统。 基本思想是使用一种确定性算法(deterministic gorithm),它每次可以接受一个输入并生成一个固定长度的字符串。 也就是说区块链哈希算法,相同的输入总会得到相同的输出。

除了这种确定性,哈希算法还有一个特性:输入的任何细微变化都会导致输出完全不同。

散列算法的一个问题是冲突的不可避免性。 意思是:由于哈希函数输出的字符串长度是固定的,不同的输入可能会产生相同的哈希值。 冲突不好。 如果攻击者可以故意制造冲突,他可以将恶意文件或数据伪装成正确的哈希值并进行传递。 一个好的散列函数的目标是使冲突几乎不可能发生。

计算哈希值不应该是高效的,因为它会使冲突太容易实现。 散列算法应该能够抵抗“原像攻击”。 也就是说,根据已知哈希值(输入值称为原像,如s=hash(x) s)根据已知哈希值求出x应该是几乎不可能的。

以太坊用什么算法_以太坊改算法时间_2021以太坊7月1日改算法

综上所述,一个好的哈希算法应该具备以下特点:

攻击哈希

最初的哈希算法标准之一是 MD5 哈希,它广泛用于文件完整性验证(校验和)以及在 Web 应用程序的数据库中存储哈希密码。 当时它的功能很简单,因为无论输入如何,输出都是一个固定的 128 位字符串,并且它在几轮中使用低效的单向运算来计算确定性输出。

由于输出字符串长度更短,操作更简单,MD5容易被破解,容易受到生日攻击。

什么是“生日袭击”?

你可能听说过,如果一个房间里有 23 个人,那么两个生日重叠的几率是 50%以太坊用什么算法,当一个房间里有 70 个人时,这个几率会增加到 99.9%。 这就是鸽巢原理。 如果 100 只鸽子只有 99 个洞,那么每个洞必须有 2 只鸽子。

在哈希算法中,一个定长的字符串意味着一定数量的排列组合,所以当输入值达到一定数量时,不可避免地会发生冲突。

太多鸽子了!至少有一只鸽子会与另一只共用一个洞

2021以太坊7月1日改算法_以太坊用什么算法_以太坊改算法时间

鸽子太多了!至少一只鸽子会和另一只鸽子共用一个洞

MD5 对冲突的抵抗力非常弱,以至于 4GHz 奔腾处理器可以在几秒钟内产生散列冲突。 事实上,由于早期 MD5 的广泛使用,大量的前图像已经在网上泄露,你甚至可以通过简单的谷歌搜索找到它们。

哈希算法的多样性和演化

开始:SHA1 和 SHA2

美国国家安全局 (NSA) 一直是哈希算法标准的先驱。 他们首先提出了一种安全的哈希算法,SHA1。 该算法的输出是一个 160 位的定长字符串。

但是SHA1只是在MD5的基础上增加了输出长度、单向运算的次数和单向运算的复杂度,并没有做根本性的改进,使其能够抵御更强大的机器和尝试不同的攻击。 向量。

那么我们该如何改进呢?

SHA3

以太坊改算法时间_2021以太坊7月1日改算法_以太坊用什么算法

2006 年,美国国家标准技术研究院 (NIST) 开始寻找一种完全不同的 SHA2 替代方案,使其成为算法的新标准。 因此,SHA3的诞生是散列算法伟大机制的一部分,称为KECCAK。

虽然名字看起来差不多,但是SHA3在内部和之前的算法是完全不同的,因为它有Sponge Construct机制。 这种结构使用随机排列和组合来摄取和输出数据,同时还为未来的输入值提供随机源。

KECCAK256海绵结构作用于输入值

KECCAK256 海绵结构作用于输入值

SHA3​​ 保持一个内部状态使得输出消息比字符串长度长(仍然能够压缩消息),这让它能够克服以前算法的局限性。 它还在 2015 年成为 NIST 标准算法。

哈希和 PoW

当哈希算法融入区块链协议时,较老的比特币选择了SHA256算法,而以太坊则选择了改进版的SHA3(KECCAK256)作为PoW算法。

在区块链 PoW 协议中选择哈希函数的一个重要标准是计算哈希值的效率。

以太坊用什么算法_以太坊改算法时间_2021以太坊7月1日改算法

比特币SHA256算法的执行效率可以通过制造ASIC矿机等专用硬件进一步提高。 这反映在矿池中使用 ASIC 并将协议推向计算中心化。

换句话说,PoW 鼓励将计算组高效聚合成更大的组(池),以增加我们所说的哈希算力(即机器在固定时间间隔内可以计算的哈希数)。

以太坊选择了修改后的 SHA3,也称为 KECCAK256。 另外,以太坊的PoW算法(Dagger-Hashimoto)设计成硬件内存难以计算,一定程度上避免了使用ASIC矿机。

为什么比特币使用双SHA256?

比特币使用 SHA256 转换数据的方式非常有趣。 它在协议中连续两次执行算法。 请注意,这并不是为了抵御生日攻击而设计的。 显然,如果 hash(x) = hash(y) 那么也有 hash(hash(x)) = hash(hash(y)),但是为了减轻长度扩展攻击。

从本质上讲,这种攻击需要恶意攻击者知道散列输入值的长度。 将秘密字符串添加到这个已知长度会启动散列函数的一部分并破坏散列。 特征。 由于 SHA256 是 SHA2 算法家族的一员,存在这样的缺陷,而比特币通过连续运行两次哈希函数来缓解这个缺陷。

以太坊 2.0 和 BLAKE

SHA3​​ 并不是 NIST 在 2006 年发起的比赛中的唯一突破。虽然 SHA3 最终获胜,但一种名为 BLAKE 的算法紧随其后。 对于以太坊2.0分片的执行,更高效的哈希算法可以说是必不可少的。

以太坊用什么算法_2021以太坊7月1日改算法_以太坊改算法时间

BLAKE2b哈希算法是赛后高度升级优化的版本。 由于其高效率(与 KECCAK256 相比)同时保持高安全性,该算法也经过了更彻底的测试。

在现代 CPU 上计算 BLAKE2b 实际上比 KECCAK 快 3 倍。

哈希算法的未来

看起来无论我们做什么,我们要么(1)增加散列函数内部操作的复杂性,要​​么(2)增加散列输出的长度,希望攻击者的计算机速度不够快有效地产生计算碰撞。

我们网络的安全性目前依赖于单向操作原像的模糊性。 即哈希算法的安全目标是让任何人都尽可能难以找到输出相同的两个值,从而使哈希冲突的概率尽可能小,尽管仍然有无穷大可能性。 冲突。

量子计算呢? 面对量子计算,哈希算法是否足够安全?

根据目前的理解,简单的答案是:安全。 哈希算法将能够经受住量子计算的挑战。 量子计算可以破解像 RSA 这样的加密问题,它具有由巧妙的技术和理论构建的严格的底层数学结构。 哈希算法的内部结构中没有这种形式结构。

量子计算机确实可以加速哈希区块链哈希算法等非结构化问题的计算,但归根结底,量子计算机发起攻击的方式仍然是蛮力攻击,这与传统计算机没有区别。

无论我们选择哪种算法,我们显然都在朝着计算效率更高的未来迈进。 我们必须尽最大努力选择经得起时间考验的最佳工具。

矿业网络,版权所有丨如未注明,均为原创丨本站采用BY-NC-SA协议授权

转载请注明原文链接:哈希算法的历史、原理和未来,以及未来的未来