区块链中的密码学技术|青训营笔记
这是我参与「第四届青训营 」笔记创作活动的的第37天
1. 背景/介绍
摘要: 区块链是新一代信息技术的重要组成部分,是分布式网络、加密技术、智能合约等多种技术集成的新型分布式数据库基础架构与计算范式。利用共识算法更新数据,利用密码学技术保证数据安全性。在交易中极大的保护了用户双方的隐私,是区块链得到发展的重要因素。近年来,区块链技术和产业在全球范围内快速发展,应用已延伸到数字金融、物联网、智能制造、供应链管理、数字资产交易等多个领域,展现出广阔的应用前景。本文从区块链的基本构架出发,结合数字货币的生成与交易,阐述区块链如何利用密码学原理完成一系列相关技术操作。
关键词: 区块链、密码学、数据安全、隐私保护
2. 方法
来说一下我自己的经历来引出区块链的话题,相信很多人对BT种子和BitTorrent不会陌生,在五年前我开始接触迅雷,从迅雷中了解到可以用bt种子和磁力链接来下载想要的电影和其他资源,并且越热门的资源下载速度就越快。这与普通下载有这很大的区别,传统的下载是把一个资源放到服务器上,下载的人一多每个人分享到的带宽就小了。网速也就变慢了,而BitTorrent协议上的资源不再是原来的中心化方式来提供,而是多对多的互相传输下载的人越多速度就会越快,这就是早期的P2P对等网络下载(peer to peer),其实在这个阶段互联网上已经有了分布式的概念。BitTorrent的创始人是Bram Cohen,也是最近大火的Chia的发明者。Chia(奇亚)于2017年8月注册成立,旨在开发一个改进的区块链和智能交易平台。Bram Cohen团队正在构建Chia网络,以改善全球金融和支付系统。Chia将成为第一个企业级数字货币。Chia使用的是比特币以来第一个新的中本聪共识算法。它被称为 "空间和时间证明"(Proof of Space and Time),是由目前最优秀的网络协议工程师、BitTorrent的发明者Bram Cohen创建的。Chialisp是Chia新推出的智能交易编程语言,功能强大、易于审核、安全。
2008年11月1日,中本聪在“metzdowd.com”网站的密码学邮件列表中发表了一篇论文,题为《比特币:一种点对点式的电子现金系统》。论文中详细描述了如何创建一套去中心化的电子交易体系,且这种体系不需要创建在交易双方相互信任的基础之上。很快,2009年1月3日,他开发出首个实现了比特币算法的客户端程序并进行了首次“挖矿”(mining),获得了第一批的50个比特币。这也标志着比特币金融体系的正式诞生。
2010年12月5日,在维基解密泄露美国外交电报事件期间,比特币社区呼吁维基解密接受比特币捐款以打破金融封锁。中本表示坚决反对,认为比特币还在摇篮中,经不起冲突和争议。七天后的12月12日,他在比特币论坛中发表了最后一篇文章,提及了最新版本软件中的一些小问题,随后不再露面,电子邮件通讯也逐渐终止。
2.1区块链的基础架构
数据层、网络层、共识层
数据层(Data Layer)相当于区块链四大核心技术中的数据结构,即“区块+链”的结构。从还没有记录交易信息的创世区块起,直到现在仍一直在新添加的区块,构成的链式结构,里面包含了哈希值、随机数、认证交易的时间戳、交易信息数据、公钥和私钥等,是整个区块链技术中最底层的数据结构。
网络层(Network Layer)则类似于四大核心技术中的分布式存储,主要是点对点机制、数据传播机制和数据验证机制。分布式算法以及加密签名等都在网络层中实现,区块链上的各个节点通过这种方式来保持联系,共同维护整个区块链账本,比较熟知的有闪电网络、雷电网络等第二层支付协议。
共识层(Consensus Layer)则相当于四大核心技术中的共识机制,主要包括共识算法机制。目前为止有 PoW、PoS、DPoS、PoW 和 PoS 结合、燃烧证明、重要性证明等十几种共识机制。
数据层、网络层、共识层三者构成了区块链层级的底层基础,也是区块链必不可少的三个元素,缺少任何一个都无法称之为真正的区块链技术。
区块链技术的拓展元素 激励层、合约层、 应用层
激励层(Actuator Layer)包括激励机制和分配制度。在区块链中一般指挖矿奖励,通过奖励一部分数字资产从而激励矿工去验证交易信息,从而维持挖矿活动以及区块链账本更新的持续进行;另外,还会制定一些相关制度,奖惩分明,激励记账节点,惩罚恶意节点。
合约层(Contract Layer)自然就和我们最常听到的智能合约有关。把代码写到合约里,就可以自定义约束条件,不需要第三方信任背书,到时间立即实时操作。当然除了智能合约,是区块链作为信任机器的重要层级,还有一些别的脚本代码、侧链应用等等。
应用层(Application Layer)就很简单了,类似于手机上的各种 APP,即区块链的各种应用场景。例如比特币、以太坊等就是区块链的应用项目,这个层面包括未来区块链应用落地的各个方面。
2.2密码学哈希函数
哈希函数: 以不定长数据为输入, 产生固定长度的Hash值 h = H(M).密码学哈希函数: 满足以下两种情况在计算上不可行的哈希函数. 1) 对已知Hash值找到对应的数据M; 2) 找到两个不同的数据M对应相同的Hash值.密码学Hash函数的安全性需求:1)输入长度可变,输出长度固定;2)效率: 对任意给定的 x, 计算 H(x) 比较容易, 用硬件软件均可实现;3)抗原像攻击(单向性): 对给定的Hash值 h, 找到满足 H(x) = h 的 x 在计算上是不可行的;4)抗第二原像攻击(抗弱碰撞性): 对任何给定的 x, 找到满足 y ≠ x 且 H(x) = H(y) 的 y 在计算上是不可行的;5)抗碰撞攻击(抗强碰撞性): 找到任何满足 H(x) = H(y) 的偶对 (x, y) 在计算上是不可行的;6)伪随机性: H 的输出满足伪随机性测试标准.
3. 结果(密码学角度看比特币)
在区块链中,哈希函数主要用于数据完整性、数据加密、共识计算的工作证明、区块链之间链接等。前一个区块的指针。区块链中,前一个区块的指针有包含区块的哈希值,因此,每个区块不但链接前一个区块的位置,也提供一个哈希值去验证这个区块所包含的数据的完整性。
在区块链中,Merkle树也被广泛应用。Merkle树类似于数据结构中的树形结构,主要为二叉树与多叉树,在节点中保存信息的哈希值。在区块链的数据区块中数据结构主要为二叉Merkle树,每个交易记录对应于一个哈希值,并对应于Merkle树的叶子节点,两个叶子节点再次两两配对哈希计算,通过递归的方式直到最后一个哈希值作为Merkle树根存入区块体。
假设一个区块中有16笔交易, 16的对数是4,也就是要找到这个区块中的任意一笔交易,只需要4次就可以了,它的默克尔路径会保存4个哈希值。
一笔交易大概250 Byte左右,路径数代表哈希值的数量,路径数是4表示这条路径存了4个哈希值,每个哈希值是32 Byte,区块大小 = 交易数 * 250 Byte,路径大小 = 路径数 * 32 Byte。当区块大小由16笔交易(4KB)增加至262144笔交易(65MB)时,为证明交易存在的默克尔路径长度增长极其缓慢,仅仅从128字节到576字节。有了默克尔树,一个节点能够仅下载区块头(80字节/区块,里面包含上一区块头的哈希值,时间戳,挖矿难度值,工作量证明随机数,包含该区块交易的默克尔树的根哈希值),然后通过从一个满节点回溯一条小的默克尔路径就能认证一笔交易的存在,而不需要存储或者传输大量区块链中大多数内容,这些内容可能有几个G的大小。这种不需要维护一条完整的区块链的节点,又被称作简单支付验证(SPV)节点,它不需要下载整个区块而通过默克尔路径去验证交易的存在。
4. 总结/讨论
随着区块链的发展,有越来越多的人相信比特币等虚拟货币,并且加入到虚拟货币网络,只有越多人的加入,才使得虚拟币越具有价值,区块链技术可以安全的储存增长数据,为了发布新的区块链而不断消耗算力进行寻找特别的编码,也就是所谓的挖矿,而贡献算力的人被称之为矿工,这些‘矿工‘为之投入大量的算力。算力就像是赛跑,第一个找到随机数块的人,就会获得一定数额的比特币作为奖励。10000个人在同一个区块寻找只有一个人可以拿到奖励,其他的9999人寻找随机块的努力全部都是白费的,只是在浪费电和能源对社会没有产生任何实际价值。以挖矿为例,根据最新排名比特币的挖矿年耗电量预计超过了全球用电量排名第54位的国家伊拉克,跟别说其他类似虚拟货币的耗电总和了。所以我们要杜绝浪费资源,正确看待区块链,做到资源浪费和价值之间的平衡。
参考文献
[1] 袁勇,王飞跃.区块链技术发展现状与展望[J].自动化学报,2016,42(4);481-494.
[2] 杨晓晨,张明.比特币:运行原理、典型特征与前景展望[J].金融评论,2014(1):38-53.
[3] Atzori L, Iera A, Morabito G. The internet of things: A survey[J]. Computer networks,2010, 54(15): 2787-2805.
[4] Nakamoto S.Bitcoin: a peer-to-peer electronic cash system (2008)[J]. 2008.
[5] Khan M A, Salah K. IoT security: Review, blockchain solutions, and open challenges[J]. Future Generation Computer Systems, 2018, 82: 395-411.