一种基于区块链的物联网架构设计
2022-05-26张学典林至锽
张学典,林至锽
(上海理工大学光电信息与计算机工程学院,上海 200082)
0 引言
当前,传统的物联网(Internet of Things,IoT)架构所使用的服务器/客户端模式(Client-Server model,C/S)已逐渐难以适应当今日益繁杂的物联网生态环境系统,其中心化的网络拓扑结构在安全性方面也面临很大挑战。区块链是一种以安全性著称的分布式网络技术,将区块链应用于物联网领域,能够推动物联网发展、降低物联网应用成本,并改善物联网当前的安全状况[1]。然而,典型的区块链技术也存在工作效率低、耗费计算资源多的缺点,使得区块链技术不能良好地契合物联网的需求[2]。因此,基于在效率和计算资源利用率上作出优化的区块链技术,提出一种更适用于物联网应用环境的系统架构,将有利于推动该领域的发展。
近年来已有许多学者针对区块链技术在物联网领域的应用开展了相关研究。如叶小榕等[3]将区块链和区块链中的智能合约技术与二维码、RFID 及近场无线通信等技术相结合,实现了供应链场景下的信息自动化录入;Huh等[4]将以太坊作为平台,搭建一套不仅可使网内设备轻松地与其他设备同步,而且使整个网络获得抵御DDoS 攻击能力的物联网系统;肖程琳等[5]基于区块链技术搭建的食品信息溯源系统利用区块链的分布式存储与共识机制,保证了信息的不可篡改性并实现了信息共享;Thakur 等[6]介绍一种基于区块链技术的数据库,该数据库在印度已被应用于土地档案管理。
上述几类系统直接将数据存储于区块链中,虽然该方式既保证了系统的安全性与隐私性,又实现了数据的冗余存储,但是并未实现对数据取用的控制,数据在区块链系统内是公开的。因此,有学者进一步引入了“交易”的概念,将物联网数据资产化,并通过“数据交易”实现对数据流转的控制。如盛念祖等[7]借助区块链技术中的智能合约,实现了物联网数据的资产化及数据取用的交易化;葛琳等[8]搭建一套由数据区块链与交易区块链组合而成的双区块链方案,保障了数据安全与信息交互安全。这两类系统所描述的系统模型中都设置了承担交易审核工作的节点,资产化后的数据交易需围绕该交易审核节点进行工作,从而在一定程度上降低了系统的去中心化程度。
为实现更彻底的去中心化,Dorri 等[9-10]设计一种具有传感设备、覆盖网络与云存储3 层结构的区块链物联网系统,并引入分布式信任方法降低物联网事务的处理时延。其还设计了另一种系统,将网络中的节点分为若干由个别高资源节点统领的区域,并将区块链中的矿工角色赋予给这些高资源节点。Misra 等[11]将网络分为由高资源节点统领的若干较小区域,使物联网系统可接受异构的边缘节点与边缘网络,并使得边缘节点在网络中具有可移动性。
本文基于区块链技术提出一套物联网系统架构,该架构在已有研究的基础上作出了几点改进。首先,不再对物联网数据进行资产化处理。在智能家居、智慧城市等领域,物联网数据并没有进行资产化交易的需求,使用资产化与交易化的数据流转控制方案,不仅会阻碍物联网设备之间进行无偿的数据交换,而且会额外增加区块链系统的复杂度。其次,系统使用随机PoC 机制作为共识机制,这种共识机制是基于PoC 机制与随机投票方法提出的。由于不再需要维护货币系统,系统得以使用PoC 机制进行计算资源损耗较少的记账权选举,并使用随机投票方法增加记账权分配的随机性。最后,应用该架构的物联网系统在网络结构上具有较高灵活性。系统将被分割为若干覆盖范围较小的区域网络,区域网络中具备较多网络资源的节点将参与整体区块链网络的维护,而区域网络的具体结构并不影响整体区块链网络的性能。
1 背景知识
1.1 区块链技术
区块链技术是一种基于分布式网络架构、非对称加密、散列函数等元素的具有高度安全性的去中心化网络技术。区块链也可被看作一种具有不可篡改性的去中心化数据库[12-13]。共识机制是区块链技术中的一个重要组成部分。
1.1.1 不可篡改性
区块链通过哈希算法和链式结构实现了其所记录内容的不可篡改性。
哈希函数可将数据压缩成一个由随机字母和数字组成的定长的字符串,一个好的哈希函数几乎不会出现散列冲突。由哈希函数计算出来的散列值具有不可逆的特性,因此哈希函数常被应用于密文存储与验证中,也可用于数据真伪性验证[14]。
在以比特币为代表的区块链应用中,交易记录以Merkle 树的形式组合在一起形成区块。Merkle 树又称哈希树,是一种具有防伪能力、基于哈希函数构建的数据结构。更进一步地,区块链中的后继区块会记录前序区块的哈希值,形成前后区块的链接[13]。Merkle 树与区块的链式结构如图1所示。
基于对哈希函数的应用,如果区块链中记录的任何信息发生了篡改,区块链会从与该条数据所在区块处断开。当有节点基于被篡改的区块链尝试制作新区块时,新区块显然不会在其他节点处通过核验,因此区块链文件及其所记录的内容难以被篡改。
1.1.2 去中心化
去中心化是区块链技术的基本特征。在基于区块链搭建的系统中,既不存在通信上的中心节点,也不存在存储上的中心节点,各节点之间是平等的。在区块链系统中,消息以广播形式实现传递,记录在消息中的数据会在各节点处进行完整地记录与保存。在区块链系统中,数据的验证、存储与传输通过共识机制完成。共识机制是一种可在系统各个节点之间通过数学方法建立信任的机制,这种机制不需要中心节点的存在[14]。
Fig.1 Merkle tree and chain structure of blockchain图1 Merkle树和区块链链式结构
这种通讯与存储上的冗余也使区块链应用具有较高安全性。基于去中心化的网络结构,区块链应用消除了通信网络对中心节点的依赖,系统不会因中心节点损坏而崩溃。同时,去中心化的存储方式也使得其存储的数据获得了以节点数量为倍数的冗余。
1.1.3 共识机制
记账权即区块链技术中记录新区块的权力,由得到记账权的节点制作的新区块将被所有其他节点认可,记账权的分配规则直接决定了区块链的应用性能[15-16]。共识机制是指区块链技术中用于在所有参与者之间分配记账权的机制,其在网络中所有节点之间形成一个统一的计算结果,所有节点都认可这一结果。共识机制的工作逻辑决定了基于区块链技术搭建的应用的工作效率。PoW 机制与PoS 机制是两种典型的区块链共识机制,而PoC 机制是一种基于贡献值分配记账权的共识机制[17]。
(1)基于工作量证明的共识机制(Proof of Work,PoW)。PoW 机制基于工作量证明进行记账权分配,该机制为所有参与记录权竞争的节点设置了一个难以解答而又易于验证的难题,首先得到题解的节点在公布答案并得到其他节点验证通过后,获得所有节点公认的新区块记录权。比特币使用PoW 机制作为分配新区块记录权的方式,所有参与比特币记账权竞争的节点都需要寻找一个值,该值哈希结果的前n 位必须为零。n 值记录在最后一个区块头的Nonce 参数中,Nonce 值会根据网络中的节点数量进行动态调整,从而使区块链更新时间在一个可接受的范围内浮动。
哈希函数的结果具有高度随机性,因此参与新区块记录权竞争的节点们只能通过枚举法求得难题的解。PoW机制使所有竞争的参与者都需要耗费大量计算资源进行函数计算,因此基于PoW 机制搭建的区块链应用十分耗费计算资源。作为回报,区块链应用会给予新区块记录权的获得者一定的虚拟货币作为奖励,以鼓励所有节点积极参与竞争。
(2)基于权益证明的共识机制(Proof of Stake,PoS)。PoS 将记账权分配给在该系统中具备最高权益的节点。PoS 机制认为,被分配到记账权的节点在该系统内都具有较高权益,其更倾向于维护系统的稳定而非破坏它。PoS机制中的权益值是指在一定时间周期内,节点获得的虚拟货币数量与货币持有时间乘积的累加和,即:
所有参与竞争的节点会在新区块生成周期内计算所有节点的权益值,当其得知自己是已知的最高权益值节点时,就会自行生成新区块,并将自己的信息记录在区块头中供他人核验。生成新区块后,记录权获得者的权益值会被清空,并获得一定的虚拟货币作为回馈。
PoS 机制规避了PoW 机制对计算资源的较高需求,缩短了区块链更新周期,大大提升了区块链应用的工作效率。
(3)基于贡献度证明的共识机制(Proof of Contribution,PoC)。在使用PoC 机制的区块链应用中,新区块的记录权将分配给系统中具有最高贡献度的节点,这与使用PoS 机制搭建的区块链应用类似。PoC 机制要求系统中每一个节点都维护一个记录了所有节点贡献度的数据库,每当推选新的区块记录者时,节点们都会查阅数据库中的记录,具有最高贡献度的节点会自行生成新区块,其他节点则等待指定节点制作的新区块。节点贡献度以节点在维护系统中所发挥的作用为基础进行计算,不同的区块链应用可设计适合其使用环境的不同计算方式。使用PoC 机制搭建的区块链应用可适用于知识产权记录、供应链维护等环境,在这类应用环境中,区块链文件记录的数据难以使用虚拟货币等标的物进行定价与交易。
但是PoC 机制也具有明显缺点,在使用PoC 机制搭建的区块链应用中,新区块记录权分配与各节点贡献值紧密耦合,意味着下一个区块记录权的分配情况是确定的,且对所有区块链应用的参与者都可知。攻击者可轻易获知新区块记录权分配情况,从而破坏系统稳定。
1.2 随机投票方法
随机投票方法可利用哈希函数散列结果的随机性,在分布式网络不同节点之间求得一个统一的随机结果。区块链技术中利用哈希函数散列结果的随机性,使用随机投票方法搭建一种共识机制。这种共识机制要求所有参与区块链维护的节点在分配记账权阶段自行制作区块并广播,所有节点收到区块后,使用随机投票方法选择其中一个区块作为新区块,所有节点可得到一致的随机投票结果。随机投票具体步骤如下:①节点自行制作区块,并在系统中广播;②节点对所有收到的区块进行哈希计算,并对散列结果进行记录;③计算所有散列值的字符串距离,求得与散列值字符串距离最近的区块;④统计两个距离最近的散列值与其他散列值各自距离的总和,总和较小者即为所求结果。
2 基于区块链的物联网系统框架设计
如图2 所示,该系统具有3 层结构,分别是数据层、上链层和使用层。系统内有3 种节点,分别是数据节点、上链节点与数据使用者。其中,位于数据层的数据节点们被划分为若干个覆盖范围较小的区域网络,每个区域网络都包含一个上链节点。相较于数据节点,上链节点应具备较强的计算能力与较多存储资源,区域网络内的物联网数据可在区块链参与者节点处得到汇总。来自不同区域网络的上链节点组成上链层,上链层会在共识机制作用下,把从区块链参与者节点处收集来的信息以区块链文件形式汇聚起来。使用层由数据使用者们构成,数据使用者会阅读区块链文件,从中得知系统中当前存在的数据类型,并据此向上链层发出数据申请。在通过申请并获得数据后,这些节点还应向上链层反馈对所获得数据的评分。
Fig.2 System architecture model of Internet of Things based on blockchain图2 基于区块链的物联网系统框架模型
2.1 数据层
数据层由数据节点组成,数据节点对计算与存储资源要求不高,其工作是负责收集或生成物联网数据,并参与上链节点的数据汇总工作。上链节点需要具备一定的计算与存储资源。数据层围绕若干上链节点,被划分为若干个覆盖区域较小的区域网络。区域网络中的物联网数据在上链节点处汇总,汇总的数据被用于维护区块链文件。区域网络不一定是物理空间概念上的,一些节点可同时扮演上链节点与数据节点的角色。
在数据层中,区域网络的网络组织方式及工作模式不影响系统整体性能,只需保证数据可在上链节点处汇总即可。上链节点会根据收集到的汇总数据制作摘要,摘要将被上链节点广播到上链层中,并最终记录在区块链文件里。
2.2 上链层
上链层由上链节点组成,该层通过共识机制将上链节点发布的数据摘要组合成区块文件,并以此更新与维护区块链文件。区块链文件会被数据使用者视作系统存在的数据目录,并据此向上链层申请数据。在获得指定的数据后,上链层还会收到来自数据使用者的数据评分,这些评分也将参与上链节点们根据共识机制更新与维护区块链的过程。
为记录使用层反馈的数据评价,区块使用含有双Merkle 树的数据结构,具体形式如图3 所示。在具有双Merkle 树结构的区块中,第一棵Merkle 树用于记录区块链参与者在网络中发布的数据摘要,第二棵Merkle 树用于记录数据使用者在网络中反馈的数据评分。
本架构使用将PoC 机制与随机投票方法相结合的随机PoC 机制。相较于PoW 机制、PoS 机制与PoC 机制,随机PoC 机制既降低了区块链文件的工作周期与资源负担,又无需使用资产化及交易化的手段处理与交付数据,还降低了PoC 机制中记账权分配的确定性。
Fig.3 Block data structure图3 区块数据结构
在本架构使用的区块结构中,第二棵Merkle 树记录了针对所有上链节点的评分数据,这些评分数据将被视作各个上链节点的贡献值。将所有节点依照贡献值递减排序,贡献值排名前1/3 的节点将被视作候选者。所有节点将基于随机PoC 机制对候选者进行随机投票,分配记账权。随机PoC 机制具体步骤如下:
步骤1:节点自行制作区块,并在系统中广播。
步骤2:节点对所有收到的区块都进行哈希计算,并对散列结果进行记录。
步骤3:将所有节点依照贡献值进行递减排序,排名前1/3 的节点被记录为候选者。
步骤4:统计所有候选者制作区块的散列值与其他非候选者制作区块散列值的字符串距离之和,统计结果最小的候选者得到记账权,当选候选者的贡献值被清空。
随机PoC 机制会根据系统的贡献值情况选择不同工作方式。由于系统中节点获得数据评分的进度不一,系统可被识别为3 种状态:①系统内几乎不存在已被评分的节点(数量少于节点总数的1/3);②系统内仅部分节点获得了评分(数量介于节点总数的1/3~2/3);③系统内几乎全部节点都已获得了评分(数量大于2/3)。
当系统处于状态1 时,系统将使用随机投票的方式分配记账权;当系统处于状态2 时,系统在已获得评分的上链节点之间使用随机投票方式分配记账权;当系统处于状态3 时,系统在所有节点之间使用随机PoC 机制分配记账权。
此外,上链层还需要负责接收由使用层的数据使用者发来的数据申请和数据评分,并作出反应。
当上链节点收到由数据使用者直接发送或其他上链节点转发的数据申请时,节点首先在本地数据库中对该操作进行记录,并检索申请数据节点的历史操作。假如申请数据的节点在历史上未曾拖欠数据评分,则向其他上链节点转发该申请,否则丢弃该申请。当指定数据的所有者收到数据申请,会在申请者历史操作记录核验通过后,对相应数据进行加密、签名并整理打包,在网络中进行广播。数据申请者可在广播信报中捕获信报,再通过私钥解密读取。
当上链节点收到来自数据使用者直接发送或其他上链节点转发的数据评分时,节点首先在本地数据库中对该操作进行记录,然后检索并返回数据评分节点的历史操作。假如返回数据评分的节点有拖欠的数据评分,则为其补充数据评分记录并保存,数据评分将最终保存在区块文件中。
2.3 使用层
使用层处于整个系统架构的最外围,该层由数据使用者组成。数据使用者在上链节点组成的网络中常驻,但不直接参与区块链文件维护与更新。数据使用者自行阅读区块链文件中记录的数据摘要,并根据自己的需求向上链层广播数据请求。在收到从上链层返回的需求数据后,数据使用者应尽快向上链层反馈针对该笔数据的评分。数据评分机制由数据使用者依照主要规则自行制定。
数据请求:由于区块链文件并不记录数据生成者的网络地址,因此数据使用者必须在上链层网络中广播数据请求,使数据请求流程对所有上链节点与数据使用者都是公开的。发送数据请求后,数据使用者等待需求数据的返回。
评分反馈:在物联网或其他使用环境中,不仅是网络攻击,数据采集方本地的物理条件异常也可能致使交付的数据产生错误,这类情况是难以通过网络技术手段发现的。该架构调动数据使用者主动对其使用的数据进行评分,以帮助维护系统架构的运作。
对于基本可确定无误的数据,数据使用者对其数据评分为1 分;对于基本可判断为有误的数据,数据使用者对其数据评分为-1 分;对于没有能力进行正误判断的数据,数据使用者对其数据评分为0分。
与数据申请同理,数据评分也会在上链层中进行广播,使数据评分结果对所有上链节点和数据使用者都是公开的。发送数据评分后,数据的使用流程结束。
使用层向上链层发起数据交互流程如图4所示。
2.4 区块链文件维护与更新
在该系统架构中,数据交付方法由数据的资产化交易方法被取代为“先申请、后交付、再评价”的方法,因此系统不再需要维护一套用于支撑虚拟货币支付体系的子系统。由于摆脱了交易体系的限制,系统降低了复杂度,可根据具体使用环境自由地设定区块链文件更新周期。
Fig.4 Process of data interaction from the user-layer to the chainlayer图4 使用层向上链层发起数据交互流程
在一个区块链文件维护与更新周期中,上链节点们的交互如图5所示。
Fig.5 Information interaction of the nodes of chain-layer in a cycle图5 上链节点们在一个周期内的信息交互
3 安全性分析
3.1 通信安全性
在本文论述的系统框架下,上链节点对数据摘要的上传、数据使用者对数据的申请与评价以及区块链参与者对被申请数据的传输都是在对信息进行非对称加密后进行的,因此攻击者无法在不掌握具体私钥的情况下获取信息详情。同时,所有物联网数据都保存在上链节点本地,即便节点受到攻击,攻击者也仅能掌握有限的数据,对系统产生的影响有限。另外,本文论述的系统框架提出了一种可供数据使用者向上链层反馈评分的机制,假如攻击者因劫持网络节点而对系统的数据安全性产生实质性影响,系统也可通过数据使用者的数据评分发现异常情况。
3.2 访问控制
对物联网数据的流动进行有效控制有助于实现对数据使用的安全管理。在本文论述的系统框架下,数据流动需要由数据使用者发起,经由所有上链节点审核后再公开地返回数据使用者。在该机制下,系统不仅实现了对数据使用的控制,而且使系统内发生的任何数据读取操作都具有不可否认性。通过对数据访问的控制,系统进一步提高了安全性。
4 结语
本文在已有研究基础上,引入PoC 机制与随机投票方法,使基于该共识机制搭建的区块链应用实现了去货币化,在该区块链应用上进行的数据交互也具备了去交易化特征。随着区块链与物联网技术的进一步发展,区块链技术在物联网领域的应用会更加普遍,在诸如智能家居、智慧城市等领域的物联网应用场景中,基于区块链技术搭建的去货币化、去交易化的物联网系统框架必将得到更广泛的应用。此外,本文搭建的物联网系统框架还赋予了区域覆盖网络极高的自由度,这意味着该框架具备可无限细分的可能性:区域网络可依照本文提出的框架搭建一套子系统,子系统的区域网络又可搭建一套相似的子子系统……基于可能具备的无限细分特性,本文提出的系统框架可适用于如智能家居集群、智慧城市集群等覆盖范围更大、具备分形特征的网络系统。
另外,本文提出的系统框架使用了周期确定的区块更新方式和“申请—交付—评价”的数据交付方式,该框架的使用性能无法通过成块速率测试、单位时间吞吐量测试等方式进行定量分析。因此,尝试寻找合适的评价指标及评价方式在后续研究中是十分必要的。