APP下载

面向区块链数据交换的层次化访问控制方法*

2023-10-20张玉健孙雨虹蒋国权

网络安全与数据管理 2023年9期
关键词:同态访问控制层级

赵 越,张玉健,孙雨虹,蒋国权

(1.东南大学 网络空间安全学院,江苏 南京 211189;2.国防科技大学 第六十三研究所,江苏 南京 210007;3.国防科技大学 大数据与决策实验室,湖南 长沙 410073)

0 引言

随着数字信息化技术的发展,数据在军事领域中扮演着越来越关键的角色,逐渐成为作战决策和战略规划的重要依据。在军事情报信息数据交换的过程中,对数据访问行为采取安全的访问控制(Access Control,AC)方法至关重要。在大规模的军事数据交换和访问环境中,访问控制可以通过限制数据的访问权限范围来保护军事数据的安全和保密性。通过访问控制,资源所有者可以创建访问策略,以确保只有合法用户才能对资源执行合法操作[1]。

访问控制策略是控制数据访问行为的第一道门槛,它能够限制或制止未经授权的访问行为,从而保护数据的安全。在特殊场景如政府部门、军事应用等场景下,数据的安全存储管理需要同时考虑保密性、完整性和可用性,因此访问控制策略需要具有一定的细粒度需求。与此同时,由于上述特殊场景下不同的实体拥有不同的安全层级关系(如不同的军事数据保密等级),低敏感等级的数据用户不能“越级”访问高敏感等级的数据,因此需要更为灵活且严格的访问控制机制以契合特殊场景下的数据访问安全和监管需求。

传统的访问控制模型,例如自主访问控制(Discretionary Access Control,DAC)、强制访问控制(Mandatory Access Control,MAC)和基于角色的访问控制(Role-Based Access Control,RBAC)虽然具有一定的可行性,但是它们的控制粒度比较粗糙,无法灵活地应对不同场景下的数据访问需求。例如,RBAC模型将用户分为角色并将权限授予角色,而无法对用户的具体属性进行细致的控制。基于属性的访问控制(Attribute-Based Access Control,ABAC)是一种新兴的访问控制模型,它通过对实体的属性进行细粒度的控制,从而实现对数据访问的精确控制[3]。然而,ABAC模型并不能满足特别是在政府部门、军事应用等特殊场景下的访问控制需求,需要更为严格的访问控制策略。在这种情况下,强制访问控制MAC模型可以实现对数据访问的更为严格控制,即只有满足特定的访问层级才能访问数据。

目前已有相关工作针对层次化访问控制方法提出了将ABAC和MAC相结合的解决方案。在文献[7]中通过属性值、访问安全值评估的方式,访问者属性值需要满足数据安全值才能通过访问控制的验证,但是这种评估和验证的方法都是依赖于一个中央评估机构来进行的,存在单点故障和属性隐私泄露的风险。

区块链技术具有去中心化、防篡改、集体维护和透明等特点,被认为是访问控制方法的可信替代基础设施[2]。首先,区块链可以帮助解决传统中心化访问控制方案中的单点故障问题;其次,通过消除第三方而不需要担心第三方的隐私泄露;第三,将区块链技术应用于访问控制从而可以创建可信且不可修改的历史日志。通过使用智能合约,可以监控访问控制程序并执行预先指定的策略。因此,本文基于区块链设计一种新的访问控制模型,以满足特殊分层访问场景下的数据安全和监管需求。需要设计一种新的访问控制模型,一方面所设计的访问控制模型需契合具有敏感安全层级的场景,另一方面所实际的访问控制模型需要在验证的过程中保护重要属性和层级区限的隐私安全。

本方案设计了一种将基于属性的访问控制ABAC和强访问控制MAC相结合的方法,结合区块链评估属性值和敏感层级并公开评估结果,使用同态加密的方法在不暴露数据敏感层级和用户属性的前提下完成访问控制权限的验证,从而确定数据用户可访问数据的具体范围,同时所有的访问控制历史信息都通过日志的方式上链以供后续的监管。本文的主要贡献总结如下:

(1)本文提出了一种通过区块链分布式账本将属性进行评估量化并链上公开的方法,实现更加细粒度的且分层的数据访问控制策略。通过Paillier同态加密算法在不暴露数据敏感层级和用户属性的前提下完成访问控制权限的验证。

(2)除了从理论上分析所提出的访问控制方案的安全性之外,本文还使用Hyperledger Fabric作为实验平台对其进行有效性和性能评估。

1 现有工作

传统的集中式访问控制方法是指在一个中心服务器或授权机构上进行访问权限的管理和控制。这种方法通常使用访问控制列表(Access Control List,ACL)或访问控制矩阵(Access Control Matrix,ACM)来定义用户对资源的访问权限[4]。文献[6]针对智能医疗场景中敏感数据存储和传输不安全的问题,提出了一种基于密文策略属性加密(Ciphertext-Policy Attribute-Based Encryption,CP-ABE)的访问控制框架,数据存储在半可信服务器中,密钥分为属性密钥和时间密钥,患者在密文中嵌入访问策略来进行细粒度的访问控制。文献[7]针对一般高敏感度场景的访问控制策略需求,提出将ABAC和MAC通过对属性量化进行结合的方法,根据属性安全值来对访问控制主体和客体进行安全分级,从而实现具有细粒度的层级访问控制方法。然而,文献[4]、文献[5]、文献[6]是基于单一的访问控制方法(如ABAC方法)来进行细粒度的访问控制,单一的ABAC方法在有安全敏感分级需求的场景中缺乏对层级安全的考虑;文献[7]考虑到了这一点,但是其方案中属性机构评估的属性值缺乏公平透明的公开方式,属性值有单方面篡改的可能,同时该工作缺少对环境属性的描述。此外,以上方法都是基于管理员在中心服务器上配置用户的权限,并通过身份验证来确定用户的身份和访问权限。然而,这种方法仍存在例如单点故障、中心服务器的性能瓶颈和潜在的安全风险。

基于区块链的访问控制方法是近年来的新兴研究方向,它利用区块链技术来构建分布式的访问控制方法。例如针对传统的访问控制模型中存在的问题,文献[10]提出了一种名为fabric-iot的物联网访问控制方法,通过三种智能合约分别对传统的基于属性的访问控制提供去中心化、细粒度、动态的访问控制管理。文献[17]设计了一种基于区块链的去中心化ABAC解决方案(Blockchain-Based ABAC,BB-ABAC),以智能合约的形式自动执行授权逻辑,实现权限的可追溯、可信管理。文献[19]提出了一种基于区块链的多权限访问控制方案(Blockchain-based Multi-authority Access Control,BMAC),用于安全地共享数据,引入Shamir秘密共享方案和许可区块链(Hyperledger Fabric),实现每个属性由多个权限共同管理,避免单点故障。另外,为了解决链上存储属性时的隐私问题,文献[12]提出了一种结合区块链技术和ABAC模型的策略和属性隐藏访问控制方案,所提出的方案有助于实现可审计和隐私保护的访问控制机制。上述工作虽然结合了区块链解决了单点故障问题,但大多数中的访问控制一系列机制,包括工作[12]中的属性隐藏方法都过度依赖于区块链执行,没有考虑链上的计算开销。此外,这些工作都没有针对特殊的敏感分级访问控制场景进行适配。

2 预备知识

2.1 访问控制技术

2.1.1 基于属性的访问控制(ABAC)

基于属性的访问控制是一种访问控制模型,它使用实体的属性来进行访问控制决策。在ABAC中,访问策略是根据实体的属性、资源的属性和环境条件来定义的。实体的属性可以包括用户的角色、组织、位置、工作职责等,资源的属性可以包括数据类型、敏感级别、所有者等。通过定义属性之间的关系和访问规则,ABAC模型可以实现对数据访问的精细控制[9]。基于属性的加密是ABAC模型的一种具体实现方式,它使用了加密算法来保护数据的安全[8]。

2.1.2 强制访问控制(MAC)

强制访问控制是一种访问控制模型,它根据预定义的访问规则对数据的访问进行严格控制。在MAC模型中,每个数据对象都有一个安全级别或标签,并且用户也有一个相应的安全级别。访问控制规则指定了哪些用户可以访问哪些安全级别的数据。只有在满足访问规则的情况下,用户才能访问数据[13]。MAC模型适用于特殊场景下对数据访问具有严格控制需求的情况,例如政府机构、军事机密等。通过定义严格的访问规则和安全级别,MAC模型可以防止未经授权的用户越级访问敏感数据。

2.2 Paillier同态加密算法

Paillier同态加密算法是一种公钥加密方案,具有同态加密的特性,由密码学家Pascal Paillier提出[18]。Paillier同态加密算法可以实现加法同态性。加法同态性允许在密文空间中对两个密文进行乘法操作,得到的结果解密后与两个明文的加法结果相等。这种同态性质使得Paillier算法在安全的情况下可以进行加法运算,而无需对明文进行解密。这对于保护隐私非常有利,因为它允许在加密状态下对数据进行计算,而不暴露明文信息。

2.3 区块链技术

区块链是一种去中心化的分布式账本技术,使用密码学方法确保数据的安全性和完整性。区块链由一个个区块组成,每个区块包含一些交易记录,并通过哈希函数与前一个区块链接成不可篡改的链式结构[16]。区块链的主要特点包括:

(1)去中心化:区块链网络由多个节点组成,没有中心化的控制机构,数据由网络中的节点共同维护和验证。

(2)防篡改:区块链使用哈希函数和加密算法确保数据的完整性和安全性,一旦数据被写入区块链,就很难修改或篡改。

(3)透明性:区块链中的交易和数据是公开的,任何人都可以查看和验证区块链上的数据。

(4)智能合约:智能合约是在区块链上执行的自动化合约,它们根据预先定义的规则和条件执行特定的操作。

区块链技术为访问控制方法提供了可信的基础设施。通过将访问控制规则和访问日志记录存储在区块链上,可以实现去中心化、不可篡改的访问控制策略,并提供透明性和监管能力。

3 方案设计

3.1 方法框架

访问控制部分拟将传统的基于属性的访问控制(ABAC)与和强制访问控制(MAC)结合,并通过属性量化和数据区限层级实现分层访问控制,在访问权限验证过程中使用同态加密在不暴露任何属性信息的情况下完成属性和访问层级的验证,并将加密信息作为日志上链以供审计,方法框架如图1所示。本方法具体流程如下:

图1 访问控制方法框架示意图

(1)属性评估上链:在信息安全和身份管理领域,属性授权机构(Attribute Authority,AA)是负责管理和颁发数字身份认证中的属性声明的实体。在初始阶段,AA会对预分配的属性进行敏感估值,出于公开透明的开率将评估结果上链公开。

(2)属性分配:AA会对所有加入本框架中的用户实体分配相关的属性认证。区块链CA会为用户颁发包含公私钥的身份证书。

(3)数据注册:若数据拥有者(Data Owner,DO)欲共享自己的数据,需进行数据注册操作。数据注册通过调用访问控制智能合约实现。DO需要指定数据的访问策略P,之后通过Paillier同态加密算法将数据信息(数据ID,即数据的离链地址)、策略P的哈希值、访问区限加密后发起交易上传至区块链。

(4)数据请求:若数据用户(Data User,DU)欲请求DO上传的数据资源,则需要通过Paillier同态加密算法将请求的数据ID、自身属性和属性敏感总值加密后发起交易上传至区块链。

(5)验证授权:区块链通过Raft共识算法选举的验证节点在收到来自DU的数据请求加密信息后,利用Paillier算法的加法同态性在不知道用户实际的属性和敏感值的情况下完成访问控制权限的验证,验证过程包括属性的验证和访问层级区限的验证。

(6)链上访问日志:在访问控制流程结束后,验证节点则通过交易的方式将数据ID、数据用户ID、访问策略密文、请求策略密文上传至区块链作为访问日志以供审计。

3.2 关键流程

本方法流程包含三个关键部分:层次化访问控制,同态加密访问权限验证和日志审计。

3.2.1 层次化访问控制

在初始阶段,首先属性机构AA对方法中的每个预分配属性进行敏感性评估赋值(下文简称为属性值),属性值评估完成后将属性值公开上链,属性分为资源属性和环境属性,如表1所示。值得注意的是,此处只是把属性对应的值公开,出于安全和隐私的考虑而不是对每个实体拥有的属性进行公开。属性值评估完成后对所有用户实体进行常规属性分配,颁发来自AA属性签名证明。

表1 属性评估值链上公开示例

每个实体(包括DU和DO)的属性敏感总值VUID是指实体所拥有的资源属性值VR与环境属性值VE的和,其中UID为实体的ID,k、b为相关系数:

VUID=kVR+bVE

(1)

在本方法中,为了减轻区块链数据存储的负担,数据在注册时数据本身不上链,而是通过sha256哈希函数对数据进行哈希计算后将结果作为数据的ID(下文为DID)上链,作为数据的离链地址。而数据本身的存储可以有多种方式,如使用星际文件系统。数据的存储方式不在本方法的讨论范围内。

每个待访问的数据对象D都包含一个访问控制策略树τ,在访问策略树τ中,其中2 of 3为需要满足其3个孩子节点中的2个属性,如图2所示。该策略树由DO在数据注册阶段进行指定,指定的内容包括数据访问所需的属性和访问层级区限R。这里的R是一个取值范围,数据拥有者DO可以利用R对数据的访问进行敏感分层,即一个数据可以包含多个不同的R以作为层次化访问控制验证的依据。

图2 访问控制策略树τ示意图

对于访问权限的判定,3.2.2小节将以上述访问策略树τ为依据,基于同态加密在密态的情况下判定,根据判定结果并结合以下规则判定用户访问权限:

数据用户DU应满足其VUID∈R,在层级区限R外则进行相关访问限制。具体地,类似强制访问控制MAC中的BLP方法,当主体(DO)敏感等级不小于客体(数据)敏感等级时,主体可以对客体进行读取访问;当主体敏感等级不大于客体敏感等级时,主体可以对客体进行写访问。

3.2.2 同态加密访问权限验证

在数据注册阶段,DO指定完数据访问所需的属性和访问层级区限R之后,通过Paillier同态加密算法将数据DID、策略P的哈希值、访问区限加密后发起交易Tx上传至区块链,SIGDO为DO的签名:

Tx={DID,ACt(DID,H(P),R),SIGDO}

(2)

此处的ACt加密函数使用了Paillier同态加密算法,该算法所涉及的具体流程如下:

(1)密钥生成

①密钥生成算法由区块链节点执行,选择的两个大素数p和q的选择要满足gcd(pq,(p-1)(q-1))=1,且n=pq。

(2)生成访问策略密文ACt(DID,H(P),R)

①访问策略密文生成算法由DO执行,数据DID,访问策略P的哈希值H(P),访问层级区限R作为输入,此处的R可以是层级上限或者下限,以下步骤针对H(P)和R分别执行一次,以H(P)为例。

④选择随机数r2,满足0

在执行完ACt函数之后,DO下一步将加密结果EPKi(I1)、EPKi(n-K1)和整数I1通过交易的方式上链,以供后续的访问控制权限验证。

在数据请求阶段,数据用户DU欲请求DO上传的数据资源,则需要通过Paillier同态加密算法将请求的数据ID、自身属性和属性敏感总值加密后发起交易上传至区块链,同时调用智能合约中的数据请求函数,此处SIGDU指DU的签名:

Tx={DID,RCt(DID,H(A),VUID),SIGDU}

(3)

此处的RCt加密函数具体流程如下所示:

(3)生成请求策略密文RCt(DID,H(A),VUID)

①请求策略密文生成算法由DU执行,数据DID,用户属性的哈希值H(A),DU属性敏感总值VUID作为输入,以下两个步骤针对H(A)和VUID分别执行一次,以H(A)为例。

③获取链上请求数据的访问策略密文EPKi(I1)和EPKi(n-K1),利用上述参数生成结果E,计算:

E=EPKi(I1)K2EPKi(n-K1)I2

(4)

根据加法同态性,可得:

E=EPKi(I1K2+nK2-I2K1)

(5)

在执行完RCt函数之后,DU下一步将计算结果E并与整数K2一起返回给数据请求函数做进一步验证。

(4)结果验证算法Verify(E,SKi)

该算法由区块链验证节点执行,将来自DU的请求结果E,同态加密私钥SKi作为输入进行验证。该算法将在不知道层级区限R和用户敏感总值VUID的前提下对DU的访问权限进行双重验证。利用SKi,计算:

DSKi(E)=(I1K2+nK2-I2K1)modn

(6)

化简得:

DSKi(E)=(I1K2-I2K1)modn

(7)

此时,对于解密结果DSKi(E)考虑以下情况:若是属性策略的验证,需严格要求DSKi(E)为0,即数据访问策略的属性和用户访问的属性完全相同,则验证通过。若是层级区限R的验证,首先需要针对解密结果DSKi(E)做进一步处理:若DSKi(E)>I1K2,则需令D=DSKi(E)-n,否则D=DSKi(E)。接下来需验证D和0的大小关系,若D>0,则表示R>VUID;若D<0,则R

3.2.3 访问审计

在结果验证算法Verify对用户的访问权限验证通过后,出于后续审计的考虑,验证节点将通过交易的方式将上述算法中的数据ID、数据用户ID、访问策略密文、请求策略密文上传至区块链作为访问日志以供审计,如图1中的日志交易所示。

审计方仅需从链上获取ACt函数和RCt函数的结果,并通过3.2.2小节中结果验证算法检查是否可以正确验证通过。

4 实验评估

4.1 实验设置

本文使用Hyperledger Fabric v2.5.0平台构建联盟区块链并测试相关功能的智能合约。

本实验使用Go语言1.20.2版本编写链码与Fabric联盟区块链进行交互,实现访问控制功能。链码安装在所有Peer节点上。对于属性相关信息管理,本文使用Fabric CA为区块链系统中的所有实体生成X.509证书。具体地,本文用 Shell 语言开发脚本,利用 Fabric CA 为加入区块链系统的用户生成包含密钥的证书。

此外,本文的实验都在Windows电脑中的VirtualBox虚拟机上进行的,电脑硬件的基本情况如下:CPU:Intel i7-8565U 1.80 GHz,内存16 GB,GPU:NVIDIA GeForce MX250。

4.2 有效性评估

本部分将通过随机模拟实验分析本方案中属性访问层级对访问安全的有效性。实验定义的属性列表(如职业、年龄、地址等信息),同时为每个属性附上相应的敏感值,例如,教师敏感值为0.1,若年龄在20和30之间则敏感值为0.2,其中定义的敏感值范围在0和1之间。待访问的数据一共有5份,表2中的5个示例数据是所有数据请求用户访问的数据对象。

表2 待访问数据及访问需求

通过随机模拟实验探讨如下场景:场景中每个用户实体具有多个属性,并根据这些属性计算出属性敏感值(Value)的总量。上述5个待访问的数据除了需要满足自身所需的属性外,还需要根据属性计算和评估访问所需的敏感区限。

为了模拟该场景,编写了一段Python脚本。该脚本定义了属性集合(包括属性敏感值),生成了大量的用户实体。每个用户实体包含随机定义的属性以及根据这些属性计算出的属性敏感值总量。判断用户是否具有访问权限的依据如下:用户的属性必须满足数据需求的属性,与此同时用户的属性敏感值必须在数据的敏感区限范围内。

通过进行10 000次随机模拟实验,统计了上述5个数据的用户数量,这些用户满足了其访问需求,并计算了满足用户占总用户数的比重。实验结果如图3所示。

图3 满足访问条件的用户占比

其中将“仅满足属性访问需求”和“同时满足区限(既满足属性又满足访问区限的要求)”的用户数量继续比较,可以确定哪些用户满足数据访问的属性需求。根据实验结果,可以观察到:对于每个数据对象,有大部分用户满足其属性访问需求,且仅满足属性访问需求的用户数量占总用户数的比重较高(约20%左右);在满足属性访问需求的用户中,也有一部分用户同时满足了数据对象的属性敏感值要求,满足全部访问需求的用户数量占总用户数的比重在4%至18%。

这表明,通过计算用户属性敏感值总量并与数据对象的属性敏感值区限层级进行比较,可以进一步筛选出满足属性敏感值要求的用户。从而有效地制止了用户“越级”访问数据主体的情况,表明该方法可以从敏感访问层级的角度来保护敏感数据的安全。

4.3 实验评估和对比

4.3.1 功能性对比

本部分将对方案功能性进行对比,对比内容具体为去中心化、层次化、隐私保护和访问控制基本功能四个方面,如表3所示。

表3 方案功能性对比

其中,文献[7]中的方案虽然考虑到了访问控制层次化的问题,但存在单点故障和隐私保护问题;文献[10]的方案尽管具备一定程度的去中心化和访问控制能力,但在访问控制层次化和隐私保护方面存在限制;文献[12]的方案在去中心化、隐私保护和访问控制三个方面均具备基本功能,然而并没有考虑到层次化的访问控制方法。而相比之下,本方案在包括去中心化、层次化、隐私保护和访问控制方面均实现了基本功能。

4.3.2 属性上链性能消耗

本部分将分析属性个数对上链性能开销的影响。实验定义了属性资产的结构体,包括属性的类别、内容和量化值,该量化值由属性机构得出评估值后上链。调用链码中的CreateAsset函数,其用于在区块链世界状态中创建新的属性资产以及属性上链的功能。该函数接收属性资产的详细信息作为参数,并进行一些资产创建权限的检查和属性数据处理,每次调用仅能针对一个属性进行操作。本实验中通过编写Shell脚本来测试若干属性创建并上链的平均延时数据,实验结果如图4所示。

图4 属性上链性能消耗(ms)

从实验结果可以看到,最终每个属性上链的延时趋向于105 ms,随着属性数量的增多,对能造成的影响却非常小,可见该方法可对大量属性的创建及上链提供支持。

4.3.3 访问权限验证开销对比

本部分实验旨在评估访问控制方法验证的时延表现。由于方案的加密部分由各个链下实体执行,因此本小节实验部分主要针对验证节点的验证算法的开销进行测试。实验使用Python代码复现了部分工作的访问控制验证的部分,通过对比不同工作的10 000次访问控制验证的执行次数从而得出总时间(ms),结果如图5所示。

图5 属性验证开销对比(ms)

根据实验结果,在相同的执行次数下,工作一[7]和工作二[12]的访问控制验证部分的时延分别为12.96 ms和110.69 ms,本工作的访问控制验证时总时间为87.72 ms。

相比之下,由于工作一的方案中未包含隐私保护的内容,因此效率相对较高,但是也牺牲了隐私安全性,在军事应用场景中,隐私保护是至关重要的考虑因素,特别是对于处理敏感信息的场景。工作二中使用了分布式双陷门公钥密码体制(Distributed 2 Trapdoors Public Key Cryptosystem,DT-PKC)[20]对访问控制策略进行了隐私保护,但是这种方法在验证部分需要进行分布式加密和汇总解密,性能消耗较高,相比之下本文中的验证算法具有较高的效率,能够更快速地进行访问控制的属性和层级验证。

5 结论

本文基于区块链技术提出了一种基于属性的访问控制(ABAC)和强制访问控制(MAC)相结合的层次化访问控制方法,用于数据交换场景。通过利用区块链评估属性值和敏感层级,并公开评估结果,实现了更细粒度更安全的数据分层访问控制策略。实验结果表明,所提出的方法有效地解决了用户越级访问数据主体的安全问题,并在关键功能上符合预期的运行效率。在未来的工作中,将进一步探索更安全更高效率的基于区块链的访问控制方法。

猜你喜欢

同态访问控制层级
军工企业不同层级知识管理研究实践
关于半模同态的分解*
基于军事力量层级划分的军力对比评估
拉回和推出的若干注记
ONVIF的全新主张:一致性及最访问控制的Profile A
一种基于LWE的同态加密方案
动态自适应访问控制模型
HES:一种更小公钥的同态加密算法
浅析云计算环境下等级保护访问控制测评技术
任务期内多层级不完全修复件的可用度评估