Fine-Grained Policy-Hiding and Traceable Decentralized Access Control Scheme in mHealth
-
摘要:
基于属性基加密的访问控制协议在个人健康档案共享中发挥着越来越重要的作用. 但传统的基于密文策略属性基加密的访问控制方案存在着些许问题. 首先,中心化的属性授权机构的抗风险能力低. 其次,随密文发送未隐藏的访问策略可能会泄露患者的隐私. 此外,传统方案难以追踪恶意泄露密钥的用户. 为解决上述问题,提出一种适用于mHealth中细粒度策略隐藏和可追踪去中心访问控制方案. 实现了去中心化的属性授权机构. 属性由属性名称和属性值2部分构成,在加密阶段属性值隐藏在密文中,只对外公开通用的属性名称. 当密钥遭到恶意泄露时,监管机构利用身份映射表可以追踪到恶意的用户. 经过实验模拟和对比分析,所提方案在安全性方面和性能上适用于实际的mHealth环境.
Abstract:With the rapid development of Internet technology, the emergence of mobile health (mHealth) is expected to improve the quality of medical care. However, data security and user privacy issues in the mHealth field have not been fully resolved. The access control protocol based on ciphertext-policy attribute-based encryption (CP-ABE) is a promising technique for the sharing of personal health records (PHRs). However, direct adoption of the traditional CP-ABE in mHealth causes many problems. Firstly, centralized attribute authority has low ability to resist risks. Secondly, the access policies are in cleartext and leak the patient’s privacy in the encrypted PHRs. Finally, it is difficult for the traditional CP-ABE scheme to track down the user who intentionally discloses the private key. Therefore, to solve these problems, we propose a fine-grained policy-hiding and traceable decentralized access control in mHealth. This scheme implements a decentralized attribute authority mechanism. Each attribute is expressed by an attribute name and an attribute value. In the encryption phase, the attribute value is hidden in ciphertext and only generic attribute name is exposed. When the private key is maliciously leaked, the regulator can use the identity mapping table to trace the malicious user. Through experimental simulation and comparative analysis, our scheme is suitable for the actual mHealth environment in terms of security and performance.
-
Keywords:
- attribute-based encryption (ABE) /
- blockchain /
- access control /
- policy hiding /
- traceability /
- decentralization
-
互联网信息技术的飞速发展给移动健康(mobile healthcare, mHealth)领域带来了深刻的变革. 个人健康档案(personal health records, PHR)的大量增长,使mHealth进入大数据时代. 越来越多的机构和企业将PHR存储在第三方服务器上,这大大降低了本地存储和管理的成本. 但PHR涉及到患者的大量敏感信息,如血糖值、脉搏率等,一旦将其存储在云端,传统的安全机制将无法提供对PHR的隐私保护和访问控制.
文献[1-5]提出了针对云端PHR的访问控制方案,一种名为属性基加密(attribute-based encryption,ABE)的密码学原语因其可以同时实现细粒度访问控制和数据秘密共享[6]而受到研究人员的广泛关注. ABE协议分为基于密钥策略的属性基加密 (key-policy attribute-based encryption,KP-ABE)和基于密文策略的属性基加密 (ciphertext-policy attribute-based encryption, CP-ABE)[7]. 在CP-ABE中,PHR所有者可以在加密阶段指定访问策略,只有满足访问策略的用户才可以正确地解出密文,在mHealth领域被广泛研究.
在传统的CP-ABE方案中,属性密钥不包含用户和授权机构的具体信息,同一个属性可以被分发给多个用户. 因此很难对恶意用户和拥有相同属性的普通用户进行区分. 如果有恶意用户合谋共享其密钥,将会对系统的安全构成很大的威胁. 此外,中心化属性授权机构可以生成任意属性集的密钥,授权机构是否腐败会对整个系统的安全性造成严重的影响. 最近热门的区块链技术[8-9]作为分布式存储系统,创新性地将P2P网络技术、密码学和分布式共识技术相结合,存储在区块链上的数据不能被篡改,保证了数据的完整性和不可否认性. 因此当区块链上的密钥被滥用时,审计密钥的所有权也更为可信,为解决传统CP-ABE方案的密钥可追溯和去中心化问题提供了新的思路,文献[10-13]对此做了相关的研究.
当数据存储在分布式网络中,访问结构通常会泄露敏感信息. CP-ABE中的访问结构是用属性构成的策略表达式,它不加隐藏地跟随密文一起发送. 任何人无论是否获得授权,都可以获得访问策略的具体细节. 对于mHealth来说,访问策略会泄露患者的一些隐私信息. 举例来说,如果一个患者将自己的访问策略设置为“(职工号:12345 OR (机构:A市综合性医院 AND 职位:艾滋病专家))”,那么获得该密文的任意用户都可以推测出该患者很可能是艾滋病感染者. 这对于大部分患者而言是难以接受的,需要对访问策略进行隐藏. 目前的策略隐藏CP-ABE主要分为完全策略隐藏CP-ABE[14]和部分策略隐藏CP-ABE[15-17]. 在完全策略隐藏CP-ABE中,方案不会显示任何关于访问策略的属性信息,只能通过阈值策略和属性隐藏的内积谓词加密(inner-product predicate encryption, IPE)间接构建,但阈值策略在表达性方面远远不如线性秘密共享方案(linear secret sharing scheme, LSSS). 部分策略隐藏CP-ABE是将访问策略中涉及的敏感属性值隐藏起来,而将对应的通用属性名称跟随密文一起公开,具有良好的表达性.
基于部分策略隐藏CP-ABE的访问控制方案在mHealth中被大量研究[15-17] . 文献[15]提出了一种部分策略隐藏的CP-ABE方案,其中每个属性由一个属性名称和一个属性值表示,访问策略只包含通用属性名称,而对应的敏感属性值被隐藏在密文中. 文献[16]提出的PASH方案,同时支持部分策略隐藏和大属性集. 文献[17]提出了一种大属性集、部分策略隐藏并且可追溯的mHealth访问控制方案HTAC. 然而,上述的CP-ABE方案都不能同时解决策略隐藏、可追溯性和去中心化3个主要特性. 本文创新性地提出了一种新型的mHealth中的细粒度策略隐藏和可追踪去中心化访问控制方案,通过对文献[16]的策略隐藏CP-ABE方案进行改进,本文方案具有4个特点:
1)大属性集. 本文方案对属性集的大小没有任何的限制,与此同时公共参数的大小是恒定的.
2)策略隐藏. 每个属性由属性名称和属性值表示. 在加密阶段,属性值隐藏在密文中,只有通用属性名称在访问策略中是可显示的.
3)可追踪性. 监管机构可以准确追溯非法泄露密钥的恶意用户,并且未经授权的访问是不被允许的.
4)去中心化. 引入门限秘密共享算法实现了去中心化的属性授权机构,机构的创建、属性的创建和分发由用户合作完成.
1. 预备知识
1.1 合数阶双线性映射
定义1. 合数阶双线性映射[18]. 运行群生成器G(1λ),输出元组(p1,p2,p3,p4,G,GT,e). 其中p1,p2,p3,p4是不同的素数,G和GT是阶为N=p1×p2×p3×p4的循环群. 双线性映射e:G×G→GT满足:
1)对于 \forall g,h\in \mathbb{G} ,a,b\in {\mathbb{Z}}_{N},e\left({g}^{a},{h}^{b}\right)=e{\left(g,h\right)}^{ab} ;
2) \exists \mathrm{ }g\in \mathbb{G} 使得 e\left(g,g\right) 在 {\mathbb{G} }_{T} 中阶为 N;
3)对于 \forall \mathrm{ }g,h\in \mathbb{G} , e\left(g,h\right) 在 \lambda 的多项式时间内是可计算的.
{\mathbb{G} }_{{p}_{1}},{\mathbb{G} }_{{p}_{2}},{\mathbb{G} }_{{p}_{3}},{\mathbb{G} }_{{p}_{4}} 分别是 \mathbb{G} 中阶为 {p}_{1},{p}_{2},{p}_{3},{p}_{4} 的子群,注意 \mathbb{G} ={\mathbb{G} }_{{p}_{1}}\times {\mathbb{G} }_{{p}_{2}}\times {\mathbb{G} }_{{p}_{3}}\times {\mathbb{G} }_{{p}_{4}} . 对于 \forall {g}_{i}\in {\mathbb{G} }_{{p}_{i}},{g}_{j}\in {\mathbb{G} }_{{p}_{j}}, i\ne j ,则 e\left({g}_{i},{g}_{j}\right)=1 .
1.2 访问结构
定义2. 访问结构[19]. 假设 \mathcal{U} 为一系列参与者的集合. 一个集合 {A} \subseteq {2}^{\mathcal{U}} 是单调的,当且仅当对于 \forall B\in {A},C\in {2}^{\mathcal{U}} ,如果 B\subseteq C ,则 C\in {A} . 若 {A} \subseteq {2}^{\mathcal{U}}\backslash \mathcal{\varnothing } ,则集合 {A}为一个访问结构 . 称在 {A} 中的集合为授权集合,不在 {A} 中的集合为非授权集合.
1.3 线性秘密共享方案
线性秘密共享方案最早在文献[19]中被提及. 假设 \mathcal{U} 为一系列参与者集合, \varPi 为访问结构 {A} 的一个秘密共享方案. 如果 \varPi 为 \mathcal{U} 在 {\mathbb{Z}}_{p} 上的线性秘密共享方案,则其包括一个 l 行和 n 列的矩阵 {\boldsymbol{M}} 和将 {\boldsymbol{M}} 的每一行映射到 \mathcal{U} 上对应参与者的函数 \rho . 那么 \mathit{\Pi} 包括2个算法:
1)考虑一个列向量 {\boldsymbol v}=\left(s,{r}_{2},… ,{r}_{n}\right) ,其中 s\in {\mathbb{Z}}_{p} 是要共享的秘密,而 {r}_{2},… ,{r}_{n} 为 {\mathbb{Z}}_{p} 上的随机值. 则 \boldsymbol{Mv} 是将秘密 s 共享给 \mathcal{U} 的 l 个秘密共享值,其中 \lambda_i=\left(\boldsymbol{Mv}\right)_i 是属于 \rho \left(i\right) 方的秘密共享值.
2)设 S\in \mathcal{U} 为任意的授权集合,令 I\subseteq \{\mathrm{1,2},… ,l\} 且 I=\left\{i\right|\rho \left(i\right)\in S\} . 则根据高斯消元法,可以计算出常数集 \{{\omega }_{i}\in {\mathbb{Z}}_{p}{\}}_{i\in I} 使得 \displaystyle\sum\limits_{i\in I}^{ }\omega_i\boldsymbol{M}_i=\left(1,0,\dots,0\right) . 由此可以重构出共享的秘密s =\displaystyle \sum\limits_{i \in I} {{\omega _i}{\lambda _i}} .
本文方案将在 {\mathbb{Z}}_{N} 上使用LSSS矩阵,其中 N 是合数. 假设用户的属性集 \mathcal{S}=\{{s}_{1},{s}_{2},… ,{s}_{n}\} ,其中 {s}_{i}\in {\mathbb{Z}}_{N} 表示属性 i . 在部分策略隐藏CP-ABE中,每个属性包括属性名称和属性值2部分,每个属性名称有多个值,将其表示为 \mathcal{S}=\left({I}_{S},S\right) ,其中 {I}_{S}\subseteq {\mathbb{Z}}_{N} 表示属性名称索引,对应的属性值集合是 S=\{{s}_{i}{\}}_{i\in {I}_{S}} . 用 \ A=\left(\boldsymbol{M},\rho,\mathcal{T}\right) 表示一个特定的访问控制结构,其中 {\boldsymbol{M}} 和 \rho 的定义不变, \mathcal{T} 可以被解析为 \left({t}_{\rho \left(1\right)},… ,{t}_{\rho \left(l\right)}\right) ,其中 {t}_{\rho \left(i\right)} 指由 \left(\boldsymbol{M},\rho\right) 表示的属性 \rho \left(i\right) 的对应属性值. 如果说用户的属性集 \mathcal{S} 满足 {A} ,当且仅当存在 I\subseteq \{\mathrm{1,2},… ,l\} 和常数集 \{{\omega }_{i}{\}}_{i\in I} ,使得 \displaystyle\sum\limits_{i\in I}^{ }\omega_i\boldsymbol{M}_i=\left(1,0,\dots,0\right) 且 {s}_{\rho \left(i\right)}={t}_{\rho \left(i\right)},\forall i\in I .
1.4 \left(t,n\right) 门限秘密共享方案
(t,n) 门限秘密共享方案由Shamir[20]和Blakley[21]同时提出,将需共享的秘密分为 n 份并分配给不同的用户. n 个用户各自持有共享秘密的一部分,当且仅当 t 个及以上的用户联合起来才可以重构出共享秘密. 为了满足属性密码学和区块链的去中心特性,本文将使用Pedersen[22]提出的无需可信第三方的门限秘密共享算法.
\mathcal{U} 为一系列参与者集合 \left({U}_{1},{U}_{2},… ,{U}_{n}\right) ,每个用户 {U}_{i} 分别生成一个唯一标识符 GI{D}_{i} ,用户间的标识符互不冲突. 用户分别选取一个随机值 {x}_{i} ,共享秘密值为x = \displaystyle\sum\limits_{i = 1}^n {{x_i}} . 再随机生成一个阶为 t-1 的多项式 {f}_{i}\left(z\right) = {f}_{i,0}+ {f}_{i,1}z+\cdots +{f}_{i,t-1}{z}^{t-1} ,令 {f}_{i}\left(0\right)={x}_{i} ,计算 shar{e}_{ij}={f}_{i}\left(GI{D}_{j}\right) \left(j\in \left[1,n\right]\right) . 用户 {U}_{i} 将 shar{e}_{ij} 共享给用户 {U}_{j} 同时保存自己的秘密共享值 share_{ii} . 用户 {U}_{i} 收到剩余 n-1 个 shar{e}_{ji} 后计算自己的秘密值shar{e_i} = \displaystyle\sum\limits_{j = 1}^n {shar{e_{ji}}} = \displaystyle\sum\limits_{j = 1}^n {{f_j}\left( {GI{D_i}} \right)} . 共享秘密值 x 可以被 n 个参与者中的任意 t 个重构,假设存在一个函数F\left( x \right) = \displaystyle\sum\limits_{j = 1}^n {{f_j}\left( x \right)} ,每个用户的秘密值shar{e_i} = \displaystyle\sum\limits_{j = 1}^n {shar{e_{ji}}} = \displaystyle\sum\limits_{j = 1}^n {{f_j}\left( {GI{D_i}} \right)} = F\left( {GI{D_i}} \right). 最后可以通过拉格朗日插值定理计算出 F\left(0\right)=x .
1.5 部分策略隐藏CP-ABE
在部分策略隐藏CP-ABE中,不完全的访问策略使得用户不能直接判断出自己是否具有满足访问策略的属性集. 因此在完全解密之前需要测试属性集是否满足密文的访问策略. 在现有的策略隐藏CP-ABE方案中,用户通常通过多次重复解密来决定其属性是否满足密文中的访问策略,直到找到满足访问策略的属性集或执行完所有可能的测试. 将Zhang等人[16]提出的CP-ABE方案描述为:
1) S etup\left({1}^{\lambda }\right) . 输入安全参数 \lambda ,运行群生成器 \mathcal{G}\left(\lambda \right) 得到 \left(N,{p}_{1},{p}_{2},{p}_{3},{p}_{4},\mathbb{G} ,{\mathbb{G} }_{T},e\right) . 设置属性集 U={\mathbb{Z}}_{N} ,然后随机选择 \alpha ,a\in {\mathbb{Z}}_{N},g,h\in {\mathbb{G} }_{{p}_{1}},{X}_{3}\in {\mathbb{G} }_{{p}_{3}},Z,{X}_{4}\in {\mathbb{G} }_{{p}_{4}} ,计算 Y=e{\left(g,g\right)}^{\mathrm{\alpha }},H=hZ . 系统公共参数 PK=(N,g,{g}^{a},Y,H, {X}_{4}) ,主私钥为 MSK=\left(\alpha ,h,{X}_{3}\right) .
2) KeyGen(PK,MSK,\mathcal{S}) . 令属性集为 \mathcal{S}=\left({\mathcal{J}}_{\mathcal{S}},S\right) ,其中 {\mathcal{J}}_{\mathcal{S}}\subseteq {\mathbb{Z}}_{N} 且 S=\{{s}_{i}{\}}_{i\in {\mathcal{J}}_{\mathcal{S}}} . 对于 i\in {\mathcal{J}}_{\mathcal{S}} ,随机选择 t\in {\mathbb{Z}}_{N}, R,{R}',{R}_{i}\in {\mathbb{G} }_{{p}_{3}} ,输出密钥 S K_{\mathcal{S}}=\left(\mathcal{S},K,{K}',\{{K}_{i}{\}}_{i\in {\mathcal{J}}_{\mathcal{S}}}\right) ,其中
K={g}^{\mathrm{\alpha }}{g}^{at}R,{K}'={g}^{t}{R}',{K}_{i}={\left({g}^{{s}_{i}}h\right)}^{t}{R}_{i} . 3) Encrypt\left(PK,m,A\right) .m\in {\mathbb{G} }_{T} 且 \ A=\left(\boldsymbol{M},\rho,\mathcal{T}\right) ,其中 {\boldsymbol{M}} 是一个 l\times n 的矩阵, \rho 是一个将 M 的每一行 \boldsymbol{M}_x 映射到对应属性名的函数且 \mathcal{T}=\left({t}_{\rho \left(1\right)},{t}_{\rho \left(2\right)},… ,{t}_{\rho \left(l\right)}\right)\in {\mathbb{Z}}_{N}^{l} . 加密算法随机选择2个向量 {\boldsymbol v},{{\boldsymbol v}}'\in {\mathbb{Z}}_{N}^{n} ,其中 {\boldsymbol v}=\left(s,{v}_{2},… , {v}_{n}\right),{{\boldsymbol v}'}=\left({s}',{v}_{2}',… ,{v}_{n}'\right) . 对于 x\in \left[1,l\right] ,随机选择 {r}_{x}\in {\mathbb{Z}}_{N}^{}, {Z}_{1}^{},{Z}_{1,x}^{},{Z}_{2,x}^{},Z'_{2,x}\in {\mathbb{G} }_{{p}_{4}} ^{},计算密文
C{T}_{A}=\left(\left({\boldsymbol M},\rho \right),{{\tilde C}}_{1},{\hat C}_{1},{\tilde{C}}_{2},{\hat{C}}_{2},\{{{C}_{1,x},C}_{2,x},{C}_{2,x}'{\}}_{x\in \left[1,l\right]}\right), 其中
{\tilde{C}}_{1}={Y}^{{s}'},{\hat{C}}_{1}={g}^{{s}'}{Z}_{1}, \tilde{C}_2=mY^s,\hat{C}_2=g^s, C_{1,x}=g^{a\boldsymbol{M}_x\boldsymbol{v}'}\left(g^{t_{\rho\left(x\right)}}H\right)^{-s'}Z_{1,x}, C_{2,x}=g^{a\boldsymbol{M}_x\boldsymbol{v}}\left(g^{t_{\rho\left(x\right)}}H\right)^{-r_x}Z_{2,x},C_{2,x}'=g^{r_x}Z_{2,x}'. 4) Decrypt\left(PK,CT_A,SK_{\mathcal{S}}\right). 给定 CT_A 和 S{ K}_{\mathcal{S}} ,首先计算满足 \left({{\boldsymbol{M}}},\rho\right) 的最小属性集 I_{\boldsymbol{M},\rho} ,然后判断是否存在子集 \mathcal{J}\in I_{{\boldsymbol{M}},\rho} 满足 \left\{\rho \right(i\left)\right|i\in \mathcal{J}\}\subseteq {\mathcal{J}}_{\mathcal{S}} 且
{\tilde C_1} = \frac{{e( {{{\hat C}_1},K} )}}{{\prod\limits_{i \in {\mathcal{J}} }{{{\left( {e( {{C_{1,i}},{K'}} )e( {{{\hat C}_1},{K_{\rho (i)}}} )} \right)}^{{\omega _i}}}} }}, 其中向量 {\boldsymbol \omega }=({\omega }_{1},{\omega }_{2},… ,{\omega }_{l}) 使得 \displaystyle\sum\limits_{i\in\mathcal{J}}^{ }\omega_i\boldsymbol{M}_i=\left(1,0,\dots,0\right) . 如果这样的 \mathcal{J} 不存在,表明 \mathcal{S} 不满足隐藏的访问结构 {A} ,输出 \perp ;否则,计算 m=\tilde{C}_2/Y^s ,其中
{Y^s} = \frac{{e\left( {{{\hat C}_2},K} \right)}}{{\prod\limits_{i \in \mathcal{J}} {{{\left( {e\left( {{C_{2,i}},{K^\prime }} \right)e\left( {C_{2,i}^\prime ,{K_{\rho \left( i \right)}}} \right)} \right)}^{{\omega _i}}}} }}. 2. 系统模型
2.1 系统架构
图1描述了本文的系统架构,它由6个通用实体组成:属性授权机构(attribute authority,AA)、云服务提供商(cloud service provider,CSP)、个人健康档案所有者(PHR owner,PO)、个人健康档案使用者(PHR user,PU)、监管机构(regulator,RA)和去中心化应用(decentralized application,DAPP).
1)DAPP通过发布公共参数来初始化系统,并参与RA和AA的初始化.
2)AA由多个用户组成,为PU生成其属性集的属性凭证(attributes certificate, AC).
3)CSP为PO提供PHR存储服务,如有必要,也可以删除PHR.
4)PO通过各种智能设备收集和整合自己的PHR,为加密PHR定义任意访问策略并将加密后PHR上传至CSP.
5)PU访问加密的PHR以提供相应的医疗保健服务,只有在其属性满足访问策略时才能解密出PHR.
6)RA负责验证系统中所有用户的身份,为其生成相应的属性私钥,并追踪非法泄露其密钥的恶意PU.
在此系统中,AA由多个用户合作组建,是完全去中心化的,它和RA是值得信赖的. 但是CSP是诚实且好奇的,它诚实地执行指定的程序,但试图从加密的PHR中获取隐私信息. 攻击者可能是1个或1组恶意PU,他们不仅试图获得PHR中的隐私信息,还想知道隐藏的访问策略的属性值.
2.2 架构定义
1) GlobalS etup\left({1}^{\lambda }\right)\to PP. 全局系统初始化. 输入安全参数 \lambda ,然后输出系统公共参数 PP .
2) RAS etup\left(PP\right)\to RPK,RSK. RA初始化. 生成监管机构的公钥 RPK 和私钥 RSK ,并将监管机构公钥 RPK 公开上链.
3) UserS etup\left(PP,basein f o\right)\to UPK,USK. 用户初始化. 生成用户的公开密钥 UPK 和签名私钥 USK ,并将用户公钥 UPK 公开上链.
4) AAS etup\left(PP,n,t\right)\to OPK . AA初始化,多个机构成员合作生成属性授权机构的公钥 OPK 并公开上链.
5) AttrGen\left(PP,attrname,n,t\right)\to APK . AA机构属性初始化. 多个机构成员合作生成授权机构属性的公钥 APK 并公开上链.
6) UACertGen\left(PP,GID,\mathcal{S}\right)\to AC . 属性凭证申请.用户需要向属性授权机构提出申请,请求其为属性集 \mathcal{S} 颁发属性凭证 AC ,在这一过程中,为确保安全性和可靠性至少需要达到设定的阈值数量的机构成员同意方可进行后续操作.
7) KeyGen\left(PP,GID,AC,\{RS K,APK\},\mathcal{S}\right)\to \mathcal{ }S{ K}_{\{GID,\mathcal{S}\}} . 属性密钥生成. PU首先计算身份签名 \sigma 并提交给RA,验证成功后RA为其计算属性密钥 S{ K}_{\{GID,\mathcal{S}\}} ,并将签名 \sigma 和 GID 记录到身份映射表(identity table,IT)中.
8) Encrypt\left(PP,m,\{RPK,UPK,APK\}, {A}\right)\to C{T}_ {A}. 属性加密. PO定义特定的访问控制策略,将明文 m 加密后生成密文 C{T}_{ {A}} 并上传到云端服务器CSP.
9) Decrypt\left(S{ K}_{\{GID,\mathcal{S}\}},PP,C{T}_ {A}\right)\to m\;\mathrm{o}\mathrm{r} \perp . 属性解密. PU从云端服务器CSP上下载密文 C{T}_ {A} ,然后测试其属性密钥集 S{ K}_{\{GID,\mathcal{S}\}} 是否满足访问策略. 若满足,则可以成功解密获得明文 m .
10) Trace\left(PP,S{ K}_{\{GID,\mathcal{S}\}}^{\mathcal{*}},\mathcal{S}\right)\to GID\; \mathrm{o}\mathrm{r} \perp . 恶性用户身份跟踪. RA首先验证密钥 S{ K}_{\{GID,\mathcal{S}\}}^{\mathcal{*}} 的格式是否合法;然后根据密钥中的 \sigma 和身份映射表IT恢复出恶意泄露密钥用户的真实身份.
3. 方案设计
3.1 符号说明
本文涉及到的符号及其描述如表1所示.
表 1 符号及其描述Table 1. Symbols and Their Description符号 描述 符号 描述 \mathbb{G} ,{\mathbb{G} }_{T} 乘法循环群 {\mathbb{G} }_{{p}_{i}} 阶为 {p}_{i} 的子群 GID 用户唯一标识符 PP 系统公共参数 IC 中间密文 RPK 监管机构公钥 RSK 监管机构私钥 UPK 用户公钥 USK 用户私钥 OPK 属性授权机构公钥 APK 机构属性公钥 AC 属性凭证 \mathrm{\sigma } 用户签名 S{ K}_{\{GID,\mathcal{S}\}} 属性集 \mathcal{S} 的密钥 \mathcal{S} 用户属性集 {\mathcal{J}}_{\mathcal{S}} 用户属性名索引集 S 用户属性值集 {\boldsymbol M},\rho 策略矩阵及映射 \mathcal{T} {\boldsymbol M} 每一行属性值集 m 待加密PHR数据 C{T}_ {A} PHR数据密文 \mathcal{J} 最小授权集 3.2 方案设计
本文提出的mHealth 中的细粒度策略隐藏和可追踪去中心化访问控制方案是在PASH方案[16]的基础上,结合文献[10]实现了属性授权机构的去中心化,具体的方案设计如下文所示.
3.2.1 初始化
系统的初始化主要包括5个步骤:
1) GlobalS etup\left({1}^{\lambda }\right)\to PP. 此算法由智能合约完成系统的初始化. 输入安全参数 \lambda ,选择阶为 N={p}_{1}\times {p}_{2}\times {p}_{3}\times {p}_{4} 的循环群 \mathbb{G} 和一个双线性映射 e: \mathbb{G} \times\mathbb{G} \to {\mathbb{G} }_{T} ,其中 \mathbb{G} ={\mathbb{G} }_{{p}_{1}}\times {\mathbb{G} }_{{p}_{2}}\times {\mathbb{G} }_{{p}_{3}}\times {\mathbb{G} }_{{p}_{4}} . g,{g}_{1} 为 \mathbb{G} 的生成元. 选择2个安全的哈希值 {f}_{0}:\{\mathrm{0,1}{\}}^{*}\to\mathbb{G},{f}_{1}:\{\mathrm{0,1}{\}}^{*}\to {\mathbb{Z}}_{N} .
最终系统公共参数为
PP = \langle \mathbb{G},{\mathbb{G}_T},e,N,{p_1},{p_2},{p_3},{p_4},{g},{{g}_1},{f_0},{f_1}\rangle . 2) RAS etup\left(PP\right)\to RPK,RSK. 此算法负责RA的初始化. 输入系统公共参数 PP ,随机选择 a\in {\mathbb{Z}}_{N},h\in {\mathbb{G} }_{{p}_{1}}, {X}_{3}\in {\mathbb{G} }_{{p}_{3}},Z, {X}_{4}\in {\mathbb{G} }_{{p}_{4}} ,计算 H=hZ . 监管机构生成公钥RPK = \langle {{g}^a},{X_4},H\rangle 和私钥 RSK = \langle a,{X_3},h\rangle ,并将公钥 RPK 通过智能合约公开上链. 此外,RA还初始化一个空的身份映射表IT,记录用户签名 \sigma 和 GID 的对应关系,用来对用户密钥进行追踪.
3) UserS etup\left(PP,basein f o\right)\to UPK,USK. 此算法负责用户初始化. 输入系统公共参数 PP 和用户的基本信息 basein f o . 用户生成随机值 {x}_{I}\in {\mathbb{Z}}_{N} ,计算 {P}_{I}= {g}^{{x}_{I}} ,其中 {P}_{I} 用作用户公开密钥 UPK , {x}_{I} 用作用户签名私钥 USK . 用户计算全局唯一身份标识 GID={f}_{1} \left(basein f o\right|\left|{P}_{I}\right) ,将密钥 UPK 和身份标识 GID 通过智能合约公开上链.
4) AAS etup\left(PP,n,t\right)\to OPK. 此算法负责AA初始化. 假设属性授权机构由具备唯一身份标识 GI{D}_{i} 的 n 个机构成员 Use{r}_{i}\left(i\in \left[1,n\right]\right) 构成,并且门限秘密共享算法的 t 值已被设定好. 初始化主要包括2个阶段:机构初始化阶段和机构公钥生成阶段.
在机构初始化阶段,机构中的每个成员 Use{r}_{i} \left(i\in \left[1,n\right]\right) 随机选择 {\alpha }_{i}\in {\mathbb{Z}}_{N} 作为部分机构秘密. 各个成员部分机构秘密之和,即 \alpha = \displaystyle\sum\limits_{i = 1}^n {{\alpha _i}} 为方案中的最终机构秘密. 随后,每个成员 Use{r}_{i}\left(i\in \left[1,n\right]\right) 随机生成阶为 t-1 的多项式 {f}_{i}\left(x\right)={a}_{0}+{a}_{1}x+{a}_{2}{x}^{2}+… +{a}_{t-1}{x}^{t-1} ,令 {f}_{i}\left(0\right)={a}_{0}={\alpha }_{i} . 计算秘密共享值 shar{e}_{ij}={f}_{i}\left(GI{D}_{j}\right) ,并将其发送给 Use{r}_{j}\left(j\in \left[1,n\right],j\ne i\right) ,自己储存好 shar{e}_{ii} . 当机构成员 Use{r}_{i} 拿到其他 n- 1 个机构成员发送的秘密共享值后,计算部分机构私钥os{k_i} = \displaystyle\sum\limits_{j = 1}^n {shar{e_{ji}}} ,部分机构公钥为 op{k}_{i}=e{\left(g,{g}_{1}\right)}^{os{k}_{i}}, 并将op{k}_{i} 公开上链.
智能合约完成机构公钥生成阶段的主要工作, 随机选取 t 个机构成员生成的部分机构公钥 op{k}_{i} ,由秘密共享原理可生成AA的公钥 OPK 并将其公开上链,计算
\begin{split} OPK = & \prod\limits_{i = 1}^t {opk_i^{\prod\limits_{j = 1,j \ne i}^t {\tfrac{{GI{D_j}}}{{GI{D_j} - GI{D_i}}}} }} =\\ & e{\left( {{g},{{g}_1}} \right)^{\sum\limits_{i = 1}^t {\left( {os{k_i}\prod\limits_{j = 1,j \ne i}^t {\tfrac{{GI{D_j}}}{{GI{D_j} - GI{D_i}}}} } \right)} }}= \\ & e{\left( {{g},{{g}_1}} \right)^{\sum\limits_{i = 1}^n {{\alpha _i}} }} = e{\left( {{g},{{g}_1}} \right)^\alpha }. \end{split} 5) AttrGen\left(PP,attrname,n,t\right)\to APK. 此算法负责AA的初始化,与机构初始化类似,其包括机构属性初始化阶段和属性公钥生成阶段. 对属性 attrname , n 个用户需要协作进行5个步骤.
①在机构属性初始化阶段,机构中的每个成员 Use{r}_{i}\left(i\in \left[1,n\right]\right) 随机选择{\beta }_{i}\in {\mathbb{Z}}_{N} 作为其部分机构属性秘密,各个成员部分机构属性秘密之和,即\beta = \displaystyle\sum\limits_{i = 1}^n {{\beta _i}} 为方案中的最终的机构属性秘密. ②每个成员 Use{r}_{i} 随机生成阶为 t-1 的多项式 {f}_{i}\left(x\right)={a}_{0}+{a}_{1}x+…+ {a}_{t-1}{x}^{t-1} ,令 {f}_{i}\left(0\right)={a}_{0}={\beta }_{i} . ③计算秘密共享值 shar{e}_{ij}={f}_{i}\left(GI{D}_{j}\right) \left(j\in \left[1,n\right],j\ne i\right) ,并将其秘密共享值通过智能合约传输给其他用户. ④当机构成员 Use{r}_{i} 拿到其他 n-1 个秘密共享值后,计算as{k_i} = \displaystyle\sum\limits_{j = 1}^n {shar{e_{ji}}} 和 ap{k}_{i}={g}^{as{k}_{i}} ,并将 ap{k}_{i} 通过智能合约公开上链.⑤在属性公钥生成阶段,智能合约从中随机选取 t 个机构成员生成的 ap{k}_{i} ,由秘密共享原理可生成授权机构属性公钥 APK 并公开上链,计算
\begin{split} APK = & \prod\limits_{i = 1}^t {apk_i^{\prod\limits_{j = 1,j \ne i}^t {\tfrac{{GI{D_j}}}{{GI{D_j} - GI{D_i}}}} }}= \\ & {{g}^{\sum\limits_{i = 1}^t {\left( {as{k_i}\prod\limits_{j = 1,j \ne i}^t {\tfrac{{GI{D_j}}}{{GI{D_j} - GI{D_i}}}} } \right)} }}= \\ & {{g}^{\sum\limits_{i = 1}^n {{\beta _i}} }} = {{g}^\beta }. \\ \end{split} 3.2.2 PU授权
新加入的PU首先需要向AA申请其属性集 \mathcal{S}=\left({\mathcal{J}}_{\mathcal{S}},S\right) 的属性凭证 AC ,再计算其签名 \sigma 并向RA提交进行身份验证. 最后RA为其分发 \mathcal{S} 的属性密钥. 具体细节为:
1) UACertGen\left(PP,GID,\mathcal{S}\right)\to AC . 此算法负责AC的申请过程. PU向AA申请其AC,需要经过AA下至少 t 个机构成员的同意. 每个成员 Use{r}_{j}\left(j\in \left[1,t\right]\right) 计算 auth={\left({g}_{1}\right)}^{os{k}_{j}} ,并返回给PU. 在收到 t 个 auth 后,PU计算AC:
\begin{split} AC = & \prod\limits_{i = 1}^t {aut{h^{\prod\limits_{j = 1,j \ne i}^t {\tfrac{{GI{D_j}}}{{GI{D_j} - GI{D_i}}}} }}}= \\ &{g}_1^{\sum\limits_{i = 1}^t {\left( {os{k_i}\prod\limits_{j = 1,j \ne i}^t {\tfrac{{GI{D_j}}}{{GI{D_j} - GI{D_i}}}} } \right)} } =\\ &{g}_1^{\sum\limits_{i = 1}^n {{\alpha _i}} } = {g}_1^\alpha . \end{split} 2) KeyGen\left(PP,GID,AC,\{RS K,APK\},\mathcal{S}\right)\to S K_{\{GID,\mathcal{S}\}} . 此算法主要由RA负责属性集密钥生成过程,包括验证身份和生成密钥2个部分. 具体实现细节有:
PU首先利用AC和其私钥USK计算其身份签名 \sigma ={f}_{0}{\left(AC,{P}_{I}\right)}^{{x}_{I}} ,连同AC一起提交到RA进行验证.
RA首先验证PU的身份签名是否有效,即检查 e\left(\sigma ,g\right)=e\left({f}_{0}\left(AC,{P}_{I}\right),{P}_{I}\right) 是否成立. 如果验证通过,RA计算 u={f}_{0}\left(GID\right) ,随机选择 R,{R}',{R}_{i}\in {\mathbb{G} }_{{p}_{3}},t\in {\mathbb{Z}}_{N} ,计算出 S{ K}_{\{GID,S\}}=\left(\mathrm{\sigma },K,{K}',\{{K}_{i}{\}}_{i\in S}\right) 并将 \sigma 和对应的 GID 记录在IT中. 其中
K={g}_{1}^{\mathrm{\alpha }u}{g}^{at}R,{K}'={g}^{t}{R}',{K}_{i}={\left(AP{K}_{i}h\right)}^{t}{R}_{i}, 否则RA将拒绝为其分发密钥.
3.2.3 PHR加密
要加密PHR数据,PO定义一个访问结构 {A}= \left({\boldsymbol M},\rho ,\mathcal{T}\right) ,通过运行Encrypt算法对PHR进行加密生成密文 C{T}_{{A}} ,然后将 C{T}_{{A}} 发送到CSP.
Encrypt\left(PP,m,\{RPK,UPK,APK\},{A}\right)\to C{T}_{{A}}: Encrypt算法分为线下(offline)阶段和线上(online)阶段,假设LSSS访问控制结构中的矩阵最多有 P 行,设计的具体细节为:
1)offline阶段. PO随机选择2个秘密值 s,{s}'\in {\mathbb{Z}}_{N} ,生成随机向量 {\boldsymbol v}=\left(s,{v}_{2},… ,{v}_{n}\right) 和 {{\boldsymbol v}}'=\left({s}',{v}_{2}',… ,{v}_{n}'\right) . 再随机选择 {Z}_{2,x}'\in {\mathbb{G} }_{{p}_{4}} ,计算
{C}_{\mathrm{b}\mathrm{a}\mathrm{s}\mathrm{e}}=e{\left(g,{g}_{1}\right)}^{\mathrm{\alpha }s},{C}_{1}'={g}^{s}, {C}_{2}=e{\left(g,{g}_{1}\right)}^{\mathrm{\alpha }{s}'},{C}_{2}'={g}^{{s}'}{Z}_{2,x}'. 对于 \forall x\in \left[1,P\right] ,随机选择 {Z}_{1,x},{Z}_{1,x}',{Z}_{2,x}\in {\mathbb{G} }_{{p}_{4}},{r}_{x},{\gamma }_{x},{\gamma }_{x}' \in {\mathbb{Z}}_{N} ,计算
{D}_{1,x}={g}^{{r}_{x}}{Z}_{1,x}',{C}_{2,x}={g}^{a{\gamma }_{x}'}{\left(AP{K}_{x}H\right)}^{-{s}'}{Z}_{2,x}, 生成中间密文 IC=\left({C}_{\mathrm{b}\mathrm{a}\mathrm{s}\mathrm{e}},{C}_{1}',{C}_{2},{C}_{2}'\right).
2)online阶段. 当PHR数据 m 已知时,PO根据指定的访问控制结构对秘密值 s,{s}' 进行线性秘密共享. 对于 \forall x\in \left[1,l\right], 计算 {\lambda }_{x}={{\boldsymbol M}}_{x}{v}_{x},{\lambda }_{x}'={{\boldsymbol M}}_{x}{v}_{x}' . 利用中间密文IC和共享矩阵计算
{C}_{1}=m{C}_{\mathrm{b}\mathrm{a}\mathrm{s}\mathrm{e}},{C}_{1,x}={g}^{a{\lambda }_{x}}{\left(AP{K}_{x}H\right)}^{-{r}_{x}}{Z}_{1,x}, {C}_{2,x}'={\mathrm{\lambda }}_{x}'-\gamma _{x}'. 最后,生成最终密文为
C{T}_{A}=\left(\left({\boldsymbol M},\mathrm{\rho }\right),{C}_{1},{C}_{1}',{C}_{2},{C}_{2}',\{{C}_{1,x},{D}_{1,x},{C}_{2,x},{C}_{2,x}'{\}}_{x\in \left[1,l\right]}\right) 3.2.4 PHR访问
如果PU的特定属性集 \mathcal{S} 匹配 C{T}_ {A} 中的访问策略,则可以通过Decrypt算法恢复出PHR.
Decrypt\left(S{ K}_{\{GID,\mathcal{S}\}},PP,C{T}_ {A}\right)\to m or \perp . Decrypt算法分为匹配(matching)和解密(decryption)2个算法. PU首先计算满足 \left({\boldsymbol M},\rho \right) 的最小子集 {I}_{{\boldsymbol M},\rho } . 设计的具体细节为:
1)matching算法. PU首先检查是否存在 \mathcal{J}\in {I}_{{\boldsymbol M},\rho } 满足 \left\{\rho \right(i\left)\right|i\mathcal{ }\in \mathcal{ }\mathcal{J}\}\subseteq \mathcal{ }{\mathcal{J}}_{\mathcal{S}} 和等式
{C_2} = {\left( {\frac{{e\left( {C_2' ,K} \right)}}{{\prod\limits_{i \in \mathcal{J}} {{{\left( {e\left( {{C_{2,i}}{{g}^{aC_{2,i}' }},{K' }} \right)e\left( {C_2' ,{K_{\rho \left( i \right)}}} \right)} \right)}^{\omega _i}}} }}} \right)^{\tfrac{1}{u}}}, 其中 \{{\omega }_{i}{\}}_{i\in \mathcal{J}} 使得\displaystyle\sum\limits_{i \in \mathcal{J}} {{\omega _i}{{\boldsymbol{M}}_i}} = \left( {1,0, \ldots ,0} \right). 如果存在这样的 \mathcal{J} ,则PU使用 \mathcal{J} 和 \{{\mathrm{\omega }}_{i}{\}}_{i\in \mathcal{J}} 执行decryption算法;否则意味着PU的属性集 \mathcal{S} 不满足 {\boldsymbol M} ,算法返回 \perp .
2)decryption算法. PU计算 m={C}_{1}/B ,其中
B = {\left( {\frac{{e\left( {C_1^\prime ,K} \right)}}{{\prod\limits_{i \in \mathcal{J}} {{{\left( {e\left( {{C_{1,i}},{K^\prime }} \right)e\left( {{D_{1,i}},{K_{\rho \left( i \right)}}} \right)} \right)}^{{\omega _i}}}} }}} \right)^{\tfrac{1}{u}}}. 3.2.5 追 溯
如果恶意的PU泄露了他的密钥 S {K}_{\{GID,\mathcal{S}\}}^{\mathcal{*}} ,RA可以通过运行Trace算法来识别其真实身份.
Trace\left(PP,S{ K}_{\{GID,\mathcal{S}\}}^{\mathcal{*}},\mathcal{S}\right)\to GID or \perp . RA首先检查被泄露的密钥 S{ K}_{\{GID,\mathcal{S}\}}^{\mathcal{*}}=\left(\sigma ,K,{K}',\{{K}_{i}:\forall i\in \mathcal{S}\}\right) 的格式是否正确. 如果 S{ K}_{\{GID,\mathcal{S}\}}^{\mathcal{*}} 能够通过3个检查,则称为格式良好.
① \sigma ,K,{K}',{K}_{i}\in G ;
② e\left(g,K\right)=e{\left(g,{g}_{1}\right)}^{\mathrm{\alpha }u}e\left({g}^{a},{K}'\right)\ne 1;
③ \exists i\in \mathcal{S},\mathcal{使}\mathcal{得}e\left({K}_{i},g\right)=e\left({K}',{g}^{{\mathrm{\beta }}_{i}}\right) .
然后RA通过在IT表中寻找 \sigma 来找出用户的真实身份. 如果找不到,RA返回 \perp .
4. 方案分析
4.1 稳健性分析
本文方案中的稳健性指PU可以访问到PHR,当且仅当其拥有的特定属性集 \mathcal{S} 匹配底层的访问结构A. 一方面,matching算法是正确的. 当且仅当 {t}_{\rho \left(i\right)}={s}_{\rho \left(i\right)} ,对于 i\in \mathcal{J} ,计算出
\begin{aligned} {C_2} = & {\left( {\frac{{e\left( {C_2' ,K} \right)}}{{\prod\limits_{i \in \mathcal{J}} {{{\left( {e\left( {{C_{2,i}}{{g}^{aC_{2,i}' }},{K' }} \right)e\left( {C_2' ,{K_{\rho \left( i \right)}}} \right)} \right)}^{\omega _i}}} }}} \right)^{\tfrac{1}{u}}} = \frac{{e{{\left( {{g},{{g}_1}} \right)}^{\alpha s'}}e{{\left( {{g},{g}} \right)}^{ats'}}}}{{\prod\limits_{i \in \mathcal{J}} {{{\left( {e\left( {{{g}^{a\lambda _i' }},{{g}^t}} \right)e\left( {{{\left( {AP{K_i}H} \right)}^{ - s'}},{{g}^t}} \right)e\left( {{{g}^{s'}},{{\left( {AP{K_i}h} \right)}^t}} \right)} \right)}^{{\omega _i}}}} }}= \\ & \frac{{e{{\left( {{g},{{g}_1}} \right)}^{\alpha s'}}e{{\left( {{g},{g}} \right)}^{ats'}}}}{{e{{\left( {{g},{g}} \right)}^{at\sum\limits_{i \in \mathcal{J}} {\lambda _i' \omega _i' } }}}} = \frac{{e{{\left( {{g},{{g}_1}} \right)}^{\alpha s'}}e{{\left( {{g},{g}} \right)}^{ats'}}}}{{e{{\left( {{g},{g}} \right)}^{at\left( {\sum\limits_{i \in \mathcal{J}} {{A_i}} \omega _i'} \right)v'}}}} = e{\left( {{g},{{g}_1}} \right)^{\alpha s'}}. \end{aligned} 另一方面,在matching算法找到属性集 \mathcal{S} 满足访问结构A 时,则存在一个属性集合 \mathcal{J} 和常数集 \{{\omega }_{i}{\}}_{i\in \mathcal{J}} 使得\forall i \in {J}, \displaystyle\sum\limits_{i \in \mathcal{J}} {{{\boldsymbol{M}}_i}} \omega _i^\prime = \left( {1,0, \ldots ,0} \right),{t_{\rho \left( i \right)}} = {s_{\rho \left( i \right)}}. 计算出
\begin{split} B = & {\left( {\frac{{e\left( {C_1^\prime ,K} \right)}}{{\prod\limits_{i \in \mathcal{J}} {{{\left( {e\left( {{C_{1,i}},{K^\prime }} \right)e\left( {{D_{1,i}},{K_{\rho \left( i \right)}}} \right)} \right)}^{\omega _i}}} }}} \right)^{\tfrac{1}{u}}} =\frac{{e{{\left( {{g},{{g}_1}} \right)}^{\alpha s}}e{{\left( {{g},{g}} \right)}^{ats}}}}{{\prod\limits_{i \in {{\mathcal{J}}}} {{{\left( {e\left( {{{g}^{a{\lambda _i}}},{{g}^t}} \right)e\left( {{{\left( {AP{K_i}H} \right)}^{ - {r_i}}},{{g}^t}} \right)e\left( {{{g}^{{r_i}}},{{\left( {AP{K_i}h} \right)}^t}} \right)} \right)}^{{\omega _i}}}} }}=\\ & \frac{{e{{\left( {{g},{{g}_1}} \right)}^{\alpha s}}e{{\left( {{g},{g}} \right)}^{ats}}}}{{e{{\left( {{g},{g}} \right)}^{at\sum\limits_{i \in {{\mathcal{J}}}} {{\lambda _i}} {\omega _i}}}}} = \frac{{e{{\left( {{g},{{g}_1}} \right)}^{\alpha s}}e{{\left( {{g},{g}} \right)}^{ats}}}}{e{\left( {g},{g} \right)}^{at\left( {\sum\limits_{i \in {{\mathcal{J}}}} {{M_i}} {\omega _i}} \right)v}} = e{\left( {{g},{{g}_1}} \right)^{\alpha s}}. \end{split} PU计算 m={C}_{1}/B=me{\left(g,{g}_{1}\right)}^{\alpha s}/e{\left(g,{g}_{1}\right)}^{\alpha s} 可以恢复出PHR,解密阶段也是正确的. 因此,本文方案具有稳健性.
4.2 安全性分析
在数据安全方面,攻击者可以窃听公共通道上传输的加密PHR,并试图访问未经授权的PHR.在属性隐私保护方面,攻击者的目标是从加密的PHR中提取敏感属性的属性值. 具体来说,本文将考虑的安全性需求有3点:
1)PHR机密性. 外包的PHR对于POs来说是私有的和敏感的,因此应该防止未经授权的访问.
2)抗合谋攻击. 合谋攻击指不同的PUs可以通过合并他们的密钥来读取他们无权访问的PHR.
3)隐私性. 在本文方案中,与访问策略关联的属性值是敏感的. 为了保护患者的隐私,应该将其隐藏在加密的PHR中.
本文方案能够有效满足上述3个安全需求:首先,PHR在CSP上都是密文,基于属性的加密算法保证其安全性,攻击者无法得到敏感信息,保证了PHR的机密性. 密钥集合 S{ K}_{\{GID,\mathcal{S}\}} 中的密钥 K 生成合法的PU的 GID 的哈希值. 多个不合法的PUs合谋是没有办法共享其属性,也无法使用具备不同 GID 的哈希值的属性密钥进行解密,可以抵抗合谋攻击. 在隐私性方面,本文方案中的每个属性包括2部分:属性名称及属性值. 如果PU的属性集合 \mathcal{S} 不满足与密文关联的访问结构,则隐藏访问结构中的属性值,而其他访问结构的相关信息如属性名称是公开的. 如上文提到的例子:如果PO使用本文方案来加密他的PHR,任何获得密文的人都只能获得访问结构的信息,如“(职工号:* OR(机构:* AND 职位:*))”;而相对敏感的属性值,如“12345”“A市综合性医院”“艾滋病专家”则是不可见的,实现了对用户更高层次的隐私保护.
4.3 可追踪性分析
当密钥 S{ K}_{\{GID,\mathcal{S}\}}^{\mathcal{*}}=\left(\mathrm{\sigma },K,{K}',\{{K}_{i}{\}}_{i\in S}\right) 被滥用,需要RA来追踪密钥的真实用户身份信息. RA首先对密钥的格式进行检查,检查 e\left(g,K\right)=e{\left(g,{g}_{1}\right)}^{\mathrm{\alpha }u}e\left({g}^{a},{K}'\right) 是否成立. 若 S{ K}_{\{GID,\mathcal{S}\}}^{\mathcal{*}} 格式正确,则
\begin{aligned} & e{\left( {{g},{{g}_1}} \right)^{\alpha u}}e\left( {{{g}^a},{K^\prime }} \right) = e{\left( {{g},{{g}_1}} \right)^{\alpha u}}e\left( {{{g}^a},{{g}^t}{R^\prime }} \right)= \\ & e\left( {{g},{g}_1^{\alpha u}} \right)e\left( {{g},{{g}^{at}}} \right) = e\left( {{g},{g}_1^{\alpha u}{{g}^{at}}} \right) = e\left( {{g},K} \right). \\ \end{aligned} 若不成立,RA输出 \perp ;若成立,则寻找是否存在非空集 {\mathcal{S}}'\in \mathcal{S} 满足方程 e\left({K}',{g}^{{\beta }_{i}}\right)=e\left({K}_{i},g\right)\left(i\in {\mathcal{S}}'\right) . 若 S{ K}_{\{GID,\mathcal{S}\}}^{\mathcal{*}} 格式标准,则
\begin{aligned} & e\left( {{K_i},{g}} \right) = e\left( {{{\left( {AP{K_i}h} \right)}^t}{R_i},{g}} \right) =\\ & e\left( {{{\left( {{{g}^{{\beta _i}}}h} \right)}^t},{g}} \right) = e{\left( {{g},{g}} \right)^{{\beta _i}t}} = e\left( {{K^\prime },{{g}^{{\beta _i}}}} \right). \\ \end{aligned} 如果 {\mathcal{S}}'非空,RA可根据密钥中的 \sigma 到IT中查找用户对应的 GID ;否则RA输出 \perp .
4.4 方案对比分析
4.4.1 功能特性对比
表2比较了文献[10,15-17,23-24]和本文方案的功能特性,包括可表达性、属性集的规模、可追溯性等. 可以看出,只有本文方案才能同时支持大属性集、可追溯性和策略隐藏,并实现了属性授权机构完全的去中心化.
4.4.2 效率对比
表3和表4显示了文献[16-17]和本文方案在效率方面的对比结果. 注意表3中本文方案的公共参数包括系统公共参数 PP 、监管机构公共参数 RPK 等本文方案中涉及到的所有公开的参数.
表 3 参数长度对比Table 3. Comparison of the Parameter Length方案 公共参数长度 私钥长度 密文长度 文献[16] 4\left|\mathbb{G} \right|+1\left|{\mathbb{G} }_{T}\right| \left(\left|\mathcal{S}\right|+2\right)\left|\mathbb{G} \right|+2 \left(3l+2\right)\left|\mathbb{G} \right|+2\left|{\mathbb{G} }_{T}\right| 文献[17] 5\left|\mathbb{G} \right|+1\left|{\mathbb{G} }_{T}\right| \left(\left|\mathcal{S}\right|+3\right)\left|\mathbb{G} \right|+1\left|{\mathbb{Z}}_{N}\right| \left(3l+4\right)\left|\mathbb{G} \right|+2\left|{\mathbb{G} }_{T}\right| 本文 6\left|\mathbb{G} \right|+1\left|{\mathbb{G} }_{T}\right| \left(\left|\mathcal{S}\right|+2\right)\left|\mathbb{G} \right|+2 \left(4l+2\right)\left|\mathbb{G} \right|+2\left|{\mathbb{G} }_{T}\right| 表 4 计算开销对比Table 4. Comparison of the Computation Cost方案 KeyGen 开销 Encryption 开销 Matching 开销 Decryption 开销 文献[16] \left(2\left|\mathcal{S}\right|+3\right)E \left(6l+2\right)E+2{E}_{T} 2\left|\mathcal{J}\right|E+2P \left|\mathcal{J}\right|{E}_{T}+\left(2\left|\mathcal{J}\right|+1\right)P 文献[17] \left(2\left|\mathcal{S}\right|+4\right)E \left(6l+4\right)E+2{E}_{T} \left(2\left|\mathcal{J}\right|+2\right)E+3P 2E+\left|\mathcal{J}\right|{E}_{T}+\left(2\left|\mathcal{J}\right|+1\right)P 本文 \left(1\left|\mathcal{S}\right|+3\right)E 3lE+1{E}_{T} 3\left|\mathcal{J}\right|E+2P \left|\mathcal{J}\right|{E}_{T}+\left(2\left|\mathcal{J}\right|+1\right)P 注: E 和 {E}_{T} 分别表示在群 \mathbb{G} 和 {\mathbb{G} }_{T} 上的指数运算, P 指双线性配对操作. \left|\mathcal{S}\right| 表示用户属性集 \mathcal{S} 的大小, l 表示访问控制矩阵 {\boldsymbol M} 的行数. \left|\mathcal{J}\right| 表示解密阶段使用的最小授权属性集 \mathcal{J} 的大小. 从表3中可以看出本文方案相比文献[16-17],公共参数长度略大,这是因为增加了用于实现可追溯性和去中心化的附加参数,并且一部分的线下加密导致生成的密文长度略大些. 在密钥大小方面,本文方案未造成过多的开销.
从表4中可以看出相较于文献[16-17],本文方案在 KeyGen 阶段和 Encryption 阶段所需的计算开销较低,主要原因是一些参数已经在初始化阶段和线下阶段完成计算. Matching 阶段需要比文献[16]更多的计算开销,这主要是由于其支持可追溯性而产生的. 在 Decryption 阶段本文方案没有增加更多的开销.
4.4.3 实验仿真
本节在Ubuntu 18.04 64位,4核16 GB的PC机上基于JPBC库(Java pairing-based cryptography library)的Hyperledger Fabric网络环境下对本文方案、文献[16]方案以及文献[17]方案进行仿真实现. 本文方案在对比分析相关算法的计算开销后,给出了3种方案在密钥生成、加密、匹配和解密阶段的时间效率方面的实验结果,如图2所示.
由图2可知,在KeyGen和Encryption阶段,本文方案的效率明显优于其他2个方案. 这是因为采用了预加密技术,在知道待加密PHR数据之前进行了大量的预计算. 当知道要加密的数据时,可以快速生成密文. 在Matching阶段,本文方案在时间效率上略低于文献[16]方案,但在Decryption阶段没有增加更多的开销且优于文献[17]方案,符合表4的理论结果. 总之,本文方案在KeyGen和Encryption阶段效率得到了很大的提高,此外还增加了属性隐藏和可追踪的功能特性.
5. 结 论
本文提出了一种mHealth中细粒度策略隐藏和可追踪去中心访问控制方案,有效地解决了mHealth中的数据安全和用户隐私问题. 本文方案支持大属性集和LSSS策略,访问策略具有良好的表达性. 与此同时,访问策略中涉及到的敏感属性值均被隐藏,从而进一步提高了对用户的隐私保护. 在正式加密之前增加了一个线下加密过程,很大程度上提高了用户加密的效率. 经过理论分析和实验结果表明,本文方案比现有方案更高效,具有实际的应用可行性. 未来研究的方向是找到适合本文方案的属性撤销机制.
作者贡献声明:王静怡提出了论文思路和技术方案、优化方法技术,完成部分实验并撰写论文;阚海斌提出指导意见并修改论文.
-
表 1 符号及其描述
Table 1 Symbols and Their Description
符号 描述 符号 描述 \mathbb{G} ,{\mathbb{G} }_{T} 乘法循环群 {\mathbb{G} }_{{p}_{i}} 阶为 {p}_{i} 的子群 GID 用户唯一标识符 PP 系统公共参数 IC 中间密文 RPK 监管机构公钥 RSK 监管机构私钥 UPK 用户公钥 USK 用户私钥 OPK 属性授权机构公钥 APK 机构属性公钥 AC 属性凭证 \mathrm{\sigma } 用户签名 S{ K}_{\{GID,\mathcal{S}\}} 属性集 \mathcal{S} 的密钥 \mathcal{S} 用户属性集 {\mathcal{J}}_{\mathcal{S}} 用户属性名索引集 S 用户属性值集 {\boldsymbol M},\rho 策略矩阵及映射 \mathcal{T} {\boldsymbol M} 每一行属性值集 m 待加密PHR数据 C{T}_ {A} PHR数据密文 \mathcal{J} 最小授权集 表 2 相关工作的功能特性对比
Table 2 Function Feature Comparison of Related Work
表 3 参数长度对比
Table 3 Comparison of the Parameter Length
方案 公共参数长度 私钥长度 密文长度 文献[16] 4\left|\mathbb{G} \right|+1\left|{\mathbb{G} }_{T}\right| \left(\left|\mathcal{S}\right|+2\right)\left|\mathbb{G} \right|+2 \left(3l+2\right)\left|\mathbb{G} \right|+2\left|{\mathbb{G} }_{T}\right| 文献[17] 5\left|\mathbb{G} \right|+1\left|{\mathbb{G} }_{T}\right| \left(\left|\mathcal{S}\right|+3\right)\left|\mathbb{G} \right|+1\left|{\mathbb{Z}}_{N}\right| \left(3l+4\right)\left|\mathbb{G} \right|+2\left|{\mathbb{G} }_{T}\right| 本文 6\left|\mathbb{G} \right|+1\left|{\mathbb{G} }_{T}\right| \left(\left|\mathcal{S}\right|+2\right)\left|\mathbb{G} \right|+2 \left(4l+2\right)\left|\mathbb{G} \right|+2\left|{\mathbb{G} }_{T}\right| 表 4 计算开销对比
Table 4 Comparison of the Computation Cost
方案 KeyGen 开销 Encryption 开销 Matching 开销 Decryption 开销 文献[16] \left(2\left|\mathcal{S}\right|+3\right)E \left(6l+2\right)E+2{E}_{T} 2\left|\mathcal{J}\right|E+2P \left|\mathcal{J}\right|{E}_{T}+\left(2\left|\mathcal{J}\right|+1\right)P 文献[17] \left(2\left|\mathcal{S}\right|+4\right)E \left(6l+4\right)E+2{E}_{T} \left(2\left|\mathcal{J}\right|+2\right)E+3P 2E+\left|\mathcal{J}\right|{E}_{T}+\left(2\left|\mathcal{J}\right|+1\right)P 本文 \left(1\left|\mathcal{S}\right|+3\right)E 3lE+1{E}_{T} 3\left|\mathcal{J}\right|E+2P \left|\mathcal{J}\right|{E}_{T}+\left(2\left|\mathcal{J}\right|+1\right)P 注: E 和 {E}_{T} 分别表示在群 \mathbb{G} 和 {\mathbb{G} }_{T} 上的指数运算, P 指双线性配对操作. \left|\mathcal{S}\right| 表示用户属性集 \mathcal{S} 的大小, l 表示访问控制矩阵 {\boldsymbol M} 的行数. \left|\mathcal{J}\right| 表示解密阶段使用的最小授权属性集 \mathcal{J} 的大小. -
[1] Chen T S, Liu C H. Secure dynamic access control scheme of PHR in cloud computing[J]. Journal of Medical Systems, 2012, 36((2): ): 4005−4020
[2] Li Ming, Yu Shucheng, Ren Kui, et al. Securing personal health records in cloud computing: Patient-centric and fine-grained data access control in multi-owner settings[C]//Proc of the 6th Int ICST Conf on Security and Privacy in Communication Networks. Berlin: Springer, 2010: 89−106
[3] Zhang Leyou, Hu Gongcheng, Mu Yi, et al. Hidden ciphertext policy attribute-based encryption with fast decryption for personal health record system[J]. IEEE Access, 2019, 7: 33202−33213 doi: 10.1109/ACCESS.2019.2902040
[4] Wang Changji, Liu Xuan, Li Wentao. Implementing a personal health record cloud platform using ciphertext-policy attribute-based encryption[C]//Proc of the 4th Int Conf on Intelligent Networking and Collaborative Systems. Piscataway, NJ : IEEE, 2012: 8−14
[5] Sun Jianfei, Xiong Hu, Liu Ximeng, et al. Lightweight and privacy-aware fine-grained access control for IoT-oriented smart health[J]. IEEE Internet of Things Journal, 2020, 7(7): 6566−6575 doi: 10.1109/JIOT.2020.2974257
[6] Sahai A, Waters B. Fuzzy identity-based encryption[C]//Proc of the 24th Annual Int Conf on the Theory and Applications of Cryptographic Techniques. Berlin: Springer, 2005: 457−473
[7] Goyal V, Pandey O, Sahai A, et al. Attribute-based encryption for fine-grained access control of encrypted data[C]//Proc of the 13th ACM Conf on Computer and Communications Security. New York: ACM, 2006: 89−98
[8] Wei Pengcheng, Wang Dahu, Zhao Yu, et al. Blockchain data-based cloud data integrity protection mechanism[J]. Future Generation Computer Systems, 2020, 102: 902−911 doi: 10.1016/j.future.2019.09.028
[9] Zikratov I, Kuzmin A, Akimenko V, et al. Ensuring data integrity using blockchain technology[C]//Proc of the 20th Conf of Open Innovations Association (FRUCT). Piscataway, NJ : IEEE, 2017: 534−539
[10] 陈泽宁,张亮,张双俊,等. 基于区块链和去中心属性密码的访问控制身份方案[J]. 中国科学:信息科学,2021,51(8):1345−1359 doi: 10.1360/SSI-2020-0048 Chen Zening, Zhang Liang, Zhang Shuangjun, et al. Access control scheme on blockchain and decentralized attributed-based algorithm with identity[J]. SCIENTIA SINICA Informationis, 2021, 51(8): 1345−1359(in Chinese) doi: 10.1360/SSI-2020-0048
[11] 方宁,刘百祥,阚海斌. 基于区块链和去中心可追踪属性签名的可控匿名认证方案[J]. 中国科学:信息科学,2021,51(10):1706−1720 doi: 10.1360/SSI-2021-0018 Fang Ning, Liu Baixiang, Kan Haibin. Controllable anonymous authentication scheme based on blockchain and decentralized traceable attribute-based signature[J]. SCIENTIA SINICA Informationis, 2021, 51(10): 1706−1720(in Chinese) doi: 10.1360/SSI-2021-0018
[12] 袁和昕,刘百祥,阚海斌,等. 基于区块链和去中心不可否认属性签名的分布式公钥基础设施方案[J]. 中国科学:信息科学,2022,52(6):1135−1148 Yuan Hexin, Liu Baixiang, Kan Haibin, et al. Distributed public key infrastructure scheme based on blockchain and decentralized undeniable attribute-based signature[J]. SCIENTIA SINICA Informationis, 2022, 52((6): ): 1135−1148(in Chinese)
[13] Banerjee S, Bera B, Das A K, et al. Private blockchain-envisioned multi-authority CP-ABE-based user access control scheme in IIoT[J]. Computer Communications, 2021, 169: 99−113 doi: 10.1016/j.comcom.2021.01.023
[14] Katz J, Sahai A, Waters B. Predicate encryption supporting disjunctions, polynomial equations, and inner products[C]//Proc of the 27th Annual Int Conf on the Theory and Applications of Cryptographic Techniques. Berlin: Springer, 2008: 146−162
[15] Lai Junzuo, Deng R H, Li Yingjun. Expressive CP-ABE with partially hidden access structures[C]//Proc of the 7th ACM Symp on Information, Computer and Communications Security. New York: ACM, 2012: 18−19
[16] Zhang Yinghui, Zheng Dong, Deng R H. Security and privacy in smart health: Efficient policy-hiding attribute-based access control[J]. IEEE Internet of Things Journal, 2018, 5(3): 2130−2145 doi: 10.1109/JIOT.2018.2825289
[17] Li Qi, Zhang Yinghui, Zhang Tao, et al. HTAC: Fine-grained policy-hiding and traceable access control in mHealth[J]. IEEE Access, 2020, 8: 123430−123439 doi: 10.1109/ACCESS.2020.3004897
[18] Boneh D, Goh E J, Nissim K. Evaluating 2-DNF formulas on ciphertexts[C]//Proc of the 2nd Theory of Cryptography Conf. Berlin: Springer, 2005: 325−341
[19] Beimel A. Secure schemes for secret sharing and key distribution[D/OL].1996[2022-11-06].https://www.cs.bgu.ac.il/~beimel/Papers/thesis.pdf
[20] Shamir A. How to share a secret[J]. Communications of the ACM, 1979, 22(11): 612−613 doi: 10.1145/359168.359176
[21] Blakley G R. Safeguarding cryptographic keys[C]//Proc of 1979 Int Workshop on Managing Requirements Knowledge. Los Alamitos, CA: IEEE Computer Society, 1979: 313−313
[22] Pedersen T P. A threshold cryptosystem without a trusted party[C]//Proc of the 10th Workshop on the Theory and Application of Cryptographic Techniques Brighton. Berlin: Springer, 1991: 522−526
[23] Phuong T V X, Yang G, Susilo W. Hidden ciphertext policy attribute-based encryption under standard assumptions[J]. IEEE Transactions on Information Forensics and Security, 2015, 11(1): 35−45
[24] Rouselakis Y, Waters B. Practical constructions and new proof methods for large universe attribute-based encryption[C]//Proc of the 2013 ACM SIGSAC Conf on Computer & Communications Security. New York: ACM, 2013: 463−474
-
期刊类型引用(0)
其他类型引用(1)