一种基于SM9的无证书数字签密方法技术

技术编号:36605339 阅读:40 留言:0更新日期:2023-02-04 18:26
本发明专利技术提供一种基于SM9的无证书数字签密方法。该方法包括:系统建立步骤、用户秘密值生成步骤、用户部分私钥提取步骤、用户私钥生成步骤、用户公钥生成步骤、无证书签密步骤和解签密步骤。与已有的基于商密SM9标识签密方法相比,本发明专利技术通过上述步骤可以解决用户私钥托管问题,从而解决基于标识签密方法不满足签名不可伪造性的不足。不可伪造性的不足。不可伪造性的不足。

【技术实现步骤摘要】
一种基于SM9的无证书数字签密方法


[0001]本专利技术涉及通信
,尤其涉及一种基于SM9的无证书数字签密法。

技术介绍

[0002]SM9标识密码算法是2016年被确定为国家行业标准(GM/T 0044

2016)。该算法以用户的身份信息(如姓名、身份证号、邮箱地址等)作为公钥,可以简化传统PKI中的复杂的证书管理问题。但是由于用户私钥是由系统的密钥管理中心为用户产生并通过安全方式发送给用户,因此标识密码存在密钥托管问题,并且当系统中用户数量较多时,密钥管理中心也存在管理负担过重问题。无证书公钥密码(CL

PKC)则同时克服了二者的弱点,既不需要公钥证书,也消除了私钥托管问题。在CL

PKC密码体制中,密钥生成中心KGC为用户产生一个部分私钥,用户选取一个秘密值,并与部分私钥结合生成用户私钥,用户私钥由KGC和用户共同产生,从而避免了私钥托管问题。
[0003]目前已有的基于SM9的标识签密方案,因采用标识技术,从而存在私钥托管问题,如果存在私钥生成中心不诚实的情况,则无法实现数字签密的不可否认性。

技术实现思路

[0004]为了解决现有的基于SM9的标识签密方法中因密钥托管导致的无法实现数字签密的不可否认性问题,本专利技术提供一种基于SM9的无证书数字签密方法。
[0005]本专利技术提供的一种基于SM9的无证书数字签密方法,包括:
[0006]系统建立步骤:密钥生成中心选择系统参数,生成系统的主公私钥对,然后将系统的主公钥发送给系统用户,并秘密保存主私钥;
[0007]用户秘密值生成步骤:用户根据系统参数,选取自己的秘密值,然后计算自己的部分公钥,并秘密保存秘密值;
[0008]用户部分私钥提取步骤:密钥生成中心利用主公私钥对和用户标识,为用户生成用户部分私钥,并通过安全信道将用户部分私钥发送给用户;
[0009]用户私钥生成步骤:用户利用自己的秘密值和接收到的部分私钥,产生自己的完整私钥;
[0010]用户公钥生成步骤:用户根据系统参数、自己的私密值和部分公钥,生成并公布自己的完整公钥;
[0011]无证书签密步骤:作为发送者的用户,基于明文消息和接收者标识,利用系统主公钥和自己的完整私钥,生成签密文;
[0012]解签密步骤:作为合法接收者的用户,基于签密文和自己的完整私钥,对签密文进行解密和验证,如果验证通过,则得到明文消息及发送者对明文消息的签名;如果验证失败,则拒绝接收签密文。
[0013]进一步地,在系统建立步骤中,具体包括:
[0014]密钥生成中心选择一个双线性群选择群的生成元 P1,
选择群的生成元P2,且有ψ(P2)=P1,随机选择α∈[1,N

1],选择三个 Hash函数,即其中,N>2
λ
,λ表示给定安全参数;ψ表示群到群的映射,n是明文消息的长度;
[0015]密钥生成中心计算群的元素P
pub
=αP2,群的元素g=e(P1,P
pub
);
[0016]密钥生成中心生成系统的主公钥mpk: mpk=(BP,g,P1,P2,P
pub
,H1,H2,H3,hid),系统的主私钥msk:msk=α;
[0017]其中,N是循环群的阶,且N为素数;和是加法循环群;是乘法循环群;e是从到的双线性映射;[1,N

1],均表示不小于1 不大于N

1的整数组成的集合;P
T
为群的生成元;hid为用一个字节表示的签密私钥生成函数识别符,由密钥生成中心选择并公开。
[0018]进一步地,在用户秘密值生成步骤中,具体包括:
[0019]给定用户标识ID∈{0,1}
*
,随机选取x
ID
∈[1,N

1],计算U
ID
=x
ID
P2,用户保存x
ID
作为自己的秘密值,公布U
ID
作为自己的部分公钥。
[0020]进一步地,在用户部分私钥提取步骤中,具体包括:
[0021]给定用户标识ID∈{0,1}
*
,在有限域F
N
上计算t1=H1(ID||hid,N)+α,若 t1=0,则重新产生主公钥,计算和公开主公钥,并更新已有用户的私钥;否则计算t2=α
·
t1‑1和d
ID
=t2·
P2,把d
ID
作为用户的部分私钥。
[0022]进一步地,在用户私钥生成步骤中,具体包括:
[0023]给定用户标识ID∈{0,1}
*
,利用秘密值x
ID
和部分私钥d
ID
,计算SK
ID
= x
ID
‑1.d
ID
,把SK
ID
作为用户的完整私钥。
[0024]进一步地,在用户公钥生成步骤中,具体包括:
[0025]给定用户标识ID∈{0,1}
*
,利用系统参数P
pub
和自己的私密值x
ID
,计算 V
ID
=x
ID
P
pub
,然后生成PK
ID
=(U
ID
,V
ID
),公布PK
ID
作为自己的完整公钥。
[0026]进一步地,在无证书签密步骤中,具体包括:
[0027]步骤A1:计算中间变量其中,Q属于群中的元素,ID
R
是接收者标识,是接收者的部分公钥,是接收者的另一部分公钥;
[0028]步骤A2:随机选取随机数r∈[1,N

1],计算中间变量ω=g
r
,并将ω数据类型转换为比特串;其中,ω属于群的元素;
[0029]步骤A3:计算中间变量h=H2(M||ω,N)和中间变量l=(r

h)modN,若 l=0则返回步骤A2重新选择随机数r;其中,M是明文消息;h和l均属于有限域F
N
中元素;
[0030]步骤A4:计算明文消息M的签名其中,ID
S
是发送者标识,是发送者的完整私钥;其中,S属于群中的元素;
[0031]步骤A5:计算中间变量T=rQ,并将T数据类型转换为比特串;其中,T属于群中的元素;
[0032]步骤A6:计算对明文消息M加密后的密文
[0033]步骤A7:输出签密文CT=(c,S,T)。
[0034]进一步地,在解签密步骤中,具体包括:标识为ID
R
的接收者收到签密文 CT=(c,S,T)后,执行步骤B1至步骤B5;...

【技术保护点】

【技术特征摘要】
1.一种基于SM9的无证书数字签密方法,其特征在于,包括:系统建立步骤:密钥生成中心选择系统参数,生成系统的主公私钥对,然后将系统的主公钥发送给系统用户,并秘密保存主私钥;用户秘密值生成步骤:用户根据系统参数,选取自己的秘密值,然后计算自己的部分公钥,并秘密保存秘密值;用户部分私钥提取步骤:密钥生成中心利用主公私钥对和用户标识,为用户生成用户部分私钥,并通过安全信道将用户部分私钥发送给用户;用户私钥生成步骤:用户利用自己的秘密值和接收到的部分私钥,产生自己的完整私钥;用户公钥生成步骤:用户根据系统参数、自己的私密值和部分公钥,生成并公布自己的完整公钥;无证书签密步骤:作为发送者的用户,基于明文消息和接收者标识,利用系统主公钥和自己的完整私钥,生成签密文;解签密步骤:作为合法接收者的用户,基于签密文和自己的完整私钥,对签密文进行解密和验证,如果验证通过,则得到明文消息及发送者对明文消息的签名;如果验证失败,则拒绝接收签密文。2.根据权利要求1所述的一种基于SM9的无证书数字签密方法,其特征在于,在系统建立步骤中,具体包括:密钥生成中心选择一个双线性群选择群的生成元P1,选择群的生成元P2,且有ψ(P2)=P1,随机选择α∈[1,N

1],选择三个Hash函数,即H3:{0,1}
*

{0,1}
n
;其中,N>2
λ
,λ表示给定安全参数;ψ表示群到群的映射,n是明文消息的长度;密钥生成中心计算群的元素P
pub
=αP2,群的元素g=e(P1,P
pub
);密钥生成中心生成系统的主公钥mpk:mpk=(BP,g,P1,P2,P
pub
,H1,H2,H3,hid),系统的主私钥msk:msk=α;其中,N是循环群的阶,且N为素数;和是加法循环群;是乘法循环群;e是从到的双线性映射;[1,N

1],均表示不小于1不大于N

1的整数组成的集合;P
T
为群的生成元;hid为用一个字节表示的签密私钥生成函数识别符,由密钥生成中心选择并公开。3.根据权利要求2所述的一种基于SM9的无证书数字签密方法,其特征在于,在用户秘密值生成步骤中,具体包括:给定用户标识ID∈{0,1}
*
,随机选取x
ID
∈[1,N

1],计算U
ID
=x
ID
P2,用户保存x
ID
作为自己的秘密值,公布U
ID
作为自己的部分公钥。4.根据权利要求2所述的一种基于SM9的无证书数字签密方法,其特征在于,在用户部分私钥提取步骤中,具体包括:给定用户标识ID∈{0,1}
*
,在有限域F
N
上计算t1=H1(ID||hid,N)+α,若t1=0,则重新产生主公钥,计算和公开主公钥,并更新已有用户的私钥;否则计算t2=α
·
t1‑1和d
ID
=t2·
P2,
把d
ID
作为用户的部分私钥。5.根据权利要求2所述的一种基于SM9的无证书数字签密方...

【专利技术属性】
技术研发人员:冀会芳张玉臣黄严严李福林袁霖胡浩王潇雨
申请(专利权)人:中国人民解放军战略支援部队信息工程大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1