理解加密货币中的哈希函数

哈希是一个过程,它使用称为哈希函数的数学公式从可变大小的输入生成固定大小的输出。虽然并非所有哈希函数都涉及加密,但加密哈希函数对于加密货币至关重要,使区块链和其他分布式系统能够实现显著的数据完整性和安全性。

常规哈希函数和加密哈希函数都是确定性的,这意味着只要输入数据保持不变,哈希算法将始终产生相同的结果(也称为摘要或哈希)。

加密货币哈希算法通常被设计为单向函数,使得在没有大量时间和计算资源的情况下难以逆向操作。换句话说,从输入生成输出相对容易,但反向操作则相当具有挑战性。一般而言,找到输入越困难,哈希算法被认为就越安全。

哈希函数是如何工作的?

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

为了说明,让我们将单词 "Gate" 和 "Gate" 通过 SHA-256 哈希算法 (,也就是比特币中使用的那种。

SHA-256

输出

输出 )256 位(

Gate

7f43e4e2c9d9e6249ba0df8a911b46400f6fd5e9993a5f1ea65e4633e2de5a6c

Gate

9c6b057a2b9d96746c38a3f4e466678e1b4c4425ff8fe9659e96c903e7a1f3cc

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

如果我们通过SHA-1哈希算法传递相同的输入,我们将得到以下结果:

SHA-1的

输出

输出 (160 位)

Gate

f8e4eba8d46e2b1079e6a1a8abf0a0d8c3a81d73

Gate

b7e23ec29af22b0b4e41da31e868d57226121c84

有趣的是,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分钟###。

请注意,矿工不需要寻找冲突,因为他们可以生成多个作为有效输出的哈希(,且以一定数量的零)开头。因此,对于给定的区块,存在多个可能的解决方案,矿工只需找到其中之一,具体取决于由挖矿难度确定的阈值。

由于比特币挖矿是一项昂贵的任务,矿工没有理由去作弊,因为这会导致巨大的经济损失。因此,加入区块链的矿工越多,它就会变得越大越强。

结论

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

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