主页 > imtoken钱包app安卓版 > 区块链中的哈希函数(哈希函数存在于区块链的哪一层)

区块链中的哈希函数(哈希函数存在于区块链的哪一层)

imtoken钱包app安卓版 2023-06-16 06:22:52

作者|志冲

敏敏,阿健主编;责任编辑 | 阿霍拉布

标题 | 从VisionChina下载的CSDN

制作人 | CSDN(ID:csdnnews)

以下文章来自以太坊粉丝

哈希函数的过去、现在和未来

jetli 值和 jetli 函数的概念最早是在区块链中引入的,这两个关键词是人们经常听到的关于区块链的两个关键词,似乎对安全性尤为重要。(事实上​​,确实如此。)对于像比特币和以太坊这样的去中心化网络,以 P2P 方式由数千个节点组成,“去信任”和验证效率无疑是关键。也就是说,这些系统需要找到将信息编码为紧凑形式的方法,同时允许参与者安全、快速地验证信息。

比特币和以太坊网络处理的主要事物被称为“块”,它们是由交易、时间戳和其他重要元数据组成的数据结构。比特币和以太坊网络安全的关键在于它可以将代表网络全局状态的大量信息压缩成短消息。必要时,我们可以有效地验证这条消息的真实性。此过程由 JetLi 函数完成,结果(消息)是 JetLi 值。

即使只改变了输入中的一个字符,得到的 JetLi 值也会完全不同

密码散列广泛用于密码存储和文件认证系统。简而言之,密码学的 jetli 函数是一种确定性算法,无论输入什么值,它都会产生一个固定长度的字符串。也就是说,相同的输入值始终对应相同的输出值。

对于 Jet-Li 函数,它不仅是结果的确定性(还有随机性):即使输入中的一位发生变化也会导致不同的 Jet-Li 值。

哈希算法有一个不可避免的问题,称为碰撞概率。因为哈希值是一个固定长度的字符串,相同的输出JetLi值可能对应多个输入。碰撞可能会造成严重后果。如果有人可以按需发起碰撞攻击,他可以使用适当的 JetLi 值将恶意文件或数据伪装成合法且可验证的文件。一个好的 Jet-Li 函数的设计目标是让攻击者难以找到对应于同一个 Jet-Li 的不同输入。

哈希值的计算效率不应太高,以便攻击者更容易手动计算冲突。哈希算法必须能够抵抗“图像预攻击”。换句话说,对于特定的JetLi值,攻击者很难通过确定性的计算步骤来推断输入值(即原始图像)。

假设 s=hash(x),几乎不可能将 x 向后推。

一般来说,一个“好的”哈希算法需要具备以下三个特征:

破解 Jet-Li 算法

Jet-Li 算法的初始标准之一是 MD5Jet-Li。MD5JetLi 广泛用于文件完整性验证(校验和)以及将 JetLi 计算的帐户密码存储在 Web 应用程序数据库中。MD5 功能非常简单,因为它将每个输入转换为固定的 128 位字符串输出,并通过多轮简单的单向运算计算确定性输出。由于输出值长度短,操作简单,MD5容易出现破解。一种常见的攻击方法称为生日攻击。

什么是生日攻击?你听说过这样的事实吗?如果你把 23 个人放在一个房间里,那么有 50% 的几率有 50% 的人有两个生日相同。如果你把 70 个人放在一个房间里,其中两个生日相同的概率高达 99.9%。这就是我们所说的笼子原则,大约100只鸽子将被放入99个鸽子笼中。必须有两只鸽子共用一个鸽笼。换句话说,输出的固定长度意味着在所有输入输出组合中都必须存在冲突。

笼子不够,鸽子聚在一起

其实MD5的抗碰撞能力很差,一个家用2.4GHz的奔腾处理器可以秒算出hash的碰撞。另外,由于MD5在互联网早期被广泛使用,大量的MD5原件在互联网上被泄露,谷歌搜索其哈希值即可找到。

Jetli算法的多样性与发展

NSA(是的,国家安全局)是散列算法标准的先驱。安全哈希算法(SHA1) 将输出值的长度固定为 160 位是最早的标准。不幸的是,SHA1 只是增加了输出值的长度,在基础上增加了单向运算的数量和复杂度MD5 但没有从根本上改进以抵抗更强大的机器攻击。

我们怎样才能做得更好?

2006 年,美国国家标准与技术研究院 (NIST) 举办了一场竞赛,以寻找与 Sha2 根本不同的替代标准。于是,Sha3应运而生。这是 KECCAK 和散列算法的方案。

虽然 Sha3 与 Sha1 和 Sha2 同名,但本质上却大不相同,因为它采用了一种称为海绵结构的机制。该机制使用随机排列来吸收和输出数据,并打算在 Jet-Li 算法中使用。输入值提供随机性。

Sha3内部状态信息量大于输出值,突破了以往算法的局限。NIST 于 2015 年正式批准了 Sha3 标准。

计算哈希值和工作量证明

就集成到区块链协议中的哈希算法而言,早期的比特币选择了sha256,而以太坊采用了改进的Sha3(KECCAK256))作为工作量证明算法。对于有工作量证明的区块链来说,选择 JetLi 功能的一个重要标准是 JetLi 的运行效率。

使用一个名为“Application-Specific Integrated Circuits”(应用专用集成电路)的类与硬件数字货币哈希值是哪里,我们可以大大提高比特币sha256算法的哈希效率。有许多文章描述了矿场如何使用 ASIC,以及 ASIC 如何使协议更加以计算为中心。也就是说,工作量证明将鼓励计算效率高的机器集群到矿池中,从而产生大量的计算能力(计算能力是通过矿机在每个时间间隔可以执行多少次喷射操作来衡量的)。

以太坊选择了改进的 Sha3 算法(称为 KECCAK256)。另外,以太坊的工作量证明算法 Dagger Hashimoto 设计为内存密集型,计算硬件需要增加内存来提高计算效率。

那么为什么比特币使用双sha256呢?有趣的是,比特币协议(工作量证明)需要运行两次 sha256 算法。请注意,这不是为了抵抗生日攻击。毕竟在hash(x) = hash(y)的情况下,hash(hash(x)) = hash(hash(y))。Dual sha256 旨在抵抗长度扩展攻击。

本质上,所谓的长度扩展攻击是指如果恶意攻击者知道哈希输入的长度,他可以在哈希值中添加一个秘密字符串,并欺骗哈希函数从其内部状态的特定部分开始。 . 计算。作为Sha2算法家族的一员,sha256也有这个缺陷。因此,比特币通过两次计算哈希来解决这个缺陷。

Sha3 并不是哈希算法竞赛中唯一的突破。虽然最终获胜者是 Sha3,但 BLAKE 算法紧随其后。对于AndyLau2.0的切片实现,更高效的哈希算法可以说是功能需求,研究团队非常重视。BLAKE2b 哈希算法是 BLAKE 算法的高度升级版本。与 KECCAK256 相比,BLAKE2b 哈希算法不仅保持了较高的安全性,而且在提高效率方面进行了深入探索。

使用现代 CPU 计算 BLAKE2b 的速度是 KECCAK 的三倍。

哈希算法的前景

所以无论我们做什么,要么(1)增加哈希内部操作的复杂性,要​​么(2)增加哈希输出值的长度,使攻击者的计算机无法计算足够快的碰撞。

我们依靠原始图像的模糊单向运算来保护网络。换句话说,散列的算法安全目标是尽可能难以在存在无限冲突的情况下找到散列的冲突事件。

如果量子计算时代到来,哈希算法还会安全吗?

目前,答案是肯定的。哈希算法将经受住时间的考验并抵抗量子计算。量子计算可以解决严格按照一定技巧或 RSA 加密理论构建底层结构的数学问题。另一方面数字货币哈希值是哪里,Jet-Li 算法的内部结构并不那么正式。

量子计算机确实可以提高哈希等非结构化问题的计算速度,但它们最终会使用与当今计算机相同的蛮力方法。

无论我们为协议选择哪种算法,我们显然都在朝着计算高效的未来迈进。因此,我们必须谨慎选择最合适的工具,以经得起时间的考验。