可信执行环境赋能的云数据动态群组访问控制

2023-09-07 08:47宋祁朋马建峰
西安电子科技大学学报 2023年4期
关键词:子群访问控制密文

李 玥,宋祁朋,贾 皓,邓 鑫,马建峰

(1.西安电子科技大学 网络与信息安全学院,陕西 西安 710071;2.西安电子科技大学 空天地一体化综合业务网全国重点实验室,陕西 西安 710071;3.华北电力大学 控制与计算机工程学院,北京 102206)

1 引 言

云计算技术的快速发展,给人们在文件存储、处理和共享等方面提供了很大的便捷。廉价的计算成本和巨大的存储容量吸引了越来越多的企业以及个人用户选择将数据外包存储至云计算平台上。但是,云服务供应商可能会在未经用户允许的情况下,擅自泄露篡改用户隐私数据或重要文件,因此大部分的云服务供应商并不能完全被信任。为保护数据隐私,数据拥有者通常会在上传数据之前对数据进行加密。但是云计算服务中存在大量共享数据的需求,密文数据并不能通过云服务器便捷地来分享给他人。因此,基于密码学的云数据访问控制成为了近年来的研究热点。

针对基于密码学的云数据访问控制问题,文献[1]提出了混合加密(Hybrid Encryption,HE)思路。其基本思想是,在公钥基础设施的辅助下,利用对称加密技术加密数据,非对称加密手段加密并分发数据对称加密密钥,但HE在一对多数据共享方面存在诸多不足。广播加密(Broadcast Encryption,BE)致力于解决数据拥有者和一组用户进行一对多的密文数据共享。早期广播加密方案[2]多基于公钥基础设施,为免去公钥管理的负担,有学者提出身份基广播加密(Identity Based Broadcast Encryption,IBBE)[3],利用标识用户的任意字符串作为公钥,对数据进行加密。只要用户身份在共享用户集合中,便可利用其私钥进行解密。和IBBE类似,基于属性加密(Attribute Based Encryption,ABE)[4],通过为用户以及数据定义一组属性,支持数据拥有者和群组用户之间,进行细粒度密文数据群体共享。

为了解决密文数据在不解密前提下共享给新用户,代理重加密技术(Proxy ReEncryption,PRE)[5]应运而生,能对存储在云服务器上的密文进行安全转换。在代理重加密中,基于授权人(Delegator)公钥加密的密文可以被转换为另一种密文,且保持对应明文不变,被转换后的密文可以由被授权人(Delegate)的私钥进行解密。该密文转换过程由一个半可信的代理者(Proxy)执行。为支持一对多的代理重加密,有学者提出了IBBE-PRE[6]。为解决代理权限过大带来的隐患,且数据拥有者有时候只想共享一部分密文数据,文献[7]提出了条件代理重加密(Conditional PRE,CPRE)[7]。只有符合条件约束的密文才能被代理进行密文转化。条件代理重加密,只有密文满足授权人设定的条件(关键字),代理者才能将授权人的密文转换成受理人可解密的密文,即授权人可以通过关键字限制受理人的权限。文献[8]提出了细粒度的基于身份的代理重加密机制,但并不支持群组共享。文献[9]在文献[8]的基础上添加了一对多的群组共享支持。为近一步提升云数据共享的灵活性,文献[10]提出了PBAA方案,同时支持群组共享、细粒度访问控制等功能。文献[11]考虑了代理重加密的可验证性以及公平性问题,并提出了VF-ABPRE,允许共享数据用户验证云数据平台返回的重加密密文是否正确,同时保障云平台数据免于用户的恶意控告。文献[12]提出了一个基于属性的云安全多群组数据共享加密方案。该方案构建了可验证外包解密的可撤销属性基加密,实现了抗合谋的用户撤销,可以在不影响未撤销用户的情况下加入或撤销任意数量的用户。

近年来,也有学者聚焦于云数据访问控制中数据分布式存储以及跨群组共享问题,文献[13-15]基于区块链CP-ABE技术,提出了一种具有抗属性篡改的密文数据共享机制。文献[16]提出了基于区块链的密文策略访问控制机制。文献[17]提出了一种基于区块链的跨群组的细粒度数据共享方案,通过群签名来保证跨用户组的细粒度访问控制,但没有考虑群组用户的动态性,即群组中成员的动态加入和撤销。随着隐私保护的概念渐入人心,不少学者关注数据共享相关的隐私保护问题。文献[18]关注了数据共享中的用户身份隐私保护问题。文献[19]研究了IoT场景中的具有隐私保护属性的访问控制机制。

综合上述分析,云存储平台上密文数据的访问控制越来越灵活便捷,但大多数研究都是基于对的构造方法,在计算开销上相较于传统公钥加密技术,要慢一个数量级[20],因此计算复杂度越来越高。此外,大多数研究忽略了群组动态变更的情况,即缺乏动态群组访问控制管理能力。在管理群成员频繁变动的大用户群时,其所需的计算开销难以接受。针对云平台上群组动态访问控制管理问题,笔者提出了低开销、细粒度的动态群组访问控制机制,主要工作如下:

(1) 基于可信计算环境,即英特尔®软件防护扩展(Intel®Software Guard eXtensions,SGX)技术,以PBAA方案为基础,构建了CSP群组访问控制管理服务器,实现在不可信云存储共享平台上,以低计算复杂度和存储开销,实现数据共享系统的群组成员的可信管理。

(2) 利用分治的思想,对密文数据共享用户群体,实现层次化管理,降低了群组成员变更操作的开销。

(3) 给出系统实现,并对方案进行仿真分析,证明了方案的有效性与高效性。

2 基础知识

2.1 Intel SGX

Intel SGX是Intel为满足可信计算需求推出的一组扩展指令集[21],与ARM Trustzone和Sanctum类似,SGX致力于在不受信的环境下,为用户应用程序提供可信执行环境(Trusted Execution Environment,TEE)。为此,SGX允许用户应用程序在一段位于Enclave地址空间中,开辟一段受保护的内存空间。这段受保护空间实行严格的访问控制和加密操作,保护程序数据的机密性和代码的完整性。SGX将信任域缩小至CPU制造商,减少了可信计算基(Trusted Computing Base,TCB)的大小。支持SGX的CPU提供了内存加密引擎(Memory Encryption Engine,MEE)硬件单元,通过对保护内存读写的解密加密,保证了数据只有在Enclave内存中才是明文。SGX依赖的关键技术如下:

(1) 内存隔离。SGX从系统主存中征用128 MB作为处理器预留内存(Processor Reserves Memory,PRM)。PRM中的所有代码和数据在CPU之外是加密的。当把数据加载到CPU时,需要进行相应的解密和完整性检查。诸如Hypervisor、BIOS、操作系统等特权应用,都不能随意访问这段PRM区域。操作系统被允许置换出Enclave页面,SGX保证置换页面的完整性、保密性和及时性,但是置换页面会带来较大性能开销。基于SGX的用户应用程序由Enclave部分和非受信任部分组成,其他进程只能通过SGX提供的安全接口和Enclave交互。

(2) 认证。SGX提供了本地认证和远程认证两种机制。本地认证是指在同一个平台上的两个Enclave在交换信息之间使用SGX报告机制彼此相互认证。远程认证功能则允许在远程系统上验证代码或数据的完整性和真实性。这种验证是通过密码学测度加载到Enclave中的初始代码和数据来完成的。SGX的认证功能保证了测度的真实性以及测度来源的可靠性。认证的结果可以提供给第三方,以证明Enclave的真实性。此外,SGX远程认证机制还允许在Enclave和外部实体之间建立一条安全信道用来加载敏感数据。

(3) 数据密封。当Enclave被实例化之后,硬件会对数据提供保护。但当Enclave被关闭时,Enclave内部所有的数据都将丢失。为了对Enclave运行时的数据进行持久化,SGX提供了数据密封机制。目前的SGX有两种密封数据的方法,分别是密封到安全区标识和密封到密封标识。数据密封机制首先使用一个密封密钥来加密和保护数据完整性,此密封密钥只能由特定平台上的Enclave生成。然后,数据即可存储在Enclave之外的不受信任的内存或存储中。只有具有相同密封密钥的Enclave才能解开数据的密封,保证了数据的安全性。

需要指出的是,SGX易遭受各式侧信道攻击,也有相关研究关注如何检测和对抗侧信道攻击。如何保证SGX的安全不在文中考虑范围之内。

2.2 PBAA方案介绍

1) PBAA方案7种算法

原始PBAA方案[10]包含7个算法:Setup,Register,Encrypt,DKGen,ReEnc,Dec1和Dec2。各算法的大体工作流程如下:

(1) (PK,MSK)←Setup(1l,N):可信第三方(Certificate Authority,CA)执行Setup算法完成系统初始化。给定安全参数l和一个密文的最大共享人数N,CA运行Setup算法生成系统公钥PK和主密钥MSK。CA公开PK参数,保证MSK信息不泄露。

(2) SKID←Register(PK,MSK,ID):当用户ID申请加入云数据共享系统时,CA负责验证用户ID身份的真实性。在此基础上,给定PK、MSK和身份ID,CA运行Register算法来输出用户ID的私钥SKID,并通过安全信道将SKID分发给用户ID。

(3) CT←Encrpty(PK,M,S,L):当用户将数据外包到云存储服务商之前,调用Encrypt算法来保护数据隐私。具体来说,数据所有者首先指定接收者用户集和S(其中|S|≤N)和描述条件集L,然后用S和L对数据M进行加密,然后数据所有者将生成的密文CT外包传输给CSP。

(4) DKID→S′|←DKGen(PK,SKID,S′,):当数据所有者想要将加密数据共享给一组新的用户S′时,数据所有者需要制定一个访问策略,指定数据所有者希望共享数据的类型。随后数据所有者通过调用DKGen算法,以PK、SKID、身份集S′(|S′|≤N)和访问策略为参数,生成带有S′和的委托密钥(即重加密密钥)DKID→S′|。

(5) CT′∕⊥←ReEnc(PK,CT,S,L,DKID→S′|):在收到数据拥有者发来的委托密钥DKID→S′|之后,CSP通过调用ReEnc算法,以PK,在S和L下生成的原始密文CT,委托密钥DKID→S′|为参数,尝试进行密文转换。如果数据用户ID∈S且L满足,则ReEnc算法,可针对S′输出一个重加密密文CT′,否则返回错误符号⊥。

(6)M∕⊥←Dec1(PK,SKID,CT,S):给定由PK、SKID和用户集合S生成的原始密文CT,如果数据用户ID∈S,那么运行此解密算法可获取原始消息M,否则收到错误符号⊥。

(7)M∕⊥←Dec2(PK,SKID′,CT′,S′):给定由PK、SKID′和用户集合S′生成的重加密密文CT′,如果数据用户ID′∈S′,那么运行此解密算法可获取原始消息M,否则收到错误符号⊥。

2) PBAA方案的优势

相比于群组密态数据共享方案,PBAA方案具有如下优势:

(1) 基于身份的广播数据共享,支持数据所有者指定一组用户,并用这些用户的身份加密数据,并进行数据共享;

(2) 基于策略的重加密,支持数据所有者对重加密密文制定细粒度的访问策略。

3 系统模型

方案系统模型如图1所示,包含5个参与者:系统管理员(system ADMINistrator,ADMIN),云存储服务提供商(Cloud Storage Provider,CSP),数据拥有者(Data Owner,DO),数据用户(Data User,DU),可信第三方(CA)。

图1 系统模型

既有云数据访问控制方案,其工作基本原理是:数据拥有者和数据用户,通过非可信CSP进行数据共享业务。被共享的数据通过对称加密算法,例如:AES算法,进行加密。对称加密的密钥则通过所提出的动态群组访问控制方案进行加密并分发。系统细粒度访问控制以及代理重加密功能。数据拥有者,可以指定一组共享数据的用户S和一组条件(例如:关键字等),对数据加密并上传至CSP。密文数据拥有者,如果需要和一组新用户S′共享数据,则可在原始条件基础上构造一个访问结构,生成重加密密钥。凭借重加密密钥,CSP可对原始密文中满足访问结构的部分进行重加密操作,以便新的用户群S′可以用其私钥顺利重加密解密秘文。

为简化访问控制管理,笔者在CSP中引入基于Intel SGX的管理服务器。在数据拥有者拟和用户群共享数据时,会和管理服务器通信。后者负责创建针对待共享数据群密钥。数据拥有者通过群,密钥对数据加密,并上传至CSP,同时管理服务器通过身份基广播加密的方式生成访问控制相关元数据,存于CSP之后,以便用户群读取。

管理服务器同时还承担重加密过程中的代理角色,负责将需要重加密的密文进行密文转换。此外,当用户群体发生成员变更时,例如增加/删除群成员时,动态访问控制管理亦由管理服务器负责。

系统模型中的CA主要用于实现系统中初始信任关系的建立。

4 算法设计

4.1 用户和Enclave间的初始信任建立

提出的方案依赖的可信基为管理服务中的Enclave部分。因此,在系统初始化阶段,需要在Enclave程序和数据用户之间建立双向信任关系,建立起来的信任关系是用户文件端到端安全的基石。为达成这一目的,可依赖可信第三方完成这一过程。图2展示了初始信任建立过程。

图2 用户和Enclave程序的双边信任建立

(1) 用户对Enclave的信任建立。其核心步骤在于Enclave可以向用户出示CA签发的证书。为此,在初始阶段,首先Enclave在其内部生成一对公钥和私钥。其中私钥绝不离开Enclave,公钥连同Enclave测量结果一起发送给CA。CA向SGX机制中远程认证服务,例如:IAS,进行验证,确定Enclave的真实性,并确定运行在Enclave中代码的可信性。一旦上述过程完成,CA签发证书给Enclave,连同之前Enclave传递而来的公钥,传给Enclave。CA的公钥被安全存放于Enclave中。凭借CA签发的证书,用户完成对Enclave的信任建立,后续可以放心地管理服务器申请用于PBAA-SGX机制的私钥。

(2) Enclave对数据用户的信任建立。为避免用户身份伪冒攻击,Enclave需要对和自己交互的数据用户进行身份认证。为此,每个数据用户下向CA申请数字证书。CA签发的证书中,包含用户的身份信息,例如:用户ID等。数据用户可通过CA中含有的CA公钥对所收到的证书进行真实性验证。当用户和Enclave进行安全通信时,会向Enclave展示CA签发的证书。Enclave凭借数字证书完成对数据用户的信任建立。

4.2 PBAA-SGX构造方案

由于Intel SGX的引入,数据共享的可信基发生了改变。因此,利用SGX提供的可信计算能力,在PBAA方案[10]基础之上,构建PBAA-SGX方案,在实现细粒度的访问控制同时,将计算复杂度开销控制在合理范围之内。

4.2.1 系统设置阶段

原版PBAA要求通过CA执行Setup算法。由于SGX Enclave的可信性,PBAA-SGX在设计,通过管理服务器的Enclave部分,执行Setup算法。因此,主密钥MSK可以在Enclave中以明文形式存在。当需要持久化存储时,可以通过SGX数据密封技术,在非可信存储载体上进行存储。Setup算法(PK,MSK)←PBAA_SGX_Setup(1l,N)具体执行过程和PBAA一致:假设和T是两个素数阶p上的有限循环群,g是群的生成元,如果存在一个有效的双线性映射e:×T,此映射要求对于所有的u∈,v∈以及a,b∈p都有e(ua,vb)=e(u,v)ab,以及e(g,g)≠1。

管理服务器Enclave部分,首先根据给定安全参数l和一个密文的最大共享人数N,生成双线性映射参数(p,g,,T,e),然后随机选择α∈p,μ,w,u,h,v∈,然后计算μ1=μα以及g1=gα,g2=gα2,…,gN=gαN;w1=wα,w2=wα2,…,wN=wαN;v1=vα,v2=vα2,…,vN=vαN。除此之外,管理服务器选取两个公开Hash函数H:{0,1}→p和F:T→,然后生成系统密钥PK=(p,g,g1,…,gN,w,w1,…,wN,v,v,…,vN),以及主密钥MSK=(μ,α)。

最大共享人数N是一个根据实际业务需求事先合理设定的系统参数,其选取应尽量避免出现群成员动态管理中(例如:不断增添新的共享成员)实际需要共享人数大于N的情况。如果共享人数超过了预设最大共享人数,则系统应当重新执行Setup,Register,Encrypt等一系列算法。对于以PBAA为代表的传统方案,设定较大的N值会导致各项操作(例如添加新的成员)的时间复杂度的大幅提升(参见节5.2仿真实验分析部分的图3~图8)。由于所述方案在群成员管理方面时间复杂度的优势,即使设置较大的N值,相较于原始PBAA方案,本方案动态群组成员访问控制管理时间复杂度依然处于较低水平,因此能更好地应对密态数据群组共享中群成员的动态变化。

图3 系统设置阶段的时间开销

图4 加密密钥生成阶段的时间开销

图5 委托密钥生成阶段的时间开销

图6 重加密密文生成阶段的时间开销

图7 原始密文解密阶段的时间开销

图8 重加密密文解密阶段的时间开销

4.2.2 用户注册阶段

PBAA-SGX在SGX Enclave中执行用户PBAA_SGX_Register算法。其过程与PBAA保持一致是,使用给定的用户身份ID生成用户私钥SKIDμ1/α+H(ID)。SGX可以通过数据密封技术,持久化保存用户私钥SKID。

4.2.3 加密密钥生成阶段

PBAA-SGX与原版PBAA方案最大不同之处在于,PBAA方案仅能使用系统公钥PK,而PBAA-SGX可以同时使用PK和MSK。利用主密钥,算法CT←PBAA_SGX_Encrpty(PK,MSK,M,S,L)的计算复杂度可以得到极大简化。

给定待分享数据用户身份集合S以及描述数据特征的条件集合L,管理服务器首先生成一个用于加密数据的秘密值M∈T,生成随机数s∈p,并计算:

(1)

C4,j=grj,C5,j=(uH(Lj)h)rj(Cw)-s,

(2)

g∏IDi∈S(α+H(IDi))=(gan)(gan-1)ε1(gan-2)ε2…(ga)εn-1,

(3)

此外,为减少用户群成员关系变动(例如:群成员增加,群成员删除等操作)的计算开销,可以对Cg,Cv,Cw进行持久化存储(参见节4.3.2和4.3.3)。这些结构可以完全通过系统公开参数计算而言。

4.2.4 委托密钥生成与重加密阶段

PBAA-SGX对委托密钥生成算法DKID→S′|←PBAA_SGX_DKGen(PK,MSK,SKID,S′,)进行了计算复杂度优化。由于管理服务器Enclave创建了用户SKID且Enclave中的代码都是可信的,假设只有当执行委托密钥生成的时候,管理服务器Enclave可以访问密封态SKID,因此用户可以创建访问控制策略,委托管理服务器执行委托密钥生成操作。具体操作流程和PBAA方案类似。由于PBAA_SGX_DKGen可以访问MSK,与节4.2.3中分析类似,PBAA_SGX_DKGen的计算复杂度可以得到简化。

PBAA-SGX中重加密操作CT′/⊥←PBAA_SGX_ReEnc(PK,MSK,CT,S,L,DKID→S′|),因含有结构因此其计算过程可以通过直接访问MSK得以简化。其余计算,与PBAA方案保持一致,此处不予赘述。

4.2.5 原始密文与重加密密文解密阶段

PBAA-SGX算法在解密算法方面(包括原始密文和重加密密文的解密),其操作流程与原版PBAA一致。因为其计算流程无法通过SGX的引入得以简化。由于其计算复杂度大致为O(|S|2),因此可以通过引入子群划分的思想(分治思想),对原始用户集合进行再分组,降低解密算法的复杂度。具体内容参见节4.3。

4.3 基于子群划分的管理

尽管PBAA-SGX对群组成员动态管理方面做了优化,但当共享用户集合规模庞大且用户成员频繁变动时,在访问控制管理方面仍然存在难以承受的计算开销。为解决这一问题,提出了基于子群划分的群成员层次化管理机制。基本出发点是,PBAA-SGX中解密操作的执行时间和用户群规模有关。如果将用户群近一步分成子群,则有望降低解密操作的复杂度。每个子群通过子群广播密钥bk对群密钥Sk进行加密,以便处于同一群但在不同子群的成员可以通过Sk进行安全可靠的通信。

子群划分机制其核心思想是,首先将整个用户集合,按照某种子群划分策略,划分成一系列子群。管理服务器利用PBAA-SGX中的PBAA_SGX_Encrpty算法,针对每个子群p,生成子群广播密钥bk,以及密文ck。值得指出的是,子群划分在管理服务器中的Enclave中执行。因此,管理服务器无法获取Sk以及广播密钥bk。当群组成员发生变动时,管理服务器在更新完群成员信息之后,只需要针对发生具体变动的子群更新群组管理数据,并对元数据进行更新(参见图1)。用户端通过监听子群元数据变动事件,即可及时获取群访问控制信息。

子群划分策略对访问控制性能有一定的影响。较小的用户子群可以降低用户端的授权密钥延时,但有可能增加管理服务器端的群组变更操作数量。可以考虑的方案有:按照群组成员被移出群组的概率进行排布。本方案采用最简单的等数量划分作为子群划分策略。最优子群划分策略将作为后续研究工作的一个研究点。基于子群划分的管理机制,主要由用户子群创建、用户群成员添加、用户群成员删除等算法构成:

4.3.1 用户子群创建

子群创建的流程如算法1所示。管理服务器依据指定的子群划分策略对用户群做群组划分,随后针对用户集合S生成群密钥Sk。算法中步骤③~⑥,由管理服务器中的Enclave部分执行。遍历用户子群集合,针对每个子群p调用PBAA_SGX_Encrypt算法,生成子群公有密钥cp,bp。其中bp用作对称加密算法(如AES算法),对群密钥Sk进行加密,并返回密文yp。数据用户DU可以通过解密cp得到bp。作为密态数据的访问控制元数据,被公开存储于CSP平台上。算法1步骤⑥调用SGX的数据密封机制,对群密钥Sk进行持久化存储。

算法1用户集合子群创建。

输入:用户集合S={DU1,…,DUn},子群划分策略Policy

输出:用户集合公有访问密钥,访问控制元数据

② 生成用户集合S公有访问密钥:Sk←RandomKey()

③ forp∈do

④ (bp,cp)←sgx_pbaa_encrypt(PK,MSK,L,p)

⑤yp←sgx_aes(sgx_sha(bp),Sk)

⑥ sealed_Sk←sgx_seal(Sk)

⑦ Store:(1) sealed_Sk;(2) ∀p∈P:〈∀u∈p,yp,cp〉

4.3.2 用户群成员添加

当和大量用户共享密文数据时,经常会有添加新用户群成员至用户集合中的操作。为用户群添加新成员的更新流程如算法2所示:以用户群增加单一用户DUnew为例,首先要根据子群划分策略,为待添加用户选取最合适的子群。如果此子群不存在,则执行算法1中子群创建流程。如果发现目标子群,则需要将用户添加至此群。为了保障新入群用户可以访问过去数据,不对群里面实施更新操作。算法2中的步骤④~⑥、步骤在Enclave环境中执行。需要指出的是,由于管理服务器运行PBAA_SGX时,可直接访问系统主密钥MSK,且式(1)和式(2)中的Cg,Cv以及Cw已被存储至CSP。以式(1)中C1更新为例,可C1←(C1)α+H(DUnew),计算复杂度为常数时间。

算法2用户群成员添加。

①P′←∀p∈,suchthat|p|

③pnew←{unew}

④ (bnew,cnew)←sgx_i_create_partition(MSK,pnew)

⑤ Sk←sgx_unseal(sealed_gk)

⑥ynew←sgx_aes(sgx_sha(bnew),Sk)

⑦ Store:〈unewynew,cnew〉

⑧ else

⑨pnew←RandomItem(′)

⑩pnew←pnew∪DUnew

4.3.3 用户群成员删除

从用户群中删除指定成员的具体流程如算法3所示:以删除单一用户DUnew为例,该算法核心思想在于,更新群密钥Sk,同时对于所有子群更新广播密钥bk,实现Sk的安全分发。具体过程如下:确定待删除用户所在子群后,更新群密钥Sk。对于待删除用户所在子群,得益于PBAA-SGX的设计,可以通过诸如C1←(C1)α+H(DUrem)-1操作,实现新子群广播密钥bk的常数复杂度计算(算法3步骤④)。

对于其他没有成员变更的子群,则可以实现广播密钥更新的操作(算法3步骤⑦)。由于Cg,Cv,Cw等元素已经被存储起来,只需要在执行PBAA_SGX_Encrpty操作时,更新式(1)~(3)所需的随机数即可。伪代码算法3步骤③~⑨在Enclave中执行。

算法3用户群成员删除。

①prem←p∈,suchthat DUrem∈p

②prem←prem{DUrem

③ Sk←RandomKey()

④ (brem,crem)←sgx_remove_user(MSK,prem,DUrem)

⑤yrem←sgx_aes(sgx_sha(brem),Sk)

⑥ forp∈premdo

⑦ (bp,cp)←sgx_rekey_partition(p)

⑧yp←sgx_aes(sgx_sha(bp),Sk)

⑨ sealed_Sk←sgx_seal(Sk)

⑩ Update:(1)〈∀ui∈prem,yrem,crem〉

5 性能分析

5.1 理论分析

5.1.1 PBAA-SGX的计算复杂度分析

和原始PBAA方案相比,PBAA-SGX通过SGX技术以及子群划分机制的引入,各阶段操作的复杂度均有明显降低。理论分析结果如表 1所示,表中S和|S|表示用户集合以及用户数量,S′和|S′|代表能解密重加密数据的用户集合以及对应的用户数量,p和|p|分别为用户群划分后的子群集合以及其中子群的用户数量。

表1 PBAA-SGX与PBAA各操作计算复杂度比较

原版 PBAA 在系统设置方面,其计算复杂度和用户群数量有关,即O(|S|)。PBAA-SGX 针对各个子群分别执行Setup算法,计算复杂度可视为O(|p|)。两种机制在用户注册阶段复杂度一致,均为常数级复杂度。对于加密阶段,原始 PBAA 方案需要完成大量类似于式(3)中Cg结构的计算,由于涉及多项式展开操作,因此计算复杂度为O(|S|2)。PBAA-SGX方案在管理服务器(参见图1)的SGX Enclave中来执行加密操作。主密钥MSK、用户注册时获取的SKID在Enclave中均以明文的方式存在。因此,PBAA-SGX 可以直接用式(3)左边部分完成计算,而不用通过多项式展开,因此时间复杂度降低至O(|S|)。此外,由于子群划分机制的引入,时间复杂度可进一步降低至O(|p|)。

对于解密阶段、委托密钥生成阶段以及密文重加密阶段,由于PBAA-SGX方案可以直接访问位于SGX Enclave中的敏感数据,因此和加密阶段时间复杂度分析类似,在SGX技术和子群划分机制的协同作用下,时间复杂度降低至O(|p|)。对于原始密文解密阶段和重加密密文解密阶段,原始PBAA方案和PBAA-SGX 都必须通过执行多项式展开操作来完成解密,但是PBAA-SGX通过子群划分,可以将时间复杂度从O(|S|2)降低为O(|p|2)。

5.2 仿真实验分析

笔者提出的方案,在Intel SGX SDK(version 2.5)、适配Intel SGX的PBC函数库以及GMP函数库基础上,采用C/C++语言实现。实验环境为配备有Intel(R) i7-7700k CPU和16 GB内存的Ubuntu18.04 64位操作系统。实验分析将比较在相同用户数量的情况下,当管理服务器采用原版PBAA方案,与采用基于子群划分的PBAA-SGX方案,在不同操作下的时间开销。实验部分采用简单的均分的子群划分策略,下述的p代表用户分区中的最多用户数量,主要考虑p=500和p=1 000两种情况。采用共享数据用户数量逐渐增加的方式进行实验。

5.2.1 系统设置阶段的时间开销

图3展示了PBAA方案,子群大小为1 000的PBAA-SGX方案以及子群大小为500的PBAA-SGX方案,在系统设置阶段的时间消耗对比结果。可以观察到,原始的PBAA方案在系统设置阶段需要的时间与最大共享用户数量呈线性关系。采用子群划分的PBAA-SGX方案在系统初始化阶段,其消耗时间基本保持不变,因为其计算复杂度与子群的最大容量有关,并且子群用户越少,时间消耗越少。

此外,当子群大小为1 000且最大共享用户数量在2 000以内时,PBAA-SGX在系统设置阶段时间开销明显高于原始PBAA方案,这是由于PBAA-SGX方案使用SGX技术引入了额外的开销。PBAA-SGX系统设置阶段运行在SGX Enclave中,因此创建和初始化Enclave区域需要额外时间开销。此外,系统设置执行过程,Enclave和非可信部分的交互也会导致所需计算时间的增加。但是当用户数量大于2 000时,可以观察到PBAA-SGX在此阶段所需的计算时间低于原始PBAA方案。

需要指出的是,SGX技术虽然会引入一定的开销(主要体现在系统设置,即初始化阶段,且开销增加完全可以接受),但换取了后续其他群组成员动态管理操作上时,时间复杂度大幅优化。

5.2.2 加密密钥生成阶段的计算时间开销

图4展示了原始的PBAA方案、p=1 000的PBAA-SGX方案以及p=500的PBAA-SGX方案在加密密钥生成阶段的时间消耗。由于原始PBAA方案在加密密钥生成阶段计算复杂度为O(|S|2),因此其为数据共享用户集合生成群密钥的时间随着用户数量的增加而急速增加。在PBAA-SGX方案中,在SGX技术和子群划分技术的协同作用下,此操作的时间复杂度降低至O(|p|),其中,p为子群容量。因此 PBAA-SGX方案在此阶段的计算开销,相对于原始PBAA方案要少很多,尤其是在用户数量较大时,PBAA-SGX方案的优势更加明显。

此外,系统在设置阶段需要设定较大的N值,以尽可能避免出现群成员动态管理中(例如:不断增添新的共享成员)实际需要共享人数大于N的情况。由图4可知,较大的N值会导致加密群共享密钥时间复杂度的大幅提升,而PBAA-SGX则能更好地应对这一问题。

5.2.3 委托密钥生成和重加密阶段的计算时间开销

图 5和图 6分别展示了原始PBAA方案、分区大小为1 000的PBAA-SGX方案以及分区大小为500的PBAA-SGX方案,在委托密钥生成阶段以及密文重加密阶段的时间开销。明显可以看出,在此阶段PBAA-SGX方案相较于原始的PBAA方案,在时间开销方面具有显著的优势,可以更好地支持密文数据大规模群体共享。

5.2.4 解密阶段的时间开销

图 7和图 8分别展示了原始PBAA方案、分区大小为1 000的PBAA-SGX方案以及分区大小为500的PBAA-SGX方案,对原始密文解密以及重加密密文解密的时间消耗。在此阶段原始PBAA方案与PBAA-SGX方案的时间复杂度分别为O(|S|2)和O(|p|2)。但PBAA-SGX方案中引入了子群划分机制,使得用户解密的时间复杂度,只依赖于子群大小,而不随着用户数量的增多而改变,因此在用户数量较多时,PBAA-SGX方案所消耗的时间会远远小于原始PBAA方案。

6 结束语

针对加密云数据群组访问控制这一问题,笔者基于文献中现有的PBAA方案,提出了PBAA-SGX方案。PBAA-SGX通过引入Intel SGX可信计算技术以及子群划分机制,在CSP平台上提供了轻量且灵活的群组访问控制功能。实验结果表明,相较于PBAA方案,PBAA-SGX方案计算复杂度得到了极大降低,实现以低计算开销、细粒度的加密云存储数据的访问控制。在后续研究中,拟在文中的基础上增加子群大小动态调整机制,探寻业务感知的子群划分机制,进一步提升云平台数据的动态群组访问控制的灵活性。

猜你喜欢
子群访问控制密文
一种针对格基后量子密码的能量侧信道分析框架
超聚焦子群是16阶初等交换群的块
一种支持动态更新的可排名密文搜索方案
基于模糊数学的通信网络密文信息差错恢复
子群的核平凡或正规闭包极大的有限p群
ONVIF的全新主张:一致性及最访问控制的Profile A
动态自适应访问控制模型
浅析云计算环境下等级保护访问控制测评技术
大数据平台访问控制方法的设计与实现
恰有11个极大子群的有限幂零群