非对称加解密方法和装置与流程

文档序号:13286797阅读:163来源:国知局
非对称加解密方法和装置与流程

本发明涉及到数字签名解密领域,特别是涉及到一种非对称加解密方法和装置。



背景技术:

标识密码算法使用用户的标识和系统的公开信息计算用户的标识公钥,用户间通信无需交换证书或公钥。这类系统的显著优点是管理简单,但大多数标识密码算法都采用双线性对进行构造,因双线性对运算复杂,这类算法在一些计算能力很低的嵌入式设备上执行面临挑战。使用该方法无需交换证书,用户只需公开公钥生成因子。



技术实现要素:

本发明的主要目的为提供一种使用该方法无需交换证书,用户只需公开公钥生成因子的非对称加解密方法和装置。

为了实现上述发明目的,本发明提出一种非对称加解密方法,包括:

解密端获取密钥生成中心生成对应所述解密端的标识id的标识私钥t;其中,所述密钥生成中心执行预设的数字签名方法ma,随机生成签名公私密钥对作为标识密码系统参数p和主密钥ms,所述密钥生成中心执行所述数字签名方法ma的签名过程对所述标识id进行数字签名,产生预签名π以及包含两部分的签名值(r,s),将所述预签名π及第二部分签名值s作为标识私钥t=(π,s);

解密端使用预签名π作为其公钥的生成因子x公开,在获得加密端的密文c后,使用s作为解密私钥y按照预设的非对称加密方法mb的解密过程对密文c解密,其中,所述密文c由加密端根据系统参数p、标识id、公开的公钥生成因子x,计算s对应的公钥q后使用所述非对称加密方法mb的加密过程加密消息m后生成。

进一步地,所述数字签名方法ma是基于离散对数问题的签名方法,所述密钥生成中心基于离散对数问题构造,其给定循环群的生成元g和群中一个随机元素[k]g,其中[k]g表示k个g按照循环群的运算规则进行k次乘法运算;根据公开的系统参数p、标识id、公钥生成因子x,能够计算出y作为私钥对应的公钥[y]g。

进一步地,通过所述密钥生成中心执行预设的数字签名方法ma的过程,包括:

选择阶为q的循环群的生成元g,随机生成整数ms满足0<ms<q,计算h=[ms]g,设置系统参数p=<g,h=[ms]g>,ms作为主密钥。

进一步地,所述数字签名方法ma生成所述标识私钥t的过程,包括:

通过密钥生成中心随机生成整数k满足0<k<q;

通过密钥生成中心计算预签名π=[k]g;

通过密钥生成中心计算签名第一部分r=hash(f(id,其他信息α),π)modq,其中α包括循环群的生成信息、g,[k]g,其中f操作为哈希运算或者字符串拼接;

通过密钥生成中心计算签名值第二部分s=w(k,r,ms),其中,w运算要求当x=π,y=s时,根据p=<g,h=[ms]g>,x能够计算q=[y]g;

通过密钥生成中心生成标识私钥t=(π,s)。

进一步地,所述标识私钥t和公钥生成因子x的生成方法,包括:

解密端随机生成成整数n满足0<n<q;

计算解密端部分公钥[n]g后提供给所述密钥生成中心;

通过所述密钥生成中心随机生成整数k满足0<k<q;

通过密钥生成中心计算预签名π=[k]g;

通过密钥生成中心计算公钥生成因子x=π±[n]g;

通过密钥生成中心计算签名第一部分r=hash(f(id,其他信息α),x),

通过密钥生成中心计算签名值第二部分s=w(k,r,ms),其中,w运算要求当x=π+[n]g,y=(s±n)modq时,根据p=<g,h=[ms]g>,x能够计算q=[y]g;

通过密钥生成中心生成标识私钥t=(π,s),或者t=(x,s);

解密端计算解密私钥y=(s±n)modq,设置公钥生成因子x=π±[n]g。

进一步地,所述数字签名方法ma生成所述标识私钥t的过程,包括:

通过密钥生成中心计算k=hash(f(id,其他信息α),ms)modq;

通过密钥生成中心计算预签名π=[k]g;

通过密钥生成中心计算签名第一部分r=hash(f(id,其他信息α),π);

通过密钥生成中心计算签名值第二部分s=w(k,r,ms),其中,w运算要求根据p=<g,q=[ms]g>,π=[k]g能够计算q=[s]g;

通过密钥生成中心生成标识私钥t=(π,s)。

进一步地,所述标识私钥t和公钥生成因子x的生成方法,包括:

解密端随机生成成整数n满足0<n<q;

计算解密端部分公钥[n]g后提供给所述密钥生成中心;

通过密钥生成中心计算k=hash(f(id,[n]g,其他信息α),ms)modq;

通过密钥生成中心计算预签名π=[k]g;

通过密钥生成中心计算公钥生成因子x=π±[n]g;

通过密钥生成中心计算计算签名第一部分r=hash(f(id,其他信息α),x);

通过密钥生成中心计算签名值第二部分s=w(k,r,ms),其中,w运算要求当x=π±[n]g,y=(s±n)modq时,根据p=<g,h=[ms]g>,x能够计算q=[y]g;

通过密钥生成中心生成标识私钥t=(π,s),或者t=(x,s);

解密端计算解密私钥y=(s±n)modq,设置公钥生成因子x=π±[n]g。

本发明还提供一种非对称加解密装置,包括:

获取单元,用于获取密钥生成中心生成对应所述解密端的标识id的标识私钥t;其中,所述密钥生成中心执行预设的数字签名方法ma,随机生成签名公私密钥对作为标识密码系统参数p和主密钥ms,所述密钥生成中心执行所述数字签名方法ma的签名过程对所述标识id进行数字签名,产生预签名π以及包含两部分的签名值(r,s),将所述预签名π及第二部分签名值s作为标识私钥t=(π,s);

解密单元,用于使用预签名π作为其公钥的生成因子x公开,在获得加密端的密文c后,使用s作为解密私钥y按照预设的非对称加密方法mb的解密过程对密文c解密,其中,所述密文c由加密端根据系统参数p、标识id、公开的公钥生成因子x,计算s对应的公钥q后使用所述非对称加密方法mb的加密过程加密消息m后生成。

进一步地,所述数字签名方法ma是基于离散对数问题的签名方法,所述密钥生成中心基于离散对数问题构造,其给定循环群的生成元g和群中一个随机元素[k]g,其中[k]g表示k个g按照循环群的运算规则进行k次乘法运算;根据公开的系统参数p、标识id、公钥生成因子x,能够计算出y作为私钥对应的公钥[y]g。

进一步地,所述获取单元,包括:

执行模块,通过密钥生成中心选择阶为q的循环群的生成元g,随机生成整数ms满足0<ms<q,计算h=[ms]g,设置系统参数p=<g,h=[ms]g>,ms作为主密钥。

进一步地,所述获取单元,包括:

第一生成模块,用于通过密钥生成中心随机生成整数k满足0<k<q;

第一计算模块,用于通过密钥生成中心计算预签名π=[k]g;

第二计算模块,用于通过密钥生成中心计算签名第一部分r=hash(f(id,其他信息α),π)modq,其中α包括循环群的生成信息、g,[k]g,其中f操作为哈希运算或者字符串拼接;

第三计算模块,用于通过密钥生成中心计算签名值第二部分s=w(k,r,ms),其中,w运算要求当x=π,y=s时,根据p=<g,h=[ms]g>,x能够计算q=[y]g;

第二生成模块,用于通过密钥生成中心生成标识私钥t=(π,s)。

进一步地,所述获取单元,包括:

第三生成模块,用于随机生成成整数n满足0<n<q;

第四计算模块,用于计算解密端部分公钥[n]g后提供给所述密钥生成中心;

第五计算模块,用于通过所述密钥生成中心随机生成整数k满足0<k<q;

第六计算模块,用于通过密钥生成中心计算预签名π=[k]g;

第七计算模块,用于通过密钥生成中心计算公钥生成因子x=π±[n]g;

第八计算模块,用于通过密钥生成中心计算签名第一部分r=hash(f(id,其他信息α),x);

第九计算模块,用于通过密钥生成中心计算签名值第二部分s=w(k,r,ms),其中,w运算要求当x=π±[n]g,y=(s±n)modq时,根据p=<g,h=[ms]g>,x能够计算q=[y]g;

第四生成模块,用于通过密钥生成中心生成标识私钥t=(п,s),或者,t=(x,s);

第十计算模块,用于计算解密私钥y=(s±n)modq,设置公钥生成因子x=π±[n]g。

进一步地,所述获取单元,包括:

第一模块,用于通过密钥生成中心计算k=hash(f(id,其他信息α),ms)modq;

第二模块,用于通过密钥生成中心计算预签名π=[k]g;

第三模块,用于通过密钥生成中心计算签名第一部分r=hash(f(id,其他信息α),π);

第四模块,用于通过密钥生成中心计算签名值第二部分s=w(k,r,ms),其中,w运算要求根据p=<g,q=[ms]g>,π=[k]g能够计算q=[s]g;

第五模块,用于通过密钥生成中心生成标识私钥t=(π,s),或者,t=(x,s)。

进一步地,所述获取单元,包括:

第六模块,用于解密端随机生成成整数n满足0<n<q;

第七模块,用于计算解密端部分公钥[n]g后提供给所述密钥生成中心;

第八模块,用于通过密钥生成中心计算k=hash(f(id,[n]g,其他信息α),ms)modq;

第九模块,用于通过密钥生成中心计算预签名π=[k]g;

第十模块,用于通过密钥生成中心计算公钥生成因子x=π±[n]g;

第十一模块,用于通过密钥生成中心计算计算签名第一部分r=hash(f(id,其他信息α),x);

第十二模块,用于通过密钥生成中心计算签名值第二部分s=w(k,r,ms),其中,w运算要求当x=π±[n]g,y=(s±n)modq时,根据p=<g,h=[ms]g>,x能够计算q=[y]g;

第十三模块,用于通过密钥生成中心生成标识私钥t=(x,s);

第十四模块,用于解密端计算解密私钥y=(s±n)modq,设置公钥生成因子x=π±[n]g。

本发明的非对称加解密方法和装置,拥有标识id的解密端向密钥生成中心申请标识私钥,密钥生成中心采用满足一定条件的基于离散对数问题的数字签名方法生成对标识id的签名,并将预签名п和签名结果的第二部分s作为标识私钥,解密端使用s作为解密私钥y,并将π作为部分其公钥的生成因子进行公开;加密端获取π通过公式计算出s对应的公钥q,采用基于离散对数问题构造的加密方法加密消息,解密端使用s进行解密;如果有必要,解密端可以对s进行变换加入其选择的随机数,并对π作相应变换后再公开;本申请提供的方法和装置无需交换证书,用户只需公开公钥生成因子即可,加密方法简单、安全。

附图说明

图1为本发明一实施例的非对称加解密方法的流程示意图;

图2为本发明一实施例的数字签名方法ma生成所述标识私钥t的流程示意图;

图3为本发明一实施例的非对称加解密装置的结构示意框图;

图4为本发明一实施例的获取单元的结构示意框图;

图5为本发明另一实施例的获取单元的结构示意框图;

图6为本发明又一实施例的获取单元的结构示意框图;

图7为本发明又一实施例的获取单元的结构示意框图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

参照图1,本发明实施例提供一种非对称加解密方法,包括:

s1、解密端获取密钥生成中心生成对应所述解密端的标识id的标识私钥t;其中,所述密钥生成中心执行预设的数字签名方法ma,随机生成签名公私密钥对作为标识密码系统参数p和主密钥ms,所述密钥生成中心执行所述数字签名方法ma的签名过程对所述标识id进行数字签名,产生预签名п以及包含两部分的签名值(r,s),将所述预签名π及第二部分签名值s作为标识私钥t=(π,s);

s2、解密端使用预签名π作为其公钥的生成因子x公开,在获得加密端的密文c后,使用s作为解密私钥y按照预设的非对称加密方法mb的解密过程对密文c解密,其中,所述密文c由加密端根据系统参数p、标识id、公开的公钥生成因子x,计算s对应的公钥q后使用所述非对称加密方法mb的加密过程加密消息m后生成。

如上述步骤s1所述,上述解密端是一种智能设备,如手机、电脑、pda等。上述密钥生成中心即为密钥管理中心,是公钥基础设施中的一个重要组成部分,提供密钥的生成、保存、备份、更新、恢复、查询等密钥服务,可以解决分布式企业应用环境中大规模密码技术应用所带来的密钥管理问题。上述数字签名方法ma是基于离散对数问题的,密钥生成中心必须满足的条件包括:1)基于离散对数问题构造,即假定给定循环群的生成元g和群中一个随机元素[k]g,计算k是困难的,其中[k]g表示k个g按照循环群的运算规则进行k次乘法运算;2)根据公开的信息,包括但不限于系统参数p、签名标识id、公钥生成因子x,可以计算出y作为私钥对应的公钥[y]g。

如上述步骤s2所述,即为利用解密端使用预签名π作为其公钥的生成因子x公开,对加密端的密文c进行解密。上述非对称加密方法mb的执行过程包括:加密端根据解密端的标识id、公钥生成因子x和系统参数p计算公钥q后按照非对称加密方法mb如ecies、psec、ace、sm2的加密过程加密消息m生成密文c。解密端使用s作为解密私钥按照mb方法中的解密过程解密密文c。上述加密过程中,无需交换证书,加密方式简单、安全。

本实施例中,通过上述密钥生成中心执行预设的数字签名方法ma的过程,包括:

选择阶为q的循环群的生成元g,随机生成整数ms满足0<ms<q,计算h=[ms]g,设置系统参数p=<g,h=[ms]g>,ms作为主密钥。

参照图2,本实施例中,上述数字签名方法ma生成所述标识私钥t的过程,包括:

s101、通过密钥生成中心随机生成整数k满足0<k<q;

s102、通过密钥生成中心计算预签名π=[k]g;

s103、通过密钥生成中心计算签名第一部分r=hash(f(id,其他信息α),π)modq,其中α包括循环群的生成信息、g,[k]g,其中f操作为哈希运算或者字符串拼接;

s104、通过密钥生成中心计算签名值第二部分s=w(k,r,ms),其中,w运算要求当x=π,y=s时,根据p=<g,h=[ms]g>,x能够计算q=[y]g,如:s=(k-r*ms)modq,s=(k+r*ms)modq,s=(ms-k*r)modq等,对应q的计算过程为:q=x-[hash(f(id,其他信息α),x)modq]h,q=x+[hash(f(id,其他信息α),x)modq]h,q=h-[hash(f(id,其他信息α),x)modq]x;

s105、通过密钥生成中心生成标识私钥t=(π,s)。

本实施例中,上述密钥生成中心执行数字签名方法ma使用私钥ms对id和标识私钥索引index进行数字签名生成标识私钥t。index可以为自增长的计数器,每次生成id对应的标识私钥,index计数增长;index也可以为当前系统时间和解密端密钥有效时间。t的计算过程如上述所述,但其他信息a包括index。

在另一实施例中,上述标识私钥t和公钥生成因子x的生成方法,包括:

s111、解密端随机生成成整数n满足0<n<q;

s112、计算解密端部分公钥[n]g后提供给所述密钥生成中心;

s113、通过所述密钥生成中心随机生成整数k满足0<k<q;

s114、通过密钥生成中心计算预签名π=[k]g;

s115、通过密钥生成中心计算公钥生成因子x=π±[n]g,其中,即x可以等于π+[n]g,也可以等于π-[n]g,所述+、-为g群上的操作,加、减法同一类操作,对应的y=(s±n)modq;

s116、通过密钥生成中心计算签名第一部分r=hash(f(id,其他信息α),x);

s117、通过密钥生成中心计算签名值第二部分s=w(k,r,ms),其中,w运算要求当x=π±[n]g,y=(s±n)modq时,根据p=<g,h=[ms]g>,x能够计算q=[y]g,如:s=(k-r*ms)modq,s=(k+r*ms)modq,s=(ms-k*r)modq等,对应q的计算过程为:q=x-[hash(f(id,其他信息α),x)modq]h,q=x+[hash(f(id,其他信息α),x)modq]h,q=h-[hash(f(id,其他信息α),x)modq]x);

s118、通过密钥生成中心生成标识私钥t=(п,s),或者,t=(x,s)其中,当t=(п,s)时,解密端需要计算出x;

s119、解密端计算解密私钥y=(s±n)modq,设置公钥生成因子x=п±[n]g。

在又一实施例中,上述数字签名方法ma生成所述标识私钥t的过程,包括:

s121、通过密钥生成中心计算k=hash(f(id,其他信息α),ms)modq;

s122、通过密钥生成中心计算预签名∏=[k]g;

s123、通过密钥生成中心计算签名第一部分r=hash(f(id,其他信息α),∏);

s124、通过密钥生成中心计算签名值第二部分s=w(k,r,ms),其中,w运算要求根据p=<g,q=[ms]g>,∏=[k]g能够计算q=[s]g,如:s=(k-r*ms)modq,s=(k+r*ms)modq,s=(ms-k*r)modq等;对应q的计算过程为:q=∏-[hash(f(id,其他信息α),∏)modq]h,q=∏+[hash(f(id,其他信息α),π)modq]h,q=h-[hash(f(id,其他信息α),π)modq]п;

s125、通过密钥生成中心生成标识私钥t=(π,s)。

在其它实施例中,上述标识私钥t和公钥生成因子x的生成方法,包括:

s131、解密端随机生成成整数n满足0<n<q;

s132、计算解密端部分公钥[n]g后提供给所述密钥生成中心;

s133、通过密钥生成中心计算k=hash(f(id,[n]g,其他信息α),ms)modq;

s134、通过密钥生成中心计算预签名π=[k]g;

s135、通过密钥生成中心计算公钥生成因子x=π±[n]g;

s136、通过密钥生成中心计算计算签名第一部分r=hash(f(id,其他信息α),x);

s137、通过密钥生成中心计算签名值第二部分s=w(k,r,ms),其中,w运算要求当x=π±[n]g,y=(s±n)modq时,根据p=<g,h=[ms]g>,x能够计算q=[y]g,如:s=(k-r*ms)modq,s=(k+r*ms)modq,s=(ms-k*r)modq等,对应q的计算过程为:q=x-[hash(f(id,其他信息α),x)modq]h,q=x+[hash(f(id,其他信息α),x)modq]h,q=h-[hash(f(id,其他信息α),x)modq]x;

s138、通过密钥生成中心生成标识私钥t=(π,s),或者t=(x,s),其中,当t=(π,s)时,解密端需要计算出x;

s139、解密端计算解密私钥y=(s±n)modq,设置公钥生成因子x=π±[n]g。

在一具体实施例中,提供一种非对称加密、解密的过程,如下:

s11.密钥生成中心选择ec-schnorr签名算法作为签名方法ma。选择sm2标准规定的椭圆曲线e:y^2=x^3+a*x+b,其上阶为q的点群作为循环群,随机选择生成元g,随机生成整数ms满足0<ms<q,计算h=[ms]g,设置系统参数p=<g,h=[ms]g>,ms作为主密钥。

s12.密钥生成中心生成对应id的标识私钥t的步骤如下:

a.随机生成整数k满足0<k<q;

b.计算预签名π=[k]g;

c.计算z=sm3(id_len||id||a||b||xg||yg||xq||yq),计算签名第一部分值r=sm3(z,xπ||yπ)modq,其中id_len是id的长度,xg,yg等表示对应g点等的x轴,y轴值;

d.计算签名值第二部分s=(k-r*ms)modq,对应q的计算过程为:q=π-[r]h;

e.生成标识私钥t=(∏,s)。

s13.解密端使用∏作为公钥生成因子x公开,使用s作为解密私钥y。

s14.加密端获取公钥生成因子x后,使用sm2算法作为mb对消息m进行加密的步骤如下:

a.计算z=sm3(id_len||id||a||b||xg||yg||xq||yq),r=sm3(z,x∏||y∏)modq

b.计算q=x-[r]h;

c.随机生成整数z满足0<z<q;

d.计算c1=[z]g;

e.计算u=[z]q;

f.计算t=kdf(xu||yu),kdf为sm2的标准密钥派生方法;

g.计算c2=m⊕t;

h.计算c3=sm3(xu||m||yu);

i.生成密文<c1,c2,c3>;

s15.解密端使用私钥y和sm2方法对<c1,c2,c3>解密的步骤如下:

a.计算u=[y]c1;

b.计算t=kdf(xu||yu);

c.计算m=c2⊕t;

d.计算c3'=sm3(xu||m||yu);

e.比较c3是否与c3'相等,相等则输出消息m,否则解密失败。

在另一具体实施例中,提供一种非对称加密、解密的过程,如下:

s21.密钥生成中心选择ec-schnorr签名算法作为签名方法ma。选择sm2标准规定的椭圆曲线e:y^2=x^3+a*x+b,其上阶为q的点群作为循环群,随机选择生成元g,随机生成整数ms满足0<ms<q,计算h=[ms]g,设置系统参数p=<g,h=[ms]g>,ms作为主密钥。

s22.解密端和密钥生成中心生成对应id的私钥的步骤如下:

a.解密端随机生成整数n满足0<n<q;

b.解密端计算解密端部分公钥o=[n]g后提供给密钥生成中心;

c.密钥生成中心采用如下机制生成对应id的标识密钥;

c1.随机生成整数k满足0<k<q;

c2.计算预签名∏=[k]g;

c3.计算公钥生成因子x=∏+[n]g;

c4.计算z=sm3(id_len||id||a||b||xg||yg||xq||yq),计算签名第一部分值r=sm3(z,xx||yx)modq,其中id_len是id的长度,xg,yg等表示对应g点等的x轴,y轴值;

c5.计算签名值第二部分s=(k-r*ms)modq,对应q的计算过程为:q=x-[r]h;

c6.生成标识私钥t=(x,s)。

s23.解密端使用x作为公钥生成因子公开,使用(s+n)modq作为解密私钥y。

s24.加密端获取公钥生成因子x后,使用sm2算法作为mb对消息m进行加密的步骤如下:

a.计算z=sm3(id_len||id||a||b||xg||yg||xq||yq),r=sm3(z,xx||yx)modq

b.计算q=x-[r]h;

c.随机生成整数z满足0<z<q;

d.计算c1=[z]g;

e.计算u=[z]q;

f.计算t=kdf(xu||yu);

g.计算c2=m⊕t;

h.计算c3=sm3(xu||m||yu);

i.生成密文<c1,c2,c3>;

s25.解密端使用私钥y和sm2方法对<c1,c2,c3>解密的步骤如下:

a.计算u=[y]c1;

b.计算t=kdf(xu||yu);

c.计算m=c2⊕t;

d.计算c3'=sm3(xu||m||yu);

e.比较c3是否与c3'相等,相等则输出消息m,否则解密失败。

本发明的非对称加解密方法,拥有标识id的解密端向密钥生成中心申请标识私钥,密钥生成中心采用满足一定条件的基于离散对数问题的数字签名方法生成对标识id的签名,并将预签名∏和签名结果的第二部分s作为标识私钥,解密端使用s作为解密私钥,并将∏作为部分其公钥的生成因子进行公开;加密端获取π通过公式计算出s对应的公钥,采用基于离散对数问题构造的加密方法加密消息,解密端使用s进行解密;如果有必要,解密端可以对r进行变换加入其选择的随机数,并对π作相应变换后再公开;本申请提供的方法和装置无需交换证书,用户只需公开公钥生成因子即可,加密方法简单、安全。

参照图3,本发明还提供一种非对称加解密装置,包括:

获取单元10,用于获取密钥生成中心生成对应所述解密端的标识id的标识私钥t;其中,所述密钥生成中心执行预设的数字签名方法ma,随机生成签名公私密钥对作为标识密码系统参数p和主密钥ms,所述密钥生成中心执行所述数字签名方法ma的签名过程对所述标识id进行数字签名,产生预签名π以及包含两部分的签名值(r,s),将所述预签名π及第二部分签名值s作为标识私钥t=(п,s);

解密单元20,用于使用预签名п作为其公钥的生成因子x公开,在获得加密端的密文c后,使用s作为解密私钥y按照预设的非对称加密方法mb的解密过程对密文c解密,其中,所述密文c由加密端根据系统参数p、标识id、公开的公钥生成因子x,计算s对应的公钥q后使用所述非对称加密方法mb的加密过程加密消息m后生成。

上述获取单元10是解密端的装置,解密端是一种智能设备,如手机、电脑、pda等。上述密钥生成中心即为密钥管理中心,是公钥基础设施中的一个重要组成部分,提供密钥的生成、保存、备份、更新、恢复、查询等密钥服务,可以解决分布式企业应用环境中大规模密码技术应用所带来的密钥管理问题。上述数字签名方法ma是基于离散对数问题的,密钥生成中心必须满足的条件包括:1)基于离散对数问题构造,即假定给定循环群的生成元g和群中一个随机元素[k]g,计算k是困难的,其中[k]g表示k个g按照循环群的运算规则进行k次乘法运算;2)根据公开的信息,包括但不限于系统参数p、签名标识id、公钥生成因子x,可以计算出y作为私钥对应的公钥[y]g。

上述解密单元20,同样是解密端的装置,其利用解密端使用预签名п作为其公钥的生成因子x公开,对加密端的密文c进行解密,在解密过程中,无需交换证书,解密端式简单、安全。上述非对称加密方法mb的执行过程包括:加密端根据解密端的标识id、公钥生成因子x和系统参数p计算公钥q后按照非对称加密方法mb如ecies、psec、ace、sm2的加密过程加密消息m生成密文c。解密端使用s作为解密私钥按照mb方法中的解密过程解密密文c。上述加密过程中,无需交换证书,加密方式简单、安全。

本实施例中,上述数字签名方法ma是基于离散对数问题的签名方法,所述密钥生成中心基于离散对数问题构造,其给定循环群的生成元g和群中一个随机元素[k]g,其中[k]g表示k个g按照循环群的运算规则进行k次乘法运算;根据公开的系统参数p、标识id、公钥生成因子x,能够计算出y作为私钥对应的公钥[y]g。

参照图4,本实施例中,上述密获取单元10,包括:

执行模块101,通过密钥生成中心选择阶为q的循环群的生成元g,随机生成整数ms满足0<ms<q,计算h=[ms]g,设置系统参数p=<g,h=[ms]g>,ms作为主密钥。

本实施例中,上述获取单元,包括:

第一生成模块102,用于通过密钥生成中心随机生成整数k满足0<k<q;

第一计算模块103,用于通过密钥生成中心计算预签名п=[k]g;

第二计算模块104,用于通过密钥生成中心计算签名第一部分r=hash(f(id,其他信息α),п)modq,其中α包括循环群的生成信息、g,[k]g,其中f操作为哈希运算或者字符串拼接;

第三计算模块105,用于通过密钥生成中心计算签名值第二部分s=w(k,r,ms),其中,w运算要求当x=π,y=s时,根据p=<g,h=[ms]g>,x能够计算q=[y]g,如:s=(k-r*ms)modq,s=(k+r*ms)modq,s=(ms-k*r)modq等,对应q的计算过程为:q=x-[hash(f(id,其他信息α),x)modq]h,q=x+[hash(f(id,其他信息α),x)modq]h,q=h-[hash(f(id,其他信息α),x)modq]x;

第二生成模块106,用于通过密钥生成中心生成标识私钥t=(п,s)。

本实施例中,上述密钥生成中心执行数字签名方法ma使用私钥ms对id和标识私钥索引index进行数字签名生成标识私钥t。index可以为自增长的计数器,每次生成id对应的标识私钥,index计数增长;index也可以为当前系统时间和解密私钥的有效时间。t的计算过程如上述所述,但其他信息a包括index。

参照图5,在另一实施例中,上述获取单元10,包括:

第三生成模块111,用于随机生成成整数n满足0<n<q;

第四计算模块112,用于计算解密端部分公钥[n]g后提供给所述密钥生成中心;

第五计算模块113,用于通过所述密钥生成中心随机生成整数k满足0<k<q;

第六计算模块114,用于通过密钥生成中心计算预签名π=[k]g;

第七计算模块115,用于通过密钥生成中心计算公钥生成因子x=π±[n]g,其中,即x可以等于π+[n]g,也可以等于π-[n]g,所述+、-为g群上的操作,加、减法同一类操作,对应的y=(s±n)modq;

第八计算模块116,用于通过密钥生成中心计算签名第一部分r=hash(f(id,其他信息α),x);

第九计算模块117,用于通过密钥生成中心计算签名值第二部分s=w(k,r,ms),其中,w运算要求当x=π±[n]g,y=(s±n)modq时,根据p=<g,h=[ms]g>,x能够计算q=[y]g,如:s=(k-r*ms)modq,s=(k+r*ms)modq,s=(ms-k*r)modq等,对应q的计算过程为:q=x-[hash(f(id,其他信息α),x)modq]h,q=x+[hash(f(id,其他信息α),x)modq]h,q=h-[hash(f(id,其他信息α),x)modq]x;

第四生成模块118,用于通过密钥生成中心生成标识私钥t=(п,s),或者,t=(x,s)其中,当t=(п,s)时,解密端需要计算出x;

第十计算模块119,用于计算解密私钥y=(s±n)modq,设置公钥生成因子x=π±[n]g。

参照图6,在又一实施例中,上述获取单元10,包括:

第一模块121,用于通过密钥生成中心计算k=hash(f(id,其他信息α),ms)modq;

第二模块122,用于通过密钥生成中心计算预签名π=[k]g;

第三模块123,用于通过密钥生成中心计算签名第一部分r=hash(f(id,其他信息α),π);

第四模块124,用于通过密钥生成中心计算签名值第二部分s=w(k,r,ms),其中,w运算要求根据p=<g,q=[ms]g>,π=[k]g能够计算q=[s]g,如:s=(k-r*ms)modq,s=(k+r*ms)modq,s=(ms-k*r)modq等;对应q的计算过程为:q=π-[hash(f(id,其他信息α),π)modq]h,q=π+[hash(f(id,其他信息α),π)modq]h,q=h-[hash(f(id,其他信息α),π)modq]π;

第五模块125,用于通过密钥生成中心生成标识私钥t=(π,s)。

参照图7,在又一实施例中,上述获取单元10,包括:

第六模块131,用于解密端随机生成成整数n满足0<n<q;

第七模块132,用于计算解密端部分公钥[n]g后提供给所述密钥生成中心;

第八模块133,用于通过密钥生成中心计算k=hash(f(id,[n]g,其他信息α),ms)modq;

第九模块134,用于通过密钥生成中心计算预签名π=[k]g;

第十模块135,用于通过密钥生成中心计算公钥生成因子x=π±[n]g;

第十一模块136,用于通过密钥生成中心计算计算签名第一部分r=hash(f(id,其他信息α),x);

第十二模块137,用于通过密钥生成中心计算签名值第二部分s=w(k,r,ms),其中,w运算要求当x=π±[n]g,y=(s±n)modq时,根据p=<g,h=[ms]g>,x能够计算q=[y]g,如:s=(k-r*ms)modq,s=(k+r*ms)modq,s=(ms-k*r)modq等;对应q的计算过程为:q=π-[hash(f(id,其他信息α),π)modq]h,q=π+[hash(f(id,其他信息α),π)modq]h,q=h-[hash(f(id,其他信息α),π)modq]π;

第十三模块138,用于通过密钥生成中心生成标识私钥t=(π,s),或者t=(x,s),其中,当t=(π,s)时,解密端需要计算出x;

第十四模块139,用于解密端计算解密私钥y=(s±n)modq,设置公钥生成因子x=π±[n]g。

在一具体实施例中,提供一种非对称加密、解密的过程,如下:

s11.密钥生成中心选择ec-schnorr签名算法作为签名方法ma。选择sm2标准规定的椭圆曲线e:y^2=x^3+a*x+b,其上阶为q的点群作为循环群,随机选择生成元g,随机生成整数ms满足0<ms<q,计算h=[ms]g,设置系统参数p=<g,h=[ms]g>,ms作为主密钥。

s12.密钥生成中心生成对应id的标识私钥t的步骤如下:

a.随机生成整数k满足0<k<q;

b.计算预签名π=[k]g;

c.计算z=sm3(id_len||id||a||b||xg||yg||xq||yq),计算签名第一部分值r=sm3(z,xπ||yπ)modq,其中id_len是id的长度,xg,yg等表示对应g点等的x轴,y轴值;

d.计算签名值第二部分s=(k-r*ms)modq,对应q的计算过程为:q=π-[r]h;

e.生成标识私钥t=(π,s)。

s13.解密端使用π作为公钥生成因子x公开,使用s作为解密私钥y。

s14.加密端获取公钥生成因子x后,使用sm2算法作为mb对消息m进行加密的步骤如下:

a.计算z=sm3(id_len||id||a||b||xg||yg||xq||yq),r=sm3(z,xπ||yπ)modq

b.计算q=x-[r]h;

c.随机生成整数z满足0<z<q;

d.计算c1=[z]g;

e.计算u=[z]q;

f.计算t=kdf(xu||yu),,kdf为sm2的标准密钥派生方法;

g.计算c2=m⊕t;

h.计算c3=sm3(xu||m||yu);

i.生成密文<c1,c2,c3>;

s15.解密端使用私钥y和sm2方法对<c1,c2,c3>解密的步骤如下:

a.计算u=[y]c1;

b.计算t=kdf(xu||yu);

c.计算m=c2⊕t;

d.计算c3'=sm3(xu||m||yu);

e.比较c3是否与c3'相等,相等则输出消息m,否则解密失败。

在另一具体实施例中,提供一种非对称加密、解密的过程,如下:

s21.密钥生成中心选择ec-schnorr签名算法作为签名方法ma。选择sm2标准规定的椭圆曲线e:y^2=x^3+a*x+b,其上阶为q的点群作为循环群,随机选择生成元g,随机生成整数ms满足0<ms<q,计算h=[ms]g,设置系统参数p=<g,h=[ms]g>,ms作为主密钥。

s22.解密端和密钥生成中心生成对应id的私钥的步骤如下:

a.解密端随机生成整数n满足0<n<q;

b.解密端计算解密端部分公钥o=[n]g后提供给密钥生成中心;

c.密钥生成中心采用如下机制生成对应id的标识密钥;

c1.随机生成整数k满足0<k<q;

c2.计算预签名π=[k]g;

c3.计算公钥生成因子x=π+[n]g;

c4.计算z=sm3(id_len||id||a||b||xg||yg||xq||yq),计算签名第一部分值r=sm3(z,xx||yx)modq,其中id_len是id的长度,xg,yg等表示对应g点等的x轴,y轴值;

c5.计算签名值第二部分s=(k-r*ms)modq,对应q的计算过程为:q=x-[r]h;

c6.生成标识私钥t=(x,s)。

s23.解密端使用π作为公钥生成因子x公开,使用(s+n)modq作为解密私钥y。

s24.加密端获取公钥生成因子x后,使用sm2算法作为mb对消息m进行加密的步骤如下:

a.计算z=sm3(id_len||id||a||b||xg||yg||xq||yq),r=sm3(z,xx||yx)modq

b.计算q=x-[r]h;

c.随机生成整数z满足0<z<q;

d.计算c1=[z]g;

e.计算u=[z]q;

f.计算t=kdf(xu||yu);

g.计算c2=m⊕t;

h.计算c3=sm3(xu||m||yu);

i.生成密文<c1,c2,c3>;

s25.解密端使用私钥y和sm2方法对<c1,c2,c3>解密的步骤如下:

a.计算u=[y]c1;

b.计算t=kdf(xu||yu);

c.计算m=c2⊕t;

d.计算c3'=sm3(xu||m||yu);

e.比较c3是否与c3'相等,相等则输出消息m,否则解密失败。

本发明的非对称加解密装置,拥有标识id的解密端通过获取单元10向密钥生成中心申请标识私钥,密钥生成中心采用满足一定条件的基于离散对数问题的数字签名方法生成对标识id的签名,并将预签名π和签名结果的第二部分s作为标识私钥,解密端使用s作为解密私钥,并将π作为部分其公钥的生成因子进行公开;加密端获取π通过公式计算出s对应的公钥,采用基于离散对数问题构造的加密方法加密消息,解密端使用s进行解密;如果有必要,解密端可以对s进行变换加入其选择的随机数,并对π作相应变换后再公开;本申请提供的方法和装置无需交换证书,用户只需公开公钥生成因子即可,加密方法简单、安全。

以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

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