哈希函数应用主要有_哈希函数主要用于_哈希函数可以应用于

介绍

至少自有记录的历史以来,人类就一直对密码学或相互编码/解码秘密消息的科学感兴趣。然而,这一领域已经变得越来越重要,并且与数字时代的每个人都息息相关。现代密码学使我们能够安全地访问网络服务,而不会泄露敏感的个人信息。它为数十亿美元的电子商务交易以及 SWIFT 银行间转账提供保障。最近,密码学构成了基于比特币等加密货币的全新金融范式的基础。

尽管互联网用户每天都依赖它,但密码学仍然显得神秘而神秘。幸运的是,我们不必知道它是如何工作的就可以欣赏它的好处。但稍微了解一下可以帮助我们所有人成为更加知情的用户。如果你很好奇(像我一样),了解某些东西在幕后是如何工作的也可以带来成就感甚至快乐。

这篇文章是有关区块链和数字货币中使用的密码学系列的第一篇。我们要检查的第一个原语是加密哈希函数。加密哈希函数非常重要,以至于它们通常被称为现代密码学的“主力”。对于加密货币来说,这些函数构成了工作量证明等共识算法的基础。

什么是哈希函数?

哈希函数是一种确定性数学函数,它将任意大小的输入映射到固定长度的输出。

一个简单的示例是一个函数,该函数根据您姓氏的第一个(英文)字母返回一个数字。无论您的姓氏有多长,该函数的输出都将是 1 到 26 之间的某个数字(最多 2 位)。并且由于该函数是确定性的,因此相同的输入每次都会产生相同的输出。

尽管哈希函数的输入长度不必长于输出,但我们通常希望哈希函数能够压缩。对于上面的示例,我们采用了可以构成姓氏的所有可能的英文字母组合,并将它们映射到 26 个可能的选项。该数据比全长输入更容易搜索和存储。

当然,精明的读者已经意识到我上面的示例哈希函数存在一个明显的问题。如果两个姓氏以相同的字母开头,则哈希值将相同。这称为冲突,在这种情况下,我们无法仅根据两个人姓名的哈希值来区分他们。因此,尽管我们的哈希函数帮助我们保留了存储空间,但它压缩了太多有用的信息。

加密哈希函数

加密哈希函数在 20 世纪 70 年代正式形成哈希函数可以应用于,此后几乎被集成到从对称密钥派生到零知识证明的所有领域中。它们是更广泛的哈希函数家族的子类,旨在帮助加密方案。特别是,在各种情况下应该很难发现碰撞。下面定义了不同类型的抗碰撞性。

抗碰撞性——对于哈希函数 H(x),应该很难发现任何碰撞。也就是说,应该很难找到两个输入 x_1 和 x_2,其中输出相同 (H(x_1) = H(x_2))。由于该函数的可能输入数量超过了可能输出数量,因为必然存在冲突。但如果输出空间足够大,碰撞的概率应该可以忽略不计。

哈希函数应用主要有_哈希函数可以应用于_哈希函数主要用于

抗目标冲突——如果很难找到对手选择的输入值的冲突,则哈希函数 H(x) 是抗目标冲突的。

哈希函数应用主要有_哈希函数主要用于_哈希函数可以应用于

第二原像抗性——如果很难找到随机选择的输入值的冲突,则哈希函数 H(x) 具有第二原像抗性。换句话说,第二原像抗性描述了每个输出实际上唯一的程度。

哈希函数可以应用于_哈希函数应用主要有_哈希函数主要用于

原像抗性——如果你只知道哈希函数 H(x) 的输出,就很难找到 x。换句话说,原像抗性意味着很难对 CRHF 的输出进行“逆向工程”以找到其输入。抗原像的函数有时也称为单向函数,这意味着如果您只看到输出,它们实际上是不可逆的。

哈希函数应用主要有_哈希函数可以应用于_哈希函数主要用于

我以这种方式排列列表是因为这些属性是分层的。因此,抗碰撞性意味着目标抗碰撞性,这意味着第二原像抗性等。但反之则不然。仅仅因为一个函数具有目标抗碰撞性,并不意味着它一定具有抗碰撞性。

并非每个加密哈希函数/方案都具有这些属性。上面的列表暗示了一个好的实用加密哈希函数还有一些其他非正式属性。例如,即使输入发生很小的变化,也会在输出中产生巨大的、不可预测的变化。这种“雪崩效应”是原像抵抗的结果,它使工作量证明共识方案(如下所述)变得安全。

哈希函数和工作量证明

对于使用工作量证明挖掘达成共识的加密货币(如比特币),我们最关心的属性是原像抗性和第二原像抗性。在我们理解为什么我们需要以比特币为例更详细地了解工作量证明共识算法如何工作之前。

在比特币网络中,节点维护与不同公钥相对应的全局余额分类账。它们还保存组织成块的所有历史交易的历史记录。每个区块都包含给定时间内发生的交易列表,以及对前一个区块的引用。前一个块头只是哈希函数的输出,其中输入是该块的内容。

比特币网络上的节点可以生成新交易块并添加到区块链中以换取奖励(以 BTC 计价)。因此他们必须创建一个包含交易的新块和一个新的块头。但网络上的其他节点不会只接受任何块头。它们只接受带有大量前导 0 的标头(哈希函数的输出)的块(例如 )。对于任何给定的输入集来说,这种情况不太可能发生。但如果哈希函数是确定性的,那么比特币矿工如何创建具有正确结构的哈希函数输出呢?

这就是工作量证明难题出现的地方。除了交易和先前的块头之外,比特币矿工还添加一个称为随机数的额外值。如果结果输出不满足“目标”标准,则矿工会增加随机数并再次运行该函数。一遍又一遍地重复这个过程,直到哈希函数产生一个符合要求的值。

上述过程就是我们在比特币等工作量证明区块链中所说的“挖矿”。节点一遍又一遍地运行哈希函数,除了随机数之外,使用相同的输入。一旦他们找到一个随机数,结合各个交易和之前的区块头,产生正确数量的前导零,他们就可以将其提交到网络并索取他们的区块奖励。

加密哈希函数是这个过程的关键要素。回想一下,原像抵抗特性意味着哈希函数的输出应该是不可预测的。换句话说,它应该“看起来”是随机的。因此,矿工不能只从目标哈希值开始,然后向后计算随机数输入的值应该是什么。无论之前执行了多少次迭代,找到哈希函数的目标输出的问题都同样困难。

同时,第二原像抵抗意味着很难发现随机选择的输入(例如先前的块头和交易)的冲突。实际上,这意味着哈希函数的每个输出都是可靠唯一的。最后,目标冲突抵抗保证对手很难找到任何产生特定哈希值的特定消息。这确保了以后没有人可以随意将区块链的一部分换成另一部分。而且因为每个新的块头都引用前一个块,而前一个块又引用前一个块,依此类推,所以整个账本历史的完整性得到了维护。

结论

尽管本文仅关注加密应用程序,但哈希函数可用于多种用途。例如,它们用于检测大文件中的更改。给定一个大输入(如整个数据库),原像抵抗(以及相关的“雪崩效应”)意味着即使更改整个文件中的单个字符也会导致不同的哈希输出。因此,可以比检查文件本身更有效地存储和比较哈希输出。

就其他加密应用而言,哈希函数的一个主要优点是它们具有量子抗性。其原因是,对量子计算机和非量子计算机而言哈希函数可以应用于,对哈希函数的输出进行逆向工程同样困难。其他加密原语(如比特币和其他加密货币中使用的数字签名方案)基于研究量子计算机很容易解决但普通计算机很难解决的问题。因此,虽然量子计算机对许多现有密码系统的其他方面构成威胁,但我们今天使用的加密哈希函数仍应是安全的。此外,许多现有的加密方案可以更改为使用哈希函数,为未来的安全加密奠定了基础。

正如我们所见,加密哈希函数是比特币和其他加密货币工作量证明挖掘的基石。加密哈希函数的抗目标碰撞性、抗第二原像性、抗原像性等特性保证了工作量证明共识的安全性、去中心化和“公平性”。一些人认为加密货币挖矿是一种能源“浪费”,声称类似比特币的工作量证明系统的暴力性质效率低下。他们提出了基于“有用”工作的替代方案,例如蛋白质折叠或搜索大素数。但所提出的问题都不具有上面列举的属性。因此他们无法确保同等程度的安全性和去中心化。

哈希函数对于比特币、以太坊和许多其他加密货币的工作量证明挖掘至关重要。除了区块链之外,它们还因为它们在更广泛的密码学中无处不在。尽管它们很重要,但它们并不神奇。只是一点数学知识,所以希望这篇文章有助于阐明这些函数是什么以及它们为何如此重要。我希望它也能激励您更多地了解日益重要的密码学领域。

与Aleo的关系

哈希函数应用主要有_哈希函数主要用于_哈希函数可以应用于

Aleo 本身集成了哈希函数,我们在之前的文章()中有介绍 zk-本身是依赖于椭圆曲线,但椭圆曲线是不能抗量子的,而哈希函数的集成正如本文所讲会更加保证 Aleo 的安全性,是 Aleo 安全性的重要基石。

全网首发!!!

Aleo-ASIC芯片机开启预售!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注