基于区块链的数据安全共享网络体系研究
2017-11-07王继业高灵超董爱强郭少勇
王继业 高灵超 董爱强 郭少勇 陈 晖 魏 欣
1(国家电网公司 北京 100031)
2(北京中电普华信息技术有限公司 北京 100192)
3 (网络与交换技术国家重点实验室 (北京邮电大学) 北京 100876)
(syguo@bupt.edu.cn)
“能源互联网”是以电力系统为核心,以互联网及其他前沿信息技术为基础,以分布式可再生能源为主要一次能源,与天然气网络、交通网络等其他系统深入结合而形成的新的能源利用体系.能源互联网应提供一种在供需双方之间建立快速、可信、自动的能源交易模式,帮助供需双方高效建立和完成交易[1-2].但现有能源互联网解决方案中,大多利用中心化的管理控制机构完成.但能源互联网体系庞大,中心化管理机构任务繁重,某些情况下去中心化具有更高的效率,如家庭光伏电站的剩余电量提供给某邻居家电器使用,在双方可信的基础上可以直接完成交易,从而具有更高的效率.需要为构建一种可信的对等数据共享平台,支撑能源互联网的高效快速交易[2-3].
Fig. 1 Block chain based data security sharing network architecture图1 基于区块链的数据安全共享网络体系
而区块链作为一种构建去中心化的分布式存储的对等可信数据网络的技术,是以比特币为代表的数字加密货币体系的核心支撑技术,为构建可信、点对点数据安全共享提供技术基础.区块链技术具有高度透明、去中心化、去信任、集体维护(不可更改)、匿名等性质,能够通过运用数据加密、时间戳、分布式共识和经济激励等手段,在节点无需互相信任的分布式系统中实现基于去中心化信用的点对点数据共享、协调与协作,为解决中心化机构普遍存在的高成本、低效率和数据存储不安全等问题提供了解决途径[3].区块链仅提供了一种安全可信的共识交易的基础平台,仍缺乏适应于能源互联网中多业务形态的数据共享的技术[4-6].在能源互联网中,如何融合区块链与物联网、信息系统、业务形态,解决网络、系统与业务间的去中心化的数据安全共享的问题,满足能源互联网的需求,成为了当前急需解决的问题[7-9].
因此,本文结合区块链的特征,构建一种基于区块链的数据安全共享网络体系,主要包括去集中化数据统一命名技术、授权数据分布式存储与高效分发协议等内容,以实现去中心化域名解析.本文提出开放式命名索引技术,并将其应用于区块链中,解决数据作为资产的安全统一标识的问题,并在此基础上构建了基于区块链的去中心化的DNS域名服务解析机制,解决了集中式的DNS受控可信的问题.
1 基于区块链的数据安全共享网络体系
本节构建了一种基于区块链的数据安全共享网络体系,如图1所示.该体系依托于现有的互联网架构,承载联盟链或私有链,将数据作为资产进行统一标识,利用区块链将数据进行分布式存储,通过设计高效分发协议,实现数据在提供者与消费者间自主对等的信息中心网络(peer to peer information centric network, P2P ICN).具体内容如下:
1) 去集中化数据统一命名技术及服务
结合企业数据的规范和统一资源标识符(URI)规范,基于共享信息模型(shared information datamodel, SID)建模,提出开放式数据索引命名技术(open data index naming, ODIN),为网络环境下自主命名标识和交换数据内容索引提供一种开放性系统,为自主开放、安全可信的数据内容管理和知识产权管理提供了一个可扩展的数据统一命名标识体系,为数据提供者与消费者间共享奠定基础[10].
2) 授权数据分布式高效存储
以区块链为数据承载基础,当数据接入时,将其作为一种资产,并对其进行授权加密实现控制访问权限的约束.同时,结合业务特征与需求,在去中心化的网络边缘进行分布式存储,数据缓存管理和缓存策略的问题也成为基于区块链的数据间安全共享的一个难题.
3) 支持自主对等的数据高效分发协议
基于区块链的数据共享本质上就是为了实现一种P2P的数据对等共享网络,即P2P ICN.其中,数据安全传输过程包括基于开放式数据索引命名的底层标识符解析过程、基于名字寻址过程与数据传输过程,典型的例子如:构建去中心化的DNS域名解析服务,以实现数据的对等可信传输.
2 去集中化数据统一命名技术
2.1 开放数据索引命名结构设计
本节设计了一种开放式数据索引命名机制ODIN,该机制是一种层次化的命名规则[11],类似于SID.为了融合已有单独的链及新增链的扩展,本文将ODIN命名方式分为一级基础ODIN和多级扩展ODIN两种,如图2所示.一级基础ODIN解决主链之间的数据命名标识的问题;多级扩展ODIN是解决私有链或扩展链内部数据命名标识的问题,以便实现数据的分布式缓存且提高账本的同步效率.接下来将分别介绍二者的命名规则.
Fig. 2 ODIN naming structure图2 ODIN命名结构图
2.1.1 一级基础ODIN
一级ODIN的标准结构式为
ppk:[BTC_BLOCK_SN].[BTC_TRANS_INDEX][DSS]
后缀的标准结构式可扩展为2种:
RESOURCE_ID#[DATA_BLOCK_SN.CHUNK_INDEX] 或#[DATA_CHUNK_INDEX].
2种命名方式的区别在于前者引入了资源标识(RESOURCE_ID)并通过数据所在区块编号(DATA_BLOCK_SN)和子数据块在区块内的索引(CHUNK_INDEX)这样一个二级的标识对每一个数据块进行标识;而后者则是通过将所有区块的子数据块进行统一编号后,对数据所在的子数据块[DATA_CHUNK_INDEX]进行标识.这里需要注意的是,后缀为命名中可以省略的部分,结构式中‘#’字符及其后续部分也可省略,缺省情况下默认为区块内的第1个子数据块.
此外,一级基础ODIN可以采用短编码的方式表示,标准结构式为
ppk:[REG_ORDER_INDEX][DSS].
与前一种命名的唯一区别在于将前者前缀中的登记记录的二级索引替换为该记录在全部ODIN注册记录中以注册时间早晚排序的数字索引值(REG_ORDER_INDEX).
下面列举出一些合法的一级ODIN命名:
2.1.2 多级扩展ODIN
以一级ODIN为基础,注册者可以利用自有的区块链来扩展自定义二级ODIN,并将二级ODIN注册记录批量打包后形成的新区块的HASH关键字写入上一级骨干区块链获得合法验证并确保唯一性.以此类推,可以形成更多级的ODIN标识.
多级ODIN的标准结构式为
ppk:[PARENT_ODIN_PREFIX][SUB_BLOCK_SN].[SUB_TRANS_INDEX][DSS]
其中,[PARENT_ODIN_PREFIX]为对应上级ODIN的前缀.[SUB_BLOCK_SN]和[SUB_TRANS_INDEX]为对应子级ODIN在上级自定义区块链上的登记记录所在区块和区块内记录位置的阿拉伯数字编号.后缀[DSS] (data suffix string)由上级ODIN注册者可选并自行给出的具体数据内容定位标识,需要自主确保具有唯一性,命名方案同上.
此外,多级ODIN自定义结构式为
ppk:[PARENT_ODIN_PREFIX][SUB_TRANS_ID][DSS]
[SUB_TRANS_ID]为该ODIN记录在子级区块链上的唯一标识,由所属上级ODIN标识注册者来定义,可以是流水编号,也可以是唯一取值的字符串,需自行保证能与标准结构式区分开且不能包含“”和“#”这2个字符.
下面列举出一些合法的多级ODIN命名:
2.2 开放数据索引命名服务运行机制
ODIN技术对数据统一命名,并通过ODIN数据库接口提供相关服务,每个ODIN操作都将按照特定的协议规范被编码后广播到公有链平台,得到共识后加入区块,存入公有链.
ODIN技术是在网络环境下标识和交换数据内容索引的一种开放性系统,它遵从URI规范与SID建模思想,为基于数字加密货币区块链的自主开放、安全可信的数据内容管理和知识产权管理提供了一个可扩展的框架.主要特点包括自主性、安全性、唯一性和永久性,具体体现为:
1) 自主性.ODIN 标识符是基于去中心化的区块链技术,并由申请者自主生成并管理的一种命名标识技术,其生成和管理规则是完全开放的,没有中心化的控制机构.除了拥有管理密钥的申请者之外,其他组织和个人都无权控制和篡改.
2) 安全性.每一个ODIN 标识符的拥有者都对应拥有一对非对称加密技术的公私钥,可以通过私钥对自主发布的数据内容进行签名,接受数据内容的个体可以通过公钥进行验证,以确保收到的数据是来源可信和不被篡改的.
3) 唯一性.结合公有区块链,ODIN 标识符能对任何数据内容对象(如文本、图片、声音、数据、影像、软件等)的开放访问索引进行唯一标识,使数据内容对象能被人们准确地识别和提取.
4) 永久性.ODIN 标识符一旦生成就将永久不变,不随其所标识的数据内容对象的持有者或存储地址等属性的变更而改变.
ODIN技术的运行机制如图3所示.
开放数据索引命名服务运行机制主要包括2步;
1) 每个有意开放数据的个体(data owner)可以通过开源的ODIN注册客户端来自主注册获得一个ODIN号(成为ODIN注册者,即ODIN Register),以此为前缀可以为其开放的每一份数据资源编制一个包含本身ODIN 前缀的且增加了后缀的ODIN 标识串,并将该ODIN标识串索引到数据资源的元数据和URL 上,这样ODIN 就成为数据资源的一部分,始终与该数字资源共存;
2) 已被开放的这些数据资源的ODIN 记录、元数据及其URL 信息可以JSON编码的形式保存在该ODIN注册者的数据库内,这些被集中存贮起来的资源就形成一个ODIN资源标识库.
当用户根据ODIN标识串寻找一个数据资源或有关这一资源的相关信息时,查询请求就会通过开源的ODIN解析库在区块链上进行定位,然后被传送到该ODIN 注册者所登记的访问点(access point, AP)上进行解析并得到该数据资源的元数据描述和实际数据URL链接.ODIN注册者可以完全开放数据资源访问权,也可以通过适当的自定义机制让用户获取数据资源访问权,如通过订购、资源传递、按浏览付费或者预印本付费等方式获得,为日后的授权数据认证奠定基础.
Fig. 3 ODIN operation mechanism图3 ODIN运行机制示意图
Fig. 4 ODIN based decentralized DNS domain name resolution process图4基于ODIN的去中心化DNS域名解析流程
3 基于ODIN的去中心化DNS域名解析
ODIN标识运行机制,为数据资产提供了统一命名的技术手段.每个数据便可以当做一个数据提供服务来进行请求,而ODIN便是类似于域名解析的地址.为此,通过ODIN标识访问数据块的过程,便形成了一种基于ODIN的去中心化的DNS域名解析过程[6],如图4所示,具体的解析流程如下:
步骤1. 数据请求者向ODIN客户端发出以ODIN为标识的DNS请求.
步骤2. 客户端收到后首先就本块中的数据库检索此域名,若检索不到即向最近的存有完整区块的节点请求检索,仍检索不到则说明该域名不合法.若检索到域名,则向其指向的数据源所在ODIN客户端检索下一级域名,直到不能检索为止.
步骤3,将最终得到的索引数据返回给数据请求者,请求者对其解析,得到元数据及URL,再利用P2P的对等传输协议访问数据.
4 实现与验证
本节基于工作组先前的工作基础[10],利用5台服务器搭建扩展链, 并与公有链相链接构成实验环境,将一级ODIN标识注册在公有链上,多级扩展ODIN存储在扩展链上进行原型系统验证,并针对域名解析效率进行了统计分析.
4.1 基于区块链的ODIN注册过程
如图5所示,ODIN既支持开放式的命名方式,也对命名提出了部分约束条约,以实现ODIN域名的注册与管理,如图5中步骤1与步骤2,以支持本地化的ODIN注册、管理与共享.其他人可以根据查询已有的ODIN命名标识,该标识便可以当做域名,供人查询与解析,以实现去中心化的可信的DNS域名解析能力.
4.2 基于ODIN的去中心化DNS域名解析
如图6所示,呈现基于ODIN的去中心化DNS域名解析成功访问内容的视图,其他数据便可以依托于此标识进行安全验证,确保本标识下的数据来源可信.
Fig. 5 ODIN registration process based on block chain图5 基于区块链的ODIN注册过程
Fig. 6 ODIN based decentralized DNS domain name resolution图6 基于ODIN的去中心化DNS域名解析
同时,本文也根据用户量与DNS解析的访问效率进行了时间验证,当用户逐步增大,以ODIN为基础的DNS域名增长时,随着用户的增长,访问时间也越来越大,但是可以发现用户量与DNS域名之间是有平衡点的,即当一定用户量缓存域名时,域名在一定量内访问效率较高,一旦超过这个平衡,效率呈现下降趋势.如图7所示,区块数对解析速度的影响,一开始随着用户增加,查询速度增长较快,之后增长放缓,有一定波动;解析用时始终在200 ms以内.
Fig. 7 The influence between users block and parsing speed图7 DNS域名与用户块间解析速度
5 总 结
本文结合区块链的去中心化、自主对等难以更改的技术特征,1)提出基于区块链的数据安全共享网络体系,主要包括去集中化数据统一命名技术及服务、授权数据分布式高效存储和支持自主对等的数据高效分发协议;2)设计了开放式数据索引命名结构,含一级基础ODIN和多级扩展ODIN,且阐述了开放数据索引命名运行机制;3)基于ODIN技术,设计了基于ODIN的去中心化DNS的域名协议模块;4)针对部分功能进行验证并进行性能的分析.下一步工作中,将针对数据分布式存储及域名解析效率进行优化.