一种可重随机的公钥加解密方法转让专利

申请号 : CN202010672831.9

文献号 : CN111835766B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王毅陈荣茂王宝生王小峰邢倩倩陈锦榕

申请人 : 中国人民解放军国防科技大学

摘要 :

本发明公开了一种可重随机的公钥加解密方法,目的是解决现有加解密方法中存在的密文长度不固定,运行效率较低,重随机模块需要公钥等缺点。技术方案是先构建由密钥生成模块、加密模块、解密模块和重随机模块组成的加解密系统。接收者运行密钥生成模块生成公钥和私钥,并将公钥通过安全信道发送给发送者。发送者采用接收者的公钥,运行加密模块生成密文,并将密文发送给公共服务器。公共服务器运行重随机模块,对密文C进行重随机,将得到的新密文C′发送给接收者。接收者运行解密模块,采用私钥对收到的密文C′进行解密。本发明密文长度固定,运行效率高,重随机模块不需要使用公钥,公共服务器不需提前进行配置即可对密文进行重随机处理。

权利要求 :

1.一种可重随机的公钥加解密方法,其特征在于包括以下步骤:第一步:构建加解密系统,加解密系统由密钥生成模块、加密模块、解密模块和重随机模块组成,其中密钥生成模块和解密模块部署在接收者,加密模块部署在发送者,重随机模块部署在公共服务器;所述接收者指接收者所在的服务器,所述发送者指发送者所在的服务器;

第二步:接收者运行密钥生成模块生成公钥和私钥,并将公钥通过安全信道发送给发送者,具体步骤如下:

2.1生成第一二次剩余群 第二二次剩余群 第一整数群 和第二整数群 其中p和q为素数,p=2q+1并且存在素数s使得q=2s+1, 和 中的元素均为正整数, 中的元素为从0到p‑1的整数, 中的元素为从0到q‑1的整数;

2.2从 中随机选择2个元素g1,g2;从 中随机选择2个元素g3,g4;

* *

2.3构造哈希函数H(m),其输入m为 中的元素,输出为 中的元素;

2.4从 中随机选取10个元素a1,a2,b1,b2,c1,c2,d1,d2,e1,e2;

2.5计算公钥第一元素 公钥第二元素 公钥第三元素公钥第四元素 公钥第五元素

2.6从 中随机选取2个元素f1,f2;

2.7计算公钥第六元素

2.8从 中随机选取2个元素z0,z1,其中z0≠z1;

2.9将a1,a2,b1,b2,c1,c2,d1,d2,e1,e2,f1,f2组成私钥sk,将g1,g2,g3,g4,A,B,C,D,E,F,*

z0,z1,H(m)组成公钥pk;

2.10将公钥pk通过安全信道发送给发送者;

第三步:发送者采用接收者的公钥,运行加密模块生成密文,并将密文发送给公共服务器,具体步骤如下:

3.1将需加密的明文M按照二进制转十进制的方法,转化为整数M′,计算中间明文m=2

(M′) mod(2p+1),m即为 中的元素;

3.2从 中随机选取2个元素w1,w2;

3.3从 中随机选取2个元素w3,w4;

3.4从 中随机选取元素u;

3.5计算明文的哈希值θ=H(m);

3.6计算密文第一元素 密文第二元素 密文第三元素密文第四元素 密文第五元素 密文第六元素密文第七元素 密文第八元素 密文第九元素密文第十元素 密文第十一元素 密文第十二元素 密文第十三元素 密文第十四元素 密文第十五元素 密文第十六元素

3.7将x1,x2,x3,x4,x5组成第一五元组X,将y1,y2,y3,y4,y5组成第二五元组Y,将u1,u2,u3组成第一三元组U,将v1,v2,v3组成第二三元组V;

3.8将X,Y,U,V组成密文C,将密文C发送给公共服务器;

第四步:公共服务器运行重随机模块,对密文C进行重随机,将得到的新密文C′发送给接收者,具体步骤如下:

4.1将密文C解析成(X,Y,U,V),其中第一五元组X=(x1,x2,x3,x4,x5),第二五元组Y=(y1,y2,y3,y4,y5),第一三元组U=(u1,u2,u3)以及第二三元组V=(v1,v2,v3);

4.2从 中随机选取2个元素r1,r2,从 中随机选取2个元素r3,r4;

*

4.3从 中随机选取元素r;

4.4计算新密文第一元素 新密文第二元素 新密文第三元素新密文第四元素 新密文第五元素 新密文第六元素 新密文第七元素 新密文第八元素 新密文第九元素新密文第十元素 新密文第十一元素 新密文第十二元素新密文第十三元素 新密文第十四元素 新密文第十五元素 新密文第十六元素

4.5将x′1,x′2,x′3,x′4,x′5组成第三五元组X′,将y′1,y′2,y′3,y′4,y′5组成第四五元组Y′,将u′1,u′2,u′3组成第三三元组U′,将v′1,v′2,v′3组成第四三元组V′;

4.6将X′,Y′,U′,V′组成新密文C′,将新密文C′发送给接收者;

第五步,接收者运行解密模块,采用私钥对收到的密文C′进行解密,具体步骤如下:

5.1将密文C′解析成(X′,Y′,U′,V′),其中第三五元组X′=(x′1,x′2,x′3,x′4,x′5),第四五元组Y′=(y′1,y′2,y′3,y′4,y′5),第三三元组U′=(u′1,u′2,u′3)以及第四三元组V′=(v′1,v′2,v′3);

5.2还原中间明文 和元素 计算M′使得m=(M′)2

mod(2q+1);将M′按照十进制转二进制,计算得到明文M;

5.3计算哈希值θ=H(m);

5.4计算临时第一元素

5.5判断 是否等于v′3,若不相等,则密文不合法,转第六步;若相等,转5.6;

5 .6计算临时 第二元素 临时第三元素临时第四元素 临时第五元素

临时第六元素

5.7判断第五五元组 是否等于第六五元组(x′4,x′5,y′3,y′4,y′5),若不相等,则密文不合法,输出“密文不合法”消息,转第六步;若相等,则解密结果为M,转第六步;

第六步,加解密系统结束运行。

2.如权利要求1所述的一种可重随机的公钥加解密方法,其特征在于2.3步所述构造哈* *

希函数H(m)的方法是:将m划分成两个512比特的片段m0,m1,将m0与512比特长的全0序列进行拼接得到1024比特的片段m′0,将m1与512比特长的全1序列进行拼接得到1024比特的片段m′1,对m′0运算SHA‑512函数得到512比特长的输出 对m′1运算SHA‑512函数得到512比特长的输出 将 与 进行拼接得到1024比特长的01序列,即 中的元素。

3.如权利要求1所述的一种可重随机的公钥加解密方法,其特征在于2.3步所述p的数

1024

量级为2 。

4.如权利要求1所述的一种可重随机的公钥加解密方法,其特征在于2.3步需加密的明文M为转化为十进制数后不大于p的二进制数。

说明书 :

一种可重随机的公钥加解密方法

技术领域

[0001] 本发明属于信息安全技术领域,涉及一种公钥加解密方法,具体涉及一种高效的具有可重随机性的公钥加解密方法。

背景技术

[0002] 目前在密码领域具有可重随机性的公钥加解密方法主要有以下几种:
[0003] 一、Gro04方法:由Groth在2004年TCC会议中提出。具体包括以下步骤:
[0004] 第一步,接收者(即接收者所在的服务器)运行密钥生成模块生成公钥和私钥,并将其公钥通过安全信道发送给发送者(即发送者所在的服务器)。具体步骤如下:
[0005] 1.1生成元素个数为n的乘法循环群 和加法整数群 根据国际通用的美国国家1024
标准与技术研究院(NIST)标准,当n的大小为2 时,加解密方法的安全性等级为80比特,
80
即攻击者至少需要进行2 次运算才能破解该方法。 中的元素均为正整数; 中的元素为
0到n‑1之间的整数;
[0006] 1.2构造抗碰撞哈希函数h(m),其中m为一个k维数组,k的大小等于需要加密的明文的维数,数组元素取值为‑1或者1。哈希函数的输出是长度为t的01序列;
[0007] 1.3从 中随机选取k个元素h1,h2,…,hk;
[0008] 1.4从 中随机选取2k个元素x1,x2,…,x2k‑1,x2k;
[0009] 1.5计算公钥第一元素 公钥第二元素 ......,公钥第2k‑1元素 公钥第2k元素
[0010] 1.6从 中随机选取4k个元素w1,w2,…,W2k‑1,W2k,l1,l2,…,l2k‑1,l2k;
[0011] 1.7计算公钥第2k+1元素 和公钥第2k+2元素
[0012] 1.8将g1,g2,h1,…,g2k‑1,g2k,hk,c,d,h(m)组成公钥pk,将x1,…,x2k,w1,…,W2k,l1,…,l2k组成私钥sk。
[0013] 第二步,发送者运行加密模块生成密文,并将密文发送给公共服务器。令需要加密的明文为m,具体步骤如下:
[0014] 2.1从 中随机选取元素r;
[0015] 2.2构造密文C, 将密文C发送给公共服务器。
[0016] 第三步,公共服务器运行重随机模块,对密文C进行重随机操作,将得到的新密文C′发送给接收者。具体步骤如下:
[0017] 3.1重随机模块将收到的密文C解析成3k+1元组(u1,u2,v1,…,u2k‑1,u2k,vk,α);
[0018] 3.2从 中随机选取元素r′,其中r′≠0;
[0019] 3.3构造新密文C′, 将新密文C′发送给接收者。
[0020] 第四步,接收者运行解密模块,对收到的新密文C′进行解密。具体步骤如下:
[0021] 4.1将收到的密文C′解析成3k+1元组(u′1,u′2,v′1,…,u′2k‑1,u′2k,v′k,α′);
[0022] 4.2对于所有i∈{1,…,k},计算满足等式 的mi,其中mi∈{‑1,1};
[0023] 4.3令明文m=(m1,…,mk);
[0024] 4.4检查α′是否等于 若相等,明文m即为解密结果,否则密文不合法,解密结果为空。
[0025] Gro04方法的缺陷在于其密文C元素个数与明文m的维数成正比关系。这一点可以从上述过程第二步中的2.2看出,当明文的维数为k时,对应的密文C元素个数为3k+1。相应
地,该加解密方法的各个模块的运行时间也会随明文的大小线性增长。
[0026] 二、PR07方法:由Prabhakaran和Rosulek在2007年Crypto会议上提出。其具体包括以下步骤:
[0027] 第一步,接收者运行密钥生成模块生成公钥和私钥,并将其公钥通过安全信道发送给发送者。具体步骤如下:
[0028] 1.1生成元素个数为p的第一乘法循环群 和第一加法整数群 生成元素个数为q的第二乘法循环群 和第二加法整数群 其中p和q均为素数,且p=2q+1,p的大小与加
解密方法的安全性等级相关。根据国际通用的美国国家标准与技术研究院(NIST)标准,当p
1024
的数量级为2 时,加解密方法的安全性等级为80比特。 和 中的元素均为正整数, 中
的元素为0到p‑1之间的整数, 中的元素为0到q‑1之间的整数;
[0029] 1.2构造抗碰撞哈希函数h(m),其中m为 中的元素。哈希函数的输出是 中的元素;
[0030] 1.3从 中随机选取2个元素 从 中随机选取4个元素a1,a2,b1,b2;
[0031] 1.4计算公钥第一元素 计算公钥第二元素
[0032] 1.5从 中随机选取4个元素g1,g2,g3,g4;从 中随机选取12个元素c1,c2,c3,c4,d1,d2,d3,d4,e1,e2,e3,e4;
[0033] 1.6计算公钥第三元素 公钥第四元素 和公钥第五元素
[0034] 1.7从 中随机选取4个互不相等的元素z1,z2,z3,z4;
[0035] 1.8将 A,B,g1,g2,g3,g4,C,D,E,z1,z2,z3,z4,h组成公钥pk;将a1,a2,b1,b2,c1,c2,c3,c4,d1,d2,d3,d4,e1,e2,e3,e4组成私钥sk。
[0036] 第二步,发送者运行加密模块,生成密文,并将密文发送给公共服务器。令需要加密的明文为m,具体步骤如下:
[0037] 2.1从 中随机选取2个元素x,y;从 中随机选取元素u;
[0038] 2.2计算密文第一元素 密文第二元素 密文第三元素密文第四元素 密文第五元素 密文第六元素
x
密文第七元素 密文第八元素 密文第九元素GX=mC ,密文第十
h(m) x y h(m) y
元素PX=(DE ) ,密文第十一元素GY=C,密文第十二元素PY=(DE ) ;
[0039] 2.3从 中随机选取2个元素v,w;
[0040] 2.4计算密文第十三元素 密文第十四元素 密文第十五元素v v
密文第十六元素 密文第十七元素AV=uA ,密文第十八元素BV=B,密文
w w
第十九元素AW=A,密文第二十元素BW=B;
[0041] 2.5将X1,X2,X3,X4,GX,PX,Y1,Y2,Y3,Y4,GY,PY,V1,V2,AV,BV,W1,W2,AW,BW组成密文CT。将CT发送给公共服务器。
[0042] 第三步,公共服务器运行重随机模块,对密文CT进行重随机,将得到的新密文CT′发送给接收者。具体步骤如下:
[0043] 3.1将密文CT解析成二十元组(X1,X2,X3,X4,GX,PX,Y1,Y2,Y3,Y4,GY,PY,V1,V2,AV,BV,W1,W2,AW,BW);
[0044] 3.2从 中随机选取2个元素s,t;从 中随机选取元素u′;
[0045] 3.3计算新密文第十三元素 新密文第十四元素 新密文第十五元素 新密文第十六元素 新密文第十七元素 新密文
第十八元素 新密文第十九元素 新密文第二十元素
[0046] 3.4从 中随机选取2个元素s′,t′;
[0047] 3.5计算新密文第一元素 新密文第二元素 新密文第三元素 新密文第四元素 新密文第五元素 新
密文第六元素 新密文第七元素 新密文第八元素 新密文第
九元素 新密文第十元素 新密文第十一元素 新密文第十
二元素
[0048] 3.6将X′1,X′2,X′3,X′4,G′X,P′X,Y′1,Y′2,Y′3,Y′4,G′Y,P′Y,V′1,V′2,A′V,B′V,W′1,W′2,A′W,B′W组成新密文CT′。将新密文CT′发送给接收者。
[0049] 第四步,接收者运行解密模块,对收到的密文CT′进行解密。具体步骤如下:
[0050] 4.1将密文CT′解析成二十元组(X′1,X′2,X′3,X′4,G′X,P′X,Y′1,Y′2,Y′3,Y′4,G′Y,P′Y,V′1,V′2,A′V,B′V,W′1,W′2,A′W,B′W);
[0051] 4.2检查第一三元组(B′V,A′W,B′W)是否等于若不相等,则密文不合法;
[0052] 4.3计算临时第一元素
[0053] 4.4计算临时第二元素 临时第三元素 临时第四元素 临时第五元素 临时第六元素 临时
第七元素 临时第八元素 临时第九元素
[0054] 4.5计算明文
[0055] 4.6检查第二三元组(G′Y,P′X,P′Y)是否等于若不相等,则密文CT′不合法;否则,得到明文m。
[0056] PR07方法克服了Gro04方法的缺陷,加密得到的密文CT′长度是固定的。但是,从上述对PR07方法的描述可以看到,该方法的加密、解密和重随机模块均有大量的指数运算,而
指数运算相比于其他运算而言需要花费较长时间。因此,PR07方法的运行效率不高。
[0057] 三、FFHR19方法:由Faonio,Fiore,Herranz和Rafols在2019年AsiaCrypt会议上提出。其具体包括以下步骤:
[0058] 第一步,接收者运行密钥生成模块生成公钥和私钥,并将其公钥通过安全信道发送给发送者。具体步骤如下:
[0059] 1.1密钥生成模块生成非对称双线性群五元组 其中q为素数。根160
据国际通用的美国国家标准与技术研究院(NIST)标准,当q的数量级为2 时,加解密方法
的安全性等级为80比特。 中的元素个数均为q, 和 中的元素均为椭圆曲线上
点的坐标,可表示为两个整数, 中的元素可表示为整数数组,e为一个可有效计算的非退
化的双线性映射,即 生成元素个数为q的加法整数群 其元素为0到q‑1的
整数;
[0060] 1.2从 中随机选取元素h1;从 中随机选取元素h2;为简洁起见,对于任意将椭圆曲线坐标元素h1与标量元素a的乘法运算表示为[a]1,椭圆曲线坐标元素
h2与标量元素b的乘法运算表示为[b]2, 上的元素e(h1,h2)与标量元素a的指数运算表示
为[a]T;对于任意k维向量 令
[0061] 1.3从 中随机选取20个元素a1,a2,f1,f2,g1,g2,F1,…,F4,G1,…,G6,D1,D2,E1,E2;令第一列向量 第二列向量 第三列向量 第四列向量
第五列向量 第一矩阵 第二矩阵 第
三矩阵
[0062] 1.4将 组成公钥pk;将 F,G组成私钥sk。
[0063] 第二步,发送者运行加密模块,采用接收者的公钥生成密文,并将密文发送给公共服务器。令需要加密的明文为m,具体步骤如下:
[0064] 2.1从 中随机选取2个元素r,s;
[0065] 2.2计算第六列向量 临时第一元素 第七列向量
[0066] 2.3计算第八列向量
[0067] 2.4计算临时第二元素 临时第三元素密文元素[π]T=[π1]T+[π2]T;
[0068] 2.5将 组成密文C。将密文C发送给公共服务器。
[0069] 第三步,公共服务器运行重随机模块,对密文C进行重随机,将得到的新密文C′发送给接收者。具体步骤如下:
[0070] 3.1将密文C解析成三元组 将 解析成二元组
[0071] 3.2从 中随机选取2个元素
[0072] 3.3计算第九列向量 第十列向量
[0073] 3.4计算临时第四元素临时第五元素 新密文元素
[0074] 3.5将 组成新密文C′。将新密文C′发送给接收者。
[0075] 第四步,接收者运行解密模块,对收到的密文C′进行解密。具体步骤如下:
[0076] 4 .1将密文C′解析成三元组 将 解析成二元组
[0077] 4.2计算明文
[0078] 4.3计算临时第六元素 临时第七元素
[0079] 4.4检查 是否等于 若不相等,则密文不合法,否则,得到明文m。
[0080] 该方法的密文C的元素个数是现有方法中最少的,仅有6个元素( 包含3个元素,包含2个元素,[π]T包含1个元素)。但是,其加密、解密和重随机模块中均涉及到双线性
对运算。相比于循环群上的指数运算,双线性对运算耗时较长,故该方法的运算效率较低。
该方法的另一点不足在于重随机模块部分需要公钥参与其中。在实际应用中,运行重随机
模块的公共服务器需要提前知晓收到的密文所对应的公钥。如果采用将公钥附加在密文之
后的做法,那么攻击者可以追踪密文在通信信道的传播路径,从而使接收者的隐私被泄漏。
[0081] 综上所述,现有加解密方法存在各种不同的缺陷,包括密文长度不固定,运行效率较低,重随机模块需要公钥等。

发明内容

[0082] 本发明要解决的技术问题是提供一种可重随机的公钥加解密方法,解决现有加解密方法中存在的密文长度不固定,运行效率较低,重随机模块需要公钥等缺点。
[0083] 本发明技术方案是:
[0084] 第一步:构建加解密系统。该系统中有三个角色,分别为发送者、接收者和公共服务器。加解密系统由四个模块组成,分别为密钥生成模块、加密模块、解密模块和重随机模
块。其中密钥生成模块和解密模块部署在接收者,加密模块部署在发送者,重随机模块部署
在公共服务器。
[0085] 第二步:接收者运行密钥生成模块生成公钥和私钥,并将公钥通过安全信道发送给发送者。具体步骤如下:
[0086] 2.1生成第一二次剩余群 第二二次剩余群 第一整数群 和第二整数群 其中p和q为素数,p=2q+1并且存在素数s使得q=2s+1,p的大小与加解密方法
的安全性等级相关,根据国际通用的美国国家标准与技术研究院(NIST)标准,当p的数量级
1024
为2 时,加解密方法的安全性等级为80比特。因此, 和 中的元素均为正整
1024
数, 中的元素为从0到p‑1的整数, 中的元素为从0到q‑1的整数;且p的数量级为2 。
[0087] 2.2从 中随机选择2个元素g1,g2;从 中随机选择2个元素g3,g4;
[0088] 2.3构造哈希函数H(m*),其输入m*为 中的元素,输出为 中的元素。H(m*)*
具体为:将m 划分成两个512比特的片段m0,m1,将m0与512比特长的全0序列进行拼接得到
1024比特的片段m′0,将m1与512比特长的全1序列进行拼接得到1024比特的片段m′1,对m′0
运算美国国家标准与技术研究院发布的SHA‑512函数得到512比特长的输出 对m′1运算
SHA‑512函数得到512比特长的输出 将 与 进行拼接得到1024比特长的01序列,即
中的元素;
[0089] 2.4从 中随机选取10个元素a1,a2,b1,b2,c1,c2,d1,d2,e1,e2;
[0090] 2.5计算公钥第一元素 公钥第二元素 公钥第三元素公钥第四元素 公钥第五元素
[0091] 2.6从 中随机选取2个元素f1,f2;
[0092] 2.7计算公钥第六元素
[0093] 2.8从 中随机选取2个元素z0,z1,其中z0≠z1;
[0094] 2.9将a1,a2,b1,b2,c1,c2,d1,d2,e1,e2,f1,f2组成私钥sk,将g1,g2,g3,g4,A,B,C,D,*
E,F,z0,z1,H(m)组成公钥pk;
[0095] 2.10将公钥pk通过安全信道发送给发送者。
[0096] 第三步:发送者采用接收者的公钥,运行加密模块生成密文,并将密文发送给公共服务器。具体步骤如下:
[0097] 3.1将需加密的明文M(是转化为十进制数后不大于p的二进制数)按照二进制转十2
进制的方法,转化为整数M′。计算中间明文m=(M′) mod(2p+1),m即为 中的元素;
[0098] 3.2从 中随机选取2个元素w1,w2;
[0099] 3.3从 中随机选取2个元素w3,w4;
[0100] 3.4从 中随机选取元素u;
[0101] 3.5计算明文的哈希值θ=H(m);
[0102] 3.6计算密文第一元素 密文第二元素 密文第三元素密文第四元素 密文第五元素 密文
第六元素 密文第七元素 密文第八元素 密文第九元素
密文第十元素 密文第十一元素 密文第十二元素
密文第十三元素 密文第十四元素 密文第十五元素
密文第十六元素
[0103] 3.7将x1,x2,x3,x4,x5组成第一五元组X,将y1,y2,y3,y4,y5组成第二五元组Y,将u1,u2,u3组成第一三元组U,将v1,v2,v3组成第二三元组V;
[0104] 3.8将X,Y,U,V组成密文C,将密文C发送给公共服务器。
[0105] 第四步:公共服务器运行重随机模块,对密文C进行重随机,将得到的新密文C′发送给接收者。具体步骤如下:
[0106] 4.1将密文C解析成(X,Y,U,V),其中第一五元组X=(x1,x2,x3,x4,x5),第二五元组Y=(y1,y2,y3,y4,y5),第一三元组U=(u1,u2,u3)以及第二三元组V=(v1,v2,v3);
[0107] 4.2从 中随机选取2个元素r1,r2,从 中随机选取2个元素r3,r4;
[0108] 4.3从 中随机选取元素r*;
[0109] 4.4计算新密文第一元素 新密文第二元素 新密文第三元素新密文第四元素 新密文第五元素 新密文第六元
素 新密文第七元素 新密文第八元素 新密文第九元素
新密文第十元素 新密文第十一元素 新密文第十二元素
新密文第十三元素 新密文第十四元素 新密文第十五元
素 新密文第十六元素
[0110] 4.5将x′1,x′2,x′3,x′4,x′5组成第三五元组X′,将y′1,y′2,y′3,y′4,y′5组成第四五元组Y′,将u′1,u′2,u′3组成第三三元组U′,将v′1,v′2,v′3组成第四三元组V′;
[0111] 4.6将X′,Y′,U′,V′组成新密文C′,将新密文C′发送给接收者。
[0112] 第五步,接收者运行解密模块,采用私钥对收到的密文C′进行解密。具体步骤如下:
[0113] 5.1将密文C′解析成(X′,Y′,U′,V′),其中第三五元组X′=(x′1,x′2,x′3,x′4,x′5),第四五元组Y′=(y′1,y′2,y′3,y′4,y′5),第三三元组U′=(u′1,u′2,u′3)以及第四三元组V′
=(v′1,v′2,v′3);
[0114] 5.2还原中间明文 和元素 计算M′2
使得m=(M′) mod(2q+1)。将M′按照十进制转二进制,计算得到明文M。此时还不能直接输出
明文M,需要进一步确定密文C′是否合法;
[0115] 5.3计算哈希值θ=H(m);
[0116] 5.4计算临时第一元素
[0117] 5.5判断 是否等于v′3,若不相等,则密文不合法,转第六步;若相等,转5.6;
[0118] 5.6计算临时第二元素 临时第三元素临时第四元素 临时第五元素
临时第六元素
[0119] 5.7判断第五五元组 是否等于第六五元组(x′4,x′5,y′3,y′4,y′5),若不相等,则密文不合法,输出“密文不合法”消息,转第六步;若相等,则解密结果为M,
转第六步。
[0120] 第六步,加解密系统结束运行。
[0121] 采用本发明可以得到如下效果:
[0122] 在Ubuntu14.04 64位系统、英特尔酷睿i5‑5257处理器,4G内存的环境下,使用基于charm‑crypto库(v0.43版本)的本发明与现有方法分别处理大小为1Kb的明文时的对比
如下表所示。
[0123] 方法 Gro04 PR07 FFHR19 本发明公钥大小(Kb) 3000 11 10.8 6
密文大小(Kb) 3000 20 3.8 16
加密时间(ms) 2003.19 14.69 40.22 8.01
解密时间(ms) 2672.92 21.37 32.76 10.68
重随机时间(ms) 2003.94 16.03 61.57 12.01
[0124] 其中加密、解密和重随机时间均为分别重复运行1000次后取平均值得到的。
[0125] 从上表中,可以看出本发明的加密、解密和重随机时间均小于现有方法。这是由于相比于Gro04方法,本发明中生成的密文大小不随明文大小线性增长;相比于PR07方法,本
发明中的加密、解密和重随机模块需要执行的指数运算要少;相比于FFHR19方法,本发明中
不涉及耗时较长的双线性对运算。
[0126] 同时,本发明的密文大小小于PR07方法,但是大于FFHR19方法。本发明中使用的群元素与PR07方法相同,而与FFHR19方法截然不同。出于运行效率的考虑,本发明没有采用
FFHR19方法中的密文结构,而是在PR07方法基础上成功进行了改进和优化。
[0127] 最后,本发明第四步的重随机过程不需要使用公钥,而FFHR19方法不具有该特性。本发明的密文可以依靠自身中的元素相互进行运算,而不改变密文的有效性以及其底层中
的明文。在实际应用中,该特性使得运行重随机模块的公共服务器不需要提前进行配置即
可对收到的密文进行重随机处理。

附图说明

[0128] 图1是本发明第一步构建的加解密系统的逻辑结构图;
[0129] 图2是本发明的总体流程图。具体实施方式:
[0130] 以下结合说明书附图和具体实施例对本发明作进一步描述。
[0131] 如图2所示,本发明包括以下步骤:
[0132] 第一步:构建加解密系统。如图1所示,加解密系统中有三个角色,分别为发送者、接收者和公共服务器。加解密系统由四个模块组成,分别为密钥生成模块、加密模块、解密
模块和重随机模块。其中密钥生成模块和解密模块部署在接收者,加密模块部署在发送者,
重随机模块部署在公共服务器。
[0133] 第二步:接收者运行密钥生成模块生成公钥和私钥,并将公钥通过安全信道发送给发送者。具体步骤如下:
[0134] 2.1生成第一二次剩余群 第二二次剩余群 第一整数群 和第1024
二整数群 其中p和q为素数,p=2q+1并且存在素数s使得q=2s+1,p的数量级为2 。
和 中的元素均为正整数, 中的元素为从0到p‑1的整数, 中的元素为从
0到q‑1的整数;
[0135] 2.2从 中随机选择2个元素g1,g2;从 中随机选择2个元素g3,g4;
[0136] 2.3构造哈希函数H(m*),其输入m为 中的元素,输出为 中的元素。H(m*)具*
体为:将m 划分成两个512比特的片段m0,m1,将m0与512比特长的全0序列进行拼接得到1024
比特的片段m′0,将m1与512比特长的全1序列进行拼接得到1024比特的片段m′1,对m′0运算
美国国家标准与技术研究院发布的SHA‑512函数得到512比特长的输出 对m′1运算SHA‑
512函数得到512比特长的输出 将 与 进行拼接得到1024比特长的01序列,即 中
的元素;
[0137] 2.4从 中随机选取10个元素a1,a2,b1,b2,c1,c2,d1,d2,e1,e2;
[0138] 2.5计算公钥第一元素 公钥第二元素 公钥第三元素公钥第四元素 公钥第五元素
[0139] 2.6从 中随机选取2个元素f1,f2;
[0140] 2.7计算公钥第六元素
[0141] 2.8从 中随机选取2个元素z0,z1,其中z0≠z1;
[0142] 2.9将a1,a2,b1,b2,c1,c2,d1,d2,e1,e2,f1,f2组成私钥sk,将g1,g2,g3,g4,A,B,C,D,*
E,F,z0,z1,H(m)组成公钥pk;
[0143] 2.10将公钥pk通过安全信道发送给发送者。
[0144] 第三步:发送者采用接收者的公钥,运行加密模块生成密文,并将密文发送给公共服务器。具体步骤如下:
[0145] 3.1将需加密的明文M按照二进制转十进制的方法,转化为整数M′。计算中间明文m2
=(M′) mod(2p+1),m即为 中的元素;
[0146] 3.2从 中随机选取2个元素w1,w2;
[0147] 3.3从 中随机选取2个元素w3,w4;
[0148] 3.4从 中随机选取元素u;
[0149] 3.5计算明文的哈希值θ=H(m);
[0150] 3.6计算密文第一元素 密文第二元素 密文第三元素密文第四元素 密文第五元素 密文第
六元素 密文第七元素 密文第八元素 密文第九元素
密文第十元素 密文第十一元素 密文第十二元素
密文第十三元素 密文第十四元素 密文第十五元素
密文第十六元素
[0151] 3.7将x1,x2,x3,x4,x5组成第一五元组X,将y1,y2,y3,y4,y5组成第二五元组Y,将u1,u2,u3组成第一三元组U,将v1,v2,v3组成第二三元组V;
[0152] 3.8将X,Y,U,V组成密文C,将密文C发送给公共服务器。
[0153] 第四步:公共服务器运行重随机模块,对密文C进行重随机,将得到的新密文C′发送给接收者。具体步骤如下:
[0154] 4.1将密文C解析成(X,Y,U,V),其中第一五元组X=(x1,x2,x3,x4,x5),第二五元组Y=(y1,y2,y3,y4,y5),第一三元组U=(u1,u2,u3)以及第二三元组V=(v1,v2,v3);
[0155] 4.2从 中随机选取2个元素r1,r2,从 中随机选取2个元素r3,r4;*
[0156] 4.3从 中随机选取元素r ;
[0157] 4.4计算新密文第一元素 新密文第二元素 新密文第三元素新密文第四元素 新密文第五元素 新密文第六元
素 新密文第七元素 新密文第八元素 新密文第九元素
新密文第十元素 新密文第十一元素 新密文第十二元素
新密文第十三元素 新密文第十四元素 新密文第十五元
素 新密文第十六元素
[0158] 4.5将x′1,x′2,x′3,x′4,x′5组成第三五元组X′,将y′1,y′2,y′3,y′4,y′5组成第四五元组Y′,将u′1,u′2,u′3组成第三三元组U′,将v′1,v′2,v′3组成第四三元组V′;
[0159] 4.6将X′,Y′,U′,V′组成新密文C′,将新密文C′发送给接收者。
[0160] 第五步,接收者运行解密模块,采用私钥对收到的密文C′进行解密。具体步骤如下:
[0161] 5.1将密文C′解析成(X′,Y′,U′,V′),其中第三五元组X′=(x′1,x′2,x′3,x′4,x′5),第四五元组Y′=(y′1,y′2,y′3,y′4,y′5),第三三元组U′=(u′1,u′2,u′3)以及第四三元组V′
=(v′1,v′2,v′3);
[0162] 5.2还原中间明文 和元素 计算M′2
使得m=(M′) mod(2q+1)。将M′按照十进制转二进制,计算得到明文M。此时还不能直接输出
明文M,需要进一步确定密文C′是否合法;
[0163] 5.3计算哈希值θ=H(m);
[0164] 5.4计算临时第一元素
[0165] 5.5判断 是否等于v′3,若不相等,则密文不合法,转第六步;若相等,转5.6;
[0166] 5.6计算临时第二元素 临时第三元素临时第四元素 临时第五元素
临时第六元素
[0167] 5.7判断第五五元组 是否等于第六五元组(x′4,x′5,y′3,y′4,y′5),若不相等,则密文不合法,输出“密文不合法”消息,转第六步;若相等,则解密结果为M,
转第六步。
[0168] 第六步,加解密系统结束运行。
[0169] 最后说明的是,以上仅是本发明的优选实施例,并非对本发明作任何形式上的限制。虽然本发明已以优选实施例揭露如上,然而并非用以限定本发明。任何熟悉本领域的技
术人员,在不脱离本发明技术方案范围的情况下,都可利用上述揭示的技术内容对本发明
技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离
本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变
化及修饰,均应落在本发明技术方案保护的范围内。