一种无双线性配对的代理重加密系统及加密方法与流程

文档序号:16244984发布日期:2018-12-11 23:29阅读:222来源:国知局
一种无双线性配对的代理重加密系统及加密方法与流程

本发明涉及云计算技术领域,更具体的说是涉及一种无双线性配对的代理重加密系统及加密方法。

背景技术

近年来,随着云计算技术的发展应用以及万物互联进程的加深,云存储中的数据安全受到了广泛的关注。为了将云存储中的加密数据共享给其他用户,传统的做法是数据所有者从云存储中下载加密数据然后重新加密发给共享者,这个过程会消耗大量的网络和计算资源。

为了提高计算效率,可以采取代理重加密算法解析加密数据,但是,现有的代理重加密方法通常采用双线性配对方法,其显著弊端在于计算量大,加密速度慢,大大降低了计算效率,无法适应当今大数据时代的需求,实用性大打折扣。

因此,如何提供一种计算效率高、同时保证密文的不可延展性的无双线性配对的代理重加密系统及方法是本领域技术人员亟需解决的问题。



技术实现要素:

有鉴于此,本发明提供了一种无双线性配对的代理重加密系统及加密方法,将无双线性配对的代理重加密方案与无证书签名方案相结合,解决了基于双线性配对的代理重加密的低效问题,在保证选择密文攻击安全性的同时,大大提高了计算效率,并保证密文的不可延展性。

为了实现上述目的,本发明采用如下技术方案:

一种无双线性配对的代理重加密系统,包括:系统参数设置模块、密钥生成模块、加密模块、代理重加密密钥生成模块、代理重加密模块和解密模块;其中,

所述系统参数设置模块用于生成系统主密钥和系统公开参数,并将系统主密钥发送至所述加密模块,将系统公开参数发送至所述密钥生成模块、所述加密模块、所述代理重加密密钥生成模块、所述代理重加密模块和所述解密模块;

所述密钥生成模块用于生成各个用户的公钥、私钥和身份信息,并将用户的公钥发送给所述加密模块和所述代理重加密密钥生成模块,将用户的私钥发送给所述代理重加密密钥生成模块和所述解密模块;

所述加密模块用于生成要发送的明文消息的原始密文,将原始密文发送至所述代理重加密模块和所述解密模块;

所述代理重加密密钥生成模块根据生成代理重加密密钥,并将代理重加密密钥发送至所述代理重加密模块;

所述代理重加密模块根据系统参数设置模块发送的系统公开参数和密钥生成模块发送的用户身份信息对加密模块发送的原始密文和代理重加密密钥生成模块发送的代理重加密密钥进行签名认证,认证成功后将代理重加密密文发送至所述解密模块;

所述解密模块用于判断接收到的密文是原始密文还是代理重加密密文,并恢复相应的明文信息。

密钥生成模块所生成的用户的私钥包括委托方的私钥和受理方的私钥,用户的身份信息包括委托方的身份信息和受理方的身份信息。

本发明还公开一种无双线性配对的代理重加密方法,包括以下步骤:

s1、设定系统公开参数par和系统主密钥mk;

s2、根据系统公开参数par,生成委托方的身份idi、受理方的身份idj、秘密值xi、公钥pki、委托方的私钥ski和受理方的私钥skj;

s3、根据系统公开参数par、委托方的身份idi和公钥pki进行加密与签名,得到原始密文ci;

s4、根据系统公开参数par、委托方的私钥ski和受理方的私钥skj生成代理重加密秘钥rkij;

s5、根据系统公开参数par、原始密文ci、委托方的身份idi、受理方的身份idj和代理重加密密钥rkij,进行签名认证,认证成功后生成代理重加密密文cj,

s6、判断所接收到的密文是原始密文还是代理重加密密文,并解密恢复相应的明文信息m。

优选的,在上述一种无双线性配对的代理重加密方法中,s1具体包括以下步骤:

s11、给定安全参数k,选取一个长度为k比特的素数q,g是zq*的一个q阶子群,g是g的生成元;

s12、选取四个哈希函数h1、h2、h3、和h4,h1:{0,1}*→zq*,h2:{0,1}n0×{0,1}n1×g→zq*,h3:g→{0,1}n0+n1,h4:{0,1}*×g→zq*;其中no,n1是安全参数,明文空间为{0,1}n0

s13、随机选择系统主密钥mk,且满足mk∈zq*,计算z=mk*g,保密系统主密钥mk;

s14、公开系统参数par{q,g,g,z,h1,h2,h3,h4,n0,n1}。

优选的,在上述一种无双线性配对的代理重加密方法中,s2具体包括以下步骤:

s21、输入系统公开参数par,给定委托方的身份标识idi、委托方的公钥pki和委托方的私钥ski;

s22、随机选取xi,使xi∈zq*;

s23、设置委托方的公钥pki=gxi,设置委托方的私钥ski=xi。

优选的,在上述一种无双线性配对的代理重加密方法中,s3具体包括以下步骤:

s31、输入系统公开参数par、明文信息m、委托方的身份标识idi和委托方的公钥pki;

s32、随机选取计算t=h2(m,r,pki),c1=pkit

s33、计算

s34、选择需要签名的公私钥对(spki,sski),随机选取ui∈zq*,计算ui=g×ui,di=ui+mk×h4(idi,ui),xi=xi×g,spki=(xi,ui),sski=(xi,di),c3=sski;

s35、运行签名算法,随机选取整数ei∈zq*,计算ei=ei×g,fi=h1(ei||xi||idi||m),hi=e/(xi+fi+di),vi=xi/(xi+fi+di),得到签名si=(fi,hi,vi);

s36、输出原始密文ci=(c1,c2,c3,si)。

优选的,在上述一种无双线性配对的代理重加密方法中,s4具体包括以下步骤:

s41、输入委托方的私钥ski=xi和受理方的私钥skj=xj;

s42、生成代理重加密秘钥rkij=skj/ski=xj/ximodq。

优选的,在上述一种无双线性配对的代理重加密方法中,s5具体包括以下步骤:

s51、输入系统公开参数par、原始密文ci、委托方的身份标识idi,受理方的身份标识idj和代理重加密密钥rkij;

s52、签名验证,计算ai=h4(idi,ui),检验hi×(ui+xi+ai*z+fi*g)=ei和vi×(ui+xi+ai*z+fi*g)=xi两式是否成立,若不成立则输出⊥,若成立则进行进行下一步骤;

s53、计算

s54、选择需要签名的公私钥对(spkj,sskj),随机选取uj∈zq*,计算uj=g×uj,dj=uj+mk×h4(idj,uj),xj=xj×g,spkj=(xj,uj),sskj=(xj,dj),c3’=sskj;

s55、c4=pki;

s56、运行签名算法,随机选取整数ej∈zq*,计算ej=ej×g,fj=h1(ej||xj||idj||m),hj=e/(xj+fj+dj),vj=xj/(xj+fj+dj),得到签名sj=(fj,hj,vj);

s57、输出代理重加密密文cj=(c1’,c2,c3’,c4,sj)。

优选的,在上述一种无双线性配对的代理重加密方法中,s6具体包括以下步骤:

s61、判断密文形式是原始密文还是重加密密文;

s62、若密文为原始密文,则进行签名验证,计算ai=h4(idi,ui),检验hi×(ui+xi+ai*z+fi*g)=ei和vi×(ui+xi+ai*z+fi*g)=xi两式是否成立,若不成立则输出⊥,若成立则进行下一步骤;

s63、检验是否成立,若不成立则输出⊥,若成立则进行下一步骤;

s64、计算输出明文消息m;

s65、若密文为重加密密文,则进行签名验证,计算aj=h4(idj,uj),检验hj×(uj+xj+aj*z+fj*g)=ej和vj×(uj+xj+aj*z+fj*g)=xj两式是否成立,若不成立则输出⊥,若成立则进行下一步骤;

s66、检验c1’=c4h2(m,r,c4)是否成立,若不成立则输出⊥,若成立则进行下一步骤;

s67、计算输出明文消息m。

经由上述的技术方案可知,与现有技术相比,本发明具有如下有益效果:本发明采用无双线性配对的加密方法以及无证书签名认证机制,在保证选择密文攻击安全性的同时,大大提高了计算效率,并保护信息的准确性;其性能优良,便于在开放网络环境中应用。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1附图为本发明无双线性配对的代理重加密系统的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例公开了一种无双线性配对的代理重加密系统,包括:系统参数设置模块1、密钥生成模块2、加密模块3、代理重加密密钥生成模块4、代理重加密模块5和解密模块6;其中,

系统参数设置模块1用于生成系统主密钥和系统公开参数,并将系统主密钥发送至加密模块3,将系统公开参数发送至2密钥生成模块、3加密模块、4代理重加密密钥生成模块、5代理重加密模块和6解密模块;

密钥生成模块2用于生成委托方的公钥、私钥和身份信息以及受理方的公钥、私钥和身份信息,并将委托方的公钥和受理方的公钥发送给加密模块3和代理重加密密钥生成模块4,将委托方的私钥和受理方的私钥发送给代理重加密密钥生成模块4和解密模块6;

加密模块3通过系统参数设置模块1发送的系统公开参数、密钥生成模块2发送的委托方和受理方的公钥以及委托方和受理方的身份信息,对要发送的明文消息进行加密和签名,生成要发送的明文消息的原始密文,并将原始密文发送至代理重加密模块5和解密模块6;

代理重加密密钥生成模块4通过系统参数设置模块1发送的系统公开参数和用户密钥生成模块2发送的委托方的私钥和受理方的私钥,生成代理重加密密钥,并将代理重加密密钥发送至代理重加密模块5;

代理重加密模块5通过系统参数设置模块1发送的系统公开参数、密钥生成模块2发送的身份信息、加密模块3发送的原始密文以及代理重加密密钥生成模块4发送的代理重加密密钥进行签名认证,认证成功后生成代理重加密密文,并将该密文发送至解密模块6;

解密模块6用于判断接收到的密文是原始密文还是代理重加密密文,并恢复相应的明文信息;

若密文为原始密文,根据系统公开参数、委托方的身份信息、委托方的户私钥进行签名验证,验证成功后恢复明文消息;

若密文为代理重加密密文,则通过系统公开参数、受理方的私钥和受理方的身份信息进行签名验证,验证成功后恢复明文消息。

本发明实施例公开了一种无双线性配对的代理重加密方法,包括以下步骤:

s1、设定系统公开参数par和系统主密钥mk;

s2、根据系统公开参数par,生成委托方的身份标识idi、受理方的身份标识idj、秘密值xi、公钥pki、委托方的私钥ski和受理方的私钥skj;

s3、根据系统公开参数par、委托方的身份idi和公钥pki进行加密与签名,得到原始密文ci;

s4、根据系统公开参数par、委托方的私钥ski和受理方的私钥skj生成代理重加密秘钥rkij;

s5、根据系统公开参数par、原始密文ci、委托方的身份idi、受理方的身份idj和代理重加密密钥rkij,进行签名认证,认证成功后生成代理重加密密文cj,

s6、判断所接收到的密文是原始密文还是代理重加密密文;

若密文为原始密文ci,根据系统公开参数par、委托方的身份idi、委托方的私钥ski进行签名验证,验证成功后恢复明文消息m;

若密文为代理重加密密文cj,则通过系统公开参数par、受理方的私钥skj和受理方的身份idj进行签名验证,验证成功后恢复明文消息m。

其中,

s1具体包括以下步骤:

s11、给定安全参数k,选取一个长度为k比特的素数q,g是zq*的一个q阶子群,g是g的生成元,zq*为整数集;

s12、选取四个哈希函数h1、h2、h3、和h4,h1:{0,1}*→zq*,h2:{0,1}n0×{0,1}n1×g→zq*,h3:g→{0,1}n0+n1,h4:{0,1}*×g→zq*,其中no,n1是由安全参数k所决定的参数,明文空间为{0,1}n0

s13、随机选择系统主密钥mk,且满足mk∈zq*,计算z=mk*g,保密系统主密钥mk;

s14、公开系统参数par{q,g,g,z,h1,h2,h3,h4,n0,n1}。

s2具体包括以下步骤:

s21、输入系统公开参数par,给定委托方的身份标识idi、委托方的公钥pki和委托方的私钥ski;

s22、随机选取xi,使xi∈zq*;

s23、设置委托方的公钥pki=gxi,设置委托方的私钥ski=xi。

s3具体包括以下步骤:

s31、输入系统公开参数par、明文信息m、委托方的身份标识idi和委托方的公钥pki;

s32、随机选取计算t=h2(m,r,pki),c1=pkit

s33、计算

s34、选择需要签名的公私钥对(spki,sski),随机选取ui∈zq*,计算ui=g×ui,di=ui+mk×h4(idi,ui),xi=xi×g,spki=(xi,ui),sski=(xi,di),c3=sski,sski为委托方签名私钥;

s35、运行签名算法,随机选取整数ei∈zq*,计算ei=ei×g,fi=h1(ei||xi||idi||m),hi=e/(xi+fi+di),vi=xi/(xi+fi+di),得到签名si=(fi,hi,vi);

s36、输出原始密文ci=(c1,c2,c3,si)。

s4具体包括以下步骤:

s41、输入委托方的私钥ski=xi和受理方的私钥skj=xj;

s42、生成代理重加密秘钥rkij=skj/ski=xj/ximodq。

s5具体包括以下步骤:

s51、输入系统公开参数par、原始密文ci、委托方的身份标识idi,受理方的身份标识idj和代理重加密密钥rkij;

s52、签名验证,计算ai=h4(idi,ui),检验hi×(ui+xi+ai*z+fi*g)=ei和vi×(ui+xi+ai*z+fi*g)=xi两式是否成立,若不成立则输出⊥,若成立则进行进行下一步骤;

s53、计算

s54、选择需要签名的公私钥对(spkj,sskj),随机选取uj∈zq*,计算uj=g×uj,dj=uj+mk×h4(idj,uj),xj=xj×g,spkj=(xj,uj),sski=(xj,dj),c3’=sskj,sskj为受理方签名私钥;

s55、c4=pki;

s56、运行签名算法,随机选取整数ej∈zq*,计算ej=ej×g,fj=h1(ej||xj||idj||m),hj=e/(xj+fj+dj),vj=xj/(xj+fj+dj),得到签名sj=(fj,hj,vj);

s57、输出代理重加密密文cj=(c1’,c2,c3’,c4,sj)。

s6具体包括以下步骤:

s61、判断密文形式是原始密文还是重加密密文;

s62、若密文为原始密文,则进行签名验证,计算ai=h4(idi,ui),检验hi×(ui+xi+ai*z+fi*g)=ei和vi×(ui+xi+ai*z+fi*g)=xi两式是否成立,若不成立则输出⊥,若成立则进行下一步骤;

s63、检验是否成立,若不成立则输出⊥,若成立则进行下一步骤;

s64、计算输出明文消息m;

s65、若密文为重加密密文,则进行签名验证,计算aj=h4(idj,uj),检验hj×(uj+xj+aj*z+fj*g)=ej和vj×(uj+xj+aj*z+fj*g)=xj两式是否成立,若不成立则输出⊥,若成立则进行下一步骤;

s66、检验c1’=c4h2(m,r,c4)是否成立,若不成立则输出⊥,若成立则进行下一步骤;

s67、计算输出明文消息m。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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