本发明属于数据加密技术领域,更进一步涉及数据安全技术领域中的一种分布式网络中非单调访问结构的用户属性加解密方法。本发明当数据属主将文件加密存储在网络中时,只有属性符合访问控制结构的用户才可以解密文件。本发明可用于分布式网络应用当中,使得数据属主对存储在网络中的文件拥有更高的控制权。
背景技术:
数据的安全存储在分布式网络应用中占有重要地位,而属性加密技术被认为是确保其安全性的有效手段。属性加密可用于视频点播、医疗记录、选课系统等场景。为了保护数据拥有者存储在网络中数据的安全性,以及确保数据可以被授权用户正确解密,而非授权用户无法正确解密,需要属性加密技术作为支持。
Yang X等人在其发表的论文“Fully Secure Attribute-Based Encryption with Non-monotonic Access Structures”(Intelligent Networking and Collaborative Systems(INCoS),2013 5th International Conference on.2013:521-527.公开日期2013.05.10)中提出了一种非单调访问结构的属性加密方法。该方法的主要步骤是:(1)输入安全参数λ,选择任意群元素,为每一个授权用户生成公共参数和主密钥,并将公共参数公开,将相应的主密钥分发给各个用户。(2)输入属性集合、公钥和待加密的消息,生成密文。(3)输入非单调的访问结构和公钥,生成私钥。(4)当数据接收者的属性满足访问结构时,解密成功。该方法存在的不足之处是:直接对数据属主要分享的文件进行加密,云服务器要处理的数据量太大,此外,公钥包含元素个数为不确定数且属性集合的大小受到限制,使得加解密效率大大降低。
南京邮电大学在其申请的专利文件“一种基于属性加密的云计算安全访问控制方法”(申请号201210389845.5,申请日期2012.10.15,授权日期2015.04.01)中提出了一种分层的属性加解密方法。该方法的主要步骤是:(1)生成系统公钥和主密钥;(2)将用户分层,对不同层的用户生成不同的私钥;(3)应用单调的访问密文的结构对文件加密;(4)符合解密条件的用户调用解密算法对文件解密从而访问文件。该方法存在的不足之处是:对文件加密时不支持非单调的访问控制结构,数据属主对数据的控制权降低。
技术实现要素:
本发明的目的在于克服上述现有技术直接对数据属主上传到云服务器的文件进行加密,使得云服务器处理的数据量太大;公钥包含元素个数为不确定数,属性集合的大小受到限制,使得加解密的效率大大降低;对文件加密时不支持非单调的访问结构,使得数据属主对数据的控制权降低的问题,提供一种分布式网络中非单调的访问控制结构的用户属性加解密方法。
实现本发明目的的主要思路是:数据属主首先对上传到云服务器的文件进行对称加密,保存文件密钥,然后对文件密钥进行属性加密并将密文上传至云服务器,当用户向云服务器发起对文件的访问时,云服务器将用户的属性私钥与密文中的访问结构进行匹配,若匹配成功,用户解密得到文件密钥,最后用解密得到的文件密钥解密文件。本发明采用非单调的访问结构,使得数据属主对数据的控制权升高;对文件密钥进行属性加密,使得云服务器处理的数据量减少;不限制属性集合的大小,公钥包含元素的个数为常数个,使得采用本发明加解密的效率大大提高。
本发明的具体实现步骤如下:
(1)生成密码系统公钥和主密钥:
(1a)任意选取两个互相独立的大素数p1、p2,其中,p1、p2均大于2λ,λ表示由云服务器所确定的密码系统安全参数,λ<264;
(1b)云服务器以大素数p1和p2的乘积为阶,分别构造一个加法循环群和乘法循环群;
(1c)云服务器将加法循环群映射到乘法循环群,得到一个双线性映射;
(1d)云服务器从加法循环群中随机选取两个生成元作为密码系统的主密钥;
(1e)按照下式,计算密码系统的公钥:
P=S(λ)
其中,P表示密码系统的公钥,S(·)表示初始化操作,λ表示由云服务器所确定的密码系统安全参数;
(1f)云服务器保存生成的密码系统主密钥,将公钥发布给用户;
(2)生成用户属性私钥:
(2a)持有公钥的用户向密钥生成中心提交属性信息;
(2b)密钥生成中心按照下式计算用户的属性私钥:
W=K(P,A,F)
其中,W表示持有公钥用户的属性私钥,P表示密码系统的公钥,A表示密码系统的主密钥,F表示持有公钥用户的属性信息,K(·)表示由密钥生成中心所确定的属性私钥生成函数;
(2c)密钥生成中心将接收公钥用户的属性私钥发送给持有公钥的用户;
(3)生成密文:
(3a)数据属主为上传到云服务器的文件选取唯一标识对文件对称加密,保留文件密钥;
(3b)数据属主从持有公钥的用户的属性集中选取m个属性组成非单调的访问控制结构,用访问控制结构对文件密钥加密生成文件密钥的密文CT,并发送到云服务器,其中,m表示大于1的任意整数;
(4)访问文件:
持有属性私钥的用户向云服务器发起对文件密钥的访问请求,云服务器将文件密钥的密文发送给发起访问请求的用户;
(5)判断发起请求的用户的属性私钥与密文中的访问控制结构是否满足匹配条件,若是,则执行步骤(6),否则,执行步骤(7);
(6)解密文件:
(6a)持有属性私钥的用户按照下式计算解密后的文件密钥:
M'=D(P,CT,W,F)
其中,M'表示解密后的文件密钥,D(·)表示由数据属主确定的解密函数,P表示密码系统的公钥,CT表示云服务器接收的密文,W表示持有私钥用户的属性私钥,F表示持有私钥用户的属性信息;
(6b)持有属性私钥的用户用解密后的文件密钥解密数据属主上传到云服务器的文件;
(7)退出密码系统。
本发明与现有技术相比具有如下优点:
第一,由于本发明支持非单调的访问控制结构,数据属主将属性集合分为非否定属性和否定属性,在加密数据时,对否定属性和非否定属性分别应用不同的加密方法计算不同的密文参数,克服了现有技术只支持单调的访问控制结构,数据属主不能选择否定属性,对数据的控制权降低的缺陷,使得本发明能够让数据属主更详细的选择访问控制结构,数据属主对数据的控制权升高。
第二,由于本发明不限制属性集合大小,公钥包含元素的个数为常数,克服了现有技术限制属性集合大小且公钥包含元素的个数为不确定数的缺陷,使得采用本发明加解密的效率大大提高。
第三,由于本发明先对数据属主上传到云服务器的文件进行对称加密,再对文件密钥进行属性加密,克服了现有技术直接对数据属主上传到云服务器的文件进行属性加密,云服务器处理的数据量太大的缺陷,使得采用本发明云服务器所处理的数据量大大减少。
附图说明
附图1为本发明的流程图。
具体实施方式
下面结合附图1对本发明做进一步的描述。
步骤1,生成密码系统的公钥和主密钥。
任意选取两个互相独立的大素数p1、p2,其中,p1、p2均大于2λ,λ表示由云服务器所确定的密码系统安全参数,λ<264。云服务器以大素数p1和p2的乘积为阶,分别构造一个加法循环群G1和乘法循环群G2。将加法循环群映射到乘法循环群,得到一个双线性映射,即e:G1×G1→G2。云服务器从加法循环群中随机选取两个生成元作为密码系统的主密钥其中,g1表示以大素数p1为阶生成的群中的任意一个生成元,g2表示以大素数p2为阶生成的群中的任意一个生成元,α为大于1的随机整数。
按照下式,计算密码系统的公钥:
P=S(λ)
其中,P表示密码系统的公钥,S(·)表示初始化操作,λ表示由云服务器所确定的密码系统安全参数。
上述公式的计算结果如下:
其中,P表示密码系统的公钥,N表示两个大素数p1、p2的乘积,g1表示以大素数p1为阶生成的群中的任意一个生成元,b,k均是大于1的随机整数,e(·)α表示双线性映射操作。
云服务器保存生成的密码系统主密钥
将公钥公开。
步骤2,生成用户属性私钥。
持有公钥的用户向密钥生成中心提交属性集为密钥生成中心选择随机指数b,c,d∈ZN,随机选择r,r1,...,rk∈ZN以及使得
密钥生成中心按照下式计算用户的属性私钥:
W=K(P,A,F)
其中,W表示接收公钥用户的属性私钥,P表示密码系统的公钥,A表示密码系统的主密钥,F表示接收公钥用户的属性信息,K(·)表示由密钥生成中心所确定的属性私钥生成函数。
上述公式的计算结果如下:
其中,W表示属性私钥,Q1表示属性私钥的第一个组件。Q2表示属性私钥的第二个组件,U表示第一个密钥参数,V表示第二个密钥参数,L表示第三个密钥参数,H表示第四个密钥参数,b,c,d,p均表示大于1的随机整数,g1表示以大素数p1为阶生成的群中的任意一个生成元,R,R'均表示以大素数p2为阶生成的群中的任意一个生成元。
密钥生成中心将接收公钥用户的属性私钥发送给持有公钥的用户。
步骤3,生成密文:
数据属主从现有的对称加密方法中任意选取一种,数据属主为上传到云服务器的文件选取唯一标识对文件对称加密,保留文件密钥M。数据属主从持有公钥的用户的属性集中选取m个含有非否定和否定属性的集合组成非单调的访问控制结构,用访问控制结构对文件密钥加密生成文件密钥的密文CT,并发送到云服务器,其中,m表示大于1的任意整数
建立非单调访问控制结构的过程如下:
令P={P1,...,Pn}为一个属性集合,是2P的子集,2P表示P的所有子集的集合,属于AS的集合叫做授权集合,不属于AS的集合叫做非授权集合,对于任意A和A',如果A∈AS且A∈A',则A'∈AS,那么称访问结构是单调的。令表示集合P的单调访问结构集合,P中的团体有以下特点:正常的(用x表示)或者有上标的(用x'表示),如果x∈P,则x'∈P,反之亦然。x'代表x的否定。本发明用x代表正常属性,x'代表否定属性,对每一个单调的访问结构定义P中正常团体集合的非单调访问结构NM(Γ),对每一个集合定义则是NM(Γ)的授权集合当且仅当是的授权集合,对每一个集合X∈NM(Γ),都有一个在中的集合包含X中的元素和不在X中的元素。
数据属主随机选择t∈ZN,对每一个根据线性秘密共享方案,按照下式计算秘密份额:
其中,λi表示秘密值的份额,Li表示一个l行m列矩阵的第i行,m,l均表示大于1的随机整数,i=1,...,l,ρ(i)表示将矩阵的第i行映射为可标记团体。
用访问结构对文件密钥M加密生成密文CT,在加密数据时,对否定属性和非否定属性分别应用不同的加密方法计算不同的密文参数,生成密文的公式如下:
其中,CT表示文件密钥的密文,E(·)表示由数据属主确定的加密函数,P表示密码系统的公钥,M表示数据属主上传到云服务器的文件的密钥,表示由数据属主确定的访问控制结构。
上述公式的计算结果如下:
数据属主将文件密钥的密文发送至云服务器。
步骤4,访问文件:
持有属性私钥的用户向云服务器发起对文件密钥的访问请求,云服务器将文件密钥的密文发送给发起访问请求的用户。
步骤5,按照以下匹配条件判断发起请求的用户的属性私钥与密文中的访问控制结构是否匹配:
其中,表示由数据属主确定的访问控制结构,W表示持有私钥用户的属性私钥,F表示持有私钥用户的属性信息,H(·)表示哈希函数。
若是,则执行步骤6,否则,执行步骤7;
步骤6,解密文件:
第一步,由非单调访问结构的定义,我们得到F'=N(F)∈Γ,I={i|ρ(i)∈F'}。因为F'是Γ的授权集合,根据线性秘密共享方案,用户可以有效的重组系数{(i,μi)}i∈I使得∑i∈Iμiλi=s。通过解析CT和D,对每一个i∈I计算
若π(i)=xi,即属性为非否定属性时,
若π(i)=xi',即属性为否定属性时,
第二步,持有属性私钥的用户按照下式计算解密后的文件密钥:
M'=D(P,CT,W,F)
其中,M'表示解密后的文件密钥,D(·)表示由数据属主确定的解密函数,P表示密码系统的公钥,CT表示云服务器接收的密文,W表示持有私钥用户的属性私钥,F表示持有私钥用户的属性信息;
上式的计算过程和结果如下:
第三步,持有属性私钥的用户用解密后的文件密钥解密数据属主上传到云服务器的文件。
步骤7,退出密码系统。