一种CCA安全的可委托验证的代理重加密方法转让专利

申请号 : CN201710206772.4

文献号 : CN107086911B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 詹宇王保仓

申请人 : 西安电子科技大学

摘要 :

本发明提出一种CCA安全的可委托验证的代理重加密方法,用于解决现有技术存在的加密方法安全性不足的问题,实现步骤为:数据拥有者生成系统参数并计算自己的公私钥;数据接收者计算自己的公私钥;数据拥有者对明文进行第二层密文加密,并把结果上传至云服务器,同时计算重加密密钥并发送至云服务器;云服务器对第二层密文进行复合加密,并对结果签名,同时计算签名验证密钥,最后将第二层密文、公钥加密密文、签名值和签名验证密钥发送至数据接收者;数据接收者将收到的数据和公钥加密私钥发送至委托方;委托方对公钥加密密文进行合法性验证;委托方对重加密密文进行完整性及合法性验证;数据接收者根据验证结果决定是否解密密文。

权利要求 :

1.一种CCA安全的可委托验证的代理重加密方法,其特征在于包括如下步骤:

(1)数据拥有者根据自己的安全需求,生成系统参数param,包括:第一个群G中随机选择的七个成员g1,g2,h1,h2,u,v,w、加密参数L、四个哈希函数H0,H1,H2,H3、乘法循环群 有限域 和双线性映射e;

(2)数据拥有者根据系统参数param中第一个群G中随机选择的成员g1、成员h1和乘法循环群 计算数据拥有者公钥pki和数据拥有者私钥ski,实现步骤为:(2a)数据拥有者从乘法循环群 中随机的选取成员xi,yi,zi,作为数据拥有者重加密私钥(2b)数据拥有者利用数据拥有者重加密私钥 计算数据拥有者重加密公钥

(2c)数据拥有者根据公钥加密密钥生成算法PKE·KeyGen,计算数据拥有者公钥加密公钥 和数据拥有者公钥加密私钥(2d)数据拥有者合并数据拥有者重加密公钥 和数据拥有者公钥加密公钥 得到

数据拥有者公钥pki,同时合并数据拥有者重加密私钥 和数据拥有者公钥加密私钥得到数据拥有者私钥ski;

(3)数据接收者根据系统参数param中第一个群G中随机选择的成员g1、成员h1和乘法循环群 计算数据接收者公钥pkj和数据接收者私钥skj,并将数据接收者公钥pkj公布到公共信道中,其中,数据接收者公钥pkj和数据接收者私钥skj的计算步骤为:(3a)数据接收者从乘法循环群 中随机的选取成员xj,yj,zj,作为数据接收者重加密私钥(3b)数据接收者利用数据接收者重加密私钥 计算数据接收者重加密公钥

(3c)数据接收者根据公钥加密密钥生成算法PKE·KeyGen,计算数据接收者公钥加密公钥 和数据接收者公钥加密私钥(3d)数据接收者合并数据接收者重加密公钥 和数据接收者公钥加密公钥 得

到数据接收者公钥pkj,同时合并数据接收者重加密私钥 和数据接收者公钥加密私钥得到数据接收者私钥skj;

(4)数据拥有者根据系统参数param中第一个群G中随机选择的成员g1、成员g2、成员u、成员v、成员w、加密参数L、哈希函数H0,哈希函数H1,和哈希函数H2,以及数据拥有者公钥pki,对数据接收者所需的明文消息m进行第二层密文加密,得到第二层密文C2,该第二层密文C2包括成员γc0 c1 c2 c3 c4c5,并将第二层密文C2发送至云服务器中存储;

(5)数据拥有者根据系统参数param中第一个群G中随机选择的成员g1、成员g2和成员h2,计算重加密密钥rki→j并发送,实现步骤为:(5a)数据拥有者从有限域 中随机选取成员s,t,同时将有限域 看作签名密钥空

间,并从签名密钥空间随机选择签名密钥k,再计算第一部分重加密密钥

(5b)数据拥有者将第一部分重加密密钥 和数据接收者公钥加密公钥 合并,得

到重加密密钥rki→j,并将rki→j发送至云服务器;

(6)云服务器对第二层密文C2进行复合加密,并对复合加密的结果进行签名,同时计算签名验证密钥K,实现步骤为:(6a)云服务器根据系统参数param中第一个群G中随机选择的成员h1和双线性映射e,以及重加密密钥rki→j,对第二层密文C2进行重加密,得到重加密密文C1,该重加密密文C1包括成员γ′,c′0,c′1,c′2,c′3;

(6b)云服务器根据重加密密钥rki→j,对重加密密文C1进行公钥加密,得到公钥加密密文C';

(6c)云服务器根据系统参数param中哈希函数H3,以及签名密钥k,计算公钥加密密文C'的签名值σ,σ=H3(C′)k;

(6d)云服务器根据系统参数param中第一个群G中随机选择的成员g1,以及签名密钥k,计算签名验证密钥K,(7)云服务器将第二层密文C2、公钥加密密文C'、签名值σ和签名验证密钥K发送至数据接收者;

(8)数据接收者将接收到的第二层密文C2、公钥加密密文C'、签名值σ和签名验证密钥K,以及数据接收者公钥加密私钥 发送至委托方;

(9)委托方对公钥加密密文C'的合法性进行验证:委托方根据系统参数param中第一个群G中随机选择的成员g1、哈希函数H3和双线性映射e,分别计算签名验证参数e(H3(C′),K)和签名验证参数e(σ,g1),然后判断签名验证参数e(H3(C′),K)和签名验证参数e(σ,g1)是否相等,若是,则公钥加密密文C'为合法,执行步骤(10),否则,公钥加密密文C'为非法,将判断结果返回至数据接收者,并执行步骤(13);

(10)委托方根据数据接收者公钥加密私钥 对公钥加密密文C'进行公钥加密解密,得到重加密密文C1;

(11)委托方对重加密密文C1的完整性进行验证:委托方根据系统参数param中第一个群G中随机选择的成员g1、成员u、成员v、成员w、哈希函数H0和双线性映射e,首先计算用于完整性验证的中间参数ψ′,ψ′=H0(c′0,c′1),再计算完整性验证参数e(c′1,uψ′vγw)和完整性验证参数e(g1,c′3),然后判断完整性验证参数e(c′1,uψ′vγw)和完整性验证参数e(g1,c′3)是否相等,若是,则重加密密文C1为完整,执行步骤(12),否则,重加密密文C1为不完整,将判断结果返回至数据接收者,并执行步骤(13);

(12)委托方对重加密密文C1进行合法性验证:第一判断,委托方判断重加密密文C1的成员γ′是否等于第二层密文C2的成员γ,第二判断,委托方判断重加密密文C1的成员c′0是否等于第二层密文C2的成员c0,第三判断,委托方判断重加密密文C1的成员c′1是否等于第二层密文C2的成员c1,第四判断,委托方判断重加密密文C1的成员c′3是否等于第二层密文C2的成员c5,然后委托方最终判断第一判断、第二判断、第三判断和第四判断的结果是否全部为是,若全部为是,则重加密密文C1为合法,将最终判断结果返回至数据接收者,并执行步骤(13),否则,重加密密文C1为非法,将最终判断结果返回至数据接收者,并执行步骤(13);

(13)数据接收者根据接收的判断结果,决定是否解密密文,若验证的公钥加密密文C'为合法、重加密密文C1为完整且重加密密文C1为合法,则根据步骤(3)中计算的数据接收者私钥skj,对公钥加密密文C'进行公钥加密解密,得到重加密密文C1,再根据系统参数param中第一个群G中随机选择的成员h1、哈希函数H2和双线性映射e,以及数据接收者私钥skj对重加密密文C1进行重加密解密,得到明文消息m,否则不对密文进行解密。

2.根据权利要求1所述的一种CCA安全的可委托验证的代理重加密方法,其特征在于,步骤(1)所述的数据拥有者根据自己的安全需求,生成系统参数param,实现步骤为:(1a)数据拥有者根据自己的安全需求,随机选取一个素数p,分别构建成员个数为p的第一个群G和第二个群GT、成员个数为p-1的乘法循环群 和成员个数为p的有限域 最后根据代数学中双线性映射的构建方法,利用第一个群G和第二个群GT构建双线性映射e:G×G→GT;

(1b)数据拥有者从第一个群G中随机选择七个成员g1,g2,h1,h2,u,v,w,并计算加密参数L,L=e(h1,h2),同时从哈希函数中选择四个哈希函数H0,H1,H2,H3,其中要求第一个哈希函数H0满足条件:H0: 是一个抗碰撞的哈希函数,l代表0-1串{0,1}的长度,要求第二个哈希函数H1满足条件:H1: 是一个抗碰撞且单向的哈希函数,l1代表0-1串{0,1}的长度,要求第三个哈希函数H2满足条件H2: 是一个普通的哈希函数,l2代*表0-1串{0,1}的长度,要求第四个哈希函数H3满足条件:H3:{0,1}→G是一个抗碰撞的哈希函数,*代表0-1串{0,1}的长度;

(1c)数据拥有者将从第一个群G中随机选择的七个成员g1,g2,h1,h2,u,v,w、加密参数L、四个哈希函数H0,H1,H2,H3、乘法循环群 有限域 和双线性映射e合并,得到系统参数param。

3.根据权利要求1所述的一种CCA安全的可委托验证的代理重加密方法,其特征在于,步骤(4)所述的数据拥有者根据系统参数param中第一个群G中随机选择的成员g1、成员g2、成员u、成员v、成员w、加密参数L、哈希函数H0,哈希函数H1,和哈希函数H2,以及数据拥有者公钥pki,对数据接收者所需的明文消息m进行第二层密文加密,实现步骤为:(4a)数据拥有者从有限域 中随机选取第一成员γ和第二成员r,并计算第二层密文C2的成员c0, 成员c1, 成员c2, 成员c3, 和成员c4,c4=Yir,其中 表示异或操作;

(4b)数据拥有者计算用于第二层密文加密的中间参数ψ,ψ=H0(c0,c1),并计算第二层密文C2的成员c5,c5=(uψvγw)r;

(4c)数据拥有者将从有限域 中随机选取第一成员γ作为第二层密文C2的成员之一,并与第二层密文C2的成员c0、成员c1、成员c2、成员c3、成员c4、成员c5合并,得到第二层密文C2,C2=(γ,c0,c1,c2,c3,c4,c5)。

4.根据权利要求1所述的一种CCA安全的可委托验证的代理重加密方法其特征在于,步骤(13)所述的数据接收者根据步骤(3)中计算的数据接收者私钥skj,对公钥加密密文C'进行公钥加密解密,得到重加密密文C1,再根据系统参数param中第一个群G中随机选择的成员h1、哈希函数H2和双线性映射e,以及数据接收者私钥skj对重加密密文C1进行重加密解密,实现步骤为:(13a)数据接收者将数据接收者公钥加密私钥 和公钥加密密文C′带入公钥加密解密算法 得到重加密密文C1;

(13b)数据接收者将重加密密文C1的成员c′0,转换成长度为l的二进制表达形式,并将成员c′0二进制表达形式中后半部分长度为l2的拆分出来,作为解密第一参数τ1;

(13c)数据接收者将解密第一参数τ1转换为十进制表达形式,并计算解密第二参数T,(13d)数据接收者利用解密第一参数τ1和解密第二参数T,计算明文m,

说明书 :

一种CCA安全的可委托验证的代理重加密方法

技术领域

[0001] 本发明属于计算机技术领域,涉及一种达到CCA安全的可委托验证的代理重加密方法,可应用于云计算、分布式文件系统、邮件系统等。

背景技术

[0002] 云计算是一种新兴的计算模式。它能够提供便捷、按需的网络访问。这一优势使得计算资源贫乏的用户可以通过云平台来获取强大的计算、存储等能力。因此近年来云计算技术得到了快速发展,用户群也与日俱增。而在这过程中,为了保护用户数据的隐私性,需要对用户的数据进行加密再进行其他操作,以免对用户的权益造成损害。代理重加密技术作为一种特殊类型的公钥加密技术,允许代理在不暴露对应明文的基础上重新加密密文。这一技术依托云平台等第三方计算平台能够安全、便捷并且有针对性的传递消息。然而,由于云服务器有时为了快速计算和减小消耗,可能不会严格按照加密方法完成重加密过程,所以用户选择的加密方法需要能够满足可验证性来保证传递消息的合法性及完整性可以被验证。通过可委托验证这一验证方式,可以更加灵活且便捷的解决验证问题。
[0003] Xiaodong Lin和Rongxing Lu在论文“Proxy Re-encryption with Delegatable Verifiability”(Information Security and Privacy.2016.)中提出了一种可委托验证的代理重加密方法。该方法的具体步骤是:在第二层密文加密阶段,数据拥有者对数据接收者所需的明文消息进行第二层密文加密,得到第二层密文,并将第二层密文上传至云服务器;在重加密阶段,云服务器对第二层密文进行重加密,得到重加密密文,再对重加密密文进行公钥加密,得到公钥加密密文,并将公钥加密密文发送至数据接收者;在委托第三方验证阶段,委托方对公钥加密密文进行公钥加密解密得到重加密密文,并对重加密密文的合法性及完整性进行验证,然后将验证结果返回至数据接收者;在解密阶段,数据接收者对公钥加密密文进行公钥加密解密,得到重加密密文,再对重加密密文进行重加密解密,得到明文消息。在这过程中,数据接收者可以选择委托第三方验证,也可以选择自己进行验证,因此数据接收者能够灵活的控制验证权限。该方法的不足之处在于,由于非法用户可以从委托第三方验证阶段中获取公钥加密私钥,从而非法用户可以对公钥加密密文进行公钥加密解密,获取重加密密文,然后对重加密密文再次进行公钥加密,就能得到伪造的合法公钥加密密文,这一情形使得该方法只能达到RCCA安全这一较低的安全性,非法用户可以利用这一点侵害使用者的权益。

发明内容

[0004] 本发明的目的是针对上述现有技术的不足,提出了一种CCA安全的可委托验证的代理重加密方法,利用签名算法保证了即便非法用户可以从委托第三方验证阶段中获取公钥加密私钥,非法用户也无法伪造合法公钥加密密文,从而达到CCA安全,用于解决现有技术存在的加密方法安全性不足的问题。
[0005] 为实现上述目的,本发明采取的技术方案,包括如下步骤:
[0006] (1)数据拥有者根据自己的安全需求,生成系统参数param,包括:第一个群G中随机选择的七个成员g1,g2,h1,h2,u,v,w、加密参数L、四个哈希函数H0,H1,H2,H3、乘法循环群有限域 和双线性映射e;
[0007] (2)数据拥有者根据系统参数param中第一个群G中随机选择的成员g1、成员h1和乘法循环群 计算数据拥有者公钥pki和数据拥有者私钥ski;
[0008] (3)数据接收者根据系统参数param中第一个群G中随机选择的成员g1、成员h1和乘法循环群 计算数据接收者公钥pkj和数据接收者私钥skj,并将数据接收者公钥pkj公布到公共信道中;
[0009] (4)数据拥有者根据系统参数param中第一个群G中随机选择的成员g1、成员g2、成员u、成员v、成员w、加密参数L、哈希函数H0,哈希函数H1,和哈希函数H2,以及数据拥有者公钥pki,对数据接收者所需的明文消息m进行第二层密文加密,得到第二层密文C2,该第二层密文C2包括成员γc0c1c2c3c4c5,并将第二层密文C2发送至云服务器中存储;
[0010] (5)数据拥有者根据系统参数param中第一个群G中随机选择的成员g1、成员g2和成员h2,计算重加密密钥rki→j并发送:数据拥有者从签名密钥空间随机选取签名密钥k,同时在公共信道查询数据接收者公钥pkj,并利用签名密钥k、数据接收者公钥pkj和数据拥有者私钥ski,计算重加密密钥rki→j,再将重加密密钥rki→j发送至云服务器;
[0011] (6)云服务器对第二层密文C2进行复合加密,并对复合加密的结果进行签名,同时计算签名验证密钥K,实现步骤为:
[0012] (6a)云服务器根据系统参数param中第一个群G中随机选择的成员h1和双线性映射e,以及重加密密钥rki→j,对第二层密文C2进行重加密,得到重加密密文C1,该重加密密文C1包括成员γ′,c′0,c′1,c′2,c′3;
[0013] (6b)云服务器根据重加密密钥rki→j,对重加密密文C1进行公钥加密,得到公钥加密密文C';
[0014] (6c)云服务器根据系统参数param中哈希函数H3,以及签名密钥k,计算公钥加密密文C'的签名值σ,σ=H3(C′)k;
[0015] (6d)云服务器根据系统参数param中第一个群G中随机选择的成员g1,以及签名密钥k,计算签名验证密钥K,
[0016] (7)云服务器将第二层密文C2、公钥加密密文C'、签名值σ和签名验证密钥K发送至数据接收者;
[0017] (8)数据接收者将接收到的第二层密文C2、公钥加密密文C'、签名值σ和签名验证密钥K,以及数据接收者公钥加密私钥 发送至委托方;
[0018] (9)委托方对公钥加密密文C'的合法性进行验证:委托方根据系统参数param中第一个群G中随机选择的成员g1、哈希函数H3和双线性映射e,分别计算签名验证参数e(H3(C′),K)和签名验证参数e(σ,g1),然后判断签名验证参数e(H3(C′),K)和签名验证参数e(σ,g1)是否相等,若是,则公钥加密密文C'为合法,执行步骤(10),否则,公钥加密密文C'为非法,将判断结果返回至数据接收者,并执行步骤(13);
[0019] (10)委托方根据数据接收者公钥加密私钥 对公钥加密密文C'进行公钥加密解密,得到重加密密文C1;
[0020] (11)委托方对重加密密文C1的完整性进行验证:委托方根据系统参数param中第一个群G中随机选择的成员g1、成员u、成员v、成员w、哈希函数H0和双线性映射e,首先计算用于完整性验证的中间参数ψ′,ψ′=H0(c′0,c′1),再计算完整性验证参数e(c′1,uψ′vγw)和完ψ′γ整性验证参数e(g1,c′3),然后判断完整性验证参数e(c′1,u v w)和完整性验证参数e(g1,c′3)是否相等,若是,则重加密密文C1为完整,执行步骤(12),否则,重加密密文C1为不完整,将判断结果返回至数据接收者,并执行步骤(13);
[0021] (12)委托方对重加密密文C1进行合法性验证:第一判断,委托方判断重加密密文C1的成员γ′是否等于第二层密文C2的成员γ,第二判断,委托方判断重加密密文C1的成员c′0是否等于第二层密文C2的成员c0,第三判断,委托方判断重加密密文C1的成员c′1是否等于第二层密文C2的成员c1,第四判断,委托方判断重加密密文C1的成员c′3是否等于第二层密文C2的成员c5,然后委托方最终判断第一判断、第二判断、第三判断和第四判断的结果是否全部为是,若全部为是,则重加密密文C1为合法,将最终判断结果返回至数据接收者,并执行步骤(13),否则,重加密密文C1为非法,将最终判断结果返回至数据接收者,并执行步骤(13);
[0022] (13)数据接收者根据接收的判断结果,决定是否解密密文,若验证的公钥加密密文C'为合法、重加密密文C1为完整且重加密密文C1为合法,则根据步骤(3)中计算的数据接收者私钥skj,对公钥加密密文C'进行公钥加密解密,得到重加密密文C1,再根据系统参数param中第一个群G中随机选择的成员h1、哈希函数H2和双线性映射e,以及数据接收者私钥skj对重加密密文C1进行重加密解密,得到明文消息m,否则不对密文进行解密。
[0023] 本发明与现有技术相比,具有以下优点:
[0024] 本发明由于在生成重加密密钥的过程中,利用签名密钥生成重加密密钥,保证了签名的有效性,从而确保密文无法被秘密篡改,使密文能够抵御更强类型的攻击者,避免了由于安全性不足导致用户权益受损的危害,与现有技术相比,有效的提高了加密方法的安全性,使用户能够更加安全高效的传递信息。

附图说明

[0025] 图1为本发明的总体流程图。

具体实施方式

[0026] 以下结合附图,对本发明作进一步详细说明。
[0027] 步骤1,数据拥有者根据自己的安全需求,生成系统参数param,包括:第一个群G中随机选择的七个成员g1,g2,h1,h2,u,v,w、加密参数L、四个哈希函数H0,H1,H2,H3、乘法循环群有限域 和双线性映射e,实施步骤为:
[0028] 步骤1a,数据拥有者根据自己的安全需求,随机选取一个素数p,分别构建成员个数为p的第一个群G和第二个群GT、成员个数为p-1的乘法循环群 和成员个数为p的有限域最后根据代数学中双线性映射的构建方法,利用第一个群G和第二个群GT构建双线性映射e:G×G→GT;
[0029] 步骤1b,数据拥有者从第一个群G中随机选择七个成员g1,g2,h1,h2,u,v,w,并计算加密参数L,L=e(h1,h2),同时从哈希函数中选择四个哈希函数H0,H1,H2,H3,其中要求第一个哈希函数H0满足条件: 是一个抗碰撞的哈希函数,l代表0-1串{0,1}的长度,要求第二个哈希函数H1满足条件: 是一个抗碰撞且单向的哈希函数,
l1代表0-1串{0,1}的长度,要求第三个哈希函数H2满足条件 是一个普通的
哈希函数,l2代表0-1串{0,1}的长度,要求第四个哈希函数H3满足条件:H3:{0,1}*→G是一个抗碰撞的哈希函数,*代表0-1串{0,1}的长度;
[0030] 步骤1c,数据拥有者将从第一个群G中随机选择的七个成员g1,g2,h1,h2,u,v,w、加密参数L、四个哈希函数H0,H1,H2,H3、乘法循环群 有限域 和双线性映射e合并,得到系统参数param;
[0031] 步骤2,数据拥有者根据系统参数param中第一个群G中随机选择的成员g1、成员h1和乘法循环群 计算数据拥有者公钥pki和数据拥有者私钥ski,实现步骤为:
[0032] 步骤2a,数据拥有者从乘法循环群 中随机的选取成员xi,yi,zi,作为数据拥有者重加密私钥
[0033] 步骤2b,数据拥有者利用数据拥有者重加密私钥 计算数据拥有者重加密公钥[0034] 步骤2c,数据拥有者根据公钥加密密钥生成算法PKE·KeyGen,计算数据拥有者公钥加密公钥 和数据拥有者公钥加密私钥
[0035] 步骤2d,数据拥有者合并数据拥有者重加密公钥 和数据拥有者公钥加密公钥得到数据拥有者公钥pki,同时合并数据拥有者重加密私钥 和数据拥有者公钥加密私钥 得到数据拥有者私钥ski;
[0036] 步骤3,数据接收者根据系统参数param中第一个群G中随机选择的成员g1、成员h1和乘法循环群 计算数据接收者公钥pkj和数据接收者私钥skj,并将数据接收者公钥pkj公布到公共信道中,实现步骤为:
[0037] 步骤3a,数据接收者从乘法循环群 中随机的选取成员xj,yj,zj,作为数据接收者重加密私钥
[0038] 步骤3b,数据接收者利用数据接收者重加密私钥 计算数据接收者重加密公钥[0039] 步骤3c,数据接收者根据公钥加密密钥生成算法PKE·KeyGen,计算数据接收者公钥加密公钥 和数据接收者公钥加密私钥
[0040] 步骤3d,数据接收者合并数据接收者重加密公钥 和数据接收者公钥加密公钥得到数据接收者公钥pkj,同时合并数据接收者重加密私钥 和数据接收者公钥加密私钥 得到数据接收者私钥skj;
[0041] 步骤3e,数据接收者将数据接收者公钥公布到公共信道当中,使数据拥有者可以在公共信道中查询到数据接收者公钥;
[0042] 步骤4,数据拥有者根据系统参数param中第一个群G中随机选择的成员g1、成员g2、成员u、成员v、成员w、加密参数L、哈希函数H0,哈希函数H1,和哈希函数H2,以及数据拥有者公钥pki,对数据接收者所需的明文消息m进行第二层密文加密,得到第二层密文C2,该第二层密文C2包括成员γc0c1c2c3c4c5,并将第二层密文C2发送至云服务器中存储;
[0043] 步骤4a,数据拥有者从有限域 中随机选取第一成员γ和第二成员r,并计算第二层密文C2的成员c0, 成员c1, 成员c2, 成员c3,和成员c4, 其中 表示异或操作;
[0044] 步骤4b,数据拥有者计算用于第二层密文加密的中间参数ψ,ψ=H0(c0,c1),并计算第二层密文C2的成员c5,c5=(uψvγw)r;
[0045] 步骤4c,数据拥有者将从有限域 中随机选取第一成员γ作为第二层密文C2的成员之一,并与第二层密文C2的成员c0、成员c1、成员c2、成员c3、成员c4、成员c5合并,得到第二层密文C2,C2=(γ,c0,c1,c2,c3,c4,c5);
[0046] 步骤4d,数据接收者将第二层密文C2发送至云服务器中存储;
[0047] 步骤5,数据拥有者根据系统参数param中第一个群G中随机选择的成员g1、成员g2和成员h2,计算重加密密钥rki→j并发送:数据拥有者从签名密钥空间随机选取签名密钥k,同时在公共信道查询数据接收者公钥pkj,并利用签名密钥k、数据接收者公钥pkj和数据拥有者私钥ski,计算重加密密钥rki→j,再将重加密密钥rki→j发送至云服务器,实现步骤为:
[0048] 步骤5a,数据拥有者从有限域 中随机选取成员s,t,同时将有限域 看作签名密钥空间,并从签名密钥空间随机选择签名密钥k,再计算第一部分重加密密钥
[0049] 步骤5b,数据拥有者将第一部分重加密密钥 和数据接收者公钥加密公钥合并,得到重加密密钥rki→j;
[0050] 步骤5c,数据拥有者将重加密密钥rki→j发送至云服务器;
[0051] 步骤6,云服务器对第二层密文C2进行复合加密,并对复合加密的结果进行签名,同时计算签名验证密钥K,实现步骤为:
[0052] 步骤6a,云服务器根据系统参数param中第一个群G中随机选择的成员h1和双线性映射e,以及重加密密钥rki→j,对第二层密文C2进行重加密,得到重加密密文C1,实现方法为:云服务器利用第二层密文C2的成员,计算重加密密文C1的成员γ′,γ′=γ、成员c′0,c′0=c0、成员c′1,c′1=c1、成员c′2, 和成员c′3,c′3=c5,然后将重加密密文C1的成员γ′、成员c′0、成员c′1、成员c′2和成员c′3合并,得到重加密密文C1,C1=(γ′,c′0,c′1,c′2,c′3);
[0053] 步骤6b,云服务器根据重加密密钥rki→j,对重加密密文C1进行公钥加密,得到公钥加密密文C',实现方法为:云服务器将重加密密钥rki→j中数据接收者公钥加密公钥 与重加密密文C1,带入公钥加密算法 得到公钥加密密文C′;
[0054] 步骤6c,云服务器根据系统参数param中哈希函数H3,以及签名密钥k,计算公钥加k密密文C'的签名值σ,σ=H3(C′) ;
[0055] 步骤6d,云服务器根据系统参数param中第一个群G中随机选择的成员g1,以及签名密钥k,计算签名验证密钥K,
[0056] 步骤7,云服务器将第二层密文C2、公钥加密密文C'、签名值σ和签名验证密钥K发送至数据接收者;
[0057] 步骤8,数据接收者将接收到的第二层密文C2、公钥加密密文C'、签名值σ和签名验证密钥K,以及数据接收者公钥加密私钥 发送至委托方;
[0058] 步骤9,委托方对公钥加密密文C'的合法性进行验证:委托方根据系统参数param中第一个群G中随机选择的成员g1、哈希函数H3和双线性映射e,分别计算签名验证参数e(H3(C′),K)和签名验证参数e(σ,g1),然后判断签名验证参数e(H3(C′),K)和签名验证参数e(σ,g1)是否相等,若是,则由签名算法的性质可知,公钥加密密文C'与签名值σ所对应的公钥加密密文为同一个密文,从而可得公钥加密密文C'为合法,执行步骤(10),否则,公钥加密密文C'为非法,将判断结果返回至数据接收者,并执行步骤(13);
[0059] 步骤10,委托方根据数据接收者公钥加密私钥 对公钥加密密文C'进行公钥加密解密,得到重加密密文C1,实现方法为:委托方将公钥加密私钥 和公钥加密密文C′,带入公钥加密解密算法 得到重加密密文C1;
[0060] 步骤11,委托方对重加密密文C1的完整性进行验证:委托方根据系统参数param中第一个群G中随机选择的成员g1、成员u、成员v、成员w、哈希函数H0和双线性映射e,首先计算用于完整性验证的中间参数ψ′,ψ′=H0(c′0,c′1),再计算完整性验证参数e(c′1,uψ′vγw)和ψ′γ完整性验证参数e(g1,c′3),然后判断完整性验证参数e(c′1,u v w)和完整性验证参数e(g1,c′3)是否相等,若是,则由双线性映射e的性质可得,重加密密文C1确实是通过重加密得到的,从而重加密密文C1为完整,执行步骤(12),否则,重加密密文C1为不完整,将判断结果返回至数据接收者,并执行步骤(13);
[0061] 步骤12,委托方对重加密密文C1进行合法性验证:第一判断,委托方判断重加密密文C1的成员γ′是否等于第二层密文C2的成员γ,第二判断,委托方判断重加密密文C1的成员c′0是否等于第二层密文C2的成员c0,第三判断,委托方判断重加密密文C1的成员c′1是否等于第二层密文C2的成员c1,第四判断,委托方判断重加密密文C1的成员c′3是否等于第二层密文C2的成员c5,然后委托方最终判断第一判断、第二判断、第三判断和第四判断的结果是否全部为是,若全部为是,则重加密密文C1为合法,即重加密密文C1是通过重加密第二层密文C2得到的,将最终判断结果返回至数据接收者,并执行步骤(13),否则,重加密密文C1为非法,将最终判断结果返回至数据接收者,并执行步骤(13);
[0062] 步骤13,数据接收者根据接收的判断结果,决定是否解密密文,若验证的公钥加密密文C'为合法、重加密密文C1为完整且重加密密文C1为合法,则根据步骤(3)中计算的数据接收者私钥skj,对公钥加密密文C'进行公钥加密解密,得到重加密密文C1,再根据系统参数param中第一个群G中随机选择的成员h1、哈希函数H2和双线性映射e,以及数据接收者私钥skj对重加密密文C1进行重加密解密,得到明文消息m,否则不对密文进行解密,实现步骤为:
[0063] 步骤13a,数据接收者将数据接收者公钥加密私钥 和公钥加密密文C′带入公钥加密解密算法 得到重加密密文C1;
[0064] 步骤13b,数据接收者将重加密密文C1的成员c′0,转换成长度为l的二进制表达形式,并将组成部分之一c′0的长度为l2的后半部分拆分出来,作为解密第一参数τ1;
[0065] 步骤13c,数据接收者将解密第一参数τ1转换为十进制,并计算解密第二参数T,[0066] 步骤13d,数据接收者利用解密第一参数τ1和解密第二参数T,计算明文m,