一种面向雾计算的外包访问控制方法及其系统与流程

文档序号:12751469阅读:240来源:国知局
一种面向雾计算的外包访问控制方法及其系统与流程
本发明涉及云存储服务
技术领域
,尤其涉及一种面向雾计算的外包访问控制方法及其系统。
背景技术
:在云服务提供商中,由于采用数据远程托管技术,云服务提供商是数据的物理拥有者,与数据属主并不在同一个信任域中。云服务提供商管理着多个用户及其资源,当用户跨边界访问其它用户资源时,需要对数据进行加密和解密,而且在加密和解密阶段需要大量的计算开销,这样一来,需要数据属主端和用户端都提供强大的计算能力,以保障用户访问的顺畅。技术实现要素:有鉴于此,本发明的目的在于提供一种面向雾计算的外包访问控制方法及其系统,旨在解决降低现有的数据属主端和用户端所承担大量的计算负担的问题。本发明提出一种面向雾计算的外包访问控制方法,应用于包括密钥授权中心端、云服务提供商端、雾节点端、数据属主端以及用户端在内的面向雾计算的外包访问控制系统,其特征在于,所述方法包括:所述密钥授权中心端接收用户注册,并生成系统参数和生成每位用户的密钥;所述数据属主端定义与密文相关的访问结构树,生成与访问结构树无关的密文并发送给所述雾节点端;所述雾节点端生成与访问结构树相关的密文,整合全部密文并上传至所述云服务提供商端进行存储;所述用户端通过所述雾节点端访问存储在所述云服务提供商端的密文,并在所述用户端的属性集满足嵌入在密文中的访问结构树时,解密密文,恢复出明文。优选的,所述密钥授权中心端接收用户注册,并生成系统参数和生成每位用户的密钥的步骤具体包括:所述密钥授权中心端输入系统安全参数κ和全局性集合L={a1,…,am},选择一个阶为素数p、生成元为g的双线性群G0,e:G0×G0→GT表示双线性映射,随机选择两个元素α,β∈Zp,并选择h∈G0,对于任一aj∈L,所述密钥授权中心端选择一个随机数vj∈Zp并计算以及生成系统的公钥PK和主私钥MSK分别为:和MSK={α,gβ,{vj|aj∈L}};所述密钥授权中心端为每位用户选择两个随机数r,ε∈Zp,并为所述用户端生成一个关于属性集合S的密钥SK:优选的,所述数据属主端定义与密文相关的访问结构树,生成与访问结构树无关的密文并发送给所述雾节点端的步骤具体包括:所述数据属主端应用密钥为ck的对称加密算法对文件M进行加密,并将生成的密文记为Eck(M),然后应用非对称加密算法对ck进行加密,其中,所述数据属主端只生成与访问结构树无关的密文的算法:DO.Encrypt(PK,ck,T)→CT1,选择随机数s,s1∈Zp,计算s2=(s-s1)modp,再计算C=gs,生成与访问结构树无关的密文CT1并发给所述雾节点端:优选的,所述雾节点端生成与访问结构树相关的密文,整合全部密文并上传至所述云服务提供商端进行存储的步骤具体包括:由雾节点端生成与访问结构树相关的密文的算法Fog.Encrypt(PK,CT1)→CT为对访问结构树T中的每一个节点x,所述雾节点端首先为其选择一个多项式qx,从根节点R开始,这些节点的多项式采用自上而下的方式随机选择,对访问结构树T中的每个节点x,多项式qx的阶dx设置为dx=kx-1,其中kx表示门限值;从根节点R开始,所述雾节点端设置qR(0)=s1,接着随机选择dR个其它节点来完整的定义多项式qR,对于每个非根节点x,设定qx(0)=qparent(x)(index(x)),并随机选择dx个其它节点来完整的定义qx;在访问结构树T中,令X表示与叶子节点相对应的属性构成的集合,所述雾节点端计算与访问结构树相关的密文CT2:所述雾节点端整合CT1和CT2,得到完整的密文CT并上传至所述云服务提供商端进行存储。优选的,所述用户端通过所述雾节点端访问存储在所述云服务提供商端的密文,并在所述用户端的属性集满足嵌入在密文中的访问结构树时,解密密文,恢复出明文的步骤具体包括:所述用户端通过所述雾节点端访问存储在所述云服务提供商端的密文CT,并在所述用户端的属性集满足嵌入在密文CT中的访问结构树T时,通过运行解密算法解密密文CT,得到明文ck,其中,所述解密算法包含两个子算法:一个由雾节点端执行的算法Fog.Decrypt(PK,CT,SK′)→T和一个本地算法User.Decrypt(T,SK)→ck,然后用明文ck解密密文Eck(M)从而得到文件M。另一方面,本发明还提供一种面向雾计算的外包访问控制系统,所述系统包括密钥授权中心端、云服务提供商端、雾节点端、数据属主端以及用户端,其中,所述密钥授权中心端,用于接收用户注册,并生成系统参数和生成每位用户的密钥;所述数据属主端,用于定义与密文相关的访问结构树,生成与访问结构树无关的密文并发送给所述雾节点端;所述雾节点端,用于生成与访问结构树相关的密文,整合全部密文并上传至所述云服务提供商端进行存储;所述用户端,用于通过所述雾节点端访问存储在所述云服务提供商端的密文,并在所述用户端的属性集满足嵌入在密文中的访问结构树时,解密密文,恢复出明文。优选的,所述密钥授权中心端具体用于:输入系统安全参数κ和全局性集合L={a1,…,am},选择一个阶为素数p、生成元为g的双线性群G0,e:G0×G0→GT表示双线性映射,随机选择两个元素α,β∈Zp,并选择h∈G0,对于任一aj∈L,所述密钥授权中心端选择一个随机数vj∈Zp并计算以及生成系统的公钥PK和主私钥MSK分别为:和MSK={α,gβ,{vj|aj∈L}};为每位用户选择两个随机数r,ε∈Zp,并为所述用户端生成一个关于属性集合S的密钥SK:优选的,所述数据属主端具体用于:应用密钥为ck的对称加密算法对文件M进行加密,并将生成的密文记为Eck(M),然后应用非对称加密算法对ck进行加密,其中,所述数据属主端只生成与访问结构树无关的密文的算法:DO.Encrypt(PK,ck,T)→CT1,选择随机数s,s1∈Zp,计算s2=(s-s1)modp,再计算C=gs,生成与访问结构树无关的密文CT1并发给所述雾节点端:优选的,所述雾节点端具体用于:由雾节点端生成与访问结构树相关的密文的算法Fog.Encrypt(PK,CT1)→CT为对访问结构树T中的每一个节点x,所述雾节点端首先为其选择一个多项式qx,从根节点R开始,这些节点的多项式采用自上而下的方式随机选择,对访问结构树T中的每个节点x,多项式qx的阶dx设置为dx=kx-1,其中kx表示门限值;从根节点R开始,所述雾节点端设置qR(0)=s1,接着随机选择dR个其它节点来完整的定义多项式qR,对于每个非根节点x,设定qx(0)=qparent(x)(index(x)),并随机选择dx个其它节点来完整的定义qx;在访问结构树T中,令X表示与叶子节点相对应的属性构成的集合,所述雾节点端计算与访问结构树相关的密文CT2:所述雾节点端整合CT1和CT2,得到完整的密文CT并上传至所述云服务提供商端进行存储。优选的,所述用户端具体用于:通过所述雾节点端访问存储在所述云服务提供商端的密文CT,并在所述用户端的属性集满足嵌入在密文CT中的访问结构树T时,通过运行解密算法解密密文CT,得到明文ck,其中,所述解密算法包含两个子算法:一个由雾节点端执行的算法Fog.Decrypt(PK,CT,SK′)→T和一个本地算法User.Decrypt(T,SK)→ck,然后用明文ck解密密文Eck(M)从而得到文件M。本发明提供的技术方案由于雾节点端计算并生成与访问结构相关的密文,使得数据属主端加密的计算开销减少,大大降低了数据属主端的计算负担;在解密阶段,雾节点端承担了大量的解密工作,将解密得到的与访问结构树无关的密文发送给用户端,用户端只需执行一个双线性对操作和两个乘法就能成功解密,大大降低了用户的计算负担。附图说明图1为本发明一实施方式中面向雾计算的外包访问控制方法流程图;图2为本发明一实施方式中面向雾计算的外包访问控制系统10的内部结构示意图;图3为本发明提供的相关的符号说明图表;图4为本发明的技术方案与现有技术方案的效率分析对比图表。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。以下将对本发明所提供的一种面向雾计算的外包访问控制方法进行详细说明。请参阅图1,为本发明一实施方式中面向雾计算的外包访问控制方法流程图。在本实施方式中,面向雾计算的外包访问控制方法,应用于包括密钥授权中心(KeyAuthority,KA)端、云服务提供商(CloudServiceProvider,CSP)端、雾节点(FogNodes)端、数据属主(DataOwner,DO)端以及用户(Users)端在内的面向雾计算的外包访问控制系统。在步骤S1中,所述密钥授权中心端接收用户注册,并生成系统参数和生成每位用户的密钥。在本实施方式中,假设系统有m个属性,用L={a1,a2,…,am}表示,令e:G0×G0→GT表示一个双线性映射,其中G0是素数阶为p、生成元为g的双线性群,设H:{0,1}*→G0表示一个哈希函数,它将任一属性映射为G0中任一随机元,对拉格朗日系数在本实施方式中,所述密钥授权中心端接收用户注册,并生成系统参数和生成每位用户的密钥的步骤S1具体包括系统初始化子步骤和密钥生成子步骤:系统初始化子步骤Setup(1κ,L)→(PK,MSK).:所述密钥授权中心端输入系统安全参数κ和全局性集合L={a1,…,am},选择一个阶为素数p、生成元为g的双线性群G0,e:G0×G0→GT表示双线性映射,随机选择两个元素α,β∈Zp,并选择h∈G0,对于任一aj∈L,所述密钥授权中心端选择一个随机数vj∈Zp并计算以及生成系统的公钥PK和主私钥MSK分别为:和MSK={α,gβ,{vj|aj∈L}}。密钥生成子步骤KeyGen(MSK,S)→SK.:所述密钥授权中心端为每位用户选择两个随机数r,ε∈Zp,并为所述用户端生成一个关于属性集合S的密钥SK:在步骤S2中,所述数据属主端定义与密文相关的访问结构树,生成与访问结构树无关的密文并发送给所述雾节点端。在本实施方式中,将文件上传至云服务提供商端之前,数据属主端需要对文件M进行如下处理:(1)、数据属主端应用密钥为ck的对称加密算法对文件M进行加密,并将生成的密文记为Eck(M);(2)、数据属主端定义访问结构树T,然后应用非对称加密算法对ck进行加密,其中,所述数据属主端应用算法DO.Encrypt(PK,ck,T)→CT1生成与访问结构树无关的密文CT1。在本实施方式中,所述数据属主端定义与密文相关的访问结构树,生成与访问结构树无关的密文并发送给所述雾节点端的步骤S2具体包括:所述数据属主端应用密钥为ck的对称加密算法对文件M进行加密,并将生成的密文记为Eck(M),然后应用非对称加密算法对ck进行加密,其中,所述数据属主端只生成与访问结构树无关的密文的算法:DO.Encrypt(PK,ck,T)→CT1,选择随机数s,s1∈Zp,计算s2=(s-s1)modp,再计算C=gs,生成与访问结构树无关的密文CT1并发给所述雾节点端:在步骤S3中,所述雾节点端生成与访问结构树相关的密文,整合全部密文并上传至所述云服务提供商端进行存储。在本实施方式中,所述雾节点端生成与访问结构树相关的密文,整合全部密文并上传至所述云服务提供商端进行存储的步骤S3具体包括:由雾节点端生成与访问结构树相关的密文的算法Fog.Encrypt(PK,CT1)→CT为对访问结构树T中的每一个节点x,所述雾节点端首先为其选择一个多项式qx。从根节点R开始,这些节点的多项式采用自上而下的方式随机选择,对访问结构树T中的每个节点x,多项式qx的阶dx设置为dx=kx-1,其中kx表示门限值。从根节点R开始,所述雾节点端设置qR(0)=s1,接着随机选择dR个其它节点来完整的定义多项式qR。对于每个非根节点x,设定qx(0)=qparent(x)(index(x)),并随机选择dx个其它节点来完整的定义qx。在访问结构树TT中,令X表示与叶子节点相对应的属性构成的集合,所述雾节点端计算与访问结构树相关的密文CT2:所述雾节点端整合CT1和CT2,得到完整的密文CT并上传至所述云服务提供商端进行存储,其中,在步骤S4中,所述用户端通过所述雾节点端访问存储在所述云服务提供商端的密文,并在所述用户端的属性集满足嵌入在密文中的访问结构树时,解密密文,恢复出明文。在本实施方式中,所述用户端通过所述雾节点端访问存储在所述云服务提供商端的密文,并在所述用户端的属性集满足嵌入在密文中的访问结构树时,解密密文,恢复出明文的步骤S4具体包括:所述用户端通过所述雾节点端访问存储在所述云服务提供商端的密文CT,并在所述用户端的属性集满足嵌入在密文CT中的访问结构树T时,通过运行解密算法解密密文CT,得到明文ck,其中,所述解密算法包含两个子算法:一个由雾节点端执行的算法Fog.Decrypt(PK,CT,SK′)→T和一个本地算法User.Decrypt(T,SK)→ck,然后用明文ck解密密文Eck(M)从而得到文件M。在本实施方式中,雾节点端从云服务提供商端下载密文CT,同时接收来自用户端的部分密钥然后执行下述操作:Fog.Decrypt(PK,CT,SK′)→T.由于解密过程采用的是一个递归操作Fog.DecryptNode(CT,SK′,x),所以雾节点端需要定义该操作如下:(1)、如果x是叶子节点,令aj=att(x),如果则Fog.DecryptNode(CT,SK′,x)=null;如果aj∈S,那么Fog.DecryptNode(CT,SK′,x)=e(Dj,Cj)=e(gαrvj-1,gvjqx(0))=e(g,g)αrqx(0);]]>(2)、如果x不是叶子节点,那么Fog.DecryptNode(CT,SK′,x)被定义如下:对于节点x的所有子节点z,它执行Fz=Fog.DecryptNode(CT,SK′,z),设Sx是任意的kx个子节点z构成的集合,则Fz≠null,如果这样的集合不存在,那么Fz=null,否则,计算Fx如下:Fx=Πz∈SxFzΔj,Sx′(0)=Πz∈Sx(e(g,g)αrqz(0))Δj,Sx′(0)=Πz∈Sx(e(g,g)αrqparent(z)(index(z)))Δj,Sx′(0)=Πz∈Sx(e(g,g)αrqx(j))Δj,Sx′(0)=e(g,g)αrqx(0);]]>其中,j=index(z),S′x={index(z):z∈Sx}。然后,通过调用访问结构树T根节点R的函数Fog.DecryptNode(CT,SK′,R),雾节点端定义解密算法的操作如下:如果用户属性集S满足T,则雾节点端可计算得到接着,计算和B=FR·A=e(g,g)αrs。最后,雾节点端将解密得到的与访问结构树无关的密文发送给用户端。用户端接收与访问结构树无关的密文之后,运行本地算法User.Decrypt(T,SK)→ck以获得明文ck。User.Decrypt(T,SK)→ck.用户输入T和密钥SK,计算得到明文ck。最后用户用ck解密密文Eck(M)恢复出明文M。本发明提供的一种面向雾计算的外包访问控制方法,由于雾节点端计算并生成与访问结构相关的密文,使得数据属主端加密的计算开销减少,大大降低了数据属主端的计算负担;在解密阶段,雾节点端承担了大量的解密工作,将解密得到的与访问结构树无关的密文发送给用户端,用户端只需执行一个双线性对操作和两个乘法就能成功解密,大大降低了用户的计算负担。请参阅图2,所示为本发明一实施方式中面向雾计算的外包访问控制系统10的结构示意图。在本实施方式中,面向雾计算的外包访问控制系统10主要包括密钥授权中心端11、云服务提供商端12、雾节点端13、数据属主端14以及用户端15。密钥授权中心端11,用于接收用户注册,并生成系统参数和生成每位用户的密钥。在本实施方式中,所述密钥授权中心端11具体用于:输入系统安全参数κ和全局性集合L={a1,…,am},选择一个阶为素数p、生成元为g的双线性群G0,e:G0×G0→GT表示双线性映射,随机选择两个元素α,β∈Zp,并选择h∈G0,对于任一aj∈L,所述密钥授权中心端选择一个随机数vj∈Zp并计算以及生成系统的公钥PK和主私钥MSK分别为:和MSK={α,gβ,{vj|aj∈L}}。为每位用户选择两个随机数r,ε∈Zp,并为所述用户端生成一个关于属性集合S的密钥SK:数据属主端14,用于定义与密文相关的访问结构树,生成与访问结构树无关的密文并发送给所述雾节点端。在本实施方式中,所述数据属主端14具体用于:应用密钥为ck的对称加密算法对文件M进行加密,并将生成的密文记为Eck(M),然后应用非对称加密算法对ck进行加密,其中,所述数据属主端只生成与访问结构树无关的密文的算法:DO.Encrypt(PK,ck,T)→CT1,选择随机数s,s1∈Zp,计算s2=(s-s1)modp,再计算C=gs,生成与访问结构树无关的密文CT1并发给所述雾节点端:雾节点端13,用于生成与访问结构树相关的密文,整合全部密文并上传至所述云服务提供商端进行存储。在本实施方式中,所述雾节点端13具体用于:由雾节点端生成与访问结构树相关的密文的算法Fog.Encrypt(PK,CT1)→CT为对访问结构树T中的每一个节点x,所述雾节点端首先为其选择一个多项式qx。从根节点R开始,这些节点的多项式采用自上而下的方式随机选择,对访问结构树TT中的每个节点x,多项式qx的阶dx设置为dx=kx-1,其中kx表示门限值。从根节点R开始,所述雾节点端设置qR(0)=s1,接着随机选择dR个其它节点来完整的定义多项式qR。对于每个非根节点x,设定qx(0)=qparent(x)(index(x)),并随机选择dx个其它节点来完整的定义qx。在访问结构树T中,令X表示与叶子节点相对应的属性构成的集合,所述雾节点端计算与访问结构树相关的密文CT2:所述雾节点端整合CT1和CT2,得到完整的密文CT并上传至所述云服务提供商端进行存储。用户端15,用于通过所述雾节点端访问存储在所述云服务提供商端的密文,并在所述用户端的属性集满足嵌入在密文中的访问结构树时,解密密文,恢复出明文。在本实施方式中,所述用户端15具体用于:通过所述雾节点端访问存储在所述云服务提供商端的密文CT,并在所述用户端的属性集满足嵌入在密文CT中的访问结构树T时,通过运行解密算法解密密文CT,得到明文ck,其中,所述解密算法包含两个子算法:一个由雾节点端执行的算法Fog.Decrypt(PK,CT,SK′)→T和一个本地算法User.Decrypt(T,SK)→ck,然后用明文ck解密密文Eck(M)从而得到文件M。在本实施方式中,雾节点端从云服务提供商端下载密文CT,同时接收来自用户端的部分密钥然后执行下述操作:Fog.Decrypt(PK,CT,SK′)→T.由于解密过程采用的是一个递归操作Fog.DecryptNode(CT,SK′,x),所以雾节点端需要定义该操作如下:(1)、如果x是叶子节点,令aj=att(x),如果则Fog.DecryptNode(CT,SK′,x)=null;如果aj∈S,那么Fog.DecryptNode(CT,SK′,x)=e(Dj,Cj)=e(gαrvj-1,gvjqx(0))=e(g,g)αrqx(0);]]>(2)、如果x不是叶子节点,那么Fog.DecryptNode(CT,SK′,x)被定义如下:对于节点x的所有子节点z,它执行Fz=Fog.DecryptNode(CT,SK′,z),设Sx是任意的kx个子节点z构成的集合,则Fz≠null,如果这样的集合不存在,那么Fz=null,否则,计算Fx如下:Fx=Πz∈SxFzΔj,Sx′(0)=Πz∈Sx(e(g,g)αrqz(0))Δj,Sx′(0)=Πz∈Sx(e(g,g)αrqparent(z)(index(z)))Δj,Sx′(0)=Πz∈Sx(e(g,g)αrqx(j))Δj,Sx′(0)=e(g,g)αrqx(0);]]>其中,j=index(z),S′x={index(z):z∈Sx}。然后,通过调用访问结构树T根节点R的函数Fog.DecryptNode(CT,SK′,R),雾节点端定义解密算法的操作如下:如果用户属性集S满足T,则雾节点端可计算得到接着,计算和B=FR·A=e(g,g)αrs。最后,雾节点端将解密得到的与访问结构树无关的密文发送给用户端。用户端接收与访问结构树无关的密文之后,运行本地算法User.Decrypt(T,SK)→ck以获得明文ck。User.Decrypt(T,SK)→ck.用户输入T和密钥SK,计算得到明文ck。最后用户用ck解密密文Eck(M)恢复出明文M。本发明提供的一种面向雾计算的外包访问控制系统10,由于雾节点端计算并生成与访问结构相关的密文,使得数据属主端加密的计算开销减少,大大降低了数据属主端的计算负担;在解密阶段,雾节点端承担了大量的解密工作,将解密得到的与访问结构树无关的密文发送给用户端,用户端只需执行一个双线性对操作和两个乘法就能成功解密,大大降低了用户的计算负担。为了评估方案中密钥生成、加密和解密的计算开销,本发明首先在图3中给出了相关的符号说明,随后图4给出了本发明的技术方案与现有技术方案的效率分析。从图4可看出,本发明的技术方案的密钥生成阶段的计算开销比现有技术方案减少了将近一半。在加密阶段,本发明的技术方案由于雾节点端计算并生成与访问结构相关的密文,使得数据属主端加密的计算开销减少为3G0+2GT,大大降低了数据属主端的计算负担;在解密阶段,雾节点端承担了大量的解密工作,将解密得到的与访问结构树无关的密文发送给用户端,用户端只需执行一个双线性对操作和两个乘法就能成功解密,大大降低了用户端的计算负担。而现有技术方案的加密和解密阶段的计算开销明显比本发明的技术方案的大。因此,本发明提供的技术方案,由于雾节点端计算并生成与访问结构相关的密文,使得数据属主端加密的计算开销减少,大大降低了数据属主端的计算负担;在解密阶段,雾节点端承担了大量的解密工作,将解密得到的与访问结构树无关的密文发送给用户端,用户端只需执行一个双线性对操作和两个乘法就能成功解密,大大降低了用户的计算负担。另外,本领域普通技术人员可以理解实现上述各实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,相应的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如ROM/RAM、磁盘或光盘等。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1