主页 > imtoken钱包网址 > 哈希算法的过去、现在和未来

哈希算法的过去、现在和未来

imtoken钱包网址 2023-04-13 06:12:29

新手学习区块链技术的时候,听说过哈希和哈希算法,这似乎是无处不在的安全保障。 例如,比特币或以太坊,运行去中心化网络和共识的机器,将有数以万计的节点通过 P2P 连接,需要“去信任”和可验证的效率。 这些系统要求以紧凑的格式编写信息,以保证安全并由参与者快速验证。

比特币和以太坊的主要原语是区块概念,这是一种包含传输信息、时间戳和其他重要数据的数据结构。 它们安全性的一个重要部分是能够将网络的所有状态信息压缩成非常短且标准的信息,可以在需要时进行有效验证,这称为哈希。

50哈希值能挖到多少比特币_比特币算法源代码_比特币中使用的哈希算法是

加密哈希无处不在,从密码存储到文件验证系统。 使用确定性算法的基本原理是每次获取输入并生成固定长度的字符串。 也就是说,使用相同的输入将始终导致相同的输出。

确定性不仅对散列很重要,而且更改输入的单个字符可以产生完全不同的散列。

散列算法的问题是冲突的不可避免性。 哈希是固定的字符串,这意味着对于每个输入,不同的输入将产生相同的输出。 碰撞是不好的。 这意味着,如果攻击者能够按需创建此类冲突,他就可以使欺诈性文件或数据看起来像正确、正确的哈希值,并伪装成合法的。 一个好的散列函数的目标是让攻击者难以找到获取输入数据的方法。

计算散列不能太简单,因为这会让攻击者很容易计算出碰撞。 哈希算法需要抵抗“预攻击”。 也就是说,给定一个散列,应该很难计算追溯确定性步骤来重现由散列创建的值。

给定 s = hash(x),找到 x 几乎是不可能的。

总之,一个“好的”哈希算法将具有以下三个属性:

比特币算法源代码_50哈希值能挖到多少比特币_比特币中使用的哈希算法是

- 更改输入中的一个字符会产生雪崩效应,导致完全不同的哈希值

- 极低的碰撞概率

- 在不牺牲抗碰撞性的情况下提高效率

破碎的散列

最初的哈希算法标准之一是 MD5 哈希,它广泛用于文件完整性验证,以及在 Web 应用程序数据库中存储哈希密码。 此函数非常简单,因为输出是固定的,每个输入 128 个字符串,并使用几轮简单的单向运算来计算其确定性输出。 其输出长度短,操作简单,使MD5彻底脆弱比特币中使用的哈希算法是,被称为生日攻击。

什么是“生日袭击”?

我们听说过,如果你把 23 个人放在一个房间里,有 50% 的几率他们中有 2 个生日相同? 将这个数字提高到一个房间里有 70 人,你就有 99.9% 的概率。 这就是我们所说的鸽笼原理,就是说如果你把100只鸽子放在99个盒子里,每个盒子里要放2只鸽子。 换句话说,固定输出意味着碰撞可能会找到固定的顺序。

比特币中使用的哈希算法是_50哈希值能挖到多少比特币_比特币算法源代码

比特币中使用的哈希算法是_50哈希值能挖到多少比特币_比特币算法源代码

其实MD5的抗碰撞能力是很脆弱的,家里用的2.4GHz的处理器几秒钟就可以算出hash碰撞。 而且,对于现在网页的早期使用,网上也可以制作很多MD5预制图形,搜索hashes的话,在Google上很容易找到。

哈希算法的多样化与创新

开始:SHA1 和 SHA2

NAS被称为散列算法标准的先驱,最初的想法是安全散列算法,即SHA1,它创建了一个固定长度的输出160。不幸的是,SHA1通过增加输出长度形成了MD5算法,单向操作,以及单向操作的复杂性,但这并没有对更强大的机器提供任何根本的改进。 尝试不同的攻击。

我们怎样才能做得更好?

进入SHA3时代

比特币中使用的哈希算法是_比特币算法源代码_50哈希值能挖到多少比特币

2006 年,美国国家标准与技术研究院提出了一项寻找 SHA2 替代品的竞赛,该替代品本质上有九种不同,从而促成了标准。 因此,SHA3 作为现在已知的 KECCAK 散列算法的一部分诞生了。

虽然表面上相同,但 SHA3 通过一种称为海绵结构的机制在内部非常不同,它使用随机排列来输入和输出数据,同时也为未来的输入提供随机性来源,这进入了哈希算法。

比特币算法源代码_50哈希值能挖到多少比特币_比特币中使用的哈希算法是

SHA3​​保持内部状态,输出的信息更多,避免了以往算法的局限性。 2015 年,它通过 NIST 成为标准。

哈希算法和工作量证明

在考虑将哈希算法集成到区块链协议中时,比特币使用较旧的 SHA256 算法,而以太坊使用修改后的 SHA3 算法作为工作量证明算法。 选择工作量证明区块链的哈希算力是一个重要的部分,但计算效率称为哈希。

比特币的 SHA256 算法通过特定的硬件 ASIC 进行有效的计算。 在矿池中,很多算法都是写在ASIC上的,但这也会让整个协议向中心化计算方向发展。 也就是说,工作量证明激励高效的计算机聚集到矿池中,同时也增加了哈希算力。 或者一台可以计算每个时间间隔的哈希数的机器。

比特币算法源代码_比特币中使用的哈希算法是_50哈希值能挖到多少比特币

以太坊使用称为 KECCAK256 的修改后的 SHA3。 而且,以太坊的工作量证明算法,Dagger-Hashimoto 意味着内存很难计算硬件。

比特币算法源代码_50哈希值能挖到多少比特币_比特币中使用的哈希算法是

为什么比特币使用双SHA256算法?

比特币有一种通过 SHA256 算法获取散列数据的有趣方式,因为它在协议中运行了该算法的 2 次迭代。 请注意,这不是针对生日攻击的对策,因为很明显如果 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 算法相比,由于其高效性和高安全性而被广泛使用。

50哈希值能挖到多少比特币_比特币算法源代码_比特币中使用的哈希算法是

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

哈希算法的未来

无论我们做什么,我们只能(1)增加内部散列运算的复杂性,或者(2)增加散列输出的长度,希望攻击者的计算机速度不够快,无法有效地计算碰撞。

我们依靠正面形象的模糊性来进行网络安全单向操作。 也就是说,哈希算法的安全目标是尽可能让每个人都很难找到一个可以得到相同哈希输出的值,尽管可能的碰撞是有限的。

未来会有量子计算机吗? 哈希算法还安全吗?

按照目前的了解,答案是肯定的。 哈希算法将经得起量子计算机的考验。 量子计算可以打破的是一个严格的、底层的数学结构,它是由巧妙的技术和理论构建的,比如 RSA 加密。 另一方面,哈希算法在内部框架中没有那么正式的结构。

量子计算机确实可以加速计算,例如哈希算法,但最终,它们也可以像今天的计算机一样被利用来执行攻击。

不管我们为协议选择什么样的算法,很显然我们都处在高效计算的未来比特币中使用的哈希算法是,我们必须用最好的方式去获得合适的工具,有希望的人经得起时间的考验。

50哈希值能挖到多少比特币_比特币算法源代码_比特币中使用的哈希算法是