APP下载

智慧健康中基于属性的访问控制方案

2019-01-07熊金波黄利智毛启铭姚岚午

计算机应用 2018年12期
关键词:密文解密密钥

李 琦,熊金波,黄利智,王 煊,毛启铭,姚岚午

(1.南京邮电大学 计算机学院、软件学院、网络空间安全学院,南京 210023; 2.南京邮电大学 物联网技术与应用协同创新中心,南京 210003; 3.福建师范大学 数学与信息学院, 福州 350117; 4.南京邮电大学 通信与信息工程学院,南京 210023)(*通信作者电子邮箱jinbo810@163.com)

0 引言

随着物联网[1]和云计算[2]等新兴技术的发展,智慧健康(Smart health, S-health)[3]为人们提供精确有效的远程健康服务。通过可穿戴或者植入式的传感器设备,便捷地采集病人的生理信息(例如血糖、血脂),通过智能设备整合成个人健康档案(Personal Health Record, PHR),经由网络上传至云服务器,以此节约智能设备的存储开销、快捷地实现PHR共享,并快速地获得医生或者其他专业人员、机构提供的健康服务。然而,PHR里包含了大量的个人隐私信息,如果处理不当,将极大地危害个人隐私,并降低病人使用S-health的积极性。

基于属性的加密(Attribute-Based Encryption, ABE)[4]作为一种新的“一对多”加密模式,在保护数据机密性的同时实现细粒度的访问控制。密文策略ABE(Ciphertext-Policy ABE, CP-ABE)[5]作为一种将访问策略与密文相关联的ABE模式,只有拥有满足该访问策略的属性的用户才能正确解密,更适合由数据拥有者来定义访问策略的场景。因此,本文采用CP-ABE算法作为设计S-health中访问控制方案的基础。

然而,在应用传统的CP-ABE算法[4-8]来实现S-health中访问控制之前,有两个问题需要注意。一方面,在传统CP-ABE算法中,用户的解密开销通常随着解密时用到的属性数量呈线性增长,对于计算能力有限的智能设备而言,极大地降低了它们的解密效率。为此,Green等[9]提出了一个解密外包方法,将ABE中复杂的解密开销外包至计算能力较强的第三方来执行,例如云服务器,第三方返回一个ElGamal类型的部分解密密文(Partial Decryption Ciphertext, PDC),用户端只需要执行一次指数运算即可恢复出明文,但是该PDC是否正确计算是不能保证的。随后,Lai等[10]提出了一个外包解密结果可以验证的方案,但是该方案需要加密一个额外的随机消息来实现解密结果验证,加密开销和密文长度都是文献[9]方案的两倍。

另一方面,当一些受限的用户不能与云服务器端直接进行交互时,需要将其解密密钥授权给第三方用户,通过第三方用户来获取解密结果。但是,若直接利用文献[5]方案中的代理方法,就会增加隐私泄露的风险,因为文献[5]方案中的授权密钥是可以直接解密密文的。

目前,基于属性的访问控制方案要么只关注如何实现高效的可验证外包解密,要么为了减少授权第三方用户代理解密时隐私泄露风险,而增加了额外的计算开销。文献[11]方案在不增加额外加密开销和密文长度的同时,实现了高效的可验证外包解密,但是没有考虑第三方代理解密的问题,而且其安全性是在一个较弱的安全模型上。文献[12]方案考虑了代理解密问题,但是增加了额外的计算开销。因此,如何设计一个解密外包可验证并可代理的基于属性的访问控制方案仍是一个值得考虑的问题。

基于文献[13]方案,利用文献[11]方案的可验证外包解密思想,本文提出了一个面向S-health的解密外包可验证并可代理的访问控制方案。该方案在合数阶群上构造,用户可以将复杂的解密开销外包至云端执行,并利用授权机构来验证云端返回的PDC的正确性。同时,利用代理方法,可以授权第三方用户来与云端和授权机构进行交互,在保证PDC正确性的同时不泄露PHR的明文信息。在标准模型下证明了方案的自适应安全性,相较文献[11]方案中较弱的安全模型而言,本文的安全模型在公开系统参数之前无需声明要挑战的访问策略。

1 预备知识

1.1 双线性映射(合数阶)

定义1[13]令G和G1为2个阶为N=p1p2p3的群,其中,p1、p2、p3是3个不同的素数。定义一个可有效计算的双线性映射e:G×G→G1,当满足下面条件:

1)双线性性。对于所有的x,y∈ZN和所有的u,v∈G,有e(ux,vy)=e(u,v)xy。

2)非退化性。∃g∈G,使e(g,g)在G1中的阶为N。

1.2 线性秘密共享

定义2[13]令PP={P1,P2,…,PT}为参与方的集合,PP上的一个秘密共享方案Π被称作线性的,如果:

1)每个参与方关于秘密s的份额构成ZN上的一个向量。

2 系统描述、算法定义及安全模型

2.1 系统描述

如图1所示,系统由4个参与方组成:授权机构,云服务提供商(Cloud Service Provider, CSP),PHR拥有者,用户。

授权机构:负责设置系统参数,为用户生成基于属性的密钥,并且向用户提供外包解密结果的验证服务。

云服务提供商:负责存储加密后的PHR,并为用户提供外包解密服务。

PHR拥有者:负责整合PHR并定义访问策略加密PHR后将其上传至云服务器,PHR拥有者可以是病人、老年人,也可以是为其病人管理PHR的医疗机构。

用户:可以是医生或者医疗研究人员,每一个用户拥有一个属性集合。若其属性集合满足PHR密文中的访问策略,则可以获取明文PHR并为其拥有者提供相关的医疗服务。

本文假定:授权机构是可信的;CSP是诚实但好奇的,即CSP诚实地提供存储和外包解密服务,但是试图从中获取PHR的明文信息;用户是恶意的,他们可能共谋去获取他们中任何一个都没有被授权访问的PHR。

图1 S-health系统框架Fig.1 System architecture of S-health

2.2 算法定义

本文方案由如下9个多项式时间算法组成。

1)SystemSetup(λ)→(PK,MSK):输入安全参数λ,输出系统公开参数PK和主密钥MSK。

2)UserSetup(PK)→(UPK,UDK):输入PK,输出用户公开参数UPK和用户解密密钥UDK。

3)Encrypt(AC,PK)→(CT,SEK):输入访问策略AC与PK,输出密文CT与对称加密密钥SEK。

4)KeyGen(S,PK,UPK,MSK)→(SK):输入用户的属性集合S、PK、UPK和MSK,输出用户属性密钥SK。

5)TKKeyGen(SK,PK,UPK)→(TK):输入SK、PK、UPK,输出用户转化密钥TK。

6)Transform(TK,CT)→(PDC):输入TK与CT,若TK中的属性集合满足CT中的访问策略AC,则输出部分解密密文PDC。

7)Decrypt(PDC,UDK)→(SEK/⊥):输入PDC及UDK,若Verify(PK,MSK,PDC,CT)→1,则输出SEK;否则,输出⊥。

8)Verify(PK,MSK,PDC,CT)→(1,0):输入PK、MSK、PDC和CT,验证PDC是否正确,若是,则输出1;否则,输出0。

9)Delegate(SK,PK)→(SK′):输入SK和PK,输出代理密钥SK′。

2.3 安全模型

通过攻击者AD与挑战者B之间的游戏来定义本文方案的CPA(Chosen Plaintext Attack)安全模型。

系统建立B执行SystemSetup算法,并将系统公开参数PK发送给AD。

阶段1B初始化一个空集合H和空表L。AD询问任意的用户属性集合(S1,S2,…,Sq)如下:

1)用户密钥查询。一旦收到属性集合Si,B首先运行UserSetup得到(UPKi,UDKi),再运行KeyGen得到用户属性密钥SKi,最后,设置H=H∪{Si}并返回SKi给AD。

2)用户转化密钥查询。当收到关于Si的转换密钥查询,B首先在表L中搜索(Si,SKi,TKi,UDKi),若存在,则返回TKi给AD;否则,运行KeyGen与TKKeyGen,返回TKi给AD并存储(Si,SKi,TKi,UDKi)至L。

挑战AD选择一个访问策略AC*,并询问挑战密文。B运行Encrypt得到(CT*,SEK*)并随机选择b∈{0,1},若b=0,则返回(CT*,SEK*)给AD;否则,返回(CT*,R*),其中R*是从密钥空间中随机选择的元素。注意:AC*不能是匹配阶段 1中属性集合的访问策略。

阶段2 与阶段 1类似,AD可以询问密钥,但是不能查询满足AC*的属性集合。

猜测AD输出对b的猜测b′。若b′=b,则AD获胜。令AD赢得该游戏的优势为|Pr[b=b′]-1/2|。

定义3 一个外包解密可验证并可代理的CP-ABE方案是CPA安全的,当且仅当在上述的游戏中,任何多项式时间攻击者的优势是可以忽略的。

2.4 可验证性安全模型

与2.3节安全模型类似,通过攻击者AD与挑战者B之间的游戏来定义可验证性安全模型。

系统建立 与CPA安全模型一致。

阶段1 与CPA安全模型一致。

挑战AD提交一个访问策略AC*。B运行Encrypt得到(CT*,SEK*)并返回CT*给AD。

阶段2 与阶段 1类似,AD可以询问密钥,但是AD不能查询满足AC*的属性集合。

输出AD输出一个属性集合S*,以及两个部分解密密文PDC1*和PDC2*。若PDC1*和PDC2*能够通过Verify算法,并且满足Decrypt(PDC1*,UDK)≠Decrypt(PDC2*,UDK),则AD赢得该游戏。

定义4 一个外包解密可验证并可代理的CP-ABE方案是可验证性安全的,当且仅当在上述的游戏中,任何多项式时间攻击者AD的优势是可以忽略的。

3 方案设计

3.1 系统建立

授权机构运行SystemSetup算法,输入安全参数λ,得到(N,p1,p2,p3,G,G1,e),其中:G与G1为2个阶为N的群,N为3个不同的素数p1、p2、p3的乘积,e是一个G×G→G1的双线性映射。从Gp1中随机选择一个元素g,从Gp3中选择一个生成元X3。授权机构管理一个属性域U,对于每个属性i∈U,从ZN中选择一个随机数ti,并计算Ti=gti,另外随机选择α,a∈ZN。发布授权机构的公开参数PK=(N,g,ga,e(g,g)α,{Ti}i∈U)。主密钥MSK为MSK=(α,X3)。

3.2 PHR上传

与方案[6]类似,本方案也利用KEM(Key Encapsulation Mechanism)机制,即PHR文件会被一个SEK(SymmEtric Key)加密后得到ENPHR,而SEK会被一个访问策略加密。具体过程如下:

输出密文CT=(AC,C0,{Cx,Dx}x∈[l])并设置SEK为e(g,g)αs。

收到CT与加密的PHR文件后,CSP为文件定义一个ID并以图2的形式存在云端。

图2 加密的PHR存储形式

Fig. 2 Storage form of encrypted PHR

3.3 用户注册与密钥生成

用户运行UserSetup算法,随机选择z∈ZN,计算UPK=gz,并设置UDK=z。

3.4 PHR访问

为了减轻解密开销,用户首先将私钥SK变成转换密钥,其次大部分的解密开销外包至CSP,再与授权机构交互来验证返回的PDC的正确性,若正确,则通过一次指数运算即可解密。具体流程如下:

1)TKKeyGen:因为之前基于UPK来设置SK,所以这里令TK=SK。

e(g,g)αzs

3)Verify:授权机构验证等式PDC=e(C0,(UPK)α)是否成立,若是,则输出1表示PDC是正确的;否则,输出0。

4)Decrypt:用户计算SEK=(PDC)(UDK)-1=e(g,g)αs,并解密ENPHR。

3.5 第三方用户委托

当用户不能直接与CSP及授权机构交互时,可以通过下面的方式委托第三方用户来获取并验证外包解密结果。

4 安全性证明

4.1 CPA安全证明

与文献[14]类似,本文的安全性规约至方案[13]的安全性,将文献[13]的方案与本文的方案分别表示为∑CP和∑VDCP。

引理1 若子群判断假设1、2、3[13]成立,则方案∑CP在标准模型下是适应性安全的。

具体的证明可以参考文献 [13]的方案。

下面给出方案∑VDCP的安全性证明。

引理2 若方案∑CP是安全的,则本文的方案∑VDCP在2.3节给出的安全模型下也是安全的。

证明 假设存在一个多项式时间攻击者AD以优势ADVAD∑VDCP攻破本文的方案,则可以构造一个多项式时间仿真者B以相等的优势ADVB∑CP攻破∑CP。

系统建立 ∑CP发送公开参数PKCP=(N,g,ga,e(g,g)α,{Ti}i∈U)给B。B发送PKVDCP=PKCP给AD。

阶段1B初始化一个空集合H和空表L。AD询问任意的用户属性集合(S1,S2,…,Sq)如下:

2)用户转化密钥查询。当收到Sj的转换密钥查询,B首先在表L中搜索(Sj,SKj,TKj,UDKj),若存在,则返回TKj给AD;否则,B设置SKj如1)所示,并运行UserSetup与TKKeyGen,返回TKi并存储(Sj,SKj,TKj,UDKj)至L。

阶段2 与阶段 1类似,AD可以询问密钥,但是不能查询满足AC*的属性集合。

猜测AD输出猜测u′∈{0,1}。若u′=1,意味着SEK*在AD看来是一个随机密钥,B输出它的猜测1-u;若u′=0,意味着在AD看来SEK*是一个合法密钥,B输出它的猜测u。

因为游戏中的参数与正常方案中参数的分布是一致的,若AD可以攻破本文方案∑VDCP,则B可以攻破方案∑CP。

定理1 若假设1、2、3[13]成立,则本文的方案在标准模型下是适应性CPA安全的。

证明 由引理2可得若∑CP是CPA安全的,则本文的方案也是CPA安全的。由引理1可得,若假设1、2、3成立,则∑CP在标准模型下是适应性CPA安全的。

综上所述,定理1成立。

4.2 可验证性安全证明

定理2 对于所有的多项式时间攻击者AD而言,本文的方案在第2.4节定义的安全模型中是可验证性安全的。

证明 假设存在一个多项式时间攻击者AD攻破本文方案的可验证性,则可以构造一个多项式时间仿真者B与AD交互如下。

系统建立 与CPA安全证明中类似,不同的是B可以自行设置PK。

阶段1 与CPA安全证明中类似,不同的是B可以自行生成SK等,因为它知道MSK。

挑战AD提交一个访问策略AC*。B运行Encrypt得到(CT*,SEK*)并返回CT*给AD。

阶段2 与阶段 1类似,AD可以询问密钥,但是不能查询满足AC*的属性集合。

输出AD输出一个属性集合S*以及关于CT*的两个部分解密密文PDC1*和PDC2*。AD赢得该游戏若PDC1*和PDC2*满足:

1)Verify(PK,MSK,PDC1*,CT*)→1;

2)Verify(PK,MSK,PDC2*,CT*)→1;

3)Decrypt(PDC1*,UDK)≠Decrypt(PDC2*,UDK)。

条件1)意味着PDC1*=e(C0,(UPK)α),条件2)意味着PDC2*=e(C0,(UPK)α)。从条件1)和2)可知PDC1*=PDC2*。然而,条件3)意味着PDC1*≠PDC2*。所以,AD只能以至多可以忽略的优势赢得该游戏。

5 性能分析

相关ABE方案[9-13]与本文方案的特征比较如表1所示。从表1可以看出,本文提出的方案是同时实现自适应安全性、可验证外包解密及代理功能的。

统计自适应安全方案[13]与本文方案中SystemSetup、Encrypt、KeyGen、Decrypt以及Verify算法用到指数运算和双线性配对的次数,结果如表2所示。令|U|、|W|、|S|、|I|分别表示系统属性集合、访问策略、用户属性集合、解密时用到的属性集合中属性个数;令E和E1分别表示G与G1群中一次指数运算;令P表示一次双线性配对。

表1 不同方案的特征比较Tab. 1 Characteristic comparison of different schemes

表2 不同方案的性能比较Tab. 2 Performance comparison of different schemes

从表2可以看出,本文方案的SystemSetup、Encrypt及KeyGen算法和方案[13]中的算法计算开销是相同的。本文方案用户端的解密开销仅需要执行G1群中一次指数运算,而文献[13]方案中的用户解密开销随用到属性的个数呈线性增长。另外,为了执行验证操作,本文方案也只需要执行一次G群中指数运算和一次双线性配对运算,与属性个数无关。

6 结语

本文提出了一个面向S-health的基于属性的访问控制方案,并在标准模型下证明了其自适应安全性。通过将复杂的解密开销外包至云服务提供商,可以验证其返回的部分解密密文的正确性,用户仅需要执行一次指数运算即可恢复明文PHR。同时,为了验证该部分解密密文,授权机构也仅需要执行一次指数运算和一次双线性配对运算。性能分析表明,本文的方案在实现高效解密和验证的同时,并没有给其他步骤增加额外的开销。下一步的工作将以提出的方案作基础,研究如何在素数阶群构造高效的自适应性安全的方案。

猜你喜欢

密文解密密钥
一种支持动态更新的可排名密文搜索方案
幻中邂逅之金色密钥
幻中邂逅之金色密钥
群智感知网络环境下的一种高效安全数据聚合方案*
基于模糊数学的通信网络密文信息差错恢复
炫词解密
支持多跳的多策略属性基全同态短密文加密方案
解密“一包三改”
密码系统中密钥的状态与保护*
炫词解密