什么是哈希?原理、密码学和区块链中的应用

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

虽然并非所有的哈希函数都涉及加密,但所谓的加密哈希函数构成了加密货币的核心。正是因为它们,区块链和其他分布式系统才能达到显著的数据完整性和安全性。

哈希函数的基础

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

典型的加密货币中使用的哈希算法被设计为单向函数,这意味着不可能在没有大量时间和计算资源的情况下轻易地逆转。换句话说,从输入生成输出相对简单,但反向操作,即仅凭输出生成输入相对困难(。一般来说,找到原始输入的难度越大,哈希算法就被认为越安全。

哈希函数是如何工作的?

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

为了说明这一点,让我们通过在比特币中使用的SHA-256哈希算法)来执行单词"Trading"和"trading":

SHA-256

入口:交易 输出(256 bits):95d1a7ca65e8e7a866be323693fd2c22e07d8f198695481f1660e12142cdbecc

入口: 交易 输出(256 bits):2180de693ed2598851b751454f78332a363a0ddb0376db0e4fc9eedb25cde194

观察到一个小变化(首字母的大写)导致了一个完全不同的哈希值。但是由于我们使用的是SHA-256,输出始终将具有固定大小的256位(或64个十六进制字符),无论输入的大小如何。此外,无论我们使用算法处理这两个词多少次,输出都将保持不变。

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

SHA-1

输入:交易 输出(160 bits):37736e173a824ff9cecc9b5de47f5bda155b7f51

输入:交易 输出(160 bits):7da19b30a5c5c198709373e8eb7d5c33a3f48241

需要指出的是,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分钟###。

矿工不需要寻找冲突,因为有多个哈希可以生成作为有效输出###,前面有一定数量的零(。因此,对于特定区块存在多种可能的解决方案,矿工只需要找到其中之一,按照挖矿难度所确定的限制。

由于比特币挖矿在能源和设备方面是一项昂贵的任务,矿工没有理由欺骗系统,因为这会导致重大财务损失。参与区块链的矿工越多,区块链就变得越大越强。

哈希在加密世界中的实际应用

哈希在加密货币生态系统和交易平台中有许多实际应用:

  • 交易验证:区块链中的每笔交易都会获得一个唯一的哈希,作为标识符,并允许验证该交易未被篡改。

  • 地址生成:加密货币地址是通过对公钥应用哈希函数生成的,这增强了安全性并减少了地址的大小。

  • 安全存储密码:交易平台使用哈希功能安全地存储用户的密码,仅保存哈希而不是原始密码。

  • 工作量证明:这一共识机制,广泛应用于比特币及其他加密货币,基本上基于哈希函数的单向性。

  • 数据完整性:平台使用哈希来验证在传输过程中文件或数据是否未被修改。

结论

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

在一个日益数字化的世界中,数据和交易的安全至关重要,哈希功能仍然是支撑现代密码系统信任的基本支柱之一。

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