本发明涉及加密算法领域,尤其涉及一种可共享解密的加密方法及系统。
背景技术:
sahai等人提出了属性基加密(abe)的概念;在abe的一种方案中,一个属性集合和用户的私钥相关联,同时,访问结构则和密文相关联。当且仅当用户的属性集合满足这个访问结构时,该用户才能解密出相应的密文。属性基加密(abe)近些年成为了信息安全中的一个研究热点,它能实现云存储中数据的隐私保护,并通过设置访问结构实现对存储数据的灵活访问控制。
从数据用户的角度来看,安全和效率是任何abe方案所关注的两个主要方面。因此,设计安全高效的abe方案是非常重要且有意义的。在很多情况下,一些存储在公开云服务器上的文件存在级别上的等级关系的特点。因此,这些文件在abe加密存储时所创建的树形访问结构之间也存在等级关系。针对这种文件上的关系特点,wang等人提出了一个文件分等级的密文策略属性基加密方案,方案改进了abe方案的效率,同时又保证了方案的安全性。然而,在许多情况下,授权的解密用户因为特殊原因不能及时解密出需要紧急解密的密文,若此时由一个用户来替代原授权用户进行解密,无法保证数据的安全性。
技术实现要素:
本发明所要解决的技术问题是:提供一种可共享解密的加密方法及系统,提高abe的解密效率。
为了解决上述技术问题,本发明采用的一种技术方案为:
一种可共享解密的加密方法,包括步骤:
s1、数据拥有端创建访问树,根据所述访问树生成会话密钥;
s2、数据拥有端根据所述访问树、所述会话密钥及公钥,生成密文;
s3、解密端接收所述密文,根据所述解密端的属性集合与所述访问树的对应关系,单个所述解密端生成会话密钥或多个所述解密端合作生成会话密钥。
为了解决上述技术问题,本发明采用的另一种技术方案为:
一种可共享解密的加密系统,包括数据拥有端和解密端,所述数据拥有端包括第一存储器、第一处理器及存储在所述第一存储器上并可在所述第一处理器上运行的第一计算机程序,所述解密端包括第二存储器、第二处理器及存储在所述第二存储器上并可在所述第二处理器上运行的第二计算机程序,其特征在于,所述第一处理器执行所述第一计算机程序时实现以下步骤:
s11、创建访问树,根据所述访问树生成会话密钥;
s12、根据所述访问树、所述会话密钥及公钥,生成密文;
所述第二处理器执行所述第二计算机程序时实现以下步骤:
s21、解密端接收所述密文,根据所述解密端的属性集合与所述访问树的对应关系,单个所述解密端生成会话密钥或多个所述解密端合作生成会话密钥。
本发明的有益效果在于:数据拥有端创建访问树,并根据访问树、会话密钥及公钥生成密文,解密端接收密文后,根据自身的属性集合和访问树的对应关系,确定是否能够单独解密出会话密钥,以一整棵树作为访问结构,能够提高解密的效率,与访问树对应的多个解密端在无法单独解密出会话密钥时,能够合作获取密钥,无需为每个解密端单独发放对应的会话密钥,进一步提高了系统的效率,适用于云环境下的访问控制。
附图说明
图1为本发明实施例的一种可共享解密的加密方法的步骤流程图;
图2为本发明实施例的一种可共享解密的加密系统的结构示意图;
图3为本发明实施例的访问树节点示意图;
标号说明:
3、一种可共享解密的加密系统;1、数据拥有端;1.1、第一处理器;1.2、第一存储器;2、解密端;2.1、第二处理器;2.2、第二存储器。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
请参照图1,一种可共享解密的加密方法,包括步骤:
s1、数据拥有端创建访问树,根据所述访问树生成会话密钥;
s2、数据拥有端根据所述访问树、所述会话密钥及公钥,生成密文;
s3、解密端接收所述密文,根据所述解密端的属性集合与所述访问树的对应关系,单个所述解密端生成会话密钥或多个所述解密端合作生成会话密钥。
从上述描述可知,本发明的有益效果在于:数据拥有端创建访问树,并根据访问树、会话密钥及公钥生成密文,解密端接收密文后,根据自身的属性集合和访问树的对应关系,确定是否能够单独解密出会话密钥,以一整棵树作为访问结构,能够提高解密的效率,与访问树对应的多个解密端在无法单独解密出会话密钥时,能够合作获取密钥,无需为每个解密端单独发放对应的会话密钥,进一步提高了系统的效率,适用于云环境下的访问控制。
进一步的,所述步骤s1之前,还包括:
接收可信机构产生的公钥pk={g,g1,gt,h1,h2,h3,e(g,g)β,f};
其中,g1是一个阶为p的双线性乘法群,e:g1×g1→gt是一个双线性映射,其中gt是一个乘法循环群,g为g1的一个生成元;
f=gα,
由上述描述可知,由可信机构产生公钥,数据拥有端能够直接使用可信机构生成的公钥而无需自行生成,由可信机构对公钥进行统一管理,提高了系统的安全性,也解放了数据拥有端的部分计算能力。
进一步的,所述步骤s1中创建访问树具体为:
创建包含根节点vr及k个为等级节点的第一子节点vi的访问树t,所述根节点也为等级节点。
由上述描述可知,创建单个访问树对所有属性进行管理,使访问策略更加明晰,单个访问树的访问结构也能够提高方案的效率。
进一步的,所述步骤s2具体为:
随机选择k个元素:
计算cv=ck·(g,g)βt,
计算tag=h3(h2(ck)||h2(cv)),其中‖表示两个比特串h2(ck)与h2(cv)的连接;
计算所述访问树中各个节点对应的多项式,具体的:
对于根节点vr,设置多项式
对于其他节点(x,y),判断是否为等级节点,若是,则设置多项式q(x,y)(0)=qvi(0)=ti,否则,q(x,y)(0)=qpare(x,y)(inde(x,y)),其中,pare(x,y)表示访问树中节点(x,y)的父亲节点,inde(x,y)输出一个和节点(x,y)相关的唯一值;
计算节点(x,y)对应的
生成密文
由上述描述可知,根据节点的属性不同,对节点进行加密,从根节点开始进行递归为各个节点生成其对应的多项式,减少了各个节点的密文之间的关联度,进一步提升了系统的安全性,加大了被破解的难度。
进一步的,所述步骤s3之前,还包括:
所述解密端接收私钥
其中,r及rj为随机选择的整数,rj与属性j为对应关系,属性集合s包含所述属性j;
由上述描述可知,根据解密端的属性生成其对应的私钥,解密端能够根据属性与访问树中节点的对应关系对相应密文进行获取,使对密文接收者权限的管理更加灵活。
进一步的,所述步骤s3具体为:
所述解密端接收所述密文,若所述解密端的属性集合满足整个所述访问树,则单个所述解密端生成所述会话密钥。
具体为:
获取e(g,g)rt,并计算
则所述会话密钥
由上述描述可知,判断解密端的属性集合与访问树的对应关系,若属性集合与访问树完全对应,则说明该用户为授权用户,该用户能够单独生成会话密钥,属性集合满足整个访问树的解密端才能够单独生成会话密钥,保证了系统的安全性。
进一步的,所述步骤s3具体为:
所述解密端接收所述密文,若所述解密端的属性集合只满足所述访问树中一子树,则多个所述解密端合作生成会话密钥;
具体为:
获取
则所述会话密钥
若h3(h2(ck)||h2(cv))=tag成立,则输出所述会话密钥ck;
由上述描述可知,若解密端的属性集合不满足整棵访问树,即为半授权用户,半授权用户能够通过与其他解密端合作的方式获取会话密钥,并且在获取会话密钥后,还需对各个解密端的身份再次进行验证,若验证通过才会将会话密钥下发,在授权用户因为一些特殊情况不能够及时解密出需要的密文的情况下,能够由多个用户合作的方式进行解密,而不是由单个授权用户解密,降低了被破解的可能性,提升了安全性。
进一步的,创建递归函数decrynode(ct,sk,(x,y)),对于一个叶子节点(x,y),若
进一步的,创建递归函数decrynode(ct,sk,(x,y)),对于一个等级节点(x,y),对所述等级节点下的每个孩子节点λ,若存在孩子节点λ的集合m(x,y),使decrynode(ct,sk,λ)≠⊥,则
由上述描述可知,根据用户属性结合与节点的不同对应关系计算对应的密钥,进而求解出会话密钥,能够有效识别用户的权限。
请参照图2,一种可共享解密的加密系统,包括数据拥有端和解密端,所述数据拥有端包括第一存储器、第一处理器及存储在所述第一存储器上并可在所述第一处理器上运行的第一计算机程序,所述解密端包括第二存储器、第二处理器及存储在所述第二存储器上并可在所述第二处理器上运行的第二计算机程序,其特征在于,所述第一处理器执行所述第一计算机程序时实现以下步骤:
s11、创建访问树,根据所述访问树生成会话密钥;
s12、根据所述访问树、所述会话密钥及公钥,生成密文;
所述第二处理器执行所述第二计算机程序时实现以下步骤:
s21、解密端接收所述密文,根据所述解密端的属性集合与所述访问树的对应关系,单个所述解密端生成会话密钥或多个所述解密端合作生成会话密钥。
从上述描述可知,本发明的有益效果在于:数据拥有端创建访问树,并根据访问树、会话密钥及公钥生成密文,解密端接收密文后,根据自身的属性集合和访问树的对应关系,确定是否能够单独解密出会话密钥,以一整棵树作为访问结构,能够提高解密的效率,与访问树对应的多个解密端在无法单独解密出会话密钥时,能够合作获取密钥,无需为每个解密端单独发放对应的会话密钥,进一步提高了系统的效率,适用于云环境下的访问控制。
请参照图1及图3,本发明的实施例一为:
一种可共享解密的加密方法,具体包括:
s1、数据拥有端创建访问树,根据所述访问树生成会话密钥;
其中,创建访问树具体为:
创建包含根节点vr及k个为等级节点的第一子节点vi的访问树t,所述根节点也为等级节点;
s1之前,还包括:
接收可信机构产生的公钥pk={g,g1,gt,h1,h2,h3,e(g,g)β,f};
其中,g1是一个阶为p的双线性乘法群,e:g1×g1→gt是一个双线性映射,其中gt是一个乘法循环群,g为g1的一个生成元,
f=gα,
s2、数据拥有端根据所述访问树、所述会话密钥及公钥,生成密文;
具体为:
随机选择k个元素:
计算cv=ck·(g,g)βt,
计算tag=h3(h2(ck)||h2(cv)),其中‖表示两个比特串h2(ck)与h2(cv)的连接,
计算所述访问树中各个节点对应的多项式,具体的:
请参照图3,对于根节点vr,设置多项式
对于其他节点(x,y),判断是否为等级节点,若是,则设置多项式
计算每个叶子节点(x,y)对应的
生成密文
s3、解密端接收所述密文,根据所述解密端的属性集合与所述访问树的对应关系,单个所述解密端生成会话密钥或多个所述解密端合作生成会话密钥;
具体为:
创建递归函数decrynode(ct,sk,(x,y)),对于一个叶子节点(x,y),若
创建递归函数decrynode(ct,sk,(x,y)),对于一个等级节点(x,y),对所述等级节点下的每个孩子节点λ,若存在包含h(x,y)个孩子节点λ的集合m(x,y),使decrynode(ct,sk,λ)=fλ≠⊥,则
其中,i=index(λ),m′(x,y)={index(λ):λ∈m(x,y)};
所述解密端接收所述密文,若所述解密端的属性集合满足整个所述访问树,则单个所述解密端生成所述会话密钥;
单个所述解密端生成所述会话密钥具体为:
通过递归函数计算获取
具体的:
则所述会话密钥
s3之前,还包括:
所述解密端接收私钥
其中,r及rj为随机选择的整数,rj与属性j为对应关系,属性集合s包含所述属性j;d=gβgr,
具体的,可信机构根据解密端发送的属性集合,生成其对应私钥。
本发明的实施例二为,一种可共享解密的加密方法,其与实施例一的不同之处在于,所述s3具体为:
所述解密端接收所述密文,若所述解密端的属性集合只满足所述访问树中一子树,则多个所述解密端合作生成会话密钥;
多个所述解密端合作生成会话密钥具体为:
获取
具体的:
则所述会话密钥
具体的:
若h3(h2(ck)||h2(cv))=tag成立,则输出所述会话密钥ck。
请参照图2,本发明的实施例三为:
一种可共享解密的加密系统3,包括数据拥有端1和解密端2,所述数据拥有端包括第一存储器1.2、第一处理器1.1及存储在所述第一存储器1.2上并可在所述第一处理器1.1上运行的第一计算机程序,所述解密端2包括第二存储器2.2、第二处理器2.1及存储在所述第二存储器2.2上并可在所述第二处理器2.1上运行的第二计算机程序,其特征在于,所述第一处理器1.1执行所述第一计算机程序时实现实施例一或实施例二中数据拥有端所执行的步骤;
所述第二处理器2.1执行所述第二计算机程序时实现实施例一或实施例二中解密端所执行的步骤。
综上所述,本发明提供了一种可共享解密的加密方法及系统,通过数据拥有端创建单个访问树,即使用一棵整合的访问树作为访问结构,利用此访问树能够对发送给不同解密端的所有文件一次性全部加密,提高了系统运行的效率,并且被指定的解密用户即与访问树部分匹配的半授权用户之间能够合作生成会话密钥对密文进行解密,而不是仅仅由一个用户替代原授权用户进行解密,条了系统的安全性,在授权用户因为特殊原因不能及时对密文进行解密的情况下,能够以较高安全性的方式将解密权限划分,降低了被破解的风险,适用于云环境下的访问控制。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。