大数跨境

区块链技术原理——哈希运算(转载)

区块链技术原理——哈希运算(转载) 数组智控产业发展科技院
2022-03-07
2
导读:从2009年至今,区块链已经走过了第一个十年。十年间,区块链逐步进入大众视野,整个社会对于区块链的关注度急剧


从2009年至今,区块链已经走过了第一个十年。


十年间,区块链逐步进入大众视野,整个社会对于区块链的关注度急剧上升。


一方面,乱象丛生的自媒体流传着各种“币圈”暴富神话,各种鱼龙混杂的区块链项目浮出水面,其中不乏打着区块链技术创新名号,实则通过ICO融资圈钱的低质量项目。


另一方面,区块链技术本身吸引了越来越多的人对其进行深入研究并探索其宽广的应用空间:各地政府对区块链积极扶持,国内外科技及金融巨头纷纷涉足区块链行业。


区块链究竟是一门怎样的技术,竟有如此魅力。俗话说,外行看热闹,内行看门道,让我们来一探究竟。


一、区块链的概念


工信部指导发布的《区块链技术和应用发展白皮书2016》的解释是:狭义来讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。


广义来讲,区块链技术是利用块链式数据结构来验证和存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全性、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。


专业的解释或许有些拗口。顾名思义,区块链(blockchain)是一种数据以区块(block)为单位产生和存储,并按照时间顺序首尾相连形成链式(chain)结构,同时通过密码学保证不可篡改、不可伪造及数据传输访问安全的去中心化分布式账本。


区块链中所谓的账本,其作用和现实生活中的账本基本一致,按照一定的格式记录流水等交易信息。


特别是在数字人民币应用中,交易内容就是各种转账信息。


只是随着区块链的发展,记录的交易内容由各种转账记录扩展至各个领域的数据。比如,在供应链溯源应用中,区块中记录了供应链各个环节中物品所处的责任方、位置等信息。


要探寻区块链的本质,什么是区块、什么是链,首先需要了解区块链的数据结构,即这些交易以怎样的结构保存在账本中。


区块是链式结构的基本数据单元,聚合了所有交易相关信息,主要包含区块头区块主体两部分。


区块头主要由父区块哈希值(Previous Hash)、时间戳(Timestamp)、默克尔树根(Merkle TreeRoot)等信息构成;


区块主体一般包含一串交易的列表。


每个区块中的区块头所保存的父区块的哈希值,便唯一地指定了该区块的父区块,在区块间构成了连接关系,从而组成了区块链的基本数据结构。


区块链数据结构示意图


二、区块链基础技术


区块链作为一个诞生刚到十年的技术,的确算是一个新兴的概念,但是它所用到的基础技术全是当前非常成熟的技术。


区块链的基础技术如哈希运算、数字签名、P2P网络、共识算法以及智能合约等,在区块链兴起之前,很多技术已经在各种互联网应用中被广泛使用。


但这并不意味着区块链就是一个新瓶装旧酒的东西。


就好比积木游戏,虽然是一些简单有限的木块,但是组合过后,就能创造出一片新的世界。


同时,区块链也并不是简单的重复使用现有技术,例如共识算法、隐私保护在区块链中已经有了很多的革新,智能合约也从一个简单的理念变成了一个现实。


区块链“去中心化”或“多中心”这种颠覆性的设计思想,结合其数据不可篡改、透明、可追溯、合约自动执行等强大能力,足以掀起一股新的技术风暴。


1.哈希运算


区块链账本数据主要通过父区块哈希值组成链式结构来保证不可篡改性。


什么是哈希运算、哈希运算的特性以及哈希运算在区块链系统中的作用。


我们以比特币系统中的第549660个区块为例看哈希运算都用在了什么地方。


比特币系统第549660个区块部分数据


1)什么是哈希运算


哈希算法(Hash Algorithm)即散列算法的直接音译。


它的基本功能概括来说,就是把任意长度的输入(例如文本等信息)通过一定的计算,生成一个固定长度的字符串,输出的字符串称为该输入的哈希值。


2)哈希运算的特性


一个优秀的哈希算法要具备正向快速、输入敏感、逆向困难、强抗碰撞等特征。


• 正向快速:


正向即由输入计算输出的过程,对给定数据,可以在极短时间内快速得到哈希值。如当前常用的SHA256算法在普通计算机上一秒钟能做2000万次哈希运算。


• 输入敏感:


输入信息发生任何微小变化,哪怕仅仅是一个字符的更改,重新生成的哈希值与原哈希值也会有天壤之别。


同时完全无法通过对比新旧哈希值的差异推测数据内容发生了什么变化。


因此,通过哈希值可以很容易地验证两个文件内容是否相同。


该特性广泛应用于错误校验。


在网络传输中,发送方在发送数据的同时,发送该内容的哈希值。


接收方收到数据后,只需要将数据再次进行哈希运算,对比输出与接收的哈希值,就可以判断数据是否损坏。


• 逆向困难:


要求无法在较短时间内根据哈希值计算出原始输入信息。


该特性是哈希算法安全性的基础,也因此是现代密码学的重要组成。


哈希算法在密码学中的应用很多,此处仅以哈希密码举例进行说明。


当前生活离不开各种账户和密码,但并不是每个人都有为每个账户单独设置密码的好习惯,为了记忆方便,很多人的多个账户均采用同一套密码。


如果这些密码原封不动地保存在数据库中,一旦数据泄露,则该用户所有其他账户的密码都可能暴露,造成极大风险。


所以在后台数据库仅会保存密码的哈希值,每次登录时,计算用户输入的密码的哈希值,并将计算得到的哈希值与数据库中保存的哈希值进行比对。


由于相同输入在哈希算法固定时,一定会得到相同的哈希值,因此只要用户输入密码的哈希值能通过校验,用户密码即得到了校验。


在这种方案下,即使数据泄露,黑客也无法根据密码的哈希值得到密码原文,从而保证了密码的安全性。


• 强抗碰撞性:


即不同的输入很难可以产生相同的哈希输出。


当然,由于哈希算法输出位数是有限的,即哈希输出数量是有限的,而输入却是无限的,所以不存在永远不发生碰撞的哈希算法。


但是哈希算法仍然被广泛使用,只要算法保证发生碰撞的概率够小,通过暴力枚举获取哈希值对应输入的概率就更小,代价也相应更大。


只要能保证破解的代价足够大,那么破解就没有意义。


就像我们购买双色球时,虽然我们可以通过购买所有组合保证一定中奖,但是付出的代价远大于收益。


优秀的哈希算法即需要保证找到碰撞输入的代价远大于收益。


3)通过哈希构建区块链的链式结构,实现防篡改


每个区块头包含了上一个区块数据的哈希值,这些哈希层层嵌套,最终将所有区块串联起来,形成区块链。


区块链里包含了自该链诞生以来发生的所有交易,因此,要篡改一笔交易,意味着它之后的所有区块的父区块哈希全部要篡改一遍,这需要进行大量的运算。


如果想要篡改数据,必须靠伪造交易链实现,即保证在正确的区块产生之前能快速地运算出伪造的区块。


同时在以比特币为代表的区块链系统要求连续产生一定数量的区块之后,交易才会得到确认,即需要保证连续伪造多个区块。


只要网络中节点足够多,连续伪造的区块运算速度都超过其他节点几乎是不可能实现的。


另一种可行的篡改区块链的方式是,某一利益方拥有全网超过50%的算力,利用区块链中少数服从多数的特点,篡改历史交易。


然而在区块链网络中,只要有足够多的节点参与,控制网络中50%的算力也是不可能做到的。


即使某一利益方拥有了全网超过50%的算力,那已经是既得利益者,肯定会更坚定地维护区块链网络的稳定性。


4)通过哈希构建默克尔树,实现内容改变的快速检测


除上述防篡改特性,基于哈希算法组装出的默克尔树也在区块链中发挥了重要作用。


默克尔树本质上是一种哈希树,1979年瑞夫·默克尔申请了该专利,故此得名。


前面已经介绍了哈希算法,在区块链中默克尔树就是当前区块所有交易信息的一个哈希值。


但是这个哈希值并不是直接将所有交易内容计算得到的哈希,而是一个哈希二叉树。


首先对每笔交易计算哈希值;然后进行两两分组,对这两个哈希值再计算得到一个新的哈希值,两个旧的哈希值就作为新哈希值的叶子节点,如果哈希值数量为单数,则对最后一哈希值再次计算哈希值即可;


然后重复上述计算,直至最后只剩一个哈希值,作为默克尔树的根,最终形成一个二叉树的结构。


在区块链中,我们只需要保留对自己有用的交易信息,删除或者在其他设备备份其余交易信息。


如果需要验证交易内容,只需验证默克尔树即可。


若根哈希验证不通过,则验证两个叶子节点,再验证其中哈希验证不通过的节点的叶子节点,最终可以准确识别被篡改的交易。


默克尔树在生活中其他领域应用也非常广泛。


例如BT下载,数据一般会分成很多个小块,以保证快速下载。


在下载前,先下载该文件的一个默克尔树,下载完成后,重新生成默克尔树进行对比校验。


若校验不通过,可根据默克尔树快速定位损坏的数据块,重新下载即可。


【声明】内容源于网络
0
0
数组智控产业发展科技院
以AI技术为底层能力,聚焦智慧园区、城市公共安全、数智警务、健康医疗、能源电力、科研实验及平安校园等领域,提供从感知到决策的全流程软硬件一体化的国产装备智能体产品解决方案。
内容 986
粉丝 0
数组智控产业发展科技院 以AI技术为底层能力,聚焦智慧园区、城市公共安全、数智警务、健康医疗、能源电力、科研实验及平安校园等领域,提供从感知到决策的全流程软硬件一体化的国产装备智能体产品解决方案。
总阅读2.3k
粉丝0
内容986