一种基于属性加密技术(ABE)的轻量级数据共享方案

A Lightweight Secure Data Sharing Scheme for Mobile Cloud Computing

IEEE TRANSACTIONS ON CLOUD COMPUTING, VOL. 6, NO. 2, APRIL-JUNE 2018

一种用于移动云计算的轻量级安全数据共享方案

    下周二的移动云计算需要做关于上述论文的报告。这篇论文涉及数论和密码学的知识,我们组花了很多时间进行讨论,仍然有一些地方没看懂。下面,我会尽全力讲清楚我们从这篇论文中学到的知识。

    首先,我会介绍一些研究背景,以及论文要解决的问题,也就是这边论文的出发点是什么。然后我会介绍这篇论文所做的贡献以及他的详细设计方案。

研究背景:

    云计算越来越普及,人们可以把照片、文档上传到云上,但由于个人数据是敏感的,因此在云上的数据会有安全问题,以此阻碍了云计算的发展。例如,云计算提供商CSP出于商业目的会监视用户数据。另外,人们若想共享加密数据。则必须向其他用户发送密码,这是非常麻烦的。即使将用户分组来简化权限管理,任然涉及到细粒度访问控制。因此密码管理是一个大问题。

主要贡献:

    这篇论文的主要贡献如下,(1)本文设计了一种基于基于属性的加密(ABE)方法的LDSS-CP-ABE算法,以提供对密钥解密的高效访问控制。(其特点是将访问控制策略嵌入到密文中,也就是说访问控制策略树会被嵌入到秘钥的密文中;) (2)由于移动端的计算资源有限,文中提到使用代理服务器进行加密和解密操作,极大地减少了计算开销。 (3)引入属性的延迟重加密和描述字段,以减少处理用户撤销问题时的撤销开销。

系统设计:

    接下来,我会介绍系统设计。系统设计由6部分组成,(1)数据所有者(DO):DO将数据上传到移动云并与朋友共享。 DO确定访问控制策略。 (2)数据用户(DU):DU从移动云中检索数据。 (3)信任机构(TA):TA负责生成和分发属性密钥。 (4)加密服务提供商(ESP):ESP为DO提供数据加密操作。 (5)解密服务提供商(DSP):DSP为DU提供数据解密操作。 (6)云服务提供商(CSP):CSP存储DO的数据。 它忠实地执行DO请求的操作,同时可以查看DO存储在云中的数据。

    论文对场景的假设是CSP、DSP、ESP三个服务器均为半可信的,也就是说他们不会恶意破坏用户数据,但是他们可能会偷看用户数据。TA表示安全可信服务器。

 图一

我们首先了解LDSS-CP-ABE的流程,之后说明LDSS-CP-ABE算法。

DO将数据发送到云。由于云不可信,因此必须在上传数据之前对数据进行加密。 DO以数据文件的访问控制树的形式定义访问控制策略,以指定DU在访问某个数据文件时应获取的属性。在LDSS中,数据文件使用对称加密机制加密,数据加密的对称密钥也使用基于属性的加密(ABE)加密。访问控制策略嵌入在对称密钥的密文中。只有获得满足访问控制策略的属性密钥的DU才能解密密文并检索对称密钥。由于加密和解密都是计算密集型的,因此对移动用户来说是一个沉重的负担。为了减轻客户端移动设备上的开销,使用加密服务提供商(ESP)和解密服务提供商(DSP)。加密服务提供商和解密服务提供商都是半信任的。论文修改了传统的CP-ABE算法并设计LDSS-CP-ABE算法,以确保在将计算任务外包给ESP和DSP时的数据隐私。

 

了解LDSS-CP-ABE之前,我们先讲解LDSS-CP-ABE算法需要用到的相关知识。

双线性映射:

首先是数论的知识,我们小组了解的并不是很深入,只了解了大概。

定义函数  e: G_{0} \ast G_{0} = G_{1}

其中 G_{0} 是一个p阶的乘法循环群。g是 G_{0} 的生成元,p_{z}表示有限域。在有限域中的任何值都能用g^{t},t\in p_{z}来表示。举个例子,7阶的乘法循环群的有限域为\left \{ 1,2,3,4,5,6 \right \}。则g^{4} =\left ( \left (\left ( \left ( g \ast g \right )\mod 7 \right ) \ast g \mod 7 \right ) \ast g \mod 7 \right ).因为有求模的操作,所有最终值都会在有限域中。函数e是进行双线性映射,百度百科上的说法的将两个向量空间的值指向另一个向量空间,大概意思应该是有限域G_0到另一个有限域G_1的映射,G_1有和G_0一样的性质。双线性映射具有性质如下:

(1)双线性:\forall u,v\in G_0,\forall a,b\in Z_p,e\left(u^a,v^b\right) = e\left(u,v \right )^{ab}

(2)非退化性:如果g是G_0的一个成员,则e(g,g)是G_1的一个成员。

(3)可计算:\forall u,v \in G_0,e(u,v) 可以计算。

shamir密钥共享方案

第二是shamir密钥共享方案。它的功能是将密钥分成n份,但是并非切割,而是用算法分,在解密钥时只需要t个人即可解出密钥,t小于n。论文中是将对文本加密的对称密钥做密钥共享。假设密钥为 k \in Z_p。再进行如下步骤:

(1)随机选择t-1阶多项式 H(x) = a_{t-1}x^{t-1} + ... +a_1x^1 +a_0 其中a_0 = k

(2)从Z_p中选出n个非零x_i, 1\leq i\leq n

(3)将x_i代入多项式生成y_i

将这生成的n个(x,y)分给n个人,在不知道k的情况下,我们只需要t个人便可以求解出a_0,也就是密钥k。

解的方法有两种,一种矩阵法,另外就是文中用到的拉格朗日插值法。其中矩阵解法如下:

\begin{pmatrix} 1& x_0 & x_0^2 &... & x_0^{t-1} \\ 1& ... & ... &... &... \\ 1& x_t & ... &... & x_t^{t-1} \end{pmatrix} \begin{pmatrix} a_0\\ ...\\ a_{t-1} \end{pmatrix} = \begin{pmatrix} y_0\\ ...\\ y_{t-1} \end{pmatrix} \Rightarrow \begin{pmatrix} a_0\\ ...\\ a_{t-1} \end{pmatrix} = \begin{pmatrix} 1& x_0 & x_0^2 &... & x_0^{t-1} \\ 1& ... & ... &... &... \\ 1& x_t & ... &... & x_t^{t-1} \end{pmatrix} ^{-1} \begin{pmatrix} y_0\\ ...\\ y_{t-1} \end{pmatrix}

即可取得a_0 = k

拉格朗日插值法,就是将(x_i,y_i)代入

H(x) = \sum_{s=1}^{t}\prod_{j=1,j\neq s} ^{t} (x-{x_i}_j)/({x_i}_s-{x_i}_j) 即可完成求解。

访问控制树(x_i,y_i)

属性:数据所有者DO的属性集设为A= \left \{ A1,A2,...,An \right \},则DU的属性集A_u\in A,A_u\neq \phi。文中给的例子难以解释。

https://blog.csdn.net/ping802363/article/details/65639016 中的例子给了很好的解释。

  树图二

如上图所构造的访问树,能解密此访问树加密的源数据,数据访问者需满足的属性是:第一种:(“计算机学院” 且 “硕士” 且 “研二”)和 “教师”(此属性结合可能不存在,因为教师和研二不存在且关系) ,第二种:“教师” 和(“网络实验室” 或 “云实验室”),第三者:(“计算机学院” 且 “硕士” 且 “研二”)和(“网络实验室” 或 “云实验室”);否则无法访问。

假设我是第三种角色,我拥有属性密钥19 44 83,和14,通过前三个属性和最后一个属性我可以分别解出其父节点的密钥,再用其父节点的密钥解除第一层的密钥,也就是真正的密钥。
--------------------- 
作者:e小王同学V 
来源:CSDN 
原文:https://blog.csdn.net/ping802363/article/details/65639016 
版权声明:本文为博主原创文章,转载请附上博文链接!

 

论文中给出的例子如下,论文对CP-ABE的访问控制树进行了改进,添加了版本号以确保安全性:

LDSS的四个函数

由可信第三方(TA)调用函数Setup()以生成主密钥和公钥。

函数首先构造乘法循环有限域G_0,再用双线性映射函数生成有限域G_1,我认为他之所以要生成两个有限域是为了更加安全,在双线性的迪菲赫尔曼的假设中证明了它的安全性,但是这方面我不大了解。然后随机选取a,b作为主密钥,生成g^b,e(g,g)^a,也就是根据秘钥得到两个有限域中的值,在迪菲赫尔曼的数学离散对数问题中提到计算机无法从g^b的值推倒出b,特别是p是一个大素数1024bit时,是无法求得的。然后根据A中的每一个属性,随机选择t_i来计算x_i=g^{t_i},xi就相当于属性的key,同理计算出x_v = g^{t_v},最后第四步返回MK和PK。

 

TA用函数KeyGen( Au,MK )为用户生成属性键 。基于数据用户U的属性集Au和主密钥MK,为数据用户U生成属性密钥SKu。首先为每个用户选择不同的随机数r ,计算出一个有限域中的值SK_r = g^{(a+r)/b}。为用户的每个属性计算出SKa,其中进行了两成加密,第一层为属性进行ri加密,再添加一层g^r加密,ri是每个属性都不一样,r是每个用户都不同。同理计算出SKv。最后返回这些数的集合。

 

这是对对称密钥K加密的函数,需要PK和访问控制树T,最后生成CT密钥的密文。随机选择S,作为访问控制树根节点的X的加密值,K也是有限域里面的某个值,通过计算得到CTk,函数中的第二步在论文中表述为由DO执行,随机取得Sa和Sv,之后只将Sa和Ta发送给ESP,由ESP代理服务器帮忙计算出余下所有叶子节点的Si和CTa,(CT_a = \left \{ g^{S_i},g^r*X_i^{S_i} \right \}_{i=1}^{num})以此减少了移动端的计算开销,同时防止ESP计算出K。

 

解密函数是对密钥文本的解密。首先选取随机数t,执行Sk_u' = Sk_r' = SK_r^t,将得到的值传给DSP来帮助解析叶子节点和非叶子节点的秘密值和加密时对此属性设置的加密值的乘积。最后用户根据DSP解出的值计算出密钥K,便可通过K解密共享的文本。

这个解密函数主要由三部分构成,因为论文中没有进行详细的推倒,所有我就进行了一下推倒。

首先对叶子节点进行计算

Descryptleaf(CT_a,SK_u',z) = \frac{e(SK_a - 2,CT_a - 1)}{e(SK_a - 1,CT_a - 2)} = \frac{e(g^r*X_i^{r_i},g^{s_i})}{e(g^{r_i},X_i^{s_i})} = \frac{e(g^{r}*g^{​{r_i}{t_i}},g^{s_i})}{e(g^{r_i},g^{​{t_i}{s_i}})} = \frac{e(g,g)^{(r+{r_i}{t_i}){s_i}}}{e(g,g)^{​{r_i}{t_i}{s_i}}} = e(g,g)^{rs_i+t_ir_Is_i - r_it_is_i} = e(g,g)^{rs_i} = e(g,g)^{rq_z(0)}

在这里不能完全解出q_z(0),解出的是秘密值和加密时对此属性设置的加密值的乘积。有e(g,g)可以不让ESP知道每个叶子的问题,而有了r可以防止有不同属性值的用户串谋算出密码。

同理算出e(g,g)^{rq_v(0)}

然后对非叶子节点进行计算:

F_z = e(g,g)^{rq_z(0)}

X为某非叶子节点,Sx是X的叶子节点集合,i = index(x), S_x' = \left \{ index(z):z\in S_x \right \}   sizeof(S_x) = K_x

论文中引用了其他论文的东西,Lagrange coeffiecient \Delta i,S^{(x)} = \prod_{j\in s,j\neq i} \frac{x-j}{i-j}

 

F_x = \prod_{z\in S_x} F_z ^{\Delta i,s_x'(0)} = \prod_{z\in S_x} (e(g,g)^{rq_z(0)})^{\Delta i,s_x'(0)} = \prod_{z\in S_x} (e(g,g)^{rq_{parent(z)}(index(z))})^{\Delta i,s_x'(0)} = \prod_{z\in S_x} (e(g,g)^{rx(i)})^{\Delta i,s_x'(0)} = \prod_{z\in S_x} (e(g,g)^{rx(i)})^{\prod_{j\in s,j\neq i}\frac{x-j}{i-j}} = e(g,g)^{r\sum_{i=1}^{k_x} q_x(i) \prod_{j\in s,j\neq i}\frac{x-j}{i-j}} = e(g,g)^{rq_x(0)} = e(g,g)^{rs}

这里解出的值是秘密值和加密时对此属性设置的加密值的乘积,不能完全解出S。

最后可以K求值:

根据论文中给出的公式

\frac{CT_k-2}{e(CT_k -1,sk_r')^{\frac{1}{t}}/F_x} = \frac{k*e(g,g)^{as}}{e(g^{bs},g^{t(a+r)/b})^{\frac{1}{t}}/F_x} = \frac{k*e(g,g)^{as}}{e(g^{bs},g^{t(a+r)/b})^{\frac{1}{t}}/e(g,g)^{rs}} = \frac{k*e(g,g)^{as}}{e(g,g)^{bs*t(a+r)/b*\frac{1}{t}-rs}} = \frac{k*e(g,g)^{as}}{e(g,g)^{as}} = k

最终拥有属性的用户可以解出密钥。

属性描述字段

论文中才用属性描述字段来管理用户属性权限。

上表为DO属性描述字段,DO的属性描述字段由TA的setup函数生成。 TA将属性描述字段保存在DO-PK / MK信息表中,包含属性A与描述域X的对应关系。

上表为DU的属性描述字段,数据用户从TA获得其属性描述字段时,TA通过keygen函数为数据使用者生成属性键。 属性描述字段与属性键一起发送。 在DU的属性描述字段中,每个位是1或0.  1表示DU拥有属性,而0表示相反。 

上表为数据文件的属性描述字段,该表存储在DO上、,表示在数据文件的访问控制策略中分配了哪些属性。 “#”:表示用户已撤消此属性。

 

总的来说,流程有6个步骤:

系统初始化

(1)当数据所有者(DO)在TA上注册时,TA运行算法Setup()以生成公钥PK和主密钥MK。 PK被发送到DO,而MK则保留在TA本身。 (2)DO定义自己的属性集并将属性分配给其联系人。 所有这些信息都将发送给TA和云。 (3)TA和云接收信息并存储。

文件共享

(1)DO选择要上传的文件M,并使用对称密码机制(如AES,3DES算法)和对称密钥K对其进行加密,生成密文C. (2)DO为M分配访问控制策略,并使用函数Encryption()在ESP的帮助下加密K,生成K(CT)的密文。 (3)DO将C,CT和访问控制策略上传到云端。

用户授权

(1)DU登录系统,向TA发送授权请求 。 (2)TA接受授权请求并检查DU是否已登录。 (3)TA调用KeyGen()为DU生成属性键(SK)。 (4)TA将属性密钥中的属性描述字段与存储在数据库中的属性描述字段进行比较。 (5)对于描述字段中的每个不一致位,则TA不对该位执行任何操作。否则TA为DU生成相应的属性密钥。 (6)TA检查DU的每个属性键的版本。如果它与当前版本不同,则TA更新DU的相应属性键。

访问文件

(1)DU向云发送数据请求。 (2)云接收请求并检查DU是否满足访问的属性要求。 如果DU不能满足要求,则拒绝该请求,否则发送。 (3)DU接收密文,其中包括密码、数据文件的文本和对称密钥的密文 。然后DU执行Decryption(),在DSP的帮助下解密对称密钥的密文。 (4)DU使用对称密钥来解密数据文件的密文。

撤销权限

(1)DO通知TA和云,一个属性已从特定DU中撤销。 (2)TA和云更新数据库中DU的信息。 (3)DO标记数据文件的属性描述字段的对应位。

文档更新

(1)DO检查数据文件的描述字段中是否有任何位已设置为“#”。 (2)DO通知TA应该更新哪些属性。 应该更新的所有属性形成一个名为Anew的集合。 (3)TA为Anew中的每个属性选择G0中的新值来替换原始属性,并更新DO-PK / MK表中DO的描述字段,将相应的属性描述位更改为新值。 (4)TA向DO发送新PK,DO使用新PK加密数据文件。 (5)DO将相应数据文件的描述字段的“#”位设置为1。

 

最后,文章对论文中的使用进行了安全分析以及性能评估。实验结果是论文中很重要的一部分,从安全分析的角度来看,论文基于双线性迪菲赫尔曼假设,有足够的安全性。同时,对于可能串谋的用户的三种场景进行了分析,也证明了安全性。之后论文从时间、存储和通信三方面开销进行评估,同时与其他的CP-ABE算法进行比较,实验数据显示该算法在时间开销和存储开销方面有不错的效果,至于通信方面,因为开销较小可以忽略不计。

 

总结 作者在今后的工作中,将设计新的方法来确保数据的完整性。为了进一步挖掘移动云的潜力,还将研究如何对现有的数据共享方案进行密文检索。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值