什么是哈希?

哈希是从可变大小的输入生成固定大小输出的过程。这是通过使用称为哈希函数的数学公式实现的(,作为哈希算法)。

虽然并非所有的哈希函数都涉及加密,但加密哈希函数在加密货币中是至关重要的。正是由于它们,区块链和其他分布式系统能够实现显著的数据完整性和安全性。

传统哈希和加密哈希函数都是确定性的。确定性意味着只要输入保持不变,哈希算法就会始终产生相同的输出 (,也称为摘要或哈希)。

通常,加密货币哈希算法被设计为单向函数,这意味着它们无法在没有大量时间和计算资源的情况下轻易逆转。换句话说,从输入生成输出相对容易,但从输出单独生成输入则相对困难(。一般来说,找到输入越困难,哈希算法被认为就越安全。

哈希函数是如何工作的?

不同的哈希函数会产生不同大小的输出,但每种哈希算法的可能输出大小始终是固定的。例如,SHA-256算法只能产生256位的输出,而SHA-1则始终会生成160位的摘要。

为了说明,让我们通过SHA-256哈希算法)运行单词"Gate"和"Gate",这是比特币中使用的算法(。

SHA-256

输入

输出 )256 位(

Gate

df5aac67efed6b70d4f56eab7d003e73a36910fd5b5eb0e493536afdebea7a42

c19edf1e2b201d93c6ba5f2a565c22b0a3b8f5604ca4c59eecb2bc2c3c1ec247

注意到首字母的小变化)导致了完全不同的哈希值。但由于我们使用的是SHA-256,输出始终具有固定的256位或64个字符的大小( - 无论输入大小如何。此外,无论我们将这两个词通过算法运行多少次,两个输出将保持不变。

另一方面,如果我们通过SHA-1哈希算法运行相同的输入,我们将得到以下结果:

SHA-1的

输入

输出 )160 位(

Gate

b3f40a0b9ca8d0ea445fc6a9aa659879283ca5bf

a3ac20fb7ca4d1b49ce3db98e7cbc9ccbe038bc1

值得注意的是,SHA 代表安全哈希算法。它指的是一组加密哈希函数,包括 SHA-0 和 SHA-1 算法,以及 SHA-2 和 SHA-3 组。SHA-256 是 SHA-2 组的一部分,还有 SHA-512 和其他变体。目前,只有 SHA-2 和 SHA-3 组被认为是安全的。

它们为什么重要?

传统哈希函数有广泛的应用场景,包括数据库查找、大文件分析和数据管理。另一方面,密码学哈希函数在信息安全应用中被广泛使用,例如消息认证和指纹识别。在比特币中,密码学哈希函数是挖矿过程的重要组成部分,同时在生成新地址和密钥时也发挥着作用。

哈希的真正力量在处理大量信息时显现出来。例如,可以将一个大文件或数据集通过哈希函数,然后使用其输出快速验证数据的准确性和完整性。这是由于哈希函数的确定性特征:输入将始终产生简化和压缩的输出 )哈希(。这种技术消除了存储和“记住”大量数据的需要。

哈希在区块链技术的背景下特别有用。比特币区块链有几种涉及哈希的操作,其中大多数都在挖矿过程中。事实上,几乎所有的加密货币协议都依赖哈希将交易组链接和压缩成区块,并且还产生每个区块之间的加密链接,有效地创建了区块链。

密码哈希函数

再次,实施加密技术的哈希函数可以定义为加密哈希函数。通常,破解加密哈希函数需要无限次的暴力尝试。为了让某人“逆向”一个加密哈希函数,他们需要通过反复试验来猜测输入是什么,直到产生相应的输出。然而,也存在不同的输入产生完全相同的输出的可能性,在这种情况下,会发生“碰撞”。

从技术上讲,密码学哈希函数需要遵循三个属性才能被认为是有效安全的。我们可以将它们描述为抗碰撞性、抗预映像性和抗第二预映像性。

在讨论每个属性之前,让我们用三句话总结它们的逻辑。

  • 碰撞抗性:难以找到两个不同的输入产生相同的哈希作为输出。

  • 预映像抵抗:无法“反向”哈希函数 ) 找到给定输出的输入 (.

  • 第二前像抗性:难以找到任何与指定输入发生碰撞的第二输入。

) 碰撞抵抗

如前所述,当不同的输入产生完全相同的哈希时,就会发生碰撞。因此,哈希函数被认为是抗碰撞的,直到有人找到碰撞。请注意,对于任何哈希函数,碰撞总是会存在,因为可能的输入是无限的,而可能的输出是有限的。

换句话说,当找到碰撞的可能性低到需要数百万年的计算时,哈希函数是抗碰撞的。因此,虽然没有完全无碰撞的哈希函数,但其中一些足够强大,可以被认为是抗碰撞的(例如,SHA-256)。

在各种SHA算法中,SHA-0和SHA-1组已不再安全,因为已发现碰撞。目前,SHA-2和SHA-3组被认为是抗碰撞的。

预影抵抗

预影像抵抗性属性与单向函数的概念相关。当某人找到生成特定输出的输入的概率非常低时,哈希函数被认为是预影像抵抗的。

请注意,这个属性与之前的不同,因为攻击者会试图通过观察给定的输出来猜测输入是什么。另一方面,碰撞发生在某人找到两个不同的输入生成相同的输出,但使用了哪些输入并不重要。

预映像抗性属性对数据保护非常有价值,因为消息的简单哈希可以证明其真实性,而无需披露信息。实际上,许多服务提供商和网络应用程序存储和使用从密码生成的哈希,而不是明文密码。

( 第二原像抗性

简单来说,我们可以说第二前像抗性介于另外两个属性之间。第二前像攻击发生在某人设法找到一个特定输入,该输入生成与他们已经知道的另一个输入相同的输出。

换句话说,第二原像攻击涉及寻找碰撞,但不是寻找两个随机输入生成相同的哈希,而是寻找一个生成与另一个特定输入生成的相同哈希的输入。

因此,任何抗碰撞的哈希函数也抵御第二前像攻击,因为这些攻击总是意味着一个碰撞。然而,在抗碰撞函数上仍然可以执行前像攻击,因为这涉及从单个输出中找到单个输入。

挖矿

比特币挖矿涉及许多步骤,其中包括哈希函数,例如验证余额、链接交易输入和输出,以及在区块内对交易进行哈希以形成梅克尔树。但比特币区块链安全的主要原因之一是矿工需要执行大量的哈希操作,以最终找到下一个区块的有效解决方案。

具体来说,矿工在为他们的候选区块创建哈希值时需要尝试各种不同的输入。本质上,只有在生成以一定数量的零开头的输出哈希时,他们才能验证自己的区块。零的数量决定了挖矿难度,并且根据分配给网络的哈希率而有所不同。

在这种情况下,哈希率代表投入比特币挖矿的计算能力。如果网络的哈希率增加,比特币协议将自动调整挖矿难度,以使挖掘一个区块所需的平均时间保持在接近10分钟。相反,如果几个矿工决定停止挖矿,导致哈希率显著下降,挖矿难度将被调整,从而使挖矿变得更容易),直到平均区块时间恢复到10分钟###。

请注意,矿工不需要寻找冲突,因为他们可以生成多个有效输出的哈希###,且这些输出以一定数量的零(开头。因此,对于给定的区块,存在多个可能的解决方案,矿工只需要找到其中一个 - 根据挖矿难度决定的限制。

由于比特币挖矿是一项昂贵的任务,矿工没有理由作弊,因为这将导致巨大的经济损失。遵循区块链的矿工越多,区块链就越大越强大。

最终想法

毫无疑问,哈希函数是计算机科学中必不可少的工具,尤其是在处理大量数据时。当与加密技术结合时,哈希算法可以非常灵活,以多种不同方式提供安全性和身份验证。因此,加密哈希函数对几乎所有的加密货币网络都是至关重要的,因此了解它们的属性和运行机制对任何对区块链技术感兴趣的人来说都是非常有用的。

IN-5.56%
查看原文
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 评论
  • 转发
  • 分享
评论
0/400
暂无评论
交易,随时随地
qrCode
扫码下载 Gate App
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)