CN112699394B - 一种基于sm9算法的密钥应用方法 - Google Patents

一种基于sm9算法的密钥应用方法 Download PDF

Info

Publication number
CN112699394B
CN112699394B CN202110039856.XA CN202110039856A CN112699394B CN 112699394 B CN112699394 B CN 112699394B CN 202110039856 A CN202110039856 A CN 202110039856A CN 112699394 B CN112699394 B CN 112699394B
Authority
CN
China
Prior art keywords
user
key
dynamic
calculates
static
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110039856.XA
Other languages
English (en)
Other versions
CN112699394A (zh
Inventor
陈明志
傅明建
翁才杰
许春耀
谢加良
杨小权
饶庆裕
张瑞
李栋
赵明烽
程淏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Beika Technology Co ltd
Original Assignee
Beijing Beika Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Beika Technology Co ltd filed Critical Beijing Beika Technology Co ltd
Priority to CN202110039856.XA priority Critical patent/CN112699394B/zh
Publication of CN112699394A publication Critical patent/CN112699394A/zh
Application granted granted Critical
Publication of CN112699394B publication Critical patent/CN112699394B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开一种基于SM9算法的密钥应用方法,步骤是:依照SM9算法的密钥生成规则,静态密钥管理中心基于用户标识生成用户的静态密钥,动态密钥管理中心通过对用户标识和给定动态变化量构建用户的动态标识,并基于用户动态标识生成用户的动态密钥;用户基于通信对方的静态标识生成静态公钥,基于通信对方的动态标识生成动态公钥,并基于所述静态公钥和动态公钥实现加密或验签的操作;用户自静态密钥管理中心获取静态私钥,自动态密钥管理中心获取动态私钥,并基于所述静态私钥和动态私钥实现解密或签名的操作。此种密钥应用方法,提供一种基于SKGC和DKGC的SM9密钥安全管理机制,可解决SM9算法的密钥托管、更新、撤销问题。

Description

一种基于SM9算法的密钥应用方法
技术领域
本发明属于密钥应用技术领域,特别涉及一种基于SM9算法生成密钥进行加密、解密、签名、验签等应用方法。
背景技术
SM9作为一种基于标识的密码系统(Identity-Based Cryptograph,IBC),与PKI密码体系相比在密钥管理上存在一定的不足。一方面,用户私钥由密钥生成中心基于用户标识生成,将导致用户不是其私钥的唯一拥有者;另一方面,由于用户的密钥基于用户标识生成,用户标识一般不可更改,导致SM9算法密钥更新、撤销困难,有待改进。
发明内容
本发明的目的,在于提供一种基于SM9算法的密钥应用方法,提供一种基于SKGC和DKGC的SM9密钥安全管理机制,可解决SM9算法的密钥托管、更新、撤销问题。
为了达成上述目的,本发明的解决方案是:
一种基于SM9算法的密钥应用方法,包括如下步骤:
步骤S1,依照SM9算法的密钥生成规则,静态密钥管理中心SKGC基于用户标识生成用户的静态密钥;
步骤S2,依照SM9算法的密钥生成规则,动态密钥管理中心DKGC通过对用户标识和给定动态变化量构建用户的动态标识,并基于用户动态标识生成用户的动态密钥;
步骤S3,用户基于通信对方的静态标识生成静态公钥,基于通信对方的动态标识生成动态公钥,并基于所述静态公钥和动态公钥实现加密或验签的操作;用户自静态密钥管理中心SKGC获取静态私钥,自动态密钥管理中心DKGC获取动态私钥,并基于所述静态私钥和动态私钥实现解密或签名的操作;其中,相对应的加密和解密过程使用相同的密钥对,相对应的签名和验签使用相同的密钥对,且所述二密钥对不相同。
采用上述方案后,本发明采用基于隐私密钥机构的方案构建SKGC和DKGC,SKGC解决了SM9的密钥托管问题,DKGC解决SM9的密钥更新与撤销问题。
附图说明
图1是本发明的流程图;
图2是本发明中私钥提取的流程图;
图3是本发明中的加密流程图;
图4是本发明中的解密流程图;
图5是本发明中的签名流程图;
图6是本发明中的验签流程图。
具体实施方式
如图1所示,本发明提供一种基于SM9算法的密钥应用方法,包括如下步骤:
步骤S01,依照SM9算法的密钥生成规则,静态密钥生成中心SKGC基于用户标识生成用户的静态密钥,该静态密钥包含加密密钥对和签名密钥对;
步骤S02,依照SM9算法的密钥生成规则,动态密钥管理中心DKGC通过对用户标识和给定动态变化量构建用户的动态标识,并基于用户动态标识生成用户的动态密钥,该动态密钥也包含加密密钥对和签名密钥对;
步骤S03,在静态密钥和动态密钥的共同作用下,完成SM9算法的加密、解密、签名和验签功能。
所述步骤S01中,静态密钥生成中心SKGC采用基于密钥隐私机构的方案,解决了SM9的密钥托管问题,其系统设置和密钥提取的具体实现如下:
1)系统设置:
a、静态密钥生成中心SKGC包含1个KGC和n个KPA,它们使用相同的q阶的群G1、G2和GT,双线性对e:G1×G2→GT,生成元P1∈G1和P2∈G2,密码杂凑函数Hv,密码函数H1,用户ID和私钥生成函数标识符hid,其中q为大素数,Hv和H1为SM9标准中规定的函数;
b、KGC随机选取
Figure BDA0002895328290000031
计算Ppub=[s0]P1,每个KPA随机选择
Figure BDA0002895328290000032
计算PKPA-i=[si]P2
c、设置
Figure BDA0002895328290000033
公开系统参数Mpt=(G1,G2,GT,e,P1,P2,Ppub,PKPA-i,g,Hv,hid)。
2)私钥提取:
a、KGC分发用户私钥D0=s0(h0+s0)-1P2,其中h0=H1(Hv,ID||hid,q);
b、用户生成随机数
Figure BDA0002895328290000034
并计算X=[x]P2和D′0=x·D0
c、对每个KPA,用户发送X和D′0,要求KPA计算Di=si·D′0,并通过验证
e(h0P1+Ppub,D′0)=e(Ppub,X)
来检查用户发来的数据的合法性,而用户通过计算
e(h0P1+Ppub,Di)=e(Ppub,PKPA-i)x
来确认计算过程的正确性;
d、A将n个KPA发来的结果相加得到:
Figure BDA0002895328290000035
e、通过下式去除盲因子,计算出用户的静态私钥D:
D=x-1·D′=(s1+s2+…+sn)s0(h0+s0)-1P2
所述步骤S02中的标识为动态标识,基于用户标识ID和动态变量data的动态标识的具体生成方式如下:
ID′=ID||data
所述步骤S02中,动态密钥生成中心DKGC所采用的系统参数与SKGC相同,具体的密钥生成过程如下:
a、DKGC随机选取
Figure BDA0002895328290000041
计算Tpub=[t0]P1
b、设置gt=e(Tpub,P2);
c、动态私钥为DT=t0·(ht+t0)-1P2,ht=H1(Hv,ID′||hid,q);
d、公开Tpub和gt
步骤S03中所述的静态加密密钥和动态加密密钥在加密过程中的使用,需要对SM9算法作如下修改:
a、在标准加密流程的第1步增加计算QT=htP1+Tpub
b、在标准加密流程的第3步增加计算Ct=[r]QT
c、将标准加密流程第5步的计算改为
Figure BDA0002895328290000042
d、在密钥派生函数的输入中增加Ct,即K=KDF(C1||Ct||w||ID,klen);
e、在输出的密文中增加Ct,即密文为C=C1||Ct||C3||C2
步骤S03中所述的静态密钥和动态密钥在解密过程中的使用,需要对SM9算法作如下修改:
a、在标准解密流程的第1步增加Ct的提取;
b、将标准解密流程的第2步修改为w′=e(C1,D)·e(Ct,DT);
c、在密钥派生函数的输入中增加Ct,即K′=KDF(C1||Ct||w′||ID,klen);
步骤S03中所述的静态签名密钥和动态签名密钥在签名过程中的使用,需要对SM9算法作如下修改:
a、将标准签名流程的第3步修改为
Figure BDA0002895328290000051
b、在标准签名流程的第6步增加计算S2=[l]DT-s,其中DT-s为动态签名私钥;
c、将标准签名流程的第7步的签名信息中增加S2,将签名改为:(h,S1||S2);
步骤S03中所述的静态验签密钥和动态验签密钥在验签过程中的使用,需要对SM9算法作如下修改:
a、在标准验签流程的第2步增加S2'的检验,即检验S2'∈G1是否成立;
b、将标准验签流程的第4步修改为
Figure BDA0002895328290000052
c、在标准验签流程的第5步增加计算ht=H1(ID'||hid,q);
d、在标准验签流程的第6步增加计算Pt=[ht]P2+TPub-s,其中TPub-s为DKGC公开的签名参数;
e、将标准验签流程的第4步修改为:u=e(S′1,P)·e(S′2,Pt);
以上所述的标准流程可参考“袁峰,程朝辉.SM9标识密码算法综述[J].信息安全研究,2016,2(11):1008-1027.”。
所述DKGC具备密钥更新的功能,具体实现方式如下:
DKGC管理员可自由设定更新周期,假设预置时间密钥有效期为一周,密钥的更新过程是:DKGC基于用户的标识计算:ID′=ID||next-week,然后重新计算:QT=htP1+Tpub(动态公钥),DT=t0·(ht+t0)-1P2(动态私钥),即可为用户生成新的一周对应的动态密钥对。
所述DKGC具备密钥撤销的功能,具体实现方式如下:
对系统中已注销的用户或DKGC管理员需要主动撤销的用户,DKGC管理员可以停止向上述类型用户分发新的动态密钥对。由于密文(签名)发送方加密(签名)用到了动态公钥(动态私钥),密文(签名)接收方由于没有最新的动态私钥(动态公钥)就无法配合解密(验签)接收到的密文(签名消息),从而实现密钥撤销的功能。
本发明中增加的SKGC与DKGC是两套相互独立的密钥分发系统,SKGC执行类似SM9算法中KGC的功能,DKGC独立运行以配合SKGC完成相应的密码功能。因此,敌手攻破任一方系统都无法获得完整的静态和动态密钥对,而且要同时攻破两个系统的代价比较高昂。因此,本发明通过增加DKGC,可以实现用户私钥的双重保障,且不影响SM9原有的密钥系统架构,具备较好的鲁棒性、可延展性和功能耦合性,易于开展实际应用部署。
以下通过一个具体实施例对本发明的技术方案进行详细说明。
一、初始化
步骤1:1个KGC、n个KPA和1个DKGC使用相同的素数q阶的群G1、G2和GT,双线性对e:G1×G2→GT,生成元P1∈G1和P2∈G2,用户ID,密码杂凑函数Hv和标识符hid以及密码函数H1、H2,其中Hv、H1和H2均为SM9标准中规定的函数;
步骤2:KGC主密钥对的生成包括:KGC随机选取
Figure BDA0002895328290000061
作为主私钥,计算Ppub=[s0]P1作为主公钥,其中
Figure BDA0002895328290000062
表示素数q阶乘法群中的整数;
步骤3:n个KPA主密钥对的生成包括:每个KPA随机选择
Figure BDA0002895328290000063
作为主私钥,计算PKPA-i=[si]P2作为主公钥;
步骤4:DKGC时间主密钥对的生成包括:DKGC随机选取
Figure BDA0002895328290000064
作为时间主私钥,计算Tpub=[t0]P1作为时间主公钥;
步骤5:公开系统参数Mpt如下:
Mpt=(G1,G2,GT,e,P1,P2,Ppub,PKPA-i,Tpub,Hv,hid)
通过执行上述步骤1-5,在SKGC和DKGC中分别为用户生成用于加密、解密和签名、验签的密钥对。
二、私钥提取(参考图2)
步骤1:KGC验证s0是否满足(H1(Hv,ID||hid,q)+s0)modq=0;若满足,则KGC需重新生成s0,并计算和公开主公钥Ppub;否则继续往下执行;
步骤2:KGC分发用户私钥D0=s0(h0+s0)-1P2,其中:
h0=H1(Hv,ID||hid,q)
步骤3:用户生成随机数
Figure BDA0002895328290000071
计算X=[x]P2和D′0=x·D0
步骤4:对n个KPA,用户发送X和D′0,要求KPA计算Di=si·D′0,计算结果分别返回给用户。其中,KPA通过验证e(h0P1+Ppub,D′0)=e(Ppub,X)来检查用户数据的合法性;用户通过计算e(h0P1+Ppub,Di)=e(Ppub,PKPA-i)x来确认KPA计算结果的正确性;
步骤5:用户将n个KPA发送来的计算结果相加得到:
Figure BDA0002895328290000072
步骤6:用户通过计算D=x-1·D′去除盲因子,得到自己的私钥:
D=(s1+s2+…+sn)s0(h0+s0)-1P2
步骤7:DKGC验证ht是否满足(ht+t0)modq=0;若满足,则DKGC需重新产生时间主私钥t0,否则继续往下执行。其中,ht=H1(Hv,ID′||hid,q);
步骤8:用户计算DT=t0·(ht+t0)-1P2得到自己的时间私钥;
三、加密(参考图3)
假设用户Alice使用由用户Bob提供的公钥对消息进行加密,与Bob进行保密通信。
步骤1:用户Alice通过计算QB=h0P1+Ppub=H1(Hv,IDB||hid,q)P1+Ppub得到用户Bob的加密公钥QB,DKGC计算QBT=htP1+Tpub=H1(Hv,ID′B||hid,q)P1+Tpub并发送QBT给用户Alice,其中,ht=H1(Hv,ID′B||hid,q),密码函数H1()与SM9中所采用的一致;
步骤2:用户Alice产生随机数:r∈[1,q-1];
步骤3:用户Alice计算:C1=[r]QB,Ct=[r]QBT
步骤4:用户Alice计算:
Figure BDA0002895328290000081
gt=e(Tpub,P2);
步骤5:用户Alice计算:
Figure BDA0002895328290000082
步骤6:根据用户选择的加密方式进行计算;如果是基于密钥派生函数的序列密码算法,则计算整数klen=mlen+K2_len,然后计算K=KDF(C1||Ct||w||IDB,klen),令K1为K最左边的mlen比特,K2为剩下的K2_len比特,若K1为全0比特串,则返回步骤2,否则计算
Figure BDA0002895328290000083
如果是结合基于密钥派生函数的分组密码算法,则计算整数klen=K1_len+K2_len,然后计算K=KDF(C1||Ct||w||IDB,klen),令K1为K最左边的K1_len比特,K2为剩下的K2_len比特,若K1为全0比特串,则返回步骤32,否则计算C2=Enc(K1,M);其中,比特串M是待发送的消息,mlen为M的比特长度,K1_len为分组密码算法中密钥K1的比特长度,K2_len为函数MAC(K2,Z)中密钥K2的比特长度;
步骤7:用户Alice计算C3=MAC(K2,C2);
步骤8:用户Alice输出密文C=C1||Ct||C3||C2给用户Bob;
四、解密(参考图4)
假设用户Alice接收到用户Bob发来的经用户Alice的公钥加密后的消息,用户Bob将使用其私钥对接收到的消息进行解密。
步骤1:用户Bob从收到的密文C中取出比特串C1、Ct,验证C1∈G1、Ct∈G1是否成立,若不成立则报错并退出,否则继续执行以下步骤;
步骤2:用户Bob计算w′=e(C1,DB)·e(Ct,DBT);
步骤3:根据用户选择的加密方式进行计算;如果是基于密钥派生函数的序列密码算法,则计算整数klen=mlen+K2_len,然后计算K′=KDF(C1||Ct||w′||IDB,klen),令K′1为K′最左边的mlen比特,K′2为剩下的K2_len比特,若K′1为全0比特串,则报错并退出,否则计算明文
Figure BDA0002895328290000091
如果是基于密钥派生函数的分组密码算法,则计算整数klen=K1_len+K2_len,然后计算K′=KDF(C1||Ct||w′||IDB,klen),令K′1为K′最左边的K1_len比特,K′2为剩下的K2_len比特,若K′1为全0比特串,则报错并退出,否则计算明文
Figure BDA0002895328290000092
其中,mlen为密文C=C1||Ct||C3||C2中C2的比特长度,K1_len为分组密码算法中K1密钥的比特长度,K2_len为函数MAC(K2,Z)中密钥K2的比特长度;
步骤4:用户Bob计算u=MAC(K′2,C2),从C中取出比特串C3,若u≠C3,则报错并退出,否则继续执行以下步骤;
步骤5:用户Bob输出明文M′;
五、签名(参考图5)
设用户Bob对比特串N进行签名,并且用户Bob已知SM9的系统参数、签名主公钥、签名私钥。
步骤1:用户Bob计算
Figure BDA0002895328290000093
gt=e(P1,Tpub-s);
步骤2:用户Bob产生随机数r∈[1,q-1];
步骤3:用户Bob计算
Figure BDA0002895328290000101
步骤4:用户Bob计算整数h=H2(N||w,q),其中比特串N是待签名消息;
步骤5:用户Bob计算整数l=(r-h)modq,若l=0则返回步骤2;
步骤6:用户Bob计算S1=[l]DB-s
Figure BDA0002895328290000104
步骤7:用户Bob输出消息N的签名为(h,S1||S2);
六、验签(参考图6)
设用户Alice对用户Bob的签名进行验证,并且用户Alice已知SM9的系统参数、签名主公钥、用户Bob的标识信息、接收到的消息N及签名信息(h,S1||S2)。
步骤1:用户Alice对(h,S1||S2)验证h∈[1,q-1]是否成立,若不成立则验证不通过,否则继续执行以下步骤;
步骤2:用户Alice验证S1∈G2、S2∈G2是否成立,若不成立则验证不通过,否则继续执行以下步骤;
步骤3:用户Alice计算
Figure BDA0002895328290000102
gt=e(P1,Tpub-s);
步骤4:用户Alice计算
Figure BDA0002895328290000103
步骤5:用户Alice计算h0=H1(IDB||hid,q)、ht=H1(ID′B||hid,q);
步骤6:用户Alice计算P=[h0]P2+PPub-s、Pt=[ht]P2+TPub-s
步骤7:用户Alice计算u=e(S1,P)·e(S2,Pt);
步骤8:用户Alice计算w′=u·t;
步骤9:用户Alice计算整数h2=H2(N||w′,q),检验h2=h是否成立,若成立则验证通过,否则验证不通过。
以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。

Claims (5)

1.一种基于SM9算法的密钥应用方法,其特征在于包括如下步骤:
步骤S1,依照SM9算法的密钥生成规则,静态密钥管理中心SKGC基于用户标识生成用户的静态密钥,这里静态密钥包含加密密钥对和签名密钥对;
步骤S2,依照SM9算法的密钥生成规则,动态密钥管理中心DKGC通过对用户标识和给定动态变化量构建用户的动态标识,并基于用户动态标识生成用户的动态密钥,动态密钥也包含加密密钥对和签名密钥对;
步骤S3,用户基于通信对方的静态标识生成静态公钥,基于通信对方的动态标识生成动态公钥,并基于所述静态公钥和动态公钥实现加密或验签的操作;用户自静态密钥管理中心SKGC获取静态私钥,自动态密钥管理中心DKGC获取动态私钥,并基于所述静态私钥和动态私钥实现解密或签名的操作;其中,加密、解密使用的密钥对与签名、验签使用的密钥对不相同;
所述步骤S2中,基于用户标识ID和动态变化量data的动态标识的具体生成方式如下:
ID′=ID||data;
所述步骤S3中,静态私钥的提取过程是:
a、密钥生成中心KGC分发用户私钥D0=s0(h0+s0)-1P2,其中h0=H1(Hv,ID||hid,q);
b、用户生成随机数
Figure FDA0003869894190000011
并计算X=[x]P2和D′0=x·D0,其中,
Figure FDA0003869894190000012
表示素数阶乘法群中的整数;
c、对每个KPA,用户发送X和D′0,要求KPA计算Di=si·D′0,并通过验证
e(h0P1+Ppub,D′0)=e(Ppub,X)
来检查用户发来的数据的合法性;用户通过计算
e(h0P1+Ppub,Di)=e(Ppub,PKPA-i)x
来确认计算过程的正确性;
d、A将n个KPA发来的结果相加得到:
Figure FDA0003869894190000021
e、通过下式去除盲因子,计算出用户的静态私钥D:
D=x-1·D′=(s1+s2+…+sn)s0(h0+s0)-1P2
所述步骤S3中,动态私钥的生成方法是:
a、DKGC随机选取
Figure FDA0003869894190000022
计算Tpub=[t0]P1
b、设置gt=e(Tpub,P2);
c、动态私钥为DT=t0·(ht+t0)-1P2,ht=H1(Hv,ID′||hid,q);
所述步骤S3中,DKGC对密钥进行更新,更新的过程是:DKGC基于用户的标识计算:ID′=ID||next-week,然后重新计算动态公钥:QT=htP1+Tpub,重新计算动态私钥:DT=t0·(ht+t0)-1P2,完成更新。
2.如权利要求1所述的方法,其特征在于:所述步骤S3中,用户A对发往用户B的消息进行加密的具体过程是:
步骤1,用户A通过计算QB=h0P1+Ppub=H1(Hv,IDB||hid,q)P1+Ppub得到用户B的加密公钥QB,DKGC计算
Figure FDA0003869894190000023
并发送
Figure FDA0003869894190000024
给用户A,其中,ht=H1(Hv,ID′B||hid,q),密码函数H1()为SM9算法中的函数;
步骤2,用户A产生随机数:r∈[1,q-1];
步骤3,用户A计算:C1=[r]QB
Figure FDA0003869894190000025
步骤4,用户A计算:
Figure FDA0003869894190000031
gt=e(Tpub,P2);
步骤5,用户A计算:
Figure FDA0003869894190000032
步骤6,根据用户选择的加密方式进行计算;如果是基于密钥派生函数的序列密码算法,则计算整数klen=mlen+K2_len,然后计算K=KDF(C1||Ct||w||IDB,klen),令K1为K最左边的mlen比特,K2为剩下的K2_len比特,若K1为全0比特串,则返回步骤2,否则计算
Figure FDA0003869894190000033
如果是结合基于密钥派生函数的分组密码算法,则计算整数klen=K1_len+K2_len,然后计算K=KDF(C1||Ct||w||IDB,klen),令K1为K最左边的K1_len比特,K2为剩下的K2_len比特,若K1为全0比特串,则返回步骤2,否则计算C2=Enc(K1,M);其中,比特串M是待发送的消息,mlen为M的比特长度,K1_len为分组密码算法中密钥K1的比特长度,K2_len为函数MAC(K2,Z)中密钥K2的比特长度;
步骤7:用户A计算C3=MAC(K2,C2);
步骤8:用户A输出密文C=C1||Ct||C3||C2给用户B。
3.如权利要求1所述的方法,其特征在于:所述步骤S3中,用户B对来自用户A的消息进行解密的具体过程是:
步骤1,用户B从收到的密文C中取出比特串C1、Ct,验证C1∈G1、Ct∈G1是否成立,若不成立则报错并退出,否则继续执行以下步骤;
步骤2,用户B计算
Figure FDA0003869894190000034
步骤3,根据用户选择的加密方式进行计算;如果是基于密钥派生函数的序列密码算法,则计算整数klen=mlen+K2_len,然后计算K′=KDF(C1||Ct||w′||IDB,klen),令K′1为K′最左边的mlen比特,K′2为剩下的K2_len比特,若K′1为全0比特串,则报错并退出,否则计算明文
Figure FDA0003869894190000041
如果是基于密钥派生函数的分组密码算法,则计算整数klen=K1_len+K2_len,然后计算K′=KDF(C1||Ct||w′||IDB,klen),令K′1为K′最左边的K1_len比特,K′2为剩下的K2_len比特,若K′1为全0比特串,则报错并退出,否则计算明文
Figure FDA0003869894190000042
其中,mlen为密文C=C1||Ct||C3||C2中C2的比特长度,K1_len为分组密码算法中K1密钥的比特长度,K2_len为函数MAC(K2,Z)中密钥K2的比特长度;
步骤4,用户B计算u=MAC(K′2,C2),从C中取出比特串C3,若u≠C3,则报错并退出,否则继续执行以下步骤;
步骤5,用户B输出明文M′。
4.如权利要求1所述的方法,其特征在于:所述步骤S3中,用户B对比特串N进行签名的具体过程是:
步骤1,用户B计算
Figure FDA0003869894190000043
gt=e(P1,Tpub-s);
步骤2,用户B产生随机数r∈[1,q-1];
步骤3,用户B计算
Figure FDA0003869894190000044
步骤4,用户B计算整数h=H2(N||w,q),其中比特串N是待签名消息;
步骤5,用户B计算整数l=(r-h)modq,若l=0则返回步骤2;
步骤6,用户B计算S1=[l]DB-s
Figure FDA0003869894190000045
步骤7,用户B输出消息N的签名为(h,S1||S2)。
5.如权利要求1所述的方法,其特征在于:所述步骤S3中,用户A对用户B的签名进行验证的具体过程是:
步骤1,用户A对(h,S1||S2)验证h∈[1,q-1]是否成立,若不成立则验证不通过,否则继续执行以下步骤;
步骤2,用户A验证S1∈G2、S2∈G2是否成立,若不成立则验证不通过,否则继续执行以下步骤;
步骤3,用户A计算
Figure FDA0003869894190000051
gt=e(P1,Tpub-s);
步骤4,用户A计算
Figure FDA0003869894190000052
步骤5,用户A计算h0=H1(IDB||hid,q)、ht=H1(ID′B||hid,q);
步骤6,用户A计算P=[h0]P2+PPub-s、Pt=[ht]P2+TPub-s
步骤7,用户A计算u=e(S1,P)·e(S2,Pt);
步骤8,用户A计算w′=u·t;
步骤9,用户A计算整数h2=H2(N||w′,q),检验h2=h是否成立,若成立则验证通过,否则验证不通过。
CN202110039856.XA 2021-01-13 2021-01-13 一种基于sm9算法的密钥应用方法 Active CN112699394B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110039856.XA CN112699394B (zh) 2021-01-13 2021-01-13 一种基于sm9算法的密钥应用方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110039856.XA CN112699394B (zh) 2021-01-13 2021-01-13 一种基于sm9算法的密钥应用方法

Publications (2)

Publication Number Publication Date
CN112699394A CN112699394A (zh) 2021-04-23
CN112699394B true CN112699394B (zh) 2022-11-25

Family

ID=75514276

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110039856.XA Active CN112699394B (zh) 2021-01-13 2021-01-13 一种基于sm9算法的密钥应用方法

Country Status (1)

Country Link
CN (1) CN112699394B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113852466B (zh) * 2021-09-29 2023-05-09 福建师范大学 基于国密sm9的用户撤销方法
CN114726510A (zh) * 2022-03-03 2022-07-08 浙江零跑科技股份有限公司 一种基于sm9算法的密钥分发和数据传输方法
CN115549905A (zh) * 2022-10-11 2022-12-30 北京无字天书科技有限公司 Sm2密钥生成法及相关方法、计算机设备和存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101359991A (zh) * 2008-09-12 2009-02-04 湖北电力信息通信中心 基于标识的公钥密码体制私钥托管系统
CN101764691A (zh) * 2009-12-17 2010-06-30 北京握奇数据系统有限公司 一种获取动态口令生成密钥的方法、设备和系统
CN106506159A (zh) * 2016-11-18 2017-03-15 上海艾讯云计算有限公司 用于密钥安全的加密方法和设备
CN108280341A (zh) * 2016-12-30 2018-07-13 腾讯科技(深圳)有限公司 渠道号添加、安装包校验方法及装置
CN109618326A (zh) * 2018-07-03 2019-04-12 劳伦斯·刘 用户动态标识符生成方法及服务注册方法、登录验证方法
CN111106936A (zh) * 2019-11-27 2020-05-05 国家电网有限公司 一种基于sm9的属性加密方法与系统
CN112069547A (zh) * 2020-07-29 2020-12-11 北京农业信息技术研究中心 一种供应链责任主体身份认证方法及系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106487509B (zh) * 2016-11-09 2019-01-29 北京信安世纪科技股份有限公司 一种生成密钥的方法及宿主设备
US10511591B2 (en) * 2017-05-08 2019-12-17 Amazon Technologies, Inc. Generation of shared secrets using pairwise implicit certificates

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101359991A (zh) * 2008-09-12 2009-02-04 湖北电力信息通信中心 基于标识的公钥密码体制私钥托管系统
CN101764691A (zh) * 2009-12-17 2010-06-30 北京握奇数据系统有限公司 一种获取动态口令生成密钥的方法、设备和系统
CN106506159A (zh) * 2016-11-18 2017-03-15 上海艾讯云计算有限公司 用于密钥安全的加密方法和设备
CN108280341A (zh) * 2016-12-30 2018-07-13 腾讯科技(深圳)有限公司 渠道号添加、安装包校验方法及装置
CN109618326A (zh) * 2018-07-03 2019-04-12 劳伦斯·刘 用户动态标识符生成方法及服务注册方法、登录验证方法
CN111106936A (zh) * 2019-11-27 2020-05-05 国家电网有限公司 一种基于sm9的属性加密方法与系统
CN112069547A (zh) * 2020-07-29 2020-12-11 北京农业信息技术研究中心 一种供应链责任主体身份认证方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
云存储系统下的安全可搜索加密技术研究;吴昊;《万方数据学位论文库》;20200702;第1-93页 *

Also Published As

Publication number Publication date
CN112699394A (zh) 2021-04-23

Similar Documents

Publication Publication Date Title
CN108173639B (zh) 一种基于sm9签名算法的两方合作签名方法
CN108989053B (zh) 一种基于椭圆曲线的无证书公钥密码体制实现方法
CN112367175B (zh) 基于sm2数字签名的隐式证书密钥生成方法
CN112699394B (zh) 一种基于sm9算法的密钥应用方法
CN107659395B (zh) 一种多服务器环境下基于身份的分布式认证方法及系统
CN105024994A (zh) 无对运算的安全无证书混合签密方法
US20060083370A1 (en) RSA with personalized secret
CN101262341A (zh) 一种会务系统中混合加密方法
CN110830236A (zh) 基于全域哈希的身份基加密方法
CN111277412B (zh) 基于区块链密钥分发的数据安全共享系统及方法
CN112104453B (zh) 一种基于数字证书的抗量子计算数字签名系统及签名方法
CN104767612A (zh) 一种从无证书环境到公钥基础设施环境的签密方法
CN104168114A (zh) 一种分布式的基于(k,n)门限证书加密方法及系统
CN104767611B (zh) 一种从公钥基础设施环境到无证书环境的签密方法
CN111010276A (zh) 一种多方联合sm9密钥生成、密文解密方法与介质
CN110113150A (zh) 基于无证书环境的可否认认证的加密方法和系统
CN113285959A (zh) 一种邮件加密方法、解密方法及加解密系统
CN106713349B (zh) 一种能抵抗选择密文攻击的群组间代理重加密方法
CN110855425A (zh) 一种轻量级多方协同sm9密钥生成、密文解密方法与介质
CN111030801A (zh) 一种多方分布式的sm9密钥生成、密文解密方法与介质
CN113676448B (zh) 一种基于对称秘钥的离线设备双向认证方法和系统
CN113098681B (zh) 云存储中口令增强且可更新的盲化密钥管理方法
CN108055134B (zh) 椭圆曲线点数乘及配对运算的协同计算方法及系统
CN107682158B (zh) 一种可托管的认证加密方法
CN111669275B (zh) 一种无线网络环境下可选择从节点的主从协作签名方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant