本发明属于加密领域,特别涉及雾计算中可撤销的属性基外包加密方法。
背景技术:
近年来,由于移动物联网设备数量的爆发式增长,海量的数据、设备的移动性以及实时处理的要求对云计算提出了严峻的挑战。由于云计算的静态条件以及云服务器与终端用户之间的物理距离限制,云计算不适用于范围广泛的移动应用,移动应用程序的数据处理必须在地理上分布的数据中心进行,为了解决这些问题,雾计算技术应运而生。
雾计算是一种极具研究前景的新型计算范式,它将云计算扩展到网络边缘,可以实现云计算和物联网设备之间的平滑融合,其主要特点如下:低时延、位置感知、支持终端设备的移动性、支持物联网设备的异构性以及卸载云计算。随着物联网设备的增长,数以亿计的海量数据对云计算提出了严峻的要求,雾计算可以处理一些低计算要求的数据,因而减缓了云计算的任务处理压力,满足了移动应用实时处理的要求。
然而,由于雾计算是云计算的重要扩展,因此它也继承了云计算的许多安全问题和隐私挑战。其中的主要问题如下:
(1)云计算中传统的数据加密技术不能直接应用到雾计算;
(2)传统的数据加密技术运算复杂,不适应于雾计算中计算资源有限的物联网设备;
(3)传统的访问控制技术粒度太粗,不适应于雾计算中终端设备多样性的特点。
基于属性的加密技术是实现细粒度访问控制的有效的手段。加密者不需要知道用户的具体身份信息,只需在加密时将属性或访问结构嵌入到密文中,解密者进行解密时,只有当用户的属性满足定义的访问结构时才能解密成功,由此实现了对密文细粒度的访问控制。
然而在实际应用中,常常涉及用户权限变更和属性到期的情况,因此在基于属性的加密机制中实现即时属性撤销是一个亟待解决的问题。
同时,由于物联网中终端设备计算资源有限,计算效率有待提高。雾节点是云的边缘,更接近最终用户,是外包代理的最佳选择之一,可用于进行大量计算,以减少资源受限设备上所需的计算开销。
综上所述,在雾计算环境中,基于属性的加密技术存在属性撤销困难和无法高效外包的问题,实现一种支持撤销和外包的基于属性的加密方案对于物联网实际应用具有重要价值。
技术实现要素:
针对现有技术存在的问题,本发明提供了一种雾计算中支持外包和撤销的属性基加密方案。首先,本发明提供了一种基于“云-雾-终端”的三层系统模型,将传统云计算中的属性加密机制引入到雾计算中,保证了数据传输的机密性,实现了雾节点的身份验证和访问控制。由于用户属性动态变化的问题,本发明提供了一种基于密文策略的属性撤销机制,通过属性组密钥,实现属性的即时撤销,有效保证方案的可用性。最后,本发明通过将部分加解密运算外包给雾节点,减轻了终端设备的计算负担,提高了系统的计算效率。所述属性基加密方法包括:
(1)初始化:属性中心根据随机生成的安全参数k生成系统公钥pk和主密钥mk;
(2)密钥生成:属性中心生成私钥sk、外包私钥skout和属性组密钥agk,私钥sk发送给用户,外包私钥skout发送给雾节点,属性组密钥agk发送给云服务管理器;
(3)加密:雾节点首先执行外包加密,产生外包加密密文
(4)重加密:云服务管理器使用属性组密钥agk对密文进行重新加密,得到密文ct′;
(5)解密:雾节点先将密文ct′进行解密,然后将外包解密密文
(6)属性撤销:当有属性撤销时需要更新密文和属性组密钥,没有则不需要执行此步骤。
附图说明
图1是本发明“云-雾-终端”的三层系统模型
图2是本发明的kek树
图3是本发明仿真实验的计算开销结果图
图4是本发明仿真实验的通信开销结果图
具体实施方式
为了使本发明的技术优点更加清楚,下面结合附图对本发明进一步详细说明。
本发明包括六个步骤:初始化、密钥生成、加密、重加密、解密和属性撤销,具体算法流程如下:
(1)初始化:
首先属性中心生成公钥pk和主密钥mk分别为:
pk=(g,gt,g,h,gα,gβ,hβ,e(g,g)αβ,h)(1)
mk=(α,β)(2)
其中g是素数p阶加法循环群,g是g的生成元,gt是素数p阶乘法循环群,e:g*g→gt是双线性映射,h∈g是随机群元素,h表示将集合{0,1}*映射到p阶整数环zp的哈希函数,α,β∈zp是随机数。
(2)密钥生成:
密钥生成算法包括属性密钥生成算法和属性组密钥生成算法两部分,其具体流程如下。
①属性密钥生成:
属性中心生成私钥sk和外包私钥skout分别为:
sk=(d=g(a+γ)β)(3)
其中g是素数p阶加法循环群g的生成元。α,β∈zp是随机数,zp是p阶整数环。γ∈zp是随机数,这是分配给每个用户的唯一秘密数。d记为私钥sk的第一密钥。
其中h∈g是随机群元素,ε∈zp是随机数。h表示将集合{0,1}*映射到p阶整数环zp的哈希函数。s是用户的属性集,λj∈s是选自属性集的单个属性,rj是为每个属性选择的随机数。d1、d2、dj和d‘j分别记为外包私钥skout的第一外包密钥、第二外包密钥、第三外包密钥、第四外包密钥。
②属性组密钥生成:
首先,云服务管理器为全体用户设置二叉kek树如附图2所示,kek树被用于将属性组密钥分发给用户,kek树的具体构建过程如下:
kek树中的每个节点vi被设置一个随机数keki∈zp,zp是p阶整数环,每个用户ut被分配给树的叶节点。
每个用户ut接收到从其叶节点到树的根节点的路径密钥patht。例如,u2的路径密钥path2={kek9,kek4,kek2,kek1}。
然后,选择随机数
(3)加密:
加密算法包括雾节点加密算法和数据拥有者加密算法两部分。首先,数据所有者定义一个访问策略树ta,并将ta发送给雾节点,接下来雾节点进行加密。
①雾节点加密:
从根节点r开始,对于访问策略树ta中的每个节点x,雾节点从上到下选择一个多项式px。将多项式px的最高次数dx设置为比该节点的阈值kx减1,即dx=kx-1,其中阈值为恢复该节点秘密值最少满足的属性的个数。然后从根节点r开始,选择一个随机数s∈zp作为其秘密值,zp是p阶整数环,令根节点r上多项式的常数项pr(0)=s。对于除根节点之外的其他节点x,设置其常数项px(0)=pparent(x)(index(x)),其中parent(x)表示节点x的父节点,index(x)表示节点x的索引。最后雾节点输出密文
其中ta是访问策略树,g是素数p阶加法循环群g的生成元,h∈g是随机群元素。β∈zp是随机数,随机数s∈zp是访问策略树中根结点r对应多项式的常数项,zp是p阶整数环。h表示将集合{0,1}*映射到p阶整数环zp的哈希函数。y为访问策略树ta中的叶节点集,y为叶节点集y中的节点,λy为对应于y的属性,py(0)是节点y对应多项式的常数项。c′3表示第三外包密文,c′4表示第四外包密文,c5表示第五密文,cy和c′y表示第五密文的两个参数。
雾节点将
②数据拥有者加密:
数据所有者接收到密文
其中ta是访问策略树,g是素数p阶加法循环群g的生成元,e:g*g→gt是双线性映射,α,β,t∈zp是随机数,随机数s∈zp是访问策略树中根结点r对应多项式的常数项,zp是p阶整数环,h∈g是随机群元素。h表示将集合{0,1}*映射到p阶整数环zp的哈希函数。y为访问策略树ta中的叶节点集,y为叶节点集y中的节点,λy为对应于y的属性,py(0)是节点y对应多项式的常数项。c表示主密文,c1表示第一密文,c2表示第二密文,c3表示第三密文,c4表示第四密文,c5表示第五密文,cy和c′y表示第五密文的两个参数。
(4)重加密:
云服务管理器使用属性组密钥
其中ta是访问策略树,g是素数p阶加法循环群g的生成元,e:g*g→gt是双线性映射,α,β,t∈zp是随机数,随机数s∈zp是访问策略树中根结点r对应多项式的常数项,zp是p阶整数环,h∈g是随机群元素。h表示将集合{0,1}*映射到p阶整数环zp的哈希函数。y为访问策略树ta中的叶节点集,y为叶节点集y中的节点,λy为对应于y的属性,py(0)是节点y对应多项式的常数项,
然后在kek树中,选择可以覆盖与用户集gi关联的所有叶节点的最小根节点集合,这一根节点集合对应的kek即为kek(gi)。
接着生成标头信息如下:
其中y为访问策略树ta中的叶节点集,y为叶节点集y中的节点,λy为对应于y的每个属性。e表示对称加密算法,k∈kek(gy)是其对称加密的密钥,
(5)解密:
解密算法包括雾节点解密算法和用户解密算法两部分。
①雾节点解密:
雾节点从云服务器下载密文后,首先用路径密钥与最小根结点覆盖集的交集可以解密标头信息得到属性组密钥,然后更新其私钥如下:
其中g是素数p阶加法循环群g的生成元,h∈g是随机群元素,γ∈zp是随机数,这是分配给每个用户的唯一秘密数,ε,α,β∈zp是随机数,zp是p阶整数环。h表示将集合{0,1}*映射到p阶整数环zp的哈希函数。s是用户的属性集,λj∈s是选自属性集的单个属性,rj是为每个属性选择的随机数,
然后运行decryptnode算法,这是一种递归算法,用于解密节点的秘密值。该算法以访问策略ta中的节点x,密文ct′和外包密钥sk‘out作为输入。
如果节点x是叶节点,若是x对应属性λx∈s,计算x对应的秘密值:
其中dx、d″x是更新后外包私钥sk″的第三外包密钥和第四更新外包密钥,cx、c″x是密文ct″的第五重加密密文的两个参数。g是素数p阶加法循环群g的生成元,gt是素数p阶乘法循环群,e:g*g→gt是双线性映射。γ,β∈zp是随机数,zp是p阶整数环,h表示将集合{0,1}*映射到zp的哈希函数,λx为对应于节点x的属性,rx是节点x对应的随机数,px(0)是节点x对应多项式的常数项,
若是
如果节点x是非叶节点,如果属性集s满足访问策略ta,计算节点x对应的秘密值fx:
其中z是节点x的孩子节点,sx是节点x的孩子节点集合,decryptnode(ct′,sk′out,z)的结果记为fz,表示节点z对应的秘密值。算子
对于非叶子节点均可按照上述方式解密出秘密值,在根节点处解密出整个树所隐藏的秘密值。r是访问策略树的根结点,计算整个树的秘密值f:
其中g是素数p阶加法循环群g的生成元,gt是素数p阶乘法循环群,e:g*g→gt是双线性映射。γ,β∈zp是随机数,zp是p阶整数环,pr(0)是节点r对应多项式的常数项即s。
然后,雾节点计算密钥相关中间量b:
其中d1、d2是外包私钥sk′out的第一外包密钥和第二外包密钥,c3、c4是密文gt′的第三密文和第四密文。g是素数p阶加法循环群g的生成元,gt是素数p阶乘法循环群,e:g*g→gt是双线性映射。γ∈zp是随机数,这是分配给每个用户的唯一秘密数,ε,β,t∈zp是随机数,随机数s∈zp是访问策略树中根结点r对应多项式的常数项,h∈g是随机群元素。
接着计算密钥相关量a:
其中g是素数p阶加法循环群g的生成元,gt是素数p阶乘法循环群,e:g*g→gt是双线性映射。γ∈zp是随机数,这是分配给每个用户的唯一秘密数,β,t∈zp是随机数,随机数s∈zp是访问策略树中根结点r对应多项式的常数项。
最后,雾节点发送密文
②用户解密:
用户从雾节点接收到密文
其中g1、c2是密文ct′的第一密文和第二密文,d是用户私钥sk的第一密钥,a是部分解密密文
最终,应用对称解密算法可以解密出明文m。
(6)属性撤销:
在收到某些属性组的成员资格更改请求后,属性中心通知云服务管理器该事件,并将更新的属性组成员资格列表发送给它。当云服务管理器从属性中心收到成员资格更改通知时,它会对受成员资格变更影响的属性组密钥进行更改。假设属性λy变更,选择随机数
ta是访问策略树,g是素数p阶加法循环群g的生成元,e:g*g→gt是双线性映射,h表示将集合{0,1}*映射到p阶整数环zp的哈希函数。α,β,t∈zp是随机数,随机数s∈zp是访问策略树中根结点r对应多项式的常数项,h∈g是随机群元素。y为访问策略树ta中的叶节点集,y为叶节点集y中的节点,λy为对应于y的属性,py(0)是节点y对应多项式的常数项,
标头信息更新如下:
其中y为访问策略树ta中的叶节点集,y为叶节点集y中的节点,λy为对应于y的每个属性。e表示对称加密算法,k∈kek(gi)是其对称加密的密钥,
此属性撤销过程可确保细粒度的用户级访问控制,例如每个属性组中能够实现立即用户吊销。此外,它也可以通过在hdr中选择性地发送更新的属性组密钥,实现立即属性撤销。因此撤销可以在属性级别而不是系统级别完成。
通过以下仿真实验进一步说明本发明的优势:
1.计算开销
(1)实验条件
本实验在ubuntu16.04操作系统下进行,使用了处理器为2.40ghz,intelcorei5的计算机,利用charm加密库来包装基于斯坦福配对的密码学(pbc)。charm加密库是一个开源库,执行基于配对的密码系统的核心数学函数。该仿真实验是在具有对称双线性对的(ss512)椭圆曲线y2=x3+x下对提出的算法和现有算法进行分析比较,并从10到50中选择属性的数量。
(2)实验结果与分析
我们比较了本发明和hur的方案的计算时间,结果如附图3所示。通过实验结果可以看出,由于本方案将部分加解密操作外包给雾节点,加解密算法的运行时间是常数级别,与访问策略中的属性个数无关,而在hur的方案中,其运行时间与访问策略中的属性个数呈现线性递增关系。本发明算法的计算开销总体较低,优于hur的方案,更适合于终端计算资源有限的设备,满足物联网环境的应用需求。
2.通信开销
(1)实验条件
在本实验中,以适应雾计算的5g场景为依据,其下行传输速率v11为20gb/s,上行传输速率v12为10gb/s,传播速率v2为3*108m/s,传播距离s为100~300米,假定数据大小l为1mb~100mb,所以加密和解密总的网络通信时间t与数据大小l和传播距离s的关系如附图4所示。
(2)实验结果与分析
enc算法的通信时间与数据大小和传播距离的关系如图4(a)所示。在enc算法中,雾节点需要和数据拥有者进行两次数据流通信。在第一次通信时,雾节点将部分加密密文发送给数据拥有者,在第二次通信时,数据拥有者将完整的密文发送给雾节点,所以其总的通信时间为
总体而言,由于本发明将部分复杂的加解密计算外包给雾节点,大大提高了计算效率,证明了本发明的可用性和高效性。