哈希:密码学和区块链中的基本概念

哈希是一个将任意大小的数据转换为固定长度字符串的过程。这个过程是通过被称为哈希函数的数学公式实现的,作为算法被实现。

虽然并非所有哈希函数都涉及加密,但所谓的加密哈希函数在加密货币的世界中至关重要。正是因为它们,区块链和其他去中心化系统才能实现高水平的数据完整性和安全性。

哈希函数,无论是传统的还是加密的,都是确定性的。这意味着,只要输入不变,算法总是会产生相同的输出 ( 也称为摘要或哈希)。

一般来说,加密货币中的哈希算法被设计为单向函数,这意味着在没有大量时间和计算资源的情况下,无法轻易地反转。换句话说,从输入生成输出相对简单,但反之则极为复杂。一般而言,找到原始输入的难度越大,哈希算法被认为就越安全。

哈希函数的工作原理

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

为了说明,我们将"Gate"和"Gate"通过比特币中使用的SHA-256哈希算法(处理。)。

SHA-256

入口

出发(256 bits)

Gate

e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

Gate

b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9

观察到最小的变化(首字母的大写)导致了一个完全不同的哈希值。然而,使用SHA-256时,输出始终会固定为256位(或64个字符),无论输入的大小如何。此外,无论我们将这两个词通过算法执行多少次,两个输出将保持不变。

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

SHA-1的

入口

出发(160 bits)

网关

3a7bd3e2360a3d29eea436fcfb7e44c735d117c4

5df9954f1ca26eabf18c663cc9258ba7f7712c45

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

哈希的重要性

常规哈希函数有广泛的应用,包括数据库搜索、大文件分析和数据管理。另一方面,密码学哈希函数在信息安全应用中被广泛使用,如消息认证和数字指纹生成。在比特币的背景下,密码学哈希函数是挖矿过程的一个重要组成部分,并在生成新地址和密钥中也发挥着关键作用。

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

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

加密哈希函数

一种实现加密技术的哈希函数可以定义为加密哈希函数。一般而言,破解加密哈希函数需要无数次的暴力尝试。为了让一个人“逆转”加密哈希函数,他必须通过反复试验来猜测最初的输入,直到产生相应的输出。然而,也存在不同的输入产生完全相同结果的可能性,这种情况下就会出现“碰撞”。

从技术上讲,密码哈希函数必须满足三个属性才能被认为是有效安全的。我们可以将其描述为抗碰撞性、抗原像性和抗第二原像性。

在分析每个属性之前,让我们用三句话总结它的逻辑:

  • 抵抗碰撞:找到两个不同的输入产生相同的哈希作为输出是不切实际的。

  • 先前的抵抗力:不能“反转”哈希函数 ( 来找到特定输出的输入 )。

  • 对第二前像的抵抗:无法找到一个与特定输入碰撞的第二输入。

抗碰撞

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

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

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

( 先前的阻力至图像

抵抗原像的属性与单向函数的概念相关。当一个哈希函数的输入生成特定输出的概率非常低时,该哈希函数被认为是抵抗原像的。

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

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

) 对第二原像的抵抗

为了简化,我们可以说第二前像的抗性位于其他两个属性之间的某个中间点。第二前像攻击发生在某人能够找到一个特定输入,该输入生成与他们已经知道的另一个输入相同的输出时。

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

因此,任何抗碰撞的哈希函数也将抵御第二预映像攻击,因为后者总是涉及碰撞。然而,仍然可以对抗碰撞的函数进行预映像攻击,因为这涉及从唯一输出中找到唯一输入。

矿业和哈希

比特币的挖矿过程涉及大量的哈希操作,例如验证余额、链接交易的输入和输出,以及在一个区块内对交易进行哈希以形成默克尔树。然而,比特币区块链安全的主要原因之一是矿工需要进行大量的哈希操作,才能最终找到下一个区块的有效解决方案。

具体来说,矿工在为其候选区块创建哈希值时,必须尝试多个不同的输入。实质上,只有在生成一个以一定数量的零开头的输出哈希时,他们才能验证其区块。零的数量决定了挖矿的难度,并根据专用于网络的哈希率而变化。

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

重要的是要强调,矿工不需要找到碰撞,因为有多个哈希可以作为有效输出 (,前面有一定数量的零 )。因此,对于特定区块,有多种可能的解决方案,矿工只需找到其中之一,这取决于挖矿难度确定的阈值。

由于比特币的挖矿是一项成本高昂的任务,矿工没有理由欺骗系统,因为这会导致重大的财务损失。加入区块链的矿工越多,区块链就变得越大越强。

最终反思

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

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