一种用于雾计算的细粒度可搜索加密方法与流程

文档序号:14655504发布日期:2018-06-12 03:11阅读:290来源:国知局

本发明属于信息安全技术领域,具体涉及密文策略的属性加密技术和可搜索加密技术,可 用于在雾计算背景下实现细粒度的可搜索加密。



背景技术:

物联网是一种能将物体连接至互联网使其更加智能的技术,随着联网设备不断的增加,产 生的海量数据可以通过云计算进行存储和计算,将终端用户从繁重的设备维护和数据管理中解 放出来。然而,传统的云计算存在着网络架构移动性差和时延高等问题,这给物联网的发展带 来了很大的挑战。雾计算将云计算扩展到网络的边缘,雾节点作为物联网和云计算的中间媒介, 能够解决物联网和云计算结合引起的终端节点请求延时、云服务器存储和计算负担过重、网络 传输带宽压力过大等问题。因此,雾计算具有广阔的应用前景。

然而,雾计算在带来便利的同时也给数据的安全带来了新的挑战,当敏感数据以明文的形 式外包给雾节点和云服务器时,数据脱离了数据拥有者的直接物理控制,可能会遭受到恶意攻 击而带来严峻的安全隐患。通常的解决办法是在上传数据前对数据进行加密,进一步地,为实 现细粒度的访问控制,数据拥有者希望只有满足条件的终端用户才能解密密文,基于身份的加 密技术,密钥策略的属性加密技术以及密文策略的属性加密技术相继被提出。尽管加密一定程 度上保证了数据的机密性,却也导致传统的明文检索技术无法应用在密文上。可搜索加密技术 提出的让终端用户可以在密文上进行关键字查询,不仅保证了数据的安全,而且可以快速定位 到数据用户感兴趣文档。为此,通过结合密文策略的属性加密技术和可搜索加密技术提出的密 文策略的可搜索加密技术不仅实现了高效的密文检索,而且支持细粒度的访问控制。

现有的密文策略的可搜索加密技术的计算和存储开销与访问策略的复杂度成正比,这给计 算资源有限的物联网设备带来了很大的局限性。通过建立云-雾-终端用户体系结构,让雾计算 中每个雾节点作为代理分担大量计算,让资源有限的物联网设备可以快速地生成陷门和解密密 文。因此,如何在雾计算背景下设计实现轻量级的细粒度可搜索加密方法成为了急需解决的关 键问题。



技术实现要素:

针对现有技术存在的不足,本发明利用密文策略的属性加密技术和可搜索加密技术,提出 了一种用于雾计算的细粒度可搜索加密方法。本发明建立云-雾-终端用户体系结构,并利用密 文策略的属性加密技术和可搜索加密技术,让雾节点作为代理分担终端用户的计算负担,终端 用户可以快速地生成陷门和解密密文,从而实现了轻量级的可搜索加密,同时支持细粒度访问 控制,只有合法的数据用户才能进行密文检索,在实际场景中具有广阔的应用前景。

为了实现上述目的,本发明采用的技术方案是,一种用于雾计算的细粒度可搜索加密方法, 包括以下步骤:

步骤一,系统初始化:密钥生成中心KGC根据安全参数k,生成公共参数pm和主密钥msk;

步骤二,密钥生成:密钥生成中心KGC为雾节点生成雾节点公钥PKFN,雾节点数据库相 关公钥和授权的终端用户列表UL,当新的终端用户加入终端用户列表UL时,密钥生成 中心KGC根据终端用户的身份信息IDEU和终端用户属性集生成终端用户公钥 PKEU和终端用户数据库相关公钥并为终端用户和雾节点分成生成终端用户私钥SKEU和雾节点私钥SKFN,并将终端用户私钥SKEU发送给终端用户,将雾节点私钥SKFN发送给雾 节点;

步骤三,加密阶段:数据拥有者利用对称密钥集{sτ}将明文文档集F={F1,…,Fτ}加密成密 文文档集C={C1,…,Cτ},数据拥有者建立访问控制结构P,并将访问控制结构P发送给雾节 点,雾节点和终端用户通过交互,将对称密钥集{sτ}进行加密生成密文密钥集数据拥 有者利用访问控制结构P和关键字集W生成索引集{Iτ},并将密文密钥集索引集{Iτ}和 密文文档集C={C1,…,Cτ}通过雾节点发送给云服务器;

步骤四,陷门生成:当终端用户想要查询关键字W'时,雾节点验证终端用户是否在授权 用户列表UL中,若不在,终止操作,否则,雾节点和终端用户通过交互生成陷门TW',并将陷 门TW'和终端用户属性集S发送给云服务器;

步骤五,密文搜索:云服务器首先验证终端用户属性集S是否满足访问控制结构P,如果 不满足,终止操作;否则,云服务器将陷门Tw'和索引集{Iτ}进行匹配,将匹配成功的密文集 C'={Cπ}和相应的密文密钥集发送给雾节点;

步骤六,密文解密:雾节点和终端用户通过交互解密返回的密文密钥集得到明文 的对称密钥集{sπ},根据对称密钥集{sπ}解密返回的密文集C'={Cπ}得到明文集F'={Fπ}。

进一步的,所述步骤一中,公共参数

主密钥msk=(x,y,{ti}i∈[1,n]);

其中G是p阶加法循环群,g0,g1是G的两个不同的生成元,GT是p阶乘法循环群,e是双 线性映射G×G→GT,H1表示将集合{0,1}*映射到p阶整数环Zp的哈希函数,x表示第一随机 数:x∈Zp,y表示第二随机数:y∈Zp,ti表示第三随机数:ti∈Zp,i∈[1,n]表示i的取值范 围,系统属性集U={att1,…,attn},attn表示第n个系统属性。

进一步的,所述步骤二具体包括以下步骤:

第一步,密钥生成中心KGC为雾节点生成雾节点公钥PKFN,雾节点数据库相关公钥和授权的终端用户列表UL,其中雾节点公钥PKFN=e(g0,g0)yr,雾节点数据库相关公钥 r表示第四随机数,r∈Zp,s表示系统公共的随机数,s∈Zp;

第二步,当新的终端用户加入终端用户列表UL时,密钥生成中心KGC根据终端用户的身 份信息IDEU和终端用户属性集生成终端用户公钥PKEU和终端用户数据库相关 公钥其中终端用户公钥PKEU=e(g0,g0)yu,终端用户数据库相关公钥 u表示第五随机数:u∈Zp,表示数据用户的第j个属性, j∈[1,m]表示j的取值范围;

第三步,密钥生成中心KGC为终端用户生成终端用户私钥SKEU,为雾节点生成雾节点私 钥SKFN,其中终端用户私钥SKEU=(K0,{Kj,1}j∈[1,m],u),雾节点私钥 SKFN=(K1,K2,K3,{Kj,2,Kj,3}j∈[1,m],r),K0表示第一私钥分量:K1表示第二私钥分 量:K2表示第三私钥分量:K3表示第四私钥分量:aj表 示第六随机数,aj∈Zp,Kj,1表示第五私钥分量:映射ρ1表示将数据用户的属 性集S中的属性映射到对应系统属性集U的属性,即Kj,2表示第六私钥分量: Kj,3表示第七私钥分量:bj表示第七随机数,bj∈Zp,v表 示第八随机数,v∈Zp;

第四步,密钥生成中心KGC将终端用户私钥SKEU发送给终端用户,将雾节点私钥SKFN发 送给雾节点。

进一步的,所述步骤三具体包括以下步骤:

第一步,数据拥有者利用对称密钥集{sτ}将明文文档集F={F1,…,Fτ}加密成密文文档集 C={C1,…,Cτ},数据拥有者建立访问控制结构P,并将访问控制结构P发送给某个选定的雾 节点;

第二步,访问控制结构P是一种树形结构,树中的每个节点包括多项式和门限值,雾节 点为根节点r选取多项式qr(v)和门限值kr(v),其中v是自变量,当自变量v=0时,qr(0)=θ, θ表示第九随机数,θ∈Zp,门限值kr(v)的范围1≤kr(v)≤numr,numr表示根节点r子节点个 数;

第三步,为非叶子节点x选取多项式qx(v)和门限值kx(v),多项式qx(v)满足以下条件:

dx(v)=kx(v)-1,

qx(0)=qparent(x)(index(x));

其中dx(v)表示qx(v)的多项式次数,且当自变量v=0时,qx(0)=qparent(x)(index(x)), parent(x)表示节点x的父节点,index(x)表示parent(x)子节点的顺序,门限值kx(v)的范围 1≤kx(v)≤numx,numx表示节点x子节点个数;

第四步,为叶子节点l选取多项式ql(v)和门限值kl(v),其中多项式ql(v)=S,门限值 kl(v)=1;

第五步,雾节点加密对称密钥sτ得到临时密文密钥CTτ,并将临时密文密钥CTτ发送给数 据拥有者,其中临时密文密钥CTτ=(CT1,CT2,{CTl}l∈L),CT1表示第一临时密文密钥: CT2表示第二临时密文密钥:CTl表示第三临时密文密钥:L表示叶 子节点集合;

第六步,数据拥有者加密临时密文密钥CTτ得到密文密钥其中 CT'1表示第一密文密钥:CT'2表示第二密 文密钥:CT3表示第三密文密钥:CCτ表示第四密文密钥: CCτ=sτ·e(g0,g0)yh,h表示第十随机数,h∈Zp;

第七步,明文文档Fτ中包含关键字集W,数据拥有者为明文文档Fτ建立密文索引Iτ, Iτ=(I0,I1,{Il,1,Il,2}l∈L),其中I0表示第一索引分量,I0=e(g0,g0)ys,I1表示第二索引分量, Il,1表示第三索引分量,Il,2表示第四索引分量,Il,2=(s-dl)/H1(W), dl表示第十一随机数,dl∈Zp;

第八步,数据拥有者将并将密文密钥集索引集{Iτ}和密文文档集C={C1,…,Cτ}通 过选定的雾节点发送给云服务器。

进一步的,所述步骤四具体包括以下步骤:

第一步,当终端用户想要查询关键字W'时,雾节点验证终端用户是否在授权用户列表UL 中,若不在,终止操作,否则,转第二步;

第二步,雾节点生成第一阶段陷门TW',1,并将第一阶段陷门TW',1发送给终端用户,其中第 一阶段陷门TW',1=(T1,{Tj,1}j∈[1,m]),T1表示第一阶段陷门的第一分量,Tj,1表示第一阶 段陷门的第二分量,η表示第十二随机数,η∈Zp;

第三步,终端用户收到第一阶段陷门TW',1后生成第二阶段陷门TW',2,并将第二阶段陷门TW',2发送给雾节点,其中第二阶段陷门TW',2=(T0,T'1,{T'j,1,Tj,2}j∈[1,m]),T0表示第二阶段陷门的第一 分量,T0=u+λ,T'1表示第二阶段陷门的第二分量,表示第二阶段陷门的第 三分量,Tj,2表示第二阶段陷门的第四分量,λ表示第十三随 机数,λ∈Zp;

第四步,雾节点收到第二阶段陷门TW',2后生成陷门TW',并将陷门TW'和终端用户属性集S 发送给云服务器,其中T'0表示陷门的第一分量, T'0=T0η+r,表示陷门的第二分量,表示陷门的第三分量,

进一步的,所述步骤五具体包括以下步骤:

第一步,云服务器验证终端用户属性集S是否满足访问控制结构P,若不满足,则终止操 作,结束;若满足,转第二步;

第二步,云服务器为终端用户的每个属性计算第一中间变量和第 二中间变量

其中

特别地,当等式和H1(W')=H1(W)成立时,

其中

第三步,云服务器根据以下等式匹配陷门Tw'和索引集{Iτ},将匹配成功的密文集C'和相 应的密文密钥集发送给雾节点;

进一步的,所述步骤六具体包括以下步骤:

第一步:雾节点根据递归算法计算出根节点的中间量Dr;

如果att(l)∈S,计算叶子节点中间量:Dl=e(Katt(l),3,Cl)=e(g0,g0)xvql(0),其中ql(0)表示 自变量v=0时叶子节点多项式ql(v)的值;

计算根节点中间量:若访问结构P只有两层,此时子节点中间量Dx等于叶子结点中间量Dl,即可求解出Dr=e(g0,g0)xvqr(0),终止递归;否则对Dx调用递推式 继续求解,直到递归到叶子节点的父节点时,即可求解出 Dr=e(g0,g0)xvqr(0)=e(g0,g0)xvθ,终止递归;其中算子i表index(x),ψx表示x节点的随机子节点集合,|ψx|=kx(v),|ψx|表示集合ψx的大小,j是集合ψx中的元素; 算子x'是节点x的子节点,ψx'表示x'节点的随机子节点集合, |ψx'|=kx'(v),|ψx'|表示集合ψx'的大小;

第二步:雾节点计算密钥相关量M*,并将密钥相关量M*,密文集C'={Cπ}和相应的密 文密钥集发送给终端用户;

第三步:终端用户根据以下公式可以得到明文的对称密钥集{sπ},从而解密密文集 C'={Cπ}得到明文集F'={Fπ};

与现有技术相比,本发明具有以下有益的技术效果,通过建立云-雾-终端用户体系结构, 解决了现有云平台网络架构移动性差和时延高的问题,并结合密文策略的属性加密技术和可搜 索加密技术,让雾节点作为代理分担终端用户的计算负担,不仅解决了密文数据的安全性和可 检索性的矛盾,而且大大提升了终端用户生成陷门和解密密文的效率,实现了轻量级的可搜索 加密,与此同时,通过让密文与访问控制结构相关,密钥和数据用户属性相关,只有属性满足 访问控制结构的数据用户才能进行密文检索,实现了细粒度的访问控制,极大地便利了对数据 用户的授权管理,在实际场景中具有广阔的应用前景。

附图说明

图1是本发明的系统示意图。

具体实施方式

下面结合附图和具体实施方式对本发明做进一步说明。

如图1所示,本发明提供了一种用于雾计算的细粒度可搜索加密方法,包括以下步骤:

步骤一,系统初始化:密钥生成中心KGC根据安全参数k,生成公共参数pm和主密钥msk, 其中:

公共参数

主密钥msk=(x,y,{ti}i∈[1,n]);

其中G是p阶加法循环群,g0,g1是G的两个不同的生成元,GT是p阶乘法循环群,e是双 线性映射G×G→GT,H1表示将集合{0,1}*映射到p阶整数环Zp的哈希函数,x表示第一随机 数:x∈Zp,y表示第二随机数:y∈Zp,ti表示第三随机数:ti∈Zp,i∈[1,n]表示i的取值范 围,系统属性集U={att1,…,attn},attn表示第n个系统属性。

步骤二,密钥生成:如图1中的①所示,密钥生成中心KGC为雾节点生成雾节点公钥PKFN, 雾节点数据库相关公钥和授权的终端用户列表UL,当新的终端用户加入终端用户列表 UL时,密钥生成中心KGC根据终端用户的身份信息IDEU和终端用户属性集生 成终端用户公钥PKEU和终端用户数据库相关公钥并为终端用户和雾节点分成生成终端 用户私钥SKEU和雾节点私钥SKFN,并将终端用户私钥SKEU发送给终端用户,将雾节点私钥 SKFN发送给雾节点,,具体包括以下步骤:

第一步,密钥生成中心KGC为雾节点生成雾节点公钥PKFN,雾节点数据库相关公钥和授权的终端用户列表UL,其中雾节点公钥PKFN=e(g0,g0)yr,雾节点数据库相关公钥 r表示第四随机数,r∈Zp,s表示系统公共的随机数,s∈Zp;

第二步,当新的终端用户加入终端用户列表UL时,密钥生成中心KGC根据终端用户的身 份信息IDEU和终端用户属性集生成终端用户公钥PKEU和终端用户数据库相关 公钥其中终端用户公钥PKEU=e(g0,g0)yu,终端用户数据库相关公钥 u表示第五随机数:u∈Zp,表示数据用户的第j个属性, j∈[1,m]表示j的取值范围;

第三步,密钥生成中心KGC为终端用户生成终端用户私钥SKEU,为雾节点生成雾节点私 钥SKFN,其中终端用户私钥SKEU=(K0,{Kj,1}j∈[1,m],u),雾节点私钥 SKFN=(K1,K2,K3,{Kj,2,Kj,3}j∈[1,m],r),K0表示第一私钥分量:K1表示第二私钥分 量:K2表示第三私钥分量:K3表示第四私钥分量:aj表 示第六随机数,aj∈Zp,Kj,1表示第五私钥分量:映射ρ1表示将数据用户的属 性集S中的属性映射到对应系统属性集U的属性,即Kj,2表示第六私钥分量: Kj,3表示第七私钥分量:bj表示第七随机数,bj∈Zp,v表 示第八随机数,v∈Zp;

第四步,密钥生成中心KGC将终端用户私钥SKEU发送给终端用户,将雾节点私钥SKFN发 送给雾节点。

步骤三,加密阶段:如图1中的②所示,数据拥有者利用对称密钥集{sτ}将明文文档集 F={F1,…,Fτ}加密成密文文档集C={C1,…,Cτ},数据拥有者建立访问控制结构P,并将访问 控制结构P发送给雾节点,雾节点和终端用户通过交互,将对称密钥集{sτ}进行加密生成密文 密钥集数据拥有者利用访问控制结构P和关键字集W生成索引集{Iτ},并将密文密钥 集索引集{Iτ}和密文文档集C={C1,…,Cτ}通过雾节点发送给云服务器,具体包括以下 步骤:

第一步,数据拥有者利用对称密钥集{sτ}将明文文档集F={F1,…,Fτ}加密成密文文档集 C={C1,…,Cτ},数据拥有者建立访问控制结构P,并将访问控制结构P发送给某个选定的雾 节点;

第二步,访问控制结构P是一种树形结构,树中的每个节点包括多项式和门限值,雾节 点为根节点r选取多项式qr(v)和门限值kr(v),其中v是自变量,当自变量v=0时,qr(0)=θ, θ表示第九随机数,θ∈Zp,门限值kr(v)的范围1≤kr(v)≤numr,numr表示根节点r子节点个 数;

第三步,为非叶子节点x选取多项式qx(v)和门限值kx(v),多项式qx(v)满足以下条件:

dx(v)=kx(v)-1,

qx(0)=qparent(x)(index(x));

其中dx(v)表示qx(v)的多项式次数,且当自变量v=0时,qx(0)=qparent(x)(index(x)), parent(x)表示节点x的父节点,index(x)表示parent(x)子节点的顺序,门限值kx(v)的范围 1≤kx(v)≤numx,numx表示节点x子节点个数;

第四步,为叶子节点l选取多项式ql(v)和门限值kl(v),其中多项式ql(v)=S,门限值 kl(v)=1;

第五步,雾节点加密对称密钥sτ得到临时密文密钥CTτ,并将临时密文密钥CTτ发送给数 据拥有者,其中临时密文密钥CTτ=(CT1,CT2,{CTl}l∈L),CT1表示第一临时密文密钥: CT2表示第二临时密文密钥:CTl表示第三临时密文密钥:L表示叶 子节点集合;

第六步,数据拥有者加密临时密文密钥CTτ得到密文密钥其中 CT'1表示第一密文密钥:CT'2表示第二密 文密钥:CT3表示第三密文密钥:CCτ表示第四密文密钥: CCτ=sτ·e(g0,g0)yh,h表示第十随机数,h∈Zp;

第七步,明文文档Fτ中包含关键字集W,数据拥有者为明文文档Fτ建立密文索引Iτ, Iτ=(I0,I1,{Il,1,Il,2}l∈L),其中I0表示第一索引分量,I0=e(g0,g0)ys,I1表示第二索引分量, Il,1表示第三索引分量,Il,2表示第四索引分量,Il,2=(s-dl)/H1(W), dl表示第十一随机数,dl∈Zp;

第八步,数据拥有者将并将密文密钥集索引集{Iτ}和密文文档集C={C1,…,Cτ}通 过选定的雾节点发送给云服务器。

步骤四,陷门生成:如图1中的③所示,当终端用户想要查询关键字W'时,雾节点验证 终端用户是否在授权用户列表UL中,若不在,终止操作,否则,雾节点和终端用户通过交互 生成陷门TW',并将陷门TW'和终端用户属性集S发送给云服务器,具体包括以下步骤:

第一步,当终端用户想要查询关键字W'时,雾节点验证终端用户是否在授权用户列表UL 中,若不在,终止操作,否则,转第二步;

第二步,雾节点生成第一阶段陷门TW',1,并将第一阶段陷门TW',1发送给终端用户,其中第 一阶段陷门TW',1=(T1,{Tj,1}j∈[1,m]),T1表示第一阶段陷门的第一分量,Tj,1表示第一阶 段陷门的第二分量,η表示第十二随机数,η∈Zp;

第三步,终端用户收到第一阶段陷门TW',1后生成第二阶段陷门TW',2,并将第二阶段陷门TW',2发送给雾节点,其中第二阶段陷门TW',2=(T0,T'1,{T'j,1,Tj,2}j∈[1,m]),T0表示第二阶段陷门的第一 分量,T0=u+λ,T'1表示第二阶段陷门的第二分量,T'j,1表示第二阶段陷门的第 三分量,Tj,2表示第二阶段陷门的第四分量,λ表示第十三随 机数,λ∈Zp;

第四步,雾节点收到第二阶段陷门TW',2后生成陷门TW',并将陷门TW'和终端用户属性集S 发送给云服务器,其中T'0表示陷门的第一分量, T'0=T0η+r,表示陷门的第二分量,表示陷门的第三分量,

步骤五,密文搜索:如图1中的④所示,云服务器首先验证终端用户属性集S是否满足访 问控制结构P,如果不满足,终止操作;否则,云服务器将陷门Tw'和索引集{Iτ}进行匹配, 将匹配成功的密文集C'={Cπ}和相应的密文密钥集发送给雾节点,具体包括以下步骤:

第一步,云服务器验证终端用户属性集S是否满足访问控制结构P,若不满足,则终止操 作,结束;若满足,转第二步;

第二步,云服务器为终端用户的每个属性计算第一中间变量和第 二中间变量

其中

特别地,当等式和H1(W')=H1(W)成立时,

其中

第三步,云服务器根据以下等式匹配陷门Tw'和索引集{Iτ},将匹配成功的密文集C'和相 应的密文密钥集发送给雾节点;

步骤六,密文解密:如图1中的⑤所示,雾节点和终端用户通过交互解密返回的密文密钥 集得到明文的对称密钥集{sπ},根据对称密钥集{sπ}解密返回的密文集C'={Cπ}得到 明文集F'={Fπ},具体包括以下步骤:

第一步:雾节点根据递归算法计算出根节点的中间量Dr;

如果att(l)∈S,计算叶子节点中间量:Dl=e(Katt(l),3,Cl)=e(g0,g0)xvql(0),其中ql(0)表示 自变量v=0时叶子节点多项式ql(v)的值;

计算根节点中间量:若访问结构P只有两层,此时子节点中间量Dx等于叶子结点中间量Dl,即可求解出Dr=e(g0,g0)xvqr(0),终止递归;否则对Dx调用递推式 继续求解,直到递归到叶子节点的父节点时,即可求解出 Dr=e(g0,g0)xvqr(0)=e(g0,g0)xvθ,终止递归;其中算子i表index(x),ψx表示x节点的随机子节点集合,|ψx|=kx(v),|ψx|表示集合ψx的大小,j是集合ψx中的元素; 算子x'是节点x的子节点,ψx'表示x'节点的随机子节点集合, |ψx'|=kx'(v),|ψx'|表示集合ψx'的大小;

第二步:雾节点计算密钥相关量M*,并将密钥相关量M*,密文集C'={Cπ}和相应的密 文密钥集发送给终端用户;

第三步:终端用户根据以下公式可以得到明文的对称密钥集{sπ},从而解密密文集 C'={Cπ}得到明文集F'={Fπ};

以上描述仅是本发明的一个具体实例,不构成对本发明的任何限制。显然对于本领域的专 业人员来说,在了解发明内容和原理后,都可能在不背离本发明原理、结构的前提下,进行算 法的修正和改进,但是这些基于本发明算法的修正和改进在本发明的权利要求保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1