— 公钥即身份 数字签名 哈希指针 —
第四个工具是消息认证码技术,它用来确认自己收到的信息是否就是发送者的本意,这里同样会存在对称密钥中遇到的密钥配送问题。因为和我们讨论的区块链技术关系不大,这里不再做具体展开。
第五个工具是数字签名技术,它是基于公钥密码的原理,将其反过来进行使用的。简单来说就是发送方可以利用自己的私钥为消息附加数字签名,消息发送后,接收方可以使用发送方的公钥来检查信息的真实性和完整性。通过数字签名技术,可以实现现实世界中的签字、盖章的功能。
最后一个工具是伪随机数生成器,它是通过密码学技术构造的生成随机数的软件。随机数的核心是不可预测性,因为依靠人为编程制作的软件无法生成真正的随机数,因此要加上一个“伪”字。
以上六种技术结合起来,共同构成了密码学所需要达成的信息安全保护的目标,即机密性、完整性、认证和不可否认性。那么,区块链的不可篡改和加密技术究竟吸取了其中的哪些部分呢?我们以区块链上第一个完整的应用,也是最具代表性的比特币为例来进行说明。
比特币最主要运用到了上述密码学工具箱中的三项,即公钥密码、单向散列函数及数字签名。为了实现交易的公开可验证,比特币上拥有众多的开放账户地址,每一笔交易被记录上链之前都需要进行有效性地检验,并且事后不得篡改。
基于公钥密码技术,用户无须他人批准,就可以任意创建匿名比特币账户。这里公钥即用户的账户身份,在互联网中心化的环境下,账户的申请需要获得平台的授权,密码等信息资料也需要存放在平台的服务器上。在比特币系统中,账户可以任意生成,任何人均可查询,但必须通过用户本人的私钥才可以解密相关的信息。
通过使用私钥对比特币交易进行数字签名,只需几分钟,就可以发送比特币给全球任何人。交易被签名后,有比特币矿工负责验证交易的有效性,并更新相关比特币账户的余额。数字签名的引入保证了用户的交易不能够被伪造,以此保障了个体在系统中的权利,也为比特币大规模真实可信地传递交易信息提供了技术支撑。
比特币使用的数字签名方案叫做椭圆曲线数字签名算法。这个算法经过了数年的细致密码分析,被普遍认为是安全的。在使用椭圆曲线生成交易数字签名的时候,确保随机性良好来源至关重要,这里就会涉及到一些伪随机数生成器技术的应用。
单向散列函数(常被音译为哈希函数)有很多,SHA-256是一个主要被比特币世界采用的,而且效果还很不错的哈希函数。哈希函数被称为密码学中的瑞士军刀,其被广泛应用在比特币的架构中。首先是信息的存储,在比特币中我们会遇到哈希指针,它指的是一个指向数据存储位置及其位置数据的哈希值的指针。除此之外,哈希指针还可以明晰某个时间戳下该数据的哈希值。
通过哈希指针构建一个链表,我们将这个数据结构称为区块链。比特币就是将信息打包进这样一个个前后单向连接的区块当中,其中每个区块既有数据又有一个指向上一个区块的哈希指针。这种情况下,每个区块不仅能告诉我们上一个区块的值在哪里,还包含了该值的哈希值摘要,使得我们能够验证那个值没有改变。
这种结构最大的好处就是防篡改,如果有人修改了区块链中的任意部位的数据,那么将会导致下一个区块的哈希指针不正确。如果他希望继续尝试,并通过篡改下一个区块的哈希值掩盖这次篡改,他就需要一直沿着区块改动下去。因而只要我们将链表头部的哈希指针(也被为称为创世区块)存储在无法改动的地方,就没有人能够做到在不被检测到的前提下,篡改任何区块。
通过公钥密码、哈希函数及数字签名三种技术,比特币呈现出了不可篡改和加密这两大属性:在涉及群体的不可篡改方面,基于哈希函数生成的哈希指针,确保了已经存储入区块的信息难以被篡改;在个体的加密方面,公钥密码实现了去中心化的身份认证,数字签名则保证了用户在交易中的权利义务与自己的承诺挂钩。
除了上述核心技术之外,在开源和开放、激励和协调预期两大技术中,比特币也通过应用密码学给原本的网络架构带来了新鲜的设计。在第一个方面,整个比特币系统是基于世界上广泛使用的密码技术以公开的方式设计的。密码学有一个非常反常识的原则就是不要使用保密的密码算法,这是因为使用一个公开数年的、经过无数破译者尝试仍无法破译的算法显然会更加安全。
我们知道,比特币其实是在TCP/IP协议之上构建的。在继承了互联网开源和开放的代码精神的基础上,它进一步将一系列密码学的技术引入其中。事实上,除了采用上面三项密码学技术形成更加可信的、系统规则和用户个人信息均得到更好保障的状态之外,比特币本身并没有使用任何加密算法(此处加密和我们讨论的个体加密不同,泛指密码学的信息加密技术)。从这角度来说,密码对于比特币更多是一种权利保护的手段,而不会与网络原本的开放精神背道而驰。
在另一个方面,让我们来关注一下比特币的激励设计。我们在之前谈到了通过将数据打包进区块形成链表结构,这保证了数据一旦生成,后面想要篡改起来是非常困难的。但是在这个过程中,如何保证节点诚实的提供数据呢?比特币采用了一个非常巧妙的设计,就是对哈希函数进行解谜运算。
在这一运算过程中,节点们通过争相计算这个谜题获得一次交易记账的机会,并将该笔记录写入区块。一个区块是由若干条交易记录构成的,其中创建区块的节点可以在这个区块中加入一笔特别的交易,这笔交易就是一个造币的交易。由于向区块链中添加区块就好像从金矿中挖出比特币一样,因此被称为挖矿,而从事挖矿的人则被称作矿工。
这个过程实际就是在暴力破解哈希函数。当然,这种破解只是为了证明某个矿工确实投入了大量的计算资源来完成工作,而不是说真正要去攻击哈希函数。通过这样的奖励机制,比特币保证了大多数节点诚实地去记录区块的信息。
上述这两个方面,严格来说并不仅仅是单纯运用密码学的技术,而是以密码学技术为基础做出的系统和制度层面的创新。比如各方竞相破解哈希函数的设计,就是我们在之前的文章中谈到的博弈论的情形。从这个地方开始,比特币创设了之前的博弈论没有遇到过的基于密码学的,信息完全透明的环境。
比如将多种密码技术置于拥有大规模数据样本的区块链系统后,将可能推动整个密码学的研究和发展,进而促进密码学和经济、社会等学科的交叉和结合。也正是在这样一系列类似的创新措施的帮助下,比特币才得以呈现出欣欣向荣的生长力量,由此揭开了整个区块链世界的序幕。
本文地址: https://www.xiguacaijing.com/news/zhuanlan/2019/5797.html
赞助商