基于智能合约的分布式数据共享模式及其算法研究*

2021-11-23 03:14姜庆臣莫路锋朱雪芬唐丽华
网络安全与数据管理 2021年11期
关键词:合约共识分布式

姜庆臣,莫路锋,朱雪芬,唐丽华

(1. 浙江农林大学 信息与教育技术中心, 浙江 杭州311300 ;2. 西湖大学 信息中心,浙江 杭州310024)

0 引言

传统的分布式数据共享管理模式中,多采用集中模式,通过建立数据中心来集中存储管理,为确保隐私数据不被外泄,数据中心的管理者通过提高中心节点的防御能力来抵抗各种攻击,如数据库加密技术、ACL 、入侵检测和防御等。而在区块链技术中,数据存储采用分布式管理模式,没有统一的管理者,攻击者很容易攻陷其中一些节点,比如: 节点伪装、网络嗅探等。因此传统的数据中心管理模式无法适应数据共享交换需求,需要对管理模式进行改造。目前,面向去中心化区块链系统日益增多,如医疗健康、资产管理、档案管理、智能电网等[1-4]。随着区块链技术的推广以及对智能合约的支持,研究方向也越来越倾向于去中心化自治系统,并逐步走向去中心化自治组织/ 公司[5]。由于区块链系统与传统的分布式数据库在技术、应用等方面也有很大不同,分布式数据库需要考虑中心节点崩溃性故障,而区块链中节点之间是平等的,但是是不可信的,因而需考虑区块链的容错性。

本文针对现有的区块链环境下分布式数据管理问题,对区块链技术、智能合约、系统架构、访问控制、安全与可信性等[5-10]方面进行分析和研究,并从区块链技术与数据库外联结合的角度出发,在系统模型、加密算法、一致性共识等方面提出创新性应用研究,从而实现分布式数据库去中心化,去第三方可信机构交易信任化,避免集中式服务器单点故障和私密数据泄露的风险。

1 相关技术

1.1 区块链技术

区块链[8-12]是一种基于P2P 网络中的一组节点,以数据区块为单位,按照时间顺序只可添加的链式数据结构,其建立一个去中心或弱中心化的数据库系统,实现分布式环境下安全高效的共识机制。在区块链系统中,往往把数据与事务以区块为单位进行存储,通过区块链共识算法产生区块,区块与区块之间以链表的方式进行连接,所有的区块形成了一个全局顺序的链表,被称作全局账本数据。在不可信的网络中,每个区块及前一区块存储着一定数量的交易信息以及针对这些交易的Hash值、时间戳等参数,并以Hash 连接方式形成区块链的名称部分,在效率、安全可信性方面可满足不同业务逻辑数据处理的要求。由于区块链接时间的不可逆性致使任何试图篡改历史区块的行为很容易被追溯并被其他节点排斥,如: 网络中的节点通过哈希值验证自身数据以及前一区块的数据是否与相应的哈希值一致。

1.2 智能合约原理

智能合约[11-12]的概念早在1994年就出现了,但一直无法在应用平台上推广,直到新兴的区块链技术为智能合约提供了契合的执行平台。智能合约是一种可执行合约条款的计算交易协议,签署合约的各参与方就合约内容达成一致,能够自动执行合约条款中的计算机指令。基于区块链技术的智能合约是一种程序化规则和逻辑,是部署在区块链上去中心化、信息共享的程序代码,将智能合约的代码和状态作为一种交易数据保存到区块中,并实时监测已部署的智能合约动态,当其满足执行规则时,触发预设指令。由于程序代码、状态、数据均存储于链上,因此智能合约拥有防篡改性强、去中心化程度高等特点,一旦启动就会自动运行,不需要任何合约签署方的干预。

目前,已经存在智能合约定义为一组数据交易中的脚本,如以太坊中合约被扩展为图灵完备的脚本语言;在超级账本(Hyper Ledger) 中,合约直接用于实现区块链业务等[13]。合约的内容也被写入区块链全局账本,全局账本是区块链中的数据存储结构,用于存储所有的交易记录、合约以及相关的参数加密信息,并通过共识机制定期或触发方式维持全局一致性,如根据预定义场景的“IF-THEN ” 类型的条件响应规则。本文利用基于区块链技术的智能合约构建分布式数据共享区块链,实现对数据的记录、存储以及共享逻辑业务功能。

2 数据库共享模式ToC-DBS 及其算法

目前,根据中心化程度和应用场景不同,区块链系统大致分为3 类:公有链、私有链、联盟链[10,14]。对比主流的区块链实例,结果见表1 。

表1 区块链实例对比

在联盟链当中,联盟成员的加入需要征求其他节点的同意,并按联盟规则允许授权节点读写数据,比较切合紧耦合的企业或组织内部业务库间各数据共享,同时又兼容一定的开放性、鲁棒性、扩展性要求。本文采用PBFT 算法作为区块链中的共识算法,并提出一种面向智能合约数据库共享(To - Contract Database Share,ToC-DBS) 模式。以下重点介绍该模式的核心构成: 系统架构、抽象定义、合约算法等。

2.1 系统架构

基于智能合约模式下数据共享的基本架构主要有3个方面: 网络环境、分布式数据源以及权威的第三方,如图1 所示。

图1 ToC- DBS 基本架构图

在分布式环境下存储大量存在全序关系的数据记录系统,对数据的操作均存储在区块内并以区块的粒度进行管理,如图2 所示。

图2 分布式数据库系统区块链

节点构成包括前一区块哈希值(Pre Hash)、共识验证(Cons Proof)、事务的哈希值(Merkle Root) 等。节点可利用共识验证字段验证其存储的区块是否满足共识条件, 并确保网络中少量节点的恶意行为不会影响区块链的一致性,从而使其支持拜占庭容错[15-16]。

本文ToC -DBS 架构逻辑分层采用典型的区块链系统分层,分为数据层、网络层、共识层、激励层、合约层和事务层[8]。主要在数据层利用Hash算法、Merkle 树等密码技术和时间戳技术将区块链的结构化数据、非结构化数据区块生成时间间隔内所有交易账单,并以链式结构进行分布式存储,逻辑上受分布式全局账本统一管理;在共识层采用PBFT机制可以减少不必要的通信负载,提高数据交换的效率;事务层提供实体属性、访问策略、策略判决等合约服务。

2.2 定义

定义1数据实体集合Pi={ID,(PK,SK),K/V Set -Url,Permission,Pi_Non},i=1 …n,其中,n: 实体数;ID:数据实体标识号;(PK,SK):公私钥密码对;K/V Set-Url : 数据对象实体Key -Value 地址;Permission :准入许可;Pi_Non : 随机数,用于对抗伪装攻击。

定义2策略事务集合TRi={id,pk,Tr_Type,ac,T_data,timestamp,sig},i=1 …n,其中,n: 事务数;id :同步策略事务标识;pk:策略事务发布者公钥;Tr_Type:事务类型;ac : 数据实体操作类型, 如注册、更新和删除;T_data : 具体的事务消息数据。根据事务消息数据规模的不同, 采用链上与链下相结合两种存储方法,链上存储数据摘要Hash,链下存储K/V Set-Url ;timestamp : 事务时间戳,记录开始和结束时间;sig : 事务数据的消息签名。

定义3策略判断集合Ti={(Ci,Di),i=1 …n},n为可信数据实体节点的集合。外部节点集合定义:Ck={C1,C2,C3,…,Cn}。定义计算节点的决策集合:Dk={D1,D2,D3,…,Dn},表示T中各节点对外部节点Ck的共识结果,1 代表可信,0 代表不可信。

2.3 注册合约

在新数据集产生后,创建数据实体集:Pi,i=1 …n,需要存储本地化处理: 用ECC 算法[17-18]加密的公私密钥对PK (Public Key )、SK (Security Key ) 对数据集文件地址进行Hash 加密,ECC 算法加密Pi后会得到唯一数据集ID (HashID),加密表示式为:SHA256 (PK,Pi)=HashID,然后做数据集密文的哈希值重复性检查。在本地化业务库处理后,把公钥PK给其他相关业务系统,并提供数据集密文URL 地址,完成数据集在区块链上注册。

2.4 传输合约算法

由于数据集文件信息中包含多种数据结构的数据,同时,一个业务库也存在多个数据集同步,在此可用DBi(HashID1,HashID2,…) 标识,在完成数据集校验和上传后,密文被分成序列seq1,seq2,…,可储存在与业务密切相关的其他节点中,这样即使某个节点出现不可预知性错误,也不会影响获取储存在其他地方的副本数据。描述性传输伪代码算法如下:

2.5 验证和解密合约算法

传输完成后,还需要通过合约得到用于数据集密文的私钥SK,完成解密过程和验证。为防止文件泄露,这里就需要验证签名SigDBi,验证通过后解密方可得到数据集明文,同时,合约执行结束。描述性伪代码算法如下:

ToC-DBS 模式还需建立访问控制区块链(Access Control Blockchain,ACB)和日志审计区块链(Log Audit Blockchain,LAB)。ACB 用于记录访问控制策略、身份密钥PK 标识,并设置时间戳,为数据访问决策提供支撑;LAB 记录网络运行的日志数据,为审计和追溯提供证据。

3 分析及评估

3.1 一致性和安全性分析

本文根据区块链的远程证明模型给出的访问控制和可信证据溯源的基本方法建立双链模式和可信验证[6,19]。通过对数据集文件进行加密、传输和解密验证等智能合约算法,在PBFT 共识机制下完成数据的共享以及所有权验证,这样即便是网络中存在少量恶意节点, 通过维护统一的高公信力的账本数据,依然可以确保分布式互连网络中所有节点数据的一致性、安全和可信性。共识验证示意如图3 所示。

图3 一致性和共识验证

本文设定实验环境为: 由5个系统数据库组成分布式验证者,100个数据集文件节点,并取区块大小为1 MB,全部保存完整的区块链数据源HashID值集合以及Merkle Root,信息损失量采用文献[ 20]的计算方法:

元组信息损失量:

表的信息损失量:

其中,|el| 表示数据集元组数量,1 ≤l≤m;Ni为第i个数值属性的范围,MAXNi和MINNi为集合中最大值和最小值;H(TCj) 是merkle 树的高度,H(∧(∪Cj)) 是具有最小公共祖先的分类树的高度;n是数据表T元组的数量。当同步样本量足够大时,增大同步量对降低数据表的信息损失量无显著影响,如图4所示。

图4 数据共享信息损失量

这种设计方法通过智能合约内的验证策略对一致性报告进行分析和验证,其中包括完整性证据、数据集属性证据以及计算节点合法性等,并且一致性结果在验证点之间通过日志审计区块链是可追溯的。相比于PoW 和PoS 共识机制,PBFT 共识可避免算力浪费和51% 攻击的问题。

3.2 评估

在实际应用中,如果存在攻击者窃听、截获和篡改通信消息现象,PBFT 验证共识在算法中保证1/3 以上节点无法被攻击者控制就可以,当然,这个数字是由共识算法决定的。在数据共享验证方面,取决于区块数据的大小和交易规模,数据集在k=100 、|DB|=5 的环境下,PBFT 共识时间占比为STP,共识验证时间为Tp,则其计算公式为:

其中,TA为全部节点同步共享时间。

采用PBFT 算法的优点主要在于: 首先系统节点少于(n -1)/3个情况下,如数据丢失、宕机等,其容错效果较好;其次在每次共识过程中保证至少有(2n+1)/3个正常节点,可确保运行环境是相对安全、稳定的。共识时间占比如图5 所示。

图5 共识时间占比

系统运行成本可以参照以太坊成本计算模式,整个所需的运行成本包括数据加密CostECC、数据共享Costshare、共识验证Costid及智能合约CostContract等,计算公式如下:

其中,α 为ECC 数据加密次数,β 为共享同步次数,γ 为共识验证次数,δ 为智能合约部署或者更新次数。

在忽略合约的部署和调用成本情况下,将数据同步存储区块快照操作次数定义为ζ,因此ToC - DBS模式每进行ζ 次数据同步存储操作时,加密和共识验证保护合约成本为:

通过对数据共享存储、加密算法、网络共识、智能合约等的分析,成本和安全表现如图6 所示。

图6 ζ与成本、安全性关系图

由于分布式数据库区块链中第三方权威实体通过一定的算法产生或者组织内部授权和监管,其运行成本忽略不计,但可信性高于比特币等区块链系统。

4 结论

本文在对区块链和智能合约技术进行分析的基础上,提出了构建分布式数据共享模式和算法应用,并提供数据的一致性、安全和可信性分析和评估方法。主要内容涉及访问控制、日志审计、共识机制权威等,该模式能够有效解决传统架构下面临的访问控制单点化、策略决策中心化的问题,并对成本效率进行了分析,未来还需多方合作进一步完善数据共享的分析和评估方法。

猜你喜欢
合约共识分布式
共识 共进 共情 共学:让“沟通之花”绽放
论思想共识凝聚的文化向度
商量出共识
分布式光伏热钱汹涌
分布式光伏:爆发还是徘徊
基于DDS的分布式三维协同仿真研究
“慢养孩子”应成社会普遍共识
西门子 分布式I/O Simatic ET 200AL
合约必守,谁能例外!——对“情势变更”制度不可寄于过高期望