第1章
密码学基础
区块链技术最初由中本聪在论文《比特币:一种点对点的电子现金系统》中提出,区块链技术作为比特币的底层技术,本质上是一个去中心化的数据库,是指通过去中心化和去信用化的方式集体维护一个可靠数据库的技术方案。
区块链技术是一种不依赖第三方,通过自身分布式节点进行网络数据的存储、验证、传递和交换的技术方案。因此,有人从金融会计的角度,把区块链技术看作一种分布式开放性去中心化的大型网络记账薄,任何人在任何时间都可以采用相同的技术标准加入自己的信息,延伸区块链,持续满足各种需求带来的数据录入需要。
通俗来说,区块链技术是指一种全民参与的记账方式。在区块链系统中,系统中的每个人都有机会参与记账。在一段时间内,如果有任何数据发生变化,那么系统中的每个人都可以通过记账的方式将这种变化记录下来,系统会评判这段时间内记账最快、最好的人,把他记录的内容写到账本上,并将这段时间内新增的账本内容发给系统内其他人进行备份,这样系统中的每个人都拥有了一份完整的账本,这种方式,我们就称它为区块链技术。
区块链技术被认为是互联网发明以来极具颠覆性的技术创新,它依靠密码学和数学巧妙的分布式算法,在无法建立信任关系的互联网上,无须借助任何第三方中心化机构的介入就可以使参与者达成共识,以极低的成本解决了信任与价值的可靠传递难题。
从区块链的形成来看,区块链具有如下特点。
• 去中心化,无须第三方介入即可实现人与人之间点对点的交易和互动。
• 信息不可篡改,数据信息一旦被写入区块中就极难更改撤销。例如,比特币交易信息被写入比特币系统中,任何人几乎都不能再对其进行更改。
• 公开透明,在极短时间内,区块信息会被发送到网络中的所有节点,实现全网数据同步,每个节点都能回溯交易双方过去的所有交易信息。
• 去信用化,区块链使用的非对称加密技术可实现去信用化,节点之间无须信任也可以进行交易。
本书将从基本的密码学知识开始,从P2P网络、智能合约到共识机制逐步介绍构建出值得信赖的价值网络所用到的技术原理。
中本聪撰写的《比特币:一种点对点的电子现金系统》对密码学在区块链系统中的作用有着很好的诠释:用户的账户或资产在区块链上使用密码学中数字签名算法的公钥进行表示,拥有这个公钥对应私钥的人就对相应的账户或资产拥有控制权。当数字资产的所有者需要使用这些资产,转移给下一个拥有者时,需要使用私钥对整个交易进行数字签名,区块链的其他参与节点通过公钥验证数字签名合法性的方式,确认该次转账是否经过资产所有者的授权。
例如,在以太坊中,智能合约的地址采用SHA3算法生成,在存储合约状态时也用到了SHA3算法,可以说密码学知识已经渗透到了区块链的方方面面。本章不会深入挖掘各个算法的具体实现,只讲在区块链系统中会面临哪些问题,利用密码学知识如何解决这些问题。
SHA3(Secure Hash Algorithm 3)是第三代安全散列算法,该算法最开始被称为Keccak,后来在2015年8月更名为SHA3。
从区块链整体结构来看,通过本章可以了解如何在节点间建立一个安全的物理连接,保证节点间数据的可信传输,这是区块链信任机器的基石,同时为后面章节涉及密码学的技术做铺垫。
想象一下,如果我们不采用任何技术手段,在一条不加密的网络链路上传输信息可能会面临哪些问题呢?
• 窃听风险:黑客可能监听双方的通信链路,偷听双方的通信内容。
• 篡改风险:黑客可以随意修改双方的通信内容,使得双方无法正确地传递信息。
• 冒充风险:黑客可以冒充任意一个人的身份参与通信。
可以看到,如果在一条不加密的网络链路上通信是无法保证信息的可靠传输的,在此基础上建立的应用也就没有可信之说。为了解决上面的三个问题,我们需要一个密码体系。