科普 | 哈希函数的过去、如今与将来

联系人:内部会员号 | 

导言:

科普|哈希函数的过去、现在和未来来自顶级财经专栏作家CSDN区块链的大本营。描述:量子计算机确实可以提高哈希等非结构化问题的计算速度,但是它们,

零售中央银行的数字货币和白银(CBDC)是什么?

什么是零售央行数字现金(CBDC)?来自陀螺金融专栏作家Encryption Valley Live,内容简要介绍:零售中央银行数字现金的关键原则(CBDC)和世界各地中央银行的使用领域

下面的文章来自于爱琴爱好者的翻译校正:敏敏阿剑

散列函数的过去、现在和未来

Www。ii35.coM

散列值和散列函数是第一次启动区块链的人经常听到的两个棘手的词,它们似乎是安全的非常棘手的问题。(事实上,确实如此。对于通过比特币、以太网等P2P要素由无数节点组成的去中介集合来说,“无置信度”和考证的有效性无疑是关键。也就是说,这些系统需要找到将信息编码成紧凑情境的要素,同时使参与者能够安全快速地进行文本研究。

对比特币和以太网集合的惩罚的主要内容被称为“块”,是指由业务、时间戳和其他主要元数据组成的数据组织。比特币和以太网收藏安全性的关键在于,它可以将表达收藏整体情况的大量信息压缩成一条短信。必要时,我们可以有效地验证此消息的真实性。这个过程是由散列函数完成的,并且获得的效果(音频)是散列值。


-即使输入中只有一个字符被更改,最终获得的哈希值也会完全不同-

密码哈希广泛应用于密码存储和文档研究系统。简而言之,加密散列函数是一种确定性算法,无论输入什么值,它都可以获得一个固定长度的字符串。也就是说,相同的输入值总是对应于相同的输出值。

对于哈希函数来说,最重要的不仅仅是确定性(还有结果的随机性):即使输入中只有一位发生了变化,最终得到的哈希值也会有不同的判断。

Www。ii35.coM

哈希算法有一个不可避免的问题,叫做碰撞概率。因为哈希值是一个固定长度的字符串,所以相同的输出哈希值可能对应多个输入。碰撞会产生严重的影响。如果有人可以根据需要提出冲突攻击,他可以将恶意文档或数据伪装成合法文档,这些文档可以通过历史记录使用适当的哈希值进行验证。一个好的散列函数的目的是使攻击者很难找到对应于同一散列的不同输入。

哈希计算不应该太有效,这样可以让攻击者更简单地计算工资,从而避免冲突。哈希算法必须能够抵抗“预镜像攻击”。也就是说,攻击者很难通过关于特定散列值的过程确定性计算步骤来推断输入值(即,原始图像)。

假设s=散列(x),应该几乎不可能推回x。

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

雪崩效应将发生在改变输入的一位,这将使最终的散列值不同

哈希冲突的概率极低

它被认为是有效的,而不牺牲防碰撞性能


破解哈希算法


哈希算法的初始规范之一是MD5哈希。MD5哈希广泛用于文档完整性验证(校验和),通过哈希计算的帐户密码存储在集合应用程序数据库中。MD5的功能非常简单,因为它将每个输入转换成一个稳定的128位字符串输出,并通过几轮简单的单向操作来计算确定性输出。因为输出值长度短,操作简单,所以MD5很容易被破解,一种罕见的攻击称为生日攻击。

Www。ii35.coM

什么是“生日提前”?

你听说过这样的现实吗?如果你把23个人放在一个房间里,两个人同一天生日的可能性是50%。如果把70个人放在一个房间里,两个人同一天生日的概率高达99.9%。这就是我们所说的鸽子笼原则,也就是说,如果把100只鸽子放进99个鸽子笼,两只鸽子必须共用一个鸽子笼。也就是说,固定长度的产出意味着所有的投入产出组合都必须有冲突。

-当笼子不够的时候,鸽子会聚在一起-

实际上,MD5的防碰撞性能非常差,以至于一个2.4千兆赫的梅赛德斯-奔驰处理惩罚器可以在几秒钟内计算出散列碰撞。另外,由于MD5在互联网的初始阶段已经被广泛使用,大量的MD5原始图片被泄露,这些图片可以通过谷歌搜索它们的哈希值来找到。

Www。ii35.coM


哈希算法的多样性生长


产地:SHA1和陕西

国家安全局(没错,国家安全局)是哈希算法规范的先驱。安全散列算法(SHA1)是最早提出的规范,它牢固地将输出值的长度保持在160位。不幸的是,SHA1只是在MD5的基础上增加了输出值的长度、单向操作的数量和复杂性,但它没有做出能够抵抗更强的机械攻击的根本性创新。

我们如何做得更好?SHA3凸起

Www。ii35.coM

2006年,国家标准工艺学会(NIST)举办了一场竞赛,寻找一种与SHA2本质上不同的替代标准。因此,SHA3应运而生,它是KECCAK哈希算法的一个方案。

尽管SHA 3与SHA1和SHA2的名称相同,但它在本质上有很大的不同,因为它采用了一种称为海绵结构的机制。该机制利用随机排序来吸收和输出数据,同时为将来哈希算法的输入值提供随机性。

keccak 256海绵如何支持输入操作-

与输出值相比,SHA3的内部条件包含了更多的信息,突破了以往算法的限制。NIST于2015年正式承认SHA3。


哈希盘算和工作量证实


就集成到区块链协议中的哈希算法而言,早期的比特币选择了SHA256,而以太网采用了经过改造的SHA3 (KECCAK256)作为工作负载验证算法。就区块链采用工作量验证而言,选择散列函数的主要规格之一是散列运算的有效性。

使用一种称为专用集成电路的硬件,我们可以大大改善比特币SHA256算法的哈希运算。许多文章讨论了专用集成电路如何应用于采矿池,以及专用集成电路如何使协议在计算中趋于中间。也就是说,工作量的确定将促使具有较高计算效率的机械组整合矿井池,从而形成较大的散列计算力(计算力的度量标准是采掘机在每个时间和距离内可以完成多少散列运算)。

Ethereum选择了改革后的SHA3算法(称为KECCAK256)。此外,以太网的工作负载证明了Dagger-Hashimoto算法是内存密集型的,计算硬件需要增加内存来提高计算效率。

为什么比特币采用双SHA256?

有趣的是,比特币协议(由工作负载确认)需要运行SHA256算法两次。请注意,这不是为了抵御生日攻击,毕竟,当哈希(x)=哈希(y),哈希(x)=哈希(y)。双SHA256被设计来抵抗扩展长度攻击。

实质上,所谓的长度扩展攻击意味着,如果恶意攻击者知道哈希输入的长度,他可以向哈希值添加一个秘密字符串,并欺骗哈希函数根据其内部条件的特定部分进行计算。作为SHA2算法的一员,SHA256也有这个缺点。因此,比特币采用两遍哈希模式来解决这一缺点。以太网2.0和BLAKE

SHA3并不是哈希算法竞争中的唯一突破口。尽管SHA3赢得了比赛,BLAKE算法紧随其后,排名第二。就以太网2.0的碎片而言,一个更有效的散列算法可以说是一个功能需求,研究小组对此非常重视。BLAKE2b哈希算法是BLAKE算法的高度升级版本。与KECCAK256相比,BLAKE2b哈希算法不仅坚持了较高的安全性,而且深入探讨了其推广的有效性。

用当代的中央处理器计算BLAKE2b的速度是计算KECCAK的三倍。


哈希算法的远景瞻望


这样,无论我们做什么,都是(1)增加内部哈希操作的复杂性,或者(2)增加哈希输出值的长度,这样攻击者的计算机就不能高效快速地计算出冲突。

我们依靠对原始图像的模糊性的单向操纵来保护收藏的安全性。也就是说,哈希算法安全性的目的是在存在无限争议时,尽可能难以发现哈希冲突。

如果量子计算到来,哈希算法仍然安全吗?

就我们而言,答案是肯定的,散列算法将经受时间的考验,并抵抗量子计算。量子计算可以严格按照一些小技巧或RSA加密理论来处理创建底层组织的数学问题。另一方面,哈希算法的内部组织并不具有情境性。

量子计算机无疑可以提高散列等无组织问题的计算速度,但它们仍会像现在的计算机一样使用暴力破解手腕。

无论我们为协议选择哪种算法,我们显然都在走向高效计算的未来。为此,我们必须庄严地选择最合适的东西,这样它们才能经受住生活时间的磨练。


参考文献


[1]:https://bitcoin . stackexchange.com/questions/6037/why-are-hashes-in-the-bitcoin-protocol-general-computed-two-computed

[2]:https://

[3]:https://learn cryptography.com/hash-functions/hash-conflict-attack

[4]:https://github.com/zcash/zcash/issues/2233

[5]:https://crypto . stackexchange.com/questions/18612/how-is-sha1-different-from-MD5

[6]:https://en . Wikipedia . org/wiki/生日_攻击

[7]:https://keccak.team/

[8]:https://

[9]:https://crypto . stackexchange.com/questions/44386/are-encryption-hash-functions-quantum-secure

(结束)