hash算法原理,加密货币区块链的哈希算法

  hash算法原理,哈希和哈希算法是区块链新手熟悉的关键概念,并且始终与安全性息息相关。为了维持去中心化的网络和共识机制,包括通过p2p连接一千个节点的比特币或以太坊,“缺乏信任”和有效的确认系统是必要的。这些网络需要紧凑的方式来加密信息,这将使参与者能够进行快速而安全的检查。

  区块是比特币和以太坊的主要组成部分之一。该块包含有关事务,时间戳和其他基本元数据的信息。将有关网络全局状态的大量信息压缩为标准短消息的能力(如果需要,可以很容易地对其进行检查)在确保安全性方面发挥着巨大作用。这些消息是哈希。如果更改输入值的至少一个字符,则会得到完全不同的哈希值!

  从存储密码到检查系统,无处不在使用加密哈希。它们的本质在于使用确定性算法,该算法获取输入数据并创建具有固定长度的字符串。因此,相同的输入数据将始终转换为相同的输出数据。决定是不是哈希唯一重要的,因为即使你改变的一个位输入数据,你会得到一个完全不同的哈希值。

  哈希算法的问题是冲突的必然性。由于此类哈希的字符串长度是固定的,因此可能存在其他形成相同哈希的输入数据。碰撞是不好的。这意味着攻击者可以按需创建冲突,可以使用正确的哈希值传输恶意文件或数据,并提供正确的数据。良好的哈希函数应使攻击者很难找到创建具有相同哈希值的输入数据的方法。

  计算散列的过程不应太有效,因为在这种情况下,攻击者可以轻松计算冲突。哈希算法必须能够抵抗原像的攻击。有必要最大程度地复杂化计算步骤的过程,以查找用于创建哈希值的原始值(例如,原型)。

  计算s=哈希(x)的x的方法实际上是不可能的。

  因此,“体面的”哈希算法应具有三个属性:

  如果您更改传入数据的一位,则应形成雪崩效果,并且将产生完全不同的哈希。

  碰撞的机会很小;

  不牺牲抗冲击性的效率。

  哈希算法的第一个标准是MD5哈希。该算法广泛用于检查文件(校验和)的完整性并将哈希密码存储在Web应用程序数据库中。它的功能非常简单–它为每个输入值生成一个固定长度为128位的字符串,并在几个周期内使用标准单向运算来计算确定性的输出值。由于输出值的长度短且操作简单,因此很容易破解MD5哈希,特别是“生日”攻击。

  1.攻击“生日”

  有一个著名的说法,如果一个房间里有23个人,那么他们两个人在同一天出生的机会就是50%。如果房间中有70个人,则此概率增加到99.9%。这是根据Dirichlet原理发生的,该原理指出,如果将100羽鸽子放在99箱中,那么其中两只将放在其中。输出值固定长度的限制意味着存在一定的碰撞组合级别。

  MD5哈希很容易受到冲突的影响,即使是简单的2.4GHz奔腾处理器也可以在短短几秒钟内计算出哈希冲突。此外,这种散列在网络开始时的广泛使用已经创建了数百万个MD5原型,可以使用Google常规搜索其散列来找到它们。

  2.哈希算法的多样性和演进

  开始:SHA1和SHA2

  NSA(是的,NSA)长期以来一直是哈希算法标准创建的先驱。由NSA提出了安全散列算法或SHA1算法,其固定输出值为160位。

  不幸的是,由于增加的价值,单向操作的数量及其复杂性,SHA1略微超过了MD5,但是此散列并不能在针对产生不同攻击媒介的更强大机器的防护方面提供可靠的改进。

  3.如何改进哈希算法?

  2006年,美国国家标准技术研究院(NIST–国家标准技术研究院)宣布了一项竞赛,以开发SHA2算法的替代方案,该算法在设计上有根本不同,并成为一种新标准。从称为KECCAK(发音为“kechak”)的哈希算法方案中,出现了SHA3算法。

  尽管SHA3的名称与以前的算法相似,但是它的内部结构由于密码海绵的机制而有很大不同。该机制执行随机置换以吸收和创建数据,作为将来将纳入哈希算法的传入数据的随机性来源。SHA3​​保留原始状态,并具有比传出值中更多的信息位,因此超出了先前算法的限制。该算法成为了NIST标准在2015年。

  4.哈希和工作证明

  作为在区块链协议中实施哈希算法的一部分,比特币使用SHA256作为算法来证明所执行的工作,而随后出现的以太坊则使用SHA3的修改版本(KECCAK256)。在为已完成工作量证明的区块链选择哈希函数时,哈希计算的效率非常重要。

  可以使用特殊硬件-专用集成电路(ASIC-专用集成电路)极其高效地计算比特币SHA256。关于ASIC在采矿池中的使用以及它们如何导致计算的集中化,已经有很多著作。所做工作的证明会促使从高效计算的计算机组中创建池,从而增加所谓的“哈希容量”或一台计算机在特定时间段内可以计算的哈希数。哈希和哈希算法是区块链新手熟悉的关键概念,并且始终与安全性息息相关。

  为了维持去中心化的网络和共识机制,包括通过p2p连接一千个节点的比特币或以太坊,“缺乏信任”和有效的确认系统是必要的。这些网络需要紧凑的方式来加密信息,这将使参与者能够进行快速而安全的检查。

  区块是比特币和以太坊的主要组成部分之一。该块包含有关事务,时间戳和其他基本元数据的信息。将有关网络全局状态的大量信息压缩为标准短消息的能力(如果需要,可以很容易地对其进行检查)在确保安全性方面发挥着巨大作用。这些消息是哈希。如果更改输入值的至少一个字符,则会得到完全不同的哈希值!

  从存储密码到检查系统,无处不在使用加密哈希。它们的本质在于使用确定性算法,该算法获取输入数据并创建具有固定长度的字符串。因此,相同的输入数据将始终转换为相同的输出数据。决定是不是哈希唯一重要的,因为即使你改变的一个位输入数据,你会得到一个完全不同的哈希值。

  哈希算法的问题是冲突的必然性。由于此类哈希的字符串长度是固定的,因此可能存在其他形成相同哈希的输入数据。碰撞是不好的。这意味着攻击者可以按需创建冲突,可以使用正确的哈希值传输恶意文件或数据,并提供正确的数据。良好的哈希函数应使攻击者很难找到创建具有相同哈希值的输入数据的方法。

  计算散列的过程不应太有效,因为在这种情况下,攻击者可以轻松计算冲突。哈希算法必须能够抵抗原像的攻击。有必要最大程度地复杂化计算步骤的过程,以查找用于创建哈希值的原始值(例如,原型)。

  5.比特币和双SHA256

  比特币以一种不寻常的方式使用SHA256对数据进行哈希处理:它在协议中运行两种算法。您需要了解,这不是针对“生日”攻击的措施,因为如果hash(x)=hash(y),则hash(hash(x))=hash(hash(y))。SHA256对偶算法用于通过加长消息来抵御攻击。

  如果攻击者知道输入哈希数据的长度,则可以通过向哈希值添加秘密字符串来强制哈希函数获取内部状态的特定部分。由于缺少SHA2算法家族中的SHA256算法,因此比特币将哈希计算两次。

  6.以太坊2.0和BLAKE

  SHA3​​并不是2006年NIST竞赛中唯一出现的发明。第二名是BLAKE算法。对于以太坊2.0细分,实际上,更有效的哈希是开发团队认真研究的要求。BLAKE2b哈希算法是BLAKE的高级版本,由于与KECCAK256相比效率极高且具有很高的安全性,因此受到严格的分析。

  在现代处理器上,使用BLAKE2b进行计算的速度是使用KECCAK的三倍。哈希算法的未来似乎减少为(1)内部哈希操作的复杂性增加,或(2)输出哈希值的长度增加,希望攻击者的计算机不会是时候计算碰撞了。

  为了确保网络安全,开发人员依靠单向操作原型的模糊性。因此,为了确保散列算法的安全,尽管存在无限数量的可能的冲突,但有必要使找到具有相同输出的两个散列值的过程尽可能地复杂化。

  简而言之,根据当前情况,您可以回答是的,哈希算法将按时间进行测试,并且可以抵抗量子计算。量子计算可能会使用巧妙的技巧和诸如RSA加密的理论在严格的基本数学结构方面产生问题。但是,哈希算法具有更正式的内部结构。

  量子计算机确实可以加快计算非结构化任务(如哈希)的过程,但它们仍将像今天的普通计算机一样使用蛮力攻击。无论协议中使用哪种算法,都有一件很清楚的事–我们正在等待一种有效的未来计算方法,我们必须为该业务合理地选择合适的工具,然后这些算法将经受住时间的考验。