栏目分类
热点资讯
Blocksquare Token中文网
你的位置:MNFT 中文站 > Blocksquare Token中文网 >
基于区块链的大数据访问控制机制
发布日期:2025-01-04 10:55 点击次数:86
目前, 大数据已经在生产生活中得到了非常广泛的应用, 所带来的社会变革也已深入到我们生活的方方面面.例如:通过分析大量病人的临床医疗大数据[1], 能够使医生更好地理解病症, 实现病情的精准诊断与治疗, 并且能够提高流行病的预警能力, 有助于采取有效措施预防流行病的爆发; 通过将能源大数据[2]与人口、地理、气象等相关领域数据进行整合及分析利用, 能够实现能源生产、运营、消费产出的最大化, 促进能源产业发展及商业模式创新; 通过对大量网络交易及行为等金融大数据[3]的分析, 可提高金融企业在资本管理、交易执行、安全和反欺诈等方面的数据洞察力, 提高企业核心竞争力.由此可见, 在大数据时代, 数据已成为一种能够流动的资产宝库, 通过分析、利用大数据, 能够创造出巨大的社会和经济价值, 并且数据量越大、来源越广泛, 产生的价值也会越大.
然而, 大数据在带来新的发展机遇的同时, 也面临着严峻的数据安全挑战:一方面, 为了更好地挖掘数据中的价值, 离不开分布式数据源间数据的流通与共享, 但由此必然会打破原有数据管理的安全边界, 增加了数据在共享过程中所面临的安全风险; 另一方面, 由于大数据资源具有巨大的经济价值, 针对大数据资源的窃取、攻击与滥用等行为越来越严重, 对国家及相关机构数据安全防护能力提出了更高的要求.在多因素压力下, 导致大数据安全事故频发.特别是近期引起广泛关注的Facebook数据外泄事件, 使大数据资源的非授权使用问题引起了安全专家的广泛关注.2018年3月曝出, Facebook超过5 000万用户信息数据遭到外泄, 一家名为Cambridge Analytica的数据分析公司在未经过用户授权的前提下搜集了超过5 000万用户的个人数据, 并利用该数据建立数学模型来分析用户的政治偏好, 通过有针对性地向美国选民投放精准政治广告的形式, 从而影响了2016年美国总统大选的结果.由此可以看出:大数据的非授权共享不单会影响用户自身的数据安全, 更会对国家安全造成严重的安全威胁.实现安全、可控的大数据资源流通与共享, 是大数据应用及其发展所面临的核心科学问题.
作为保护数据安全的重要手段, 访问控制技术通过对用户权限进行管理, 使合法用户只能依照其所拥有的权限访问系统内相应的数据, 禁止用户对数据的非授权访问, 从而保障数据安全和业务系统的正常运转.在大数据时代, 访问控制技术[4, 5]仍将作为保护大数据安全、可控共享的重要手段.但大数据的分布式、动态性环境[6], 使大数据的管理场景和安全需求变得更加复杂, 传统的访问控制技术已不再适用.大数据访问控制面临访问控制策略制定以及授权管理难度增加、访问控制客体描述困难、受访问数据的主体集合构成复杂、访问控制对数据客体中个人隐私保护难度高、缺乏对大数据分析过程安全性考虑等若干挑战[7].不同于针对上述挑战的研究, 本文主要针对其分布式访问控制需求、访问控制动态性需求这两个易被忽略的需求挑战展开研究:
(1) 分布式访问控制需求挑战.
大数据由众多分布式的数据源汇聚生成, 不同的数据源可能位于不同的机构、公司以及组织内部, 不同机构基于自身的数据安全保护需求, 不可能直接与其他机构共享所有大数据资源, 大数据资源具有藩篱化特征, 需要在分布式复杂环境下实现对共享大数据资源有效的访问控制, 其分布式体现在如下两个方面.
a) 访问控制策略分布式制定:为提高访问控制策略的管理效率, 传统集中式的访问控制机制需要由安全管理员统一进行策略管理, 难以满足分布式大数据的安全共享需求, 大数据共享与流通需要由资源的拥有者制定并维护其所拥有数据资源的访问控制策略, 实现由拥有者驱动的访问控制策略分布式制定.另外, 由于开放共享更有助于大数据价值的挖掘, 这就要求大数据资源的策略需要进行可信公开, 便于资源使用方进行策略查询与其真实性验证, 促进大数据资源在拥有访问权限的资源使用方间高效流通和共享;
b) 访问控制分布式判决:大数据不宜只存在一个集中式的权限判决点, 集中式权限判决不符合大数据的应用场景, 大数据的流通与共享是由多方参与、群智感知的应用过程, 需要参与方的多元交互, 才能充分挖掘大数据价值, 提高大数据资源利用率.并且, 传统由第三方机构进行的单一权限判决, 可能存在用户不可知的越权行为, 存在权限判决透明度的问题.另外, 当单一权限判决点发生故障时, 将导致整个大数据系统停止运转, 也存在单点故障的问题.
(2) 访问控制动态性需求挑战.
大数据动态产生且增长速度快, 需要对动态生成的新数据及时进行访问控制管理.传统集中式的访问控制机制一般针对静态资源进行管理, 动态扩展能力弱, 灵活性低且存在数据访问控制管理的滞后性, 无法对新生成的数据资源进行高时效的访问控制管理.
近年来, 区块链[8]作为一项从数字加密货币领域诞生的新兴技术, 引起了各领域研究人员的广泛关注.传统社会的信任建立在可信第三方信用背书的信任机制下, 而区块链技术通过将P2P网络、密码学技术、共识机制以及智能合约等多种技术进行深度整合, 解决了去中心化系统节点间信任建立的问题, 实现了去中心化、分布式、信息不可篡改的信任建立机制, 能够在信息传输的同时完成价值的转移.区块链技术的分布式架构与智能合约技术恰好与大数据环境下分布式、动态访问控制需求相吻合, 基于此, 本文针对大数据访问控制中所面临的挑战, 基于区块链的事务管理和智能合约技术实现了对分布式环境下大数据资源动态、灵活的访问控制.本文的主要工作包括:将区块链技术与ABAC模型[9, 10]相结合, 提出了一种基于区块链的分布式大数据访问控制机制BBAC-BD(blockchain-based access control mechanism for big data environment), 通过改进区块链事务存储结构, 利用区块链事务来实现访问控制策略的分布式管理, 针对策略管理效率较低的问题, 提出了基于Bloom Filter的策略管理方法, 以实现访问控制策略的快速检索; 利用智能合约技术实现策略的分布式自动、可信判决, 以此实现用户对大数据资源的灵活管控, 在禁止非法用户对数据资源访问的同时, 提高大数据资源的共享与流通效率, 实现面向分布式大数据资源的高效、透明、安全的自动化访问控制.
本文将区块链应用于访问控制技术主要有以下5个方面的优势:(1)资源的管理使用权真正掌握在资源拥有者手中, 存储在区块链上的策略信息对所有主体可见, 策略的可信公开更利于促进大数据资源的共享, 有助于大数据资源价值的挖掘与利用; (2)基于智能合约, 能够实现对大数据资源自动化、可信的访问控制, 无需安全管理员人为参与, 基于资源拥有者发布的策略进行访问控制, 判决过程公开透明; (3)基于ABAC模型, 策略由资源拥有者发布到区块链上, 随着大数据资源的动态变化, 资源拥有者可及时生成、调整所属资源的访问控制策略, 提高访问控制的灵活性与可扩展性; (4)区块链基于分布式共享总账技术, 能够有效保证策略制定来源可靠、存储可信, 通过分布式节点的共识机制, 提高了访问控制系统的抗攻击能力, 有效防止单点故障的发生, 保证系统可用性; (5)区块链是一种只增不删的数据管理模式, 事务数据永远存储在区块链, 区块链上存储的数据无法被篡改, 能够实现对共享和流通过程中大数据资源的全流程追踪管控, 便于系统审计.
1 相关工作
当前, 针对大数据访问控制领域的研究还处于起步阶段, 但是在该方向, 国内外的研究已经取得了一定的研究进展.针对医疗大数据中安全管理员难以预测医生实际的数据访问需求、授权管理难度增加的问题, 惠榛等人[11]提出了面向医疗大数据的风险自适应的访问控制模型, 该模型通过分析医生的访问历史, 使用信息熵和EM(expectation maximization)算法量化医生侵犯隐私的风险, 以此来适应性地调整医生的访问能力, 防止过度授权的发生.针对传统访问控制模型难以描述大数据所具有的时空属性、访问控制客体描述困难的问题, 文献[12, 13]分别提出了基于位置感知的访问控制模型LARB与GEO-RBAC, 将用户空间位置信息引入基于角色的访问控制模型中, 结合用户位置属性来授予用户相应的访问控制权限.针对大数据环境存在海量角色难以进行权限管理的问题, 文献[14-16]基于角色工程, 通过自上向下或自下而上的形式对用户角色进行挖掘, 高效地为用户提供个性化服务, 以此提高大数据环境下权限管理的效率.另外, 为了实现对大数据中个人隐私数据的保护, 以基于属性加密的访问控制为代表的密文访问控制技术, 作为一种利用密文机制实现访问控制的方法, 也得到了很多学者[17, 18]的广泛研究.但该技术还存在策略表达能力不足、安全性与效率性能不能兼顾等问题, 在实际应用中还面临诸多挑战[19].
目前, 分布式访问控制的研究主要围绕分布式实体间跨域互操作的问题[20], 一般采用角色映射或属性转换的方法实现域间权限转换.根据域间协作架构的不同, 可分为联邦式架构和松耦合式架构[21, 22]:联邦式架构是一种中心式架构, 由单一授权中心与多个访问控制代理组成, 通过授权中心设置面向分布式系统的全局角色来实现用户在不同域内权限的转换; 松耦合式架构是一种多中心式架构, 由多授权中心与多个访问控制代理组成, 通过各域内的授权中心对域外用户权限进行转换.角色映射或属性转换机制需要提前进行协商, 建立信任关系, 仅适用于少量实体参与的有限分布式场景中, 难以满足大数据环境高动态性、强灵活性的需求.
另外, 当前基于区块链的访问控制研究渐渐兴起.为了提高分布式访问控制策略管理的灵活性, Damiano等人[23]探索使用基于区块链交易的形式来创建、管理、执行访问控制策略的可行性, 并通过比特币平台进行了实现, 但仅仅是将区块链作为策略管理的数据库, 还需要第三方应用来提供集中式访问控制服务.Zyskind[24]基于区块链技术实现了移动应用程序的粗粒度权限管理, 交易Taccess用于管理策略, 交易Tdata用于存储和索引数据, 区块链中每个用户和服务都对应一个公钥地址作为身份的凭证, 可由用户公钥(资源拥有方)与服务公钥(资源请求方)共同以联合身份的形式对权限进行管理.针对物联网数据的访问控制问题, FairAccess[25-28]则将策略以(resource, requester)的形式存储在区块链交易中, 引入比特币中Wallet的概念, 为不同的IoT设备安装自己的Wallet.Wallet起到访问控制代理的功能, 通过向被授权的访问请求方账户发送授权令牌的形式进行权限管理, 令牌由资源拥有者使用其私钥进行签名来保证其不可伪造.针对医疗数据的访问控制问题, MedRec框架[29, 30]基于以太坊平台将智能合约与访问控制相结合进行自动化的权限管理, 实现了对不同组织的分布式医疗数据的整合和权限管理.MedRec框架包括3个层次的合约:Registrar Contract, Patient Provider Relationship, Summary Contract, 但MedRec权限管理不够灵活, 且选择将策略直接存储在智能合约, 随着策略规模的增大, 智能合约的运行成本将变得十分高昂, 不适用于大规模的动态授权应用场景.
综上分析可知, 当前, 针对大数据访问控制的研究还处于起步阶段, 缺少对访问控制分布式与动态性特点的考虑, 而传统面向分布式系统访问控制的研究又难以适用于大数据环境.另外, 目前基于区块链的访问控制技术还没有同时实现策略管理与访问控制决策的分布式.
2 预备知识
本节定义基于区块链的大数据访问控制机制使用到的预备知识, 为后文阐述方便, 主要对区块链技术及智能合约的基本概念进行简要介绍, 并对基于属性的访问控制模型进行形式化定义.
2.1 区块链技术基本原理
区块链是一种在对等网络环境下, 基于透明和可信共识规则, 并按照时间顺序将数据区块以链条的方式组合形成的特定数据结构, 并以密码学方式保证其数据不可篡改、不可伪造、可追溯的去中心化、去信任的分布式共享总账系统.区块链的“分布式”不仅体现为数据备份存储的分布式, 也体现在数据记录的分布式, 即:由所有节点共同参与数据维护, 单一节点的数据被篡改或被破坏不会对区块链所存储的数据产生影响, 能够有效避免单点故障的发生.并且由于大数据自身的特点, 大数据的采集、存储、分析等同样是分布式的应用场景, 同样需要进行信息及价值的交换.因此, 区块链技术与大数据的访问控制需求具有高度的契合点.
区块链并不是单一的技术创新, 而P2P网络技术、密码学技术、Merkle树、共识机制、智能合约等多种技术深度整合的结果, 能够通过透明和可信规则, 实现事务的管理.如图 1所示.
Fig. 1 Blockchain technology features
图 1 区块链技术特点
图 1中, 加密的链式结构用来验证和存储数据, P2P网络技术和共识机制用来实现分布式节点的验证和通信, 智能合约能够实现复杂业务逻辑功能并对数据进行自动化操作.这些技术整合到一起, 形成了一种新的数据记录、存储和表达的方法.
2.2 智能合约技术
智能合约[31, 32]存储在区块链上, 是能够在每个分布式网络节点上自动运行的脚本.1994年, 由Szabo首次提出智能合约的概念, 定义其是通过计算机执行合同条款的交易协议, 即通过代码程序来自动执行合同[33].只要满足合同条款, 交易将无需第三方监督自动进行.虽然智能合约的概念很早就被提出, 但由于缺乏支持可编程智能合约运行的信息平台及相关技术, 智能合约一直停留在概念阶段, 直到能够作为信任机器的区块链的出现, 才为智能合约技术的应用落地提供了平台支撑.由于区块链具有去中心化、安全、不可篡改、透明可追踪等优点, 为智能合约提供了可信的执行环境.作为区块链2.0的核心特性, 智能合约能够在去信任环境下, 按顺序触发设定的合约内容并完成一系列安全的自动化操作.同时, 区块链数据具有完备可追溯的属性, 还可支持事后审计以追踪合约动态.第二大区块链平台以太坊[34]设计了一种基于EVM虚拟机的图灵完备脚本语言, 极大地扩宽了区块链的应用领域.智能合约为区块链提供了应用层的扩展接口, 任何开发人员都可基于底层区块链技术, 通过脚本实现其所要实现的工作, 为区块链的应用落地奠定了基础.
2.3 基于属性的访问控制模型
针对传统访问控制模型难以解决的动态、细粒度访问控制问题, 研究人员提出了基于属性的访问控制模型(attribute-based access control, 简称ABAC).ABAC模型基于实体属性而不是用户身份来判决允许或拒绝用户对资源的访问控制请求.ABAC模型的核心要素包括主体、资源、操作以及环境约束, 这些要素统一使用属性和属性值来进行表示, 属性间的关系可以根据访问控制需求进行灵活的设置, 提高了访问控制策略语义的表达能力和模型的灵活性, 并且能够将其他访问控制模型中权限、安全标签、角色等概念用属性来进行统一描述, 适用于解决分布式环境下动态大数据的访问控制问题.基于如下原因, 我们认为, ABAC模型相比其他模型能更好地适用于大数据访问控制场景.
(1) 细粒度访问控制:ABAC模型通过属性来对实体及约束进行描述, 能够严格控制访问者取得权限的各种条件, 精确设定属性-权限关系, 实现最小权限原则;
(2) 自主授权:ABAC模型可为资源拥有者提供策略管理接口, 策略无需由管理员统一设定, 资源拥有者可以根据自身实际资源保护需求发布、更新、撤销策略, 保证资源能够按照资源拥有者的意愿被访问;
(3) 动态访问控制:ABAC模型依据请求者所具有的属性集合决定是否赋予其访问权限, 实现了策略管理和权限判定的分离, 且属性的设置与更新具有极大的灵活性和扩展性, 可满足不同应用场景需求;
(4) 较小的系统开销:在用户和资源数量大幅度增加的情形下, 传统DAC, RBAC等访问控制模型策略数目将呈指数级增长, 系统维护难度及开销将极大增加.而ABAC模型中, 策略随用户和资源的增长呈线性增加, 当达到一定规模后, 系统开销趋于平稳[35].
为了便于本文的叙述, 给出如下定义.
定义1.属性项(attribute item)是表示属性的基本单元, 用{xAttrName=attrValue}, (xAttrName∈attrSet, attrValue∈Range(xAttrName), x∈{s, r, a, e})表示, xAttrName表示属性名, attrValue表示属性值.为了对不同类型的属性表示方便, 用x表示属性类型, s, r, a, e分别代表主体属性、资源属性、动作属性和环境属性.
定义2.属性元组(attribute tuple)是同类型属性项的集合, 用xAttrTuple, x∈{s, r, a, e}表示, 即:
xAttrTuple:{(xAttrName1=attrValue1)∧(xAttrName2=attrValue2)∧…∧(xAttrNamei=attrValuei)}.
定义3.属性访问请求(attribute access request, 简称AAR)由一组主体属性、资源属性、动作属性和环境属性组成, 用AAR:{sAttrTuple∧rAttrTuple∧aAttrTuple∧eAttrTuple}来表示, AAR的含义是:属性为sAttrTuple的请求者在环境属性eAttrTuple下, 对资源rAttrTuple请求进行操作aAttrTuple.
定义4(访问控制策略).针对资源的访问控制规则, 体现了资源拥有者的授权行为, 规定了访问受保护资源所需要具有的属性集合, 记为Policy:result(R, action, pid)←Θ{xAttrTupleSet}signature_owner, x∈{s, r, a, e}.其中, Θ{xAttrTupleSet}表示由属性项集合xAttrTupleSet中的属性通过合取、析取等逻辑关系构成的逻辑表达式, pid表示策略ID.当请求方所拥有的属性使Θ{xAttrTupleSet}为真时, 请求方能够被允许或拒绝对资源R进行action操作, result∈{Permit, Deny}.另外, 策略需要被资源拥有者或策略发行方签名后在区块链中保存, 从而保证发布策略的真实性.
3 BBAC-BD机制框架与工作流程
3.1 大数据访问控制架构
大数据访问控制涉及大数据资源的采集、汇聚、管理、控制等.大数据访问控制架构主要由数据层、资源汇聚层、基础设施层、事务层、共识层、访问控制合约层6部分(如图 2所示)组成.各层结构相互协同又各司其职, 共同构成一个完整的大数据访问控制架构.
Fig. 2 Big data access control technology architecture
图 2 大数据访问控制技术架构
(1) 数据层:真实的大数据资源, 包括结构化数据、非结构化数据和半结构化数据, 分布式地存储于不同的位置, 逻辑上受资源汇聚层的统一管理;
(2) 资源汇聚层:基于区块链技术对大数据资源进行资源管理, 实现不同来源大数据资源的汇聚.虽然真实的大数据资源在实际上是由不同的数据拥有方分布式地存储, 但是通过区块链技术, 在逻辑上形成对大数据资源的统一管理.本文的研究重点是访问控制机制, 资源汇聚层不做详细的阐述;
(3) 基础设施层:由区块链平台为大数据访问控制提供基础设施, 是整个架构的基础, 需要全网节点、矿工来维持系统的正常运行, 是大数据访问控制平台事务和智能合约的载体.事务层、合约层、资源汇聚层都是以区块链为基础的上层应用;
(4) 事务层:包括数据事务、策略事务、属性事务、合约事务这4种类型的访问控制类事务:数据事务用于对大数据资源进行管理, 服务于资源汇聚层; 策略事务用于对访问控制策略的管理, 包括策略的发布、更新和撤销, 为合约层的PAP CONTRACT提供数据支撑; 属性事务用于对实体属性的管理, 包括属性的发布、更新和撤销, 为合约层AA CONTRACT提供数据支撑; 合约事务用于为智能合约提供运行环境, 服务于合约层;
(5) 共识层:主要包括共识机制, 通过各类共识算法来保证分布式节点间访问控制数据的一致性和真实性, 从而在节点间达成稳定的共识;
(6) 访问控制合约层:包括PAP CONTRACT, PDP CONTRACT, AA CONTRACT这3种合约:PAP CONTRACT用于访问控制策略管理, PDP CONTRACT用于访问控制请求判决, AA CONTRACT用于实体属性管理.
3.2 BBAC-BD框架及工作流程
本文提出的基于区块链的大数据访问控制框架如图 3所示, 框架基于ABAC模型进行了改进, 将区块链技术与访问控制技术相结合.框架包括策略执行点(policy enforcement point, 简称PEP)、属性权威(attribute authority, 简称AA)、策略管理点(point administration point, 简称PAP)、策略决策点(policy decision point, 简称PDP)这4个核心部分.其中, AA, PAP, PDP用智能合约的方式来实现.为了能够确保区块链中访问控制策略的正确执行, 用户需要使用PEP作为访问控制客户端来与区块链进行访问控制的交互.
Fig. 3 BBAC-BD framework
图 3 BBAC-BD框架
BBAC-BD框架中, 访问控制工作流是对标准ABAC模型工作流的扩展.访问控制工作流程可分为准备阶段和执行阶段(如图 3示).准备阶段主要进行访问控制策略及属性的管理, 包括策略及属性的发布、更新、撤销以及对策略与属性查询结果的响应; 而执行阶段主要进行访问请求的判决、响应与执行.
●准备阶段:(1)由属性发布方向区块链中发布属性及属性关系信息, 由AA CONTRACT预先收集、整合区块链事务中属性信息, 以供PEP CLIENT和PAP CONTRACT使用; (2)由策略发布方向区块链中发布访问控制策略, 由PAP CONTRACT结合属性信息描述、收集、整合区块链事务中访问控制策略, 以供PDP CONTRACT进行访问请求的判决;
●执行阶段:(1)当PEP CLIENT收到用户向其发送对某一资源执行某项操作的请求时, PEP CLIENT分析得到原始访问请求中主体、客体和操作语义, 根据从AA CONTRACT得到的属性信息生成基于属性的访问请求AAR, 将AAR发往PDP CONTRACT; (2) PDP CONTRACT向PAP CONTRACT查询与被请求大数据资源相关的访问控制策略集, 进行访问控制判决, 将判决结果响应发送回PEP CLIENT; (3)由PEP CLIENT根据响应结果对大数据资源进行授权的访问操作.
由于访问控制策略是存储在区块链中, 策略信息对任何人都是可验证、可追溯且不可篡改的, 大数据资源的访问控制摆脱了传统集中式访问控制管理可能存在的单点故障和访问控制判决透明度的问题, 实现了访问控制策略的分布式管理, 有效地提高了系统的鲁棒性和可信性.另外, 通过智能合约的形式来实现访问控制策略的判决过程, 无需第三方中心机构参与, 避免了第三方中心可能存在的越权行为, 基于区块链系统实现共识下的访问控制自动判决, 是一种真正实现了去中心化的访问控制机制, 符合大数据资源的访问控制管理需求.
4 面向BBAC-BD策略管理的事务结构
4.1 区块链中事务存储结构
在区块链中, 数据以事务的形式存储在区块链中, 我们使用区块链中事务的形式来对访问控制策略进行管理.如图 4所示, 区块中事务数据是以基于哈希算法的Merkle树这种数据结构进行存储, 通过哈希算法将大小不一致的事务数据映射成固定大小的字符串, 存储在Merkle树的叶子节点上, Merkle树的非叶子节点存储的都是其子节点的哈希值.在P2P网络中, 使用Merkle树能够快速的验证数据是否被篡改或接收到的数据是否损坏, 区块链中所有的事务数据通过Merkle树生成唯一的Merkle根存储在区块头中.
区块链包括实体账户、数据区块、事务集数据、配置数据等, 它们之间的数据视图关系如图 5所示.
1) 实体账户:是区块链中各类事务请求的发起者及相关数据的拥有者, 是访问控制机制中数据资源的实际拥有者, 拥有一对由PKI体系产生的公钥与私钥, 系统中, 账户由公钥唯一进行标识, 由资源拥有者发布的事务数据都需由实体账户用私钥对其进行签名, 以供其他用户验证区块中事务的真实性;
2) 数据区块:是区块链网络中底层的数据, 多个区块共同形成链式结构, 以不可篡改的形式将一定时期内的事务处理结果持久化;
3) 事务集数据:是基于区块链的访问控制机制中存储执行实际业务活动的数据, 包括访问控制类事务和智能合约类事务.访问控制类事务用于访问控制策略的管理, 主要涵盖策略管理中策略信息的发布、更新与撤销操作.智能合约类事务用于访问控制的判决过程, 响应访问请求, 生成访问控制响应.在区块链上发布事务需要消耗一定数据的代币, 作为用户使用区块链服务的开支;
4) 配置数据:是区块链系统正常运行所需的配置信息, 包括协议版本号、通信节点信息等配置信息.
Fig. 4 Merkle tree storing transaction information
图 4 存储事务信息的Merkle树
Fig. 5 Entity relationship in the block
图 5 区块中数据视图实体间关系
4.2 基于事务的访问控制策略管理
我们以区块链中的事务为载体对访问控制策略进行管理.访问控制策略管理包括策略信息管理和属性信息管理, 分别以策略类事务和属性类事务的形式发布到区块链, 包括信息的发布、更新与撤销操作.策略管理信息由大数据资源的拥有者制定, 对大数据资源的访问控制策略权限信息和属性及属性间关系进行管理.数据被发布到区块链后, 可以被任意次更新, 直到数据被撤销, 才结束策略或属性信息的完整生命周期.无论数据当前处于何种状态(发布、更新、撤销), 其历史操作信息都将被永久记录在区块链中, 便于审计和掌握访问控制动态.区块链非合约事务的消息格式如图 6示.其中,
●ID表示事务消息标识号;
●PK表示事务发布者公钥;
●transactionType代表事务消息类型, 用p表示策略类事务消息, a表示属性类事务消息;
●action代表操作类型, 用c表示发布操作, u表示更新操作, r表示撤销操作;
●transaction_data代表具体的事务消息数据, 与事务消息类型相对应, 分别访问控制策略信息和属性及属性关系信息, 根据事务消息数据规模的不同, 存在链上与链上链下相结合两种存储方法:针对小规模策略数据, 直接在链上存储策略信息; 针对较大规模策略数据, 在链上存储数据摘要Hash和链下数据链接Url;
●timestamp表示消息发布的时间戳;
●signature_message表示对前4项事务数据的消息签名.
对于发布操作, 需要消耗一定数量的数字代币, 更新与撤销操作无需消耗数字代币.
Fig. 6 Transaction management level relationship
图 6 事务管理层级关系
下面是矿工节点接收事务数据生成新区块的具体工作过程.
步骤1:策略信息发布者向区块链提交策略事务请求, 并且使用发布者公钥作为事务标识;
步骤2:由代表矿工节点接受策略信息请求, 并向节点网络广播所接受到的信息请求;
步骤3:由当值的代表矿工节点根据用户的公钥将事务记录到child_block;
步骤4:由当值的代表矿工节点将child_block的确认信息向节点网络进行广播;
步骤5:校验代表矿工节点对事务数据进行校验, 其他矿工节点同步更新事务数据;
步骤6:每隔一个时间间隔对child_block中的策略事务数量进行检查, 当数据达到5个时, 将所有更新事务数据打包封装成一个数据区块, 计算该区块的根Merkle值, 并将该区块数据存入本节点数据库;
步骤7:返回步骤1.
5 面向BBAC-BD的智能合约
5.1 策略管理合约PAP CONTRACT
访问控制策略以事务的形式存放在区块链中, 并且每个事务中可能存在一条或多条访问控制策略.PAP需要对区块链中存储的策略事务进行整合, 将与访问请求相关的策略发送给PDP, 以供PDP进行策略判决.如图 7所示, 为访问控制策略的融合流程, 图 7中, 在区块链存储的每条策略信息的第1个操作类型字段表示了该策略信息被发布的意图, c表示发布操作, u表示更新操作, r表示撤销操作.并且每条策略信息都有对应的时间戳为该信息增加了时间维度, 根据时间维度, 当操作类型字段为c时, 创建相应ID的新策略信息; 当操作类型字段为u时, 更新相应ID的策略信息; 当操作类型字段为r时, 撤销相应ID的策略信息.访问控制策略的融合流程即是沿着相应ID策略的时间维度管理整合策略的过程.策略管理合约PAP CONTRACT将AAR所请求资源相关策略的进行整合, 为PDP CONTRACT进行访问控制判决提供策略支撑.
Fig. 7 Access control policy fusion process
图 7 访问控制策略融合流程
访问控制策略分布式存储后面临的关键问题是策略查询效率的问题, 为了提高策略管理过程中策略检索与查询的效率, 本文设计了基于Bloom Filter的策略管理合约(如图 8所示).作为一种具有极高空间利用效率的概率性数据结构, Bloom Filter通过二进制向量来描述数据集合, 能够快速判断该集合中是否包含某一特定元素.Bloom Filter的缺点是存在一定的错误查询概率, Bloom Filter不会把集合中存在的元素判断为不存在, 但存在把集合中不存在的元素判断为存在集合中的可能.Bloom Filter正是通过允许存在少量的错误, 以此来减少存储空间, 提高查询效率.在策略管理合约中, 允许非相关策略被判定为相关策略, 这里, 该非相关策略将成为冗余策略, 而不允许相关策略被判定为非相关策略, 这与Bloom Filter的特点正好吻合.
Bloom Filter中包括长度为n比特的二进制向量BF={b0, b1, …, bn-1}与m个独立的哈希函数H(x)={h0(x), h1(x), …, hm-1(x)}, 初始化阶段, 将BF的所有比特位都设定成0, 通过H(x)的计算, 可以得到于0~n-1范围内分布均匀的哈希值.对于原始策略事务数据集合中的属性关键字集合DB_SET={DB0, DB1, …, DBk-1}, 将属性关键字DBi (0≤i≤k)插入到BF中时, 计算与m个哈希函数H(x)对应的m个哈希值h0(DBi), h1(DBi), …, hm-1(DBi), 并将在BF中m个哈希值所相对应位置的值设定成1.当需要验证某一资源的相关策略属性关键字R是否存在于该BF中时, 只需要计算h0(R), h1(R), …, hm-1(R), 并再查看BF中h0(R), h1(R), …, hm-1(R)对应位置的值是否全部为1:若不全部为1, 则证明该BF中涉及的资源数据集合不包含资源R的相关策略; 若对应位置的值全部为1, 则认为资源R相关策略以(1-PR)的概率存在于该事务数据集合.mop为最优哈希个数:
Fig. 8 Access control policy management based on Bloom Filter
图 8 基于Bloom Filter访问控制策略管理
PAP CONTRACT合约的伪代码见算法1.
算法1.策略管理合约PAP CONTRACT.
输入:属性访问请求AAR, 区块链blocks;
输出:资源相关策略集RELEVANT_POLICY_SET.
1. rAttrTuple=attributeParser(AAR);
this=currentBlock; mark=null;
2. for i=1 to blocks.length do
3. {for j=1 to this.policy_datablock.length do
4. {BF=getBloomFilter(this.policy_datablock[i]);
mark=1;
5. for k=1 to this.datablock.hashfunction.length do
6. {key[k]=hash(k, rAttrTuple);
7. if (BF.NotContain(key[k]))mark=0;}
8. if (mark=1) then
9. {RELEVANT_POLICY_SET.increase(this.datablock.transaction.policy); continue; }
10. else continue;
11. }
//end for
12. }
//end for
13. return RELEVANT_POLICY_SET;
PAP CONTRACT算法流程描述.
1) 解析AAR得到所请求的资源属性信息rAttrTuple;
2) 遍历区块链各区块内策略类事务数据块;
3) 获取策略类事务数据块所对应的属性布隆过滤器BF;
4) 根据该BF所对应的哈希函数, 计算rAttrTuple所对应的哈希值;
5) 若计算rAttrTuple得到的哈希值与BF中对应位全部为1, 则在RELEVANT_POLICY_SET中添加该数据块内策略; 否则, 该数据块中无rAttrTuple的相关策略;
6) 当对所有区块内策略类事务遍历完成后, 向PDP返回资源相关策略集RELEVANT_POLICY_SET用于权限判决.
5.2 策略判决合约PDP CONTRACT
●访问控制的判决结果分为两种类型, 分别是允许访问(PERMIT)和拒绝访问(DENY):针对PDP收到的AAR, 若该AAR满足某一访问控制策略中的约束和谓词, 则此判决请求为满足策略, 根据策略描述来PERMIT(PID)或DENY(PID)该AAR请求;
●如果判决请求不满足策略, 则包括两种情况:一是AAR中所提供的请求属性信息不足, 从而无法做出判决, 使用表示UNKNOWN; 另一类是策略集没有任何一条策略能够与AAR进行匹配, 从而无法做出判决UNSATISFY.
因此, 访问控制策略判决阶段包括4类判决结果PERMIT, DENY, UNKNOWN和UNSATISFY.
AAR所包括的全部属性构成了访问请求的关联属性集, 用ATTR_SETAAR来表示.访问控制策略policy中所包括的全部属性构成了访问控制策略的关联属性集, 用AAT_SETpolicy来表示.针对特定的访问请求, 访问控制的判决PolicyDecide可以表示成如下形式:
{ATTR_SETAAR, AAT_SETpolicy}→{PERMIT, DENY, UNKNOWN, UNSATISFY}.
PolicyDecide流程如下.
1) 若AAT_SETpolicy⊄ATTR_SETAAR, PolicyDecide(policy)=UNKNOWN;
2) 若AAT_SETpolicy⊆ATTR_SETAAR, 且ATTR_SETAAR中属性值范围全部符合AAT_SETpolicy中策略属性约束要求, 则PolicyDecide(policy)=SATISFY, SATISFY∈{PERMIT, DENY};
3) 若AAT_SETpolicy⊆ATTR_SETAAR, 且ATTR_SETAAR中存在至少一个属性值不符合AAT_SETpolicy中策略属性约束要求, 则PolicyDecide(policy)=UNSATISFY.
策略判决过程由策略判决合约PDP CONTRACT来进行, 合约的伪代码见算法2.
算法2.策略判决合约PDP CONTRACT.
输入:属性访问请求AAR, 访问控制策略集POLICY_SET;
输出:策略判决结果PERMIT, DENY, UNKNOWN, UNSATISFY.
1. UNKNOWN_SET=POLICY_SET;
PERMINT_RESULT_SET=null;
2. DENY_RESULT_SET=null;
UNSATISFY_RESULT_SET=null;
3. for i=1 to UNKNOWN_SET.length do
4. {result=PolicyDecide(UNKNOWN_SET[i]);
5. if (result=permit) then
6. {UNKNOWN_SET.delete(UNKNOWN_SET[i]);
7. PERMINT_RESULT_SET.add(UNKNOWN_SET[i].PID); }
8. else if (result=deny) then
9. {UNKNOWN_SET.delete(UNKNOWN_SET[i]);
10. DENY_RESULT_SET.add(UNKNOWN_SET[i].PID); }
11. else if (result=unsatisfy) then
12. {UNKNOWN_SET.delete(UNKNOWN_SET[i]);
13. UNSATISFY_RESULT_SET.add(UNKNOWN_SET[i].PID); }
14. }
//end for
15. if (PERMINT_RESULT_SET≠null & & DENY_RESULT_SET==null) then
16. return
PERMIT;
17. else if (DENY_RESULT_SET≠null & & PERMINT_RESULT_SET==null) then
18. return
DENY;
19. else if (PERMINT_RESULT_SET≠null & & DENY_RESULT_SET≠null) then
20. return
conflict_handle(·);
21. else
22. return UNKNOWN;
PDP CONTRACT算法流程描述.
1) 将所有待判决策略放入UNKNOWN_SET, 作为预判决策略集;
2) 遍历预判决策略, 分别得到4个策略判决结果集:PERMINT_RESULT_SET, DENY_RESULT_SET,
UNSATISFY_RESULT_SET, UNKNOWN_RESULT_SET;
3) 根据判决结果集, 得出AAR请求的最终判决结果:若存在冲突的判决结果, 进行冲突处理后, 得到最后的判决结果.冲突处理可依据肯定优先或否定优先等处理原则进行冲突消解.
5.3 属性权威合约AA CONTRACT
PEP, AAR, PDP中, 属性语义与属性值赋值都来源于属性权威AA.系统中可能存在多个AA, AA中存储主体属性、资源属性、动作属性和环境属性的属性值和属性间关系的列表.表 1左侧数据表示相关属性的属性值, 右侧表示相关属性间的属性关系.
Table 1 Attribute and attribute relationship
表 1 属性及属性关系
属性信息同样是以事务的形式存储在区块链中, 基于Bloom Filter进行属性管理, AA CONTRACT相当于提供AA查询服务的代理, 合约的伪代码见表 3.
算法3.属性权威合约AA CONTRACT.
输入:属性类事务atribute_transaction, 属性请求attributeRequest;
输出:相关属性集RELEVANT_ATTRIBUTE_SET.
1. AttrTuple=attrbuteRequestParser(attributeRequest);
this=currentBlock; mark=null;
2. for i=1 to blocks.length do
3. {for
j=1 to this.attribute_datablock.length do
4. {BF=getBloomFilter(this.attribute_datablock[i]);
mark=1;
5. for
k=1 to this.datablock.hashfunction.length do
6. {key[k]=hash(k, rAttrTuple);
7. if (BF.NotContain(key[k]))mark=0;
8. }
//end for
9. if (mark=1) then
10. {RELEVANT_ATTRIBUTE_SET.increase(this.datablock.transaction.attribute); continue; }
11. else continue;
12. }
//end for
13. }
//end for
14. return RELEVANT_ATTRIBUTE_SET
AA CONTRACT算法流程描述.
1) 接收属性查询请求attributeRequest;
2) 遍历区块链各区块内属性类事务数据块;
3) 获取属性类事务数据块所对应的属性布隆过滤器BF;
4) 根据该BF所对应的哈希函数, 计算对应属性的哈希值;
5) 若计算得到的哈希值与BF中对应位全部为1, 则在RELEVANT_ATTRIBUTE_SET中添加该数据块内属性信息; 否则, 该数据块中无相关属性信息;
6) 当对所有区块内属性类事务遍历完成后, 将RELEVANT_POLICY_SET作为响应进行返回.
6 实验仿真与分析
通过仿真实验对本文所提出的BBAC-BD机制有效性进行测试, 以验证BBAC-BD机制是否能够实现访问控制策略管理与访问控制策略判决功能.本文基于XACML提供的标准策略一致性测试包中属性集和策略集进行测试, 1组~6组的Policy Sample分别与1 000, 2 000, 3 000, 4 000, 5 000, 8 000条单一策略测试集样本对应, 对开源区块链平台EbCoin进行了扩展与改进, 改用PoW机制, 将PAP CONTRACT, PDP CONTRACT, AA CONTRACT这3部分合约代码与EbCoin进行整合在PC机上构建3节点仿真实验环境.实验环境如下:操作系统为Windows 10家庭中文版64位, CPU为Intel(R) Core(TM) [email protected], 内存大小为16.00GB, nodejs版本为v8.11.1, npm版本为5.6.0.
6.1 策略检索效率测试
本实验针对基于Bloom Filter策略管理方法对策略检索效率的优化效果进行性能测试, 实验分别针对不同查询规模的测试集进行匹配查询测试, 为Bloom Filter设置不同参数进行误差率与检索时延的测试, 用于评估Bloom Filter不同参数对检索性能的影响.单次时延的计算方法是总时延/总的匹配次数.优化效果主要通过策略管理合约中策略的检索时延进行衡量, 时延越小, 其执行效率越高, 检索优化的效果越好.
由表 2测试结果可知, n/k的比值越大, 优化效果越好.比值越大, 所对应的误判率会越低, 但同时也会占用更多的空间成本.同时, 误判率的真实值一般小于误判率的理论值.
图 9与图 10结果表明, 当Hash的性能较好, 即Hash分布结果较均匀时, 在m=3的条件下, 就能够达到预期使用所能接受的误判率, Hash次数的增加并不会带来明显的收益增加.因此, 在条件允许的情况下, 尽量扩大n/k的值, 能够有效提高查询性能.这主要是由于Bloom Filter在策略检测的属性关键字过滤过程中, 其检索时间受策略集合规模影响较小, 故相比于遍历检索过程, 基于Bloom Filter的策略检索与匹配能够达到较高的性能, 基于Bloom Filter的策略检索能够有效节约缓存空间, 减少对缓存的请求次数, 提升策略查询效率以及策略管理业务隔离性.
Table 2 Policy retrieval test results
表 2 策略检索测试结果
Fig. 9 Policy retrieval performance
图 9 策略检索性能比较
Fig. 10 Effect of m value on the accuracy
图 10 m值对检索结果准确性的影响
6.2 策略判决功能测试
为了验证BBAC-BD访问控制机制的有效性, 本文在不同策略规模下, 对基于智能合约的访问控制策略判决功能进行了功能性测试, 测试内容包括策略判决的效率与判决结果的成功率.1组~5组的Policy Sample分别与1 000, 2 000, 3 000, 4 000, 5 000条单一策略测试集样本对应.测试集样本面向80个用户标识构建800次不同的访问请求, 每个标识平均拥有5个属性值, 每个请求共随机发送5次, 策略判决时延通过计算所有请求的平均响应时延得到.
由图 11可知, 策略判决时延与策略规模直接相关, 随着策略规则的增加, 访问控制判决时延增长较为明显.同时, 由图 12可知, 随着策略规则的增加, 策略判决成功率有所下降, 这是由于策略集中存在部分冲突策略, 针对冲突策略, 策略判决合约无法得到一致性的判决结果.需要说明的是, 本文还未将策略冲突处理部分引入策略判决合约, 冲突策略的消解还未有效解决, 这部分内容将在后续研究工作中继续完善.
Fig. 11 Policy decision performance
图 11 策略判决性能比较
Fig. 12 Policy decision success rate
图 12 策略判决结果成功率比较
6.3 区块链安全性分析
由于区块链所面临的主要安全风险来源于攻击者对共识机制的攻击, 以此来达到修改区块数据的攻击目标.为了对区块链自身抗攻击安全性进行分析, 以采用普遍的PoW共识机制为例, 采取文献[36, 37]提出的攻击模型来分析区块链所面临的潜在安全风险.诚实节点可信链与恶意节点攻击链间的竞争关系可以用Binomial Random Walk过程来进行描述, 攻击者伪造的攻击链长度成功超过可信链长度, 从而弥补z个区块差距可能性的问题可被近似地当成Gambler’s Ruin Problem.所以, 攻击者成功弥补z个区块差距, 成功完成对区块链数据篡改攻击的概率计算方法如下:
$
{q_z} = \left\{ {\begin{array}{*{20}{l}}
{1, {\rm{ }}p \le q}\\
{{{\left( {\frac{q}{p}} \right)}^z}, {\rm{ }}p > q}
\end{array}} \right.,
$
其中, p表示诚实节点获得下一区块记账权的概率, q表示攻击者获得下一区块记账权的概率, 且p+q=1;qz表示攻击者最终成功弥补z个区块差距的概率.我们假设诚实节点以平均预期时间生成一个新区块, 攻击者潜在区块链延伸长度符合泊松分布, 其期望值如下:
$
\lambda = z \cdot \frac{q}{p}.
$
为了计算攻击者所生成的区块链长度追赶上诚实节点所生成区块链长度的概率, 将攻击者所生成区块长度的泊松分布概率密度与该时刻攻击者能够成功追赶诚实节点可信链的概率相乘, 即为攻击者成功篡改区块数据的概率pa为
$
{p_a} = \sum\limits_{k = 0}^\infty {\frac{{{\lambda ^k} \cdot {{\rm{e}}^{ - \lambda }}}}{{k!}}} \cdot \left\{ {\begin{array}{*{20}{l}}
{{{\left( {\frac{q}{p}} \right)}^{(z - k)}}, {\rm{ }}k \le z}\\
{1, {\rm{ }}k > z}
\end{array}} \right. = 1 - \sum\limits_{k = 0}^z {\frac{{{\lambda ^k} \cdot {{\rm{e}}^{ - \lambda }}}}{{k!}} \cdot \left( {1 - {{\left( {\frac{q}{p}} \right)}^{(z - k)}}} \right)} .
$
通过Matlab进行仿真, 分析攻击者成功篡改区块数据的概率pa与区块差距z及攻击者获得下一区块记账权的概率p之间的关系如图 13所示.由仿真结果可知:攻击者成功篡改区块数据概率随着区块链距离的增加呈现指数下降趋势, 并且当区块距离相同时, 成功篡改区块概率随着攻击者攻击能力的提升显著增加, 当攻击者获取区块链网络内50%以上的夺取记账权能力时, 才能够控制整个区块链全部数据.当攻击者所掌握的夺取记账权能力较低时, 通过采取适当的区块距离, 区块链能够达到较好的抗攻击效果.
Fig. 13 Attacker success probability
图 13 攻击者成功概率
7 结束语
本文提出一种面向大数据资源的访问控制机制BBAC-BD, 该机制将区块链技术与ABAC模型相结合, 借助区块链所具有的可追溯、不可篡改等特点, 通过区块链事务管理访问控制策略及属性, 实现了策略发布、更新以及撤销全流程的策略管理与追踪.策略以公开、透明的形式存放在区块链中, 任何用户都可以对其进行查询, 从传统基于第三方提供访问控制服务的模式中解脱出来, 解决了权限判决透明度的问题.同时, 通过智能合约, 基于资源拥有者发布到区块链上的策略, 实现对大数据资源自动化的访问控制, 判决过程更加灵活、判决结果更加可信.BBAC-BD机制实现了安全、可靠、透明的新型访问控制架构, 能够有效促进大数据的安全流通与共享.