CN107395368B - 无介质环境中的数字签名方法及解封装方法与解密方法 - Google Patents

无介质环境中的数字签名方法及解封装方法与解密方法 Download PDF

Info

Publication number
CN107395368B
CN107395368B CN201710712016.9A CN201710712016A CN107395368B CN 107395368 B CN107395368 B CN 107395368B CN 201710712016 A CN201710712016 A CN 201710712016A CN 107395368 B CN107395368 B CN 107395368B
Authority
CN
China
Prior art keywords
key
client
signature
steps
following
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
CN201710712016.9A
Other languages
English (en)
Other versions
CN107395368A (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 Wuzitianshu Technology Co ltd
Original Assignee
Beijing Wuzitianshu 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 Wuzitianshu Technology Co ltd filed Critical Beijing Wuzitianshu Technology Co ltd
Priority to CN201710712016.9A priority Critical patent/CN107395368B/zh
Publication of CN107395368A publication Critical patent/CN107395368A/zh
Application granted granted Critical
Publication of CN107395368B publication Critical patent/CN107395368B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
    • H04L9/3073Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves involving pairings, e.g. identity based encryption [IBE], bilinear mappings or bilinear pairings, e.g. Weil or Tate pairing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • H04L9/3252Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Algebra (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Storage Device Security (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明涉及密码领域,特别涉及无介质环境中的数字签名方法及解封装方法与解密方法。本发明在国密算法SM9的基础上,提出将用户私钥通过一定的方式分割为两部分,然后将这两部分密钥分别存放在客户端和服务端。当用户需要使用用户私钥进行密码运算,即进行数字签名、密钥解封装或解密时,客户端和服务端分别使用自己的部分密钥进行密码运算,最后由客户端生成最后的、使用用户私钥进行数字签名、解封装或数据解密的结果。这种方式解决了客户端无介质环境中SM9密码算法的安全实现问题,确保了私钥的安全性。

Description

无介质环境中的数字签名方法及解封装方法与解密方法
技术领域
本发明涉及密码领域,特别涉及无介质环境中的数字签名方法及解封装方法与解密方法。
背景技术
目前,基于公钥密码学的数字签名和加解密技术已经广泛应用在电子商务、身份认证等应用中,为网上交易、通信提供一套成熟、安全的技术和规范。而私钥的安全性是保证这些应用安全的基础。
SM9标识密码算法是一种基于双线性对的标识密码体制,是我国商用密码行业公钥密码算法的一种标准算法,它可以把用户的身份标识用以生成用户的公、私密钥对,主要用于数字签名、数据加密、密钥交换以及身份认证等。
在公开密钥密码体制中,为了保障用户私钥的安全性,用户的私钥通常存储在专门的密码硬件中,如USB Key。但是,在很多情况下,客户端不方便使用介质存储用户私钥时,最常用的办法是将用户私钥保存在用户计算装置本地的存储介质中,如个人电脑的磁盘、移动通信终端内的电子盘,并通过PIN码对私钥进行保护。而这种方式存在用户私钥泄露的风险。智能手机和互联网的普及和发展已经使得网络信息安全的重要性越来越受到社会各界的日益关注,传统的安全手段已经不足以应对这一挑战。
发明内容
发明目的:基于以上内容,本发明第一个目的在于提供了无介质环境中的数字签名方法,本发明的第二个目的在于公开了无介质环境中的解封装方法,本发明的第三个目的在于公开无介质环境中的解密方法,用以提高客户端无介质环境中私钥的安全性。
技术方案:无介质环境中的数字签名方法,包括:
步骤一:密钥生成中心KGC产生系统签名主密钥和用户签名密钥dsA,并将用户签名私钥dsA拆分为t22和P两部分,客户端掌握P,服务端掌握t22
步骤二:服务端生成第一部分签名k1、第二部分签名u和第三部分签名v,并将第一部分签名k1、第二部分签名u和第三部分签名v发送给客户端;
步骤三:客户端生成消息摘要h,并将h发送给服务端,服务端生成第四部分签名k2,并将第四部分签名k2发送给客户端;
步骤四:客户端根据第一部分签名k1、第二部分签名u、第三部分签名v和第四部分签名k2生成完整签名并输出。
进一步地,上述无介质环境中的数字签名方法中,步骤一包括:
密钥生成中心KGC产生一个位于[1,N-1]之间的随机数ks,将产生的随机数作为签名主私钥,并由密钥生成中心KGC秘密保存,其中:N表示循环群G1,G2,GT的阶,N是大于29的素数,群G1,G2表示阶为素数N的加法循环群,群GT表示阶为素数N的乘法循环群;
计算群G2中的元素[ks]P2,将计算结果Ppub-s作为签名主公钥,并公开Ppub-s,其中[ks]P2表示元素P2的ks倍;
密钥生成中心KGC在有限域FN上计算H1(IDA||hid,N)+ks,并将计算结果记为t1,其中:H1()表示由密码杂凑函数派生的密码函数,IDA为用户A的标识,hid为签名私钥生成函数识别符;
若t1不等于0,计算ks·t1 -1modN,将结果记为t2,并且计算[t2]P1,记为用户签名私钥dsA,其中mod表示求模运算;
密钥生成中心KGC产生一个位于[1,N-1]之间的随机数,记为t21,计算[t21]P1,将计算结果记为P,计算t2·t21 -1,将计算结果记为t22,并且计算[t22]P,记为dsA,且客户端掌握P,服务端掌握t22
更进一步地,上述无介质环境中的数字签名方法中,步骤二包括:
服务端计算群GT中的元素e(P1,Ppub-s),记为g;
客户端产生一个位于[1,N-1]之间的随机数,记为r1,并向服务端发送签名请求;
服务端生成两个位于[1,N-1]之间的随机数,记为r2,r3
服务端计算第一部分签名r2t22modN,记为k1;第二部分签名
Figure GDA0002367557750000031
记为u;第三部分签名
Figure GDA0002367557750000032
记为v;并将第一部分签名k1、第二部分签名u、第三部分签名v发送给客户端。
更进一步地,上述的无介质环境中的数字签名方法中,步骤三包括:
客户端计算
Figure GDA0002367557750000033
记为w,并计算消息摘要H2(M||w,N),记为h,将h发送给客户端;
服务端计算第四部分签名(r3-h)t22 modN,记为k2,并将k2发送给客户端,其中
M为待签名消息;
| |表示拼接;
H1()表示由密码杂凑函数派生的密码函数。
更进一步地,上述的无介质环境中的数字签名方法中,步骤四包括:
客户端计算整数(r1k1+k2)modN,将计算结果记为l;
若l≠0,那么客户端计算群G1中的元素[l]P,记为S,则对消息M的签名即为(h,S),同时客户端验证签名是否正确。
无介质环境中的解封装方法,包括:
步骤一:密钥生成中心KGC产生系统签名主密钥和加密私钥deB,并将加密私钥deB拆分为t22和P两部分,客户端掌握P,服务端掌握t22
步骤二:客户端计算[t22]C,将结果发送给服务端,服务端计算双线性对w′,并将w′发送给客户端;
步骤三:客户端根据双线性对w′计算封装的密钥K′,并输出密钥K′。
进一步地,上述的无介质环境中的解封装方法中,步骤一包括:
密钥生成中心KGC产生一个位于[1,N-1]之间的随机数ke,将产生的随机数作为加密主私钥,并由密钥生成中心KGC秘密保存,其中,N是大于2|9|的素数;
计算群G1中的元素[ke]P1,将计算结果Ppub-e作为加密主公钥,并公开Ppub-e
密钥生成中心KGC在有限域FN上计算H1(IDB||hid,N)+ke,并将计算结果记为t1
若t1不等于0,计算ke·t1 -1,将结果记为t2
KGC产生一个位于[1,N-1]的随机数t21,计算[t21]P1,将计算结果记为P,计算t2·t21 -1,将计算结果记为t22,计算[t22]P,记为deB,并且客户端掌握P,服务端掌握t22
更进一步地,上述的无介质环境中的解封装方法中,步骤二包括:
验证密文C是否属于群G1,若成立则继续下一步,否则,报错退出;
客户端计算[t22]C,记为l1,并将l1发送给服务端;
服务端计算双曲线对e([t22]C,P),将计算结果作为w′,并将w′的数据类型转换为比特串,发送给客户端。
更进一步地,上述的无介质环境中的解封装方法,步骤三包括:
客户端计算封装的密钥KDF(C||w′||IDB,klen),计算结果记为K′;
若K′为不是全0比特串,则输出完整密钥K′,其中
KDF()表示预定的密钥派生函数;
IDB表示解封装用户B的标识,可以唯一确定用户B的公钥;
klen表示输出的比特长度,取值为预先设定。
无介质环境中的解密方法,包括:
步骤一:密钥生成中心KGC产生系统加密主密钥和加密私钥deB,并将私钥deB拆分为t22和P两部分,客户端掌握P,服务端掌握t22
步骤二:客户端计算[t22]C,将结果发送给服务端,服务端计算双线性对w′,并将w′发送给客户端;
步骤三:客户端按照加密明文的方法分类计算明文M′;
步骤四:验证消息认证码函数值与比特串C3是否相等,如果相等,输出明文M′。
进一步地,上述的无介质环境中的解密方法中,步骤一包括:
密钥生成中心KGC产生一个位于[1,N-1]之间的随机数ke,将产生的随机数作为加密主私钥,并由密钥生成中心KGC秘密保存,其中,N是大于29的素数;
计算群G1中的元素[ke]P1,将计算结果Ppub-e作为加密主公钥,并公开Ppub-e
密钥生成中心KGC在有限域FN上计算H1(IDB||hid,N)+ke,并将计算结果记为t1
若t1不等于0,计算ke·t1 -1,将结果记为t2
密钥生成中心KGC产生一个位于[1,N-1]随机数t21,计算[t21]P1,将计算结果记为P,计算t2·t21 -1,将计算结果记为t22,并且客户端掌握P,服务端掌握t22
更进一步地,上述的无介质环境中的解密方法中,步骤二包括:
客户端从密文C中提取比特串C1,密文C由比特串C1、C2和C3拼接而成,并将C1进行数据类型转换为椭圆曲线上的点,验证C1是否属于群G1
客户端计算[t22]C1,记为l2,并将l2发送给服务端;
服务端计算e([t22]C,P),将计算结果作为w′,并将w′的数据类型转换为比特串,发送给客户端;
其中:
C1是每次加密的临时公钥;
C2是密文,比特长度为mlen;
C3是消息验证码;
若C1属于群G1,则执行步骤三,否则,退出报错。
更进一步地,上述的无介质环境中的解密方法中,步骤三包括:
客户端按照加密明文的方法分类计算:
(1)如果加密明文的方法是基于密钥派生函数的序列密码算法,则
11)计算整数mlen+K2_len,记为klen,然后计算KDF(C1||w′||IDB,klen),记为K′,并且令K1′为K′最左边的mlen比特,K2′为剩下的K2_len比特;
12)计算
Figure GDA0002367557750000061
13)若K1′为全0的比特串,则报错并退出,否则执行步骤四;
(2)如果加密明文的方法是结合密钥派生函数的分组密码算法,则
21)计算整数K1_len+K2_len,记为klen,然后计算KDF(C1||w′||IDB,klen),记为K′,令K1′为K′最左边的K1_len比特,K2′为剩下的K2_len比特;
22)计算M′=Dec(K1′,C2);
即有:klen=mlen+K2_len;
klen=K1_len+K2_len;
K′=KDF(C1||w′||IDB,klen);
其中
mlen为密文C中C2的比特长度;
K2_len为函数MAC(K2,Z)中密钥K2的比特长度;
MAC()为消息认证码函数;
IDB为用户B的标识;
Dec()为分组解密算法,
Figure GDA0002367557750000071
表示长度相等的两个比特串按比特的模2加运算;
23)若K1′为全0的比特串,则报错并退出,否则执行步骤四。
更进一步地,上述的无介质环境中的解密方法中,步骤四包括:
计算MAC(K2′,C2),记为u1,从密文C中提取比特串C3
若u1与比特串C3相等,则输出明文M′。
无介质环境中的数字签名方法,包括:
步骤一:密钥生成中心KGC产生系统签名主密钥和用户签名密钥dsA,并将用户签名私钥dsA拆分为P和Q两部分,客户端掌握P,服务端掌握Q;
步骤二:客户端向服务端发送签名请求,服务端生成第一部分签名s1、第二部分签名s2、第三部分签名s3、第四部分签名u和第五部分签名v,并将s1、s2、s3、u和v发送给客户端;
步骤三:客户端生成消息摘要h,将h发送给服务端,服务端生成第六部分签名s4,并将s4发送给客户端;
步骤四:客户端根据s1、s2、s3、s4、u和v,生成完整签名并输出。
进一步地,上述的无介质环境中的数字签名方法中,步骤一包括:
密钥生成中心KGC产生一个位于[1,N-1]之间的随机数ks,将产生的随机数作为签名主私钥,并由KGC秘密保存,其中,N是大于29的素数;
计算群G2中的元素[ks]P2,将计算结果Ppub-s作为签名主公钥,并公开Ppub-s
密钥生成中心KGC在有限域FN上计算H1(IDA||hid,N)+ks,并将计算结果记为t1
若t1不等于0,计算ks·t1 -1 mod N,将结果记为t2
密钥生成中心KGC计算[t2]P1,记为用户签名私钥dsA
密钥生成中心KGC产生一个位于计算[1,N-1]之间的随机数t21,计算[t21]P1,将计算结果记为P,计算[t22]P1,将计算结果记为Q,计算P+Q,记为dsA,并且客户端掌握P,服务端掌握Q。
更进一步地,上述的无介质环境中的数字签名方法,步骤二包括:
服务端计算群GT中的元素e(P1,Ppub-s),记为g;
客户端产生一个位于[1,N-1]之间的随机数,记为r1,并向服务端发送签名请求,同时发送[r1]P到服务端,记为R;
服务端生成两个位于[1,N-1]之间的随机数,记为r2,r3
服务端计算第一部分签名[r2]R,记为s1;第二部分签名[r3]R,记为s2;第三部分签名[r2]Q,记为s3;第四部分签名
Figure GDA0002367557750000081
记为u;第五部分签名
Figure GDA0002367557750000082
记为v;并将s1,s2,s3,u,v发送给客户端,其中,
N是大于2|9|的素数。
更进一步地,上述的无介质环境中的数字签名方法,步骤三包括:
客户端计算
Figure GDA0002367557750000083
记为w,并计算消息摘要H2(M||w,N),记为h,并将h发送给服务端;
服务端计算第六部分签名(r3-h)mod N,记为s4,并将s4发送给客户端。
更进一步地,上述的无介质环境中的数字签名方法,步骤四包括:
客户端计算s1+[r1 -1]s2+[r1]s3+s4-[h mod N]P,记为S,则对消息M的签名即为(h,S),同时客户端验证签名是否正确。
无介质环境中的解封装方法,包括:
步骤一:密钥生成中心KGC产生系统加密主密钥和私钥deB,并将加密私钥deB拆分为P和Q两部分,客户端掌握P,服务端掌握Q;
步骤二:客户端将密文C结果发送给服务端,服务端计算双线性对w′;
步骤三:客户端根据双线性对w′计算封装的密钥K′,并输出密钥K′。
进一步地,上述的无介质环境中的解封装方法中,步骤一包括:
密钥生成中心KGC产生一个位于[1,N-1]之间的随机数ke,将产生的随机数作为加密主私钥,并由KGC秘密保存,其中N是大于2|9|的素数;
计算群G1中的元素[ke]P1,将计算结果Ppub-e作为加密主公钥,并公开Ppub-e
密钥生成中心KGC在有限域FN上计算H1(IDB||hid,N)+ke,并将计算结果记为t1
若t1不等于0,计算ke·t1 -1,将结果记为t2
密钥生成中心KGC产生一个位于计算[1,N-1]之间的随机数t21,计算[t21]P1,将计算结果记为P,计算[t22]P1,将计算结果记为Q,计算P+Q,记为deB,并且客户端掌握P,服务端掌握Q。
更进一步地,上述的无介质环境中的解封装方法中,步骤二包括:
客户端验证密文C是否属于G1,如果密文C属于G1,将密文C发送给服务端;
服务端计算e(C,Q),将计算结果作为l′,并将l′发送给客户端;
客户端计算群GT中的元素e(C,P)+l′,记为w′。
更进一步地,上述的无介质环境中的解封装方法中,步骤三包括:
客户端将密文C的数据类型转换为比特串,计算封装的密钥KDF(C||w′||IDB,klen),计算结果记为K′;
若K′为不是全0比特串,则输出完整密钥K′。
无介质环境中的解密方法,包括:
步骤一:密钥生成中心KGC产生系统加密主密钥和加密私钥deB,并将私钥deB拆分为P和Q两部分,客户端掌握P,服务端掌握Q;
步骤二:服务端计算双线性对e(C1,Q),记为l′,将l′发送给客户端,客户端计算e(C1,Q)+l′,记为w′;
步骤三:客户端按照加密明文的方法分类计算明文M′;
步骤四:验证消息认证码函数值与比特串C3是否相等,如果相等,输出明文M′。
进一步地,上述的无介质环境中的解密方法中,步骤一包括:
密钥生成中心KGC产生一个位于[1,N-1]之间的随机数ke,将产生的随机数作为加密主私钥,并由KGC秘密保存,其中N是大于2|9|的素数;
计算群G1中的元素[ke]P1,将计算结果Ppub-e作为加密主公钥,并公开Ppub-e
密钥生成中心KGC在有限域FN上计算H1(IDB||hid,N)+ke,并将计算结果记为t1
若t1不等于0,计算ke·t1 -1,将结果记为t2
密钥生成中心KGC产生一个位于计算[1,N-1]之间的随机数t21,计算[t21]P1,将计算结果记为P,计算[t22]P1,将计算结果记为Q,计算P+Q,记为dsA,并且客户端掌握P,服务端掌握Q。
更进一步地,上述的无介质环境中的解密方法中,步骤二包括:
客户端从密文C中提取比特串C1,密文C由比特串C1、C2和C3拼接而成,并将C1进行数据类型转换为椭圆曲线上的点,验证C1是否属于群G1
服务端计算e(C1,Q),将计算结果作为l′,并将l′发送给客户端;
客户端计算群GT中的元素e(C1,P)+l′,记为w′,其中C1是每次加密的临时公钥,C2是密文,比特长度为mlen,C3是消息验证码;
若C1属于群G1,则执行步骤三,否则,退出报错。
更进一步地,上述的无介质环境中的解密方法中,包括:
客户端按照加密明文的方法分类计算:
(1)如果加密明文的方法是基于密钥派生函数的序列密码算法,则
11)计算整数mlen+K2_len,记为klen,然后计算KDF(C1||w′||IDB,klen),记为K′,并且令K1′为K′最左边的mlen比特,K2′为剩下的K2_len比特;
12)计算
Figure GDA0002367557750000111
13)若K1′为全0的比特串,则报错并退出,否则继续执行步骤四;
(2)如果加密明文的方法是结合密钥派生函数的分组密码算法,则
21)计算整数K1_len+K2_len,记为klen,然后计算KDF(C1||w′||IDB,klen),记为K′,令K1′为K′最左边的K1_len比特,K2′为剩下的K2_len比特;
22)计算M′=Dec(K1′,C2);
即有:klen=mlen+K2_len;
klen=K1_len+K2_len;
K′=KDF(C1||w′||IDB,klen);
其中mlen为密文C中C2的比特长度,K2_len为函数MAC(K2,Z)中密钥K2的比特长度,MAC()为消息认证码函数,IDB为用户B的标识,Dec()为分组解密算法,
Figure GDA0002367557750000121
表示长度相等的两个比特串按比特的模2加运算;
23)若K1′为全0的比特串,则报错并退出,否则继续执行步骤四。
更进一步地,上无介质环境中的解密方法中,步骤四包括:
计算MAC(K2′,C2),记为u1,从密文C中提取比特串C3
若u1与比特串C3相等,则输出明文M′。
本发明在国密算法SM9的基础上,提出将用户私钥通过一定的方式分割为两部分,然后将这两部分密钥分别存放在客户端和服务端。当用户需要使用用户私钥进行密码运算,即进行数字签名、密钥解封装或解密时,客户端和服务端分别使用自己的部分密钥进行密码运算,最后由客户端生成最后的、使用用户私钥进行数字签名、解封装或数据解密的结果。这种方式解决了客户端无介质环境中SM9密码算法的安全实现问题,确保了私钥的安全性。
附图说明
为了更清楚地说明本发明实施例,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本发明公开的无介质环境中的数字签名方法的一实施例的流程图。
图2为本发明公开的无介质环境中的解封装方法的一实施例的流程图。
图3为本发明公开的无介质环境中的解密方法的一实施例的流程图。
图4为本发明公开的无介质环境中的数字签名方法的另一实施例的流程图。
图5为本发明公开的无介质环境中的解封装方法的另一实施例的流程图。
图6为本发明公开的无介质环境中的解密方法的另一实施例的流程图。
具体实施方式:
为了使本领域的人员更好地理解本发明实施例中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
具体实施例1
图1为本发明公开的无介质环境中的数字签名方法的一实施例的流程图,包括以下步骤1-14;
步骤1:密钥生成中心KGC产生一个位于[1,N-1]之间的随机数ks,将产生的随机数作为签名主私钥,并由KGC秘密保存;
即有:ks∈[1,N-1],其中N表示循环群G1,G2,GT的阶,是大于2|9|的素数,群G1,G2表示阶为素数N的加法循环群,群GT表示阶为素数N的乘法循环群;
步骤2:计算群G2中的元素[ks]P2,将计算结果Ppub-s作为签名主公钥,并公开Ppub-s
即有:Ppub-s∈G2
Ppub-s=[ks]P2
其中[ks]P2表示元素P2的ks倍;
步骤3:KGC在有限域FN上计算H1(IDA||hid,N)+ks,并将计算结果记为t1
即有:t1=H1(IDA||hid,N)+ks;
其中H1()表示由密码杂凑函数派生的密码函数,IDA为用户A的标识,hid为签名私钥生成函数识别符;
那么,若t1等于0,则返回步骤1,并将与此有关的步骤重新执行,若t1不等于0,则执行步骤4;
步骤4:若t1不等于0,计算ks·t1 -1 mod N,将结果记为t2
即有:t2=ks·t1 -1 mod N;
其中mod表示求模运算;
步骤5:KGC计算[t2]P1,记为用户签名私钥dsA
即有:dsA=[t2]P1
其中P1为群G1的生成元,[t2]P1表示元素P1的t2倍;
步骤6:KGC产生一个位于[1,N-1]之间的随机数,记为t21,计算[t21]P1,将计算结果记为P,计算t2·t21 -1,将计算结果记为t22,并且计算[t22]P,记为dsA,且客户端掌握P,服务端掌握t22
即有:t21∈[1,N-1];
P=[t21]P1
t22=t2·t21 -1
dsA=[t22]P;
步骤7:服务端计算群GT中的元素e(P1,Ppub-s),记为g;
即有:g=e(P1,Ppub-s);
其中e()表示从G1×G2到GT的双线性对;
步骤8:客户端产生一个位于[1,N-1]之间的随机数,记为r1,并向服务端发送签名请求;
即有:r1∈[1,N-1];
步骤9:服务端生成两个位于[1,N-1]之间的随机数,记为r2,r3
即有:r2,r3∈[1,N-1];
步骤10:服务端计算第一部分签名r2t22 mod N,记为k1,第二部分签名
Figure GDA0002367557750000141
记为u,第三部分签名
Figure GDA0002367557750000142
记为v,并将k1,u,v发送给客户端;
即有:k1=r2t22 mod N;
Figure GDA0002367557750000143
Figure GDA0002367557750000151
步骤11:客户端计算
Figure GDA0002367557750000152
记为w,并计算消息摘要H2(M||w,N),记为h,并将h发送给服务端;
即有:
Figure GDA0002367557750000153
h=H2(M||w,N);
其中M为待签名消息,| |表示拼接,H1()表示由密码杂凑函数派生的密码函数;
步骤12:服务端计算第四部分签名(r3-h)t22 mod N,记为k2,并将k2发送给客户端;
即有:k2=(r3-h)t22 mod N;
步骤13:客户端计算整数(r1k1+k2)mod N,将计算结果记为l;
即有:l=(r1k1+k2)mod N。
其中,若l值等于0,则返回步骤8,并将此相关的步骤重新执行;
步骤14:若l值不为0,那么客户端计算群G1中的元素[l]P,记为S,则对消息M的签名即为(h,S),同时客户端验证签名是否正确。
即有:S=[l]P。
通过步骤1-14所示过程,即可完成待签名消息M的完整签名。
注:当消息M不对服务端保密时,可以在步骤8时将
Figure GDA0002367557750000154
M(或者将h的计算分为两部分,客户端先计算一部分,结果发给服务端,由服务端计算最终的h)发送给服务端,则步骤9、10、11三步可以合并成一步,服务端计算出h,k1,k2,将这三个结果发送给客户端,客户端计算出S,即双方只互相发送一次消息即可完成签名,上面的14步可简化为12个步骤。
需要说明的是,上述步骤1-14的表示方式仅为举例说明,并不用于限制各步骤的执行顺序,在实际应用中,可根据实际需要设定各步骤的执行顺序,只要最终能够得到所需的结果即可,后续涉及到的各示意图中同样如此,不再赘述。
图2为本发明公开的无介质环境中的解封装方法实施例的一流程图,包括以下步骤15-24;
步骤15:密钥生成中心KGC产生一个位于[1,N-1]之间的随机数ke,将产生的随机数作为加密主私钥,并由KGC秘密保存;
即有:ke∈[1,N-1];
步骤16:计算群G1中的元素[ke]P1,将计算结果Ppub-e作为加密主公钥,并公开Ppub-e
即有:Ppub-e∈G1
Ppub-e=[ke]P1
步骤17:KGC在有限域FN上计算H1(IDB||hid,N)+ke,并将计算结果记为t1
即有:t1=H1(IDB||hid,N)+ke;
其中H1()表示由密码杂凑函数派生的密码函数,IDB为解封装用户B的标识,hid为加密私钥生成函数识别符;
那么,若t1等于0,则返回步骤15,并将与此有关的步骤重新执行,若t1不等于0,则执行步骤18;
步骤18:若t1不等于0,计算ke·t1 -1,将结果记为t2
即有:t2=ke·t1 -1
步骤19:KGC产生一个位于[1,N-1]的随机数t21,计算[t21]P1,将计算结果记为P,计算t2·t21 -1,将计算结果记为t22,计算[t22]P,记为deB,并且客户端掌握P,服务端掌握t22
即有:t21∈[1,N-1];
P=[t21]P1
t22=t2·t21 -1
deB=[t22]P;
步骤20:验证密文C是否属于群G1,若成立则执行步骤21,否则,报错退出;
步骤21:客户端计算[t22]C,记为l1,并将l1发送给服务端;
步骤22:服务端计算双曲线对e([t22]C,P),将计算结果作为w′,并将w′的数据类型转换为比特串,发送给客户端;
即有:w′=e([t22]C,P)。
步骤23:客户端将验证密文C的数据类型转换为比特串,计算封装的密钥KDF(C||w′||IDB,klen),计算结果记为K′;
即有:K′=KDF(C||w′||IDB,klen)。
其中KDF()表示预定的密钥派生函数,IDB表示解封装用户B的标识,能唯一确定用户B的公钥,klen表示输出的比特长度,取值为预先设定;
若K′为全0比特串,则报错并退出,否则执行步骤24;
步骤24:若K′为不是全0比特串,则输出完整密钥K′。
通过步骤15-24所示过程,即可完成对密钥解封装的过程。
图3为本发明公开的无介质环境中的解密方法的一实施例的流程图,包括以下步骤25-31;
步骤25:密钥生成中心KGC产生系统主密钥和解密用户B的私钥deB,并将私钥deB拆分为t22和P两部分,客户端掌握P,服务端掌握t22(本步骤的的具体实现可参照步骤15-19中的相关说明,此处不再赘述);
步骤26:客户端从密文C中提取比特串C1,密文C由比特串C1、C2和C3拼接而成,并将C1进行数据类型转换为椭圆曲线上的点,验证C1是否属于群G1
即有:C=C1||C2||C3
其中C1是每次加密的临时公钥,C2是密文,比特长度为mlen,C3是消息验证码;
若C1属于群G1,则执行步骤27,否则,退出报错;
步骤27:客户端计算[t22]C1,记为l2,并将l2发送给服务端;
步骤28:服务端计算e([t22]C1,P),将计算结果作为w′,并将w′的数据类型转换为比特串,发送给客户端;
即有:w′=e([t22]C1,P);
步骤29:客户端按照加密明文的方法分类计算:
(1)如果加密明文的方法是基于密钥派生函数的序列密码算法,则
1)计算整数mlen+K2_len,记为klen,然后计算KDF(C1||w′||IDB,klen),记为K′,并且令K1′为K′最左边的mlen比特,K2′为剩下的K2_len比特;
2)计算
Figure GDA0002367557750000181
(2)如果加密明文的方法是结合密钥派生函数的分组密码算法,则
1)计算整数K1_len+K2_len,记为klen,然后计算KDF(C1||w′||IDB,klen),记为K′。令K1′为K′最左边的K1_len比特,K2′为剩下的K2_len比特;
2)计算M′=Dec(K1′,C2);
即有:klen=mlen+K2_len;
klen=K1_len+K2_len;
K′=KDF(C1||w′||IDB,klen);
其中mlen为密文C中C2的比特长度,K2_len为函数MAC(K2,Z)中密钥K2的比特长度,MAC()为消息认证码函数,IDB为用户B的标识,Dec()为分组解密算法,
Figure GDA0002367557750000191
表示长度相等的两个比特串按比特的模2加运算;
若K1′为全0的比特串,则报错并退出,否则继续执行步骤30;
步骤30:计算MAC(K2′,C2),记为u1,从密文C中提取比特串C3
即有:u1=MAC(K2′,C2);
若u1与比特串C3不相等,则报错并退出,否则执行步骤31;
步骤31:若u1与比特串C3相等,则输出明文M′。
通过步骤25-31所示过程,即可完成对密钥解密的过程。
具体实施例2
图4为本发明公开的无介质环境中的数字签名方法的另一实施例的流程图,包括以下步骤32-40;
步骤32:密钥生成中心KGC产生系统签名主密钥和用户签名密钥dsA(本步骤的的具体实现可参照步骤1-5中的相关说明,此处不再赘述)
步骤33:KGC产生一个位于计算[1,N-1]之间的随机数t21,计算[t21]P1,将计算结果记为P,计算[t22]P1,将计算结果记为Q,计算P+Q,记为dsA,并且客户端掌握P,服务端掌握Q;
即有:t21∈[1,N-1];
P=[t21]P1
Q=[t22]P1
Q=[t22]P1
dsA=P+Q;
步骤34:服务端计算群GT中的元素e(P1,Ppub-s),记为g;
即有:g=e(P1,Ppub-s);
步骤35:客户端产生一个位于[1,N-1]之间的随机数,记为r1,并向服务端发送签名请求,同时发送[r1]P到服务端,记为R;
即有:r1∈[1,N-1];
R=[r1]P;
步骤36:服务端生成两个位于[1,N-1]之间的随机数,记为r2,r3
即有:r2,r3∈[1,N-1];
步骤37:服务端计算第一部分签名[r2]R,记为s1,第二部分签名[r3]R,记为s2,第三部分签名[r2]Q,记为s3,第四部分签名
Figure GDA0002367557750000201
记为u,第五部分签名
Figure GDA0002367557750000202
记为v,并将s1,s2,s3,u,v发送给客户端;
即有:s1=[r2]R;
s2=[r3]R;
s3=[r2]Q;
Figure GDA0002367557750000206
Figure GDA0002367557750000203
步骤38:客户端计算
Figure GDA0002367557750000204
记为w,并计算消息摘要H2(M||w,N),记为h,并将h发送给客户端;
即有:
Figure GDA0002367557750000205
h=H2(M||w,N);
步骤39:服务端计算第六部分签名(r3-h)mod N,记为s4,并将s4发送给客户端;
即有:s4=(r3-h)mod N;
步骤40:客户端计算s1+[r1 -1]s2+[r1]s3+s4-[h mod N]P,记为S,则对消息M的签名即为(h,S),同时客户端验证签名是否正确;
即有:S=s1+[r1 -1]s2+[r1]s3+s4-[h mod N]P。
通过步骤32-40所示过程,即可完成待签名消息M的完整签名。
图5为本发明公开的无介质环境中的解封装方法的另一实施例的流程图,包括以下步骤41-48;
步骤41:密钥生成中心KGC产生系统加密主密钥和私钥deB(本步骤的的具体实现可参照步骤15-18中的相关说明,此处不再赘述):
步骤42:KGC产生一个位于计算[1,N-1]之间的随机数t21,计算[t21]P1,将计算结果记为P,计算[t22]P1,将计算结果记为Q,计算P+Q,记为deB,并且客户端掌握P,服务端掌握Q;
即有:P=[t21]P1
Q=[t22]P1
deB=P+Q;
步骤43:客户端验证密文C是否属于G1,并将密文C发送给服务端;
即有:C∈G1
若C∈G1成立,则继续执行步骤44,否则报错并退出;
步骤44:服务端计算e(C,Q),将计算结果作为l′,并将l′发送给客户端;
即有:l′=e(C,Q);
步骤45:客户端计算群GT中的元素e(C,P)+l′,记为w′;
即有:w′=e(C,P)+l′;
步骤46:客户端将C的数据类型转换为比特串,计算封装的密钥KDF(C||w′||IDB,klen),计算结果记为K′;
即有:K′=KDF(C||w′||IDB,klen)。
若K′为全0比特串,则报错并退出,否则执行步骤47;
步骤47:若K′为不是全0比特串,则输出完整密钥K′。
通过步骤41-47所示过程,即可完成对密钥解封装的过程。
图6为本发明公开的无介质环境中的解密方法的另一实施例的流程图,包括以下步骤48-55;
步骤48:密钥生成中心KGC产生系统加密主密钥和私钥deB,并将私钥deB拆分为P和Q两部分,客户端掌握P,服务端掌握Q,(本步骤的具体实现可参照步骤41-42中的相关说明,此处不再赘述);
步骤49:客户端从密文C中提取比特串C1,密文C由比特串C1、C2和C3拼接而成,并将C1进行数据类型转换为椭圆曲线上的点,验证C1是否属于群G1
即有:C=C1||C2||C3
其中C1是每次加密的临时公钥,C2是密文,比特长度为mlen,C3是消息验证码;
若C1属于群G1,则执行步骤51,否则,退出报错;
步骤50:客户端验证密文C1是否属于G1,并将密文C1发送给服务端;
即有:C1∈G1
若C1∈G1成立,则继续执行步骤51,否则报错并退出;
步骤51:服务端计算e(C1,Q),将计算结果作为l′,并将l′发送给客户端;
即有:l′=e(C1,Q);
步骤52:客户端计算群GT中的元素e(C1,P)+l′,记为w′;
即有:w′=e(C1,P)+l′;
步骤53:客户端按照加密明文的方法分类计算:
(1)如果加密明文的方法是基于密钥派生函数的序列密码算法,则
1)计算整数mlen+K2_len,记为klen,然后计算KDF(C1||w′||IDB,klen),记为K′,并且令K1′为K′最左边的mlen比特,K2′为剩下的K2_len比特;
2)计算
Figure GDA0002367557750000231
(2)如果加密明文的方法是结合密钥派生函数的分组密码算法,则
1)计算整数K1_len+K2_len,记为klen,然后计算KDF(C1||w′||IDB,klen),记为K′。令K1′为K′最左边的K1_len比特,K2′为剩下的K2_len比特;
2)计算M′=Dec(K1′,C2);
即有:klen=mlen+K2_len;
klen=K1_len+K2_len;
K′=KDF(C1||w′||IDB,klen)。
若K1′为全0的比特串,则报错并退出,否则继续执行步骤54;
步骤54:计算MAC(K2′,C2),记为u1,从密文C中提取比特串C3
即有:u1=MAC(K2′,C2);
若u1与比特串C3不相等,则报错并退出,否则执行步骤55;
步骤55:若u1与比特串C3相等,则输出明文M′。

Claims (6)

1.无介质环境中的数字签名方法,其特征在于,包括:
步骤一:密钥生成中心KGC产生系统签名主密钥和用户签名密钥dsA,并将用户签名私钥dsA拆分为t22和P两部分,客户端掌握P,服务端掌握t22
步骤二:服务端生成第一部分签名k1、第二部分签名u和第三部分签名v,并将第一部分签名k1、第二部分签名u和第三部分签名v发送给客户端;
步骤三:客户端生成消息摘要h,并将h发送给服务端,服务端计算第四部分签名(r3-h)t22mod N,记为k2,并将第四部分签名k2发送给客户端;
步骤四:客户端根据第一部分签名k1、第二部分签名u、第三部分签名v和第四部分签名k2生成完整签名并输出,其中:
步骤一包括:
密钥生成中心KGC产生一个位于[1,N-1]之间的随机数ks,将产生的随机数作为签名主私钥,并由密钥生成中心KGC秘密保存,其中:N表示循环群G1,G2,GT的阶,N是大于2|9|的素数,群G1,G2表示阶为素数N的加法循环群,群GT表示阶为素数N的乘法循环群;
计算群G2中的元素[ks]P2,将计算结果Ppub-s作为签名主公钥,并公开Ppub-s,其中[ks]P2表示元素P2的ks倍;
密钥生成中心KGC在有限域FN上计算H1(IDA||hid,N)+ks,并将计算结果记为t1,其中:H1()表示由密码杂凑函数派生的密码函数,IDA为用户A的标识,hid为签名私钥生成函数识别符;
若t1不等于0,计算ks·t1 -1 mod N,将结果记为t2,并且计算[t2]P1,记为用户签名私钥dsA,其中mod表示求模运算;
密钥生成中心KGC产生一个位于[1,N-1]之间的随机数,记为t21,计算[t21]P1,将计算结果记为P,计算t2·t21 -1,将计算结果记为t22,并且计算[t22]P,记为dsA,且客户端掌握P,服务端掌握t22
步骤二中的服务端生成第一部分签名k1、第二部分签名u和第三部分签名v,包括:
客户端产生一个位于[1,N-1]之间的随机数,记为r1,并向服务端发送签名请求;
服务端生成两个位于[1,N-1]之间的随机数,记为r2,r3
服务端计算第一部分签名r2t22mod N,记为k1,第二部分签名
Figure FDA0002393415110000021
记为u,第三部分签名
Figure FDA0002393415110000022
记为v,并将k1,u,v发送给客户端;
步骤四中的客户端根据第一部分签名k1、第二部分签名u、第三部分签名v和第四部分签名k2生成完整签名包括:
客户端计算整数(r1k1+k2)mod N,将计算结果记为l;
即有:l=(r1k1+k2)mod N;
其中,若l值等于0,则返回步骤二;
若l值不为0,那么客户端计算群G1中的元素[l]P,记为S,则对消息M的签名即为(h,S)。
2.无介质环境中的解封装方法,其特征在于,包括:
步骤一:密钥生成中心KGC产生系统签名主密钥和加密私钥deB,并将加密私钥deB拆分为t22和P两部分,客户端掌握P,服务端掌握t22
步骤二:客户端计算[t22]C,将结果发送给服务端,服务端计算双线性对w′,并将w′发送给客户端,其中:
C表示密文;
步骤三:客户端根据双线性对w′计算封装的密钥K′,并输出密钥K′,其中:
步骤一中的加密私钥deB拆分为t22和P两部分,包括以下步骤:
步骤15:密钥生成中心KGC产生一个位于[1,N-1]之间的随机数ke,将产生的随机数作为加密主私钥,并由KGC秘密保存;
即有:ke∈[1,N-1];
步骤16:计算群G1中的元素[ke]P1,将计算结果Ppub-e作为加密主公钥,并公开Ppub-e
即有:Ppub-e∈G1
Ppub-e=[ke]P1
步骤17:KGC在有限域FN上计算H1(IDB||hid,N)+ke,并将计算结果记为t1
即有:t1=H1(IDB||hid,N)+ke;
其中H1()表示由密码杂凑函数派生的密码函数,IDB为解封装用户B的标识,hid为加密私钥生成函数识别符;
那么,若t1等于0,则返回步骤15;若t1不等于0,则执行步骤18;
步骤18:计算ke·t1 -1,将结果记为t2
即有:t2=ke·t1 -1
步骤19:KGC产生一个位于[1,N-1]的随机数t21,计算[t21]P1,将计算结果记为P,计算t2·t21 -1,将计算结果记为t22,计算[t22]P,记为deB
即有:t21∈[1,N-1];
P=[t21]P1
t22=t2·t21 -1
deB=[t22]P。
3.无介质环境中的解密方法,其特征在于,包括:
步骤一:密钥生成中心KGC产生系统加密主密钥和加密私钥deB,并将加密私钥deB拆分为t22和P两部分,客户端掌握P,服务端掌握t22
步骤二:客户端计算[t22]C,将结果发送给服务端,服务端计算双线性对w′,并将w′发送给客户端;
步骤三:客户端按照加密明文的方法分类计算明文M′;
步骤四:验证消息认证码函数值与比特串C3是否相等,如果相等,输出明文M′,其中:
步骤一中将加密私钥deB拆分为t22和P两部分,包括以下步骤:
步骤15:密钥生成中心KGC产生一个位于[1,N-1]之间的随机数ke,将产生的随机数作为加密主私钥,并由KGC秘密保存;
即有:ke∈[1,N-1];
步骤16:计算群G1中的元素[ke]P1,将计算结果Ppub-e作为加密主公钥,并公开Ppub-e
即有:Ppub-e∈G1
Ppub-e=[ke]P1
步骤17:KGC在有限域FN上计算H1(IDB||hid,N)+ke,并将计算结果记为t1
即有:t1=H1(IDB||hid,N)+ke;
其中H1()表示由密码杂凑函数派生的密码函数,IDB为解封装用户B的标识,hid为加密私钥生成函数识别符;
那么,若t1等于0,则返回步骤15;若t1不等于0,则执行步骤18;
步骤18:计算ke·t1 -1,将结果记为t2
即有:t2=ke·t1 -1
步骤19:KGC产生一个位于[1,N-1]的随机数t21,计算[t21]P1,将计算结果记为P,计算t2·t21 -1,将计算结果记为t22,计算[t22]P,记为deB
即有:t21∈[1,N-1];
P=[t21]P1
t22=t2·t21 -1
deB=[t22]P;
步骤三中客户端按照加密明文的方法分类计算明文M′包括以下步骤:
(1)如果加密明文的方法是基于密钥派生函数的序列密码算法,则
1)计算整数mlen+K2_len,记为klen,然后计算KDF(C1||w′||IDB,klen),记为K′,并且令K1′为K′最左边的mlen比特,K2′为剩下的K2_len比特;
2)计算
Figure FDA0002393415110000061
(2)如果加密明文的方法是结合密钥派生函数的分组密码算法,则
1)计算整数K1_len+K2_len,记为klen,然后计算KDF(C1||w′||IDB,klen),记为K′,令K1′为K′最左边的K1_len比特,K2′为剩下的K2_len比特;
2)计算M′=Dec(K1′,C2);
即有:klen=mlen+K2_len;
klen=K1_len+K2_len;
K′=KDF(C1||w′||IDB,klen);
其中mlen为密文C中C2的比特长度,K2_len为函数MAC(K2,Z)中密钥K2的比特长度,MAC()为消息认证码函数,IDB为用户B的标识,Dec()为分组解密算法,
Figure FDA0002393415110000062
表示长度相等的两个比特串按比特的模2加运算。
4.无介质环境中的数字签名方法,其特征在于,包括:
步骤一:密钥生成中心KGC产生系统签名主密钥和用户签名密钥dsA,并将用户签名私钥dsA拆分为P和Q两部分,客户端掌握P,服务端掌握Q;
步骤二:客户端向服务端发送签名请求,服务端生成第一部分签名s1、第二部分签名s2、第三部分签名s3、第四部分签名u和第五部分签名v,并将s1、s2、s3、u和v发送给客户端;
步骤三:客户端生成消息摘要h,将h发送给服务端,服务端生成第六部分签名s4,并将s4发送给客户端;
步骤四:客户端根据s1、s2、s3、s4、u和v,生成完整签名并输出,其中:
步骤一包括以下步骤:
密钥生成中心KGC产生一个位于[1,N-1]之间的随机数ks,将产生的随机数作为签名主私钥,并由KGC秘密保存,其中,N是大于2|9|的素数;
计算群G2中的元素[ks]P2,将计算结果Ppub-s作为签名主公钥,并公开Ppub-s
密钥生成中心KGC在有限域FN上计算H1(IDA||hid,N)+ks,并将计算结果记为t1
若t1不等于0,计算ks·t1 -1mod N,将结果记为t2
密钥生成中心KGC计算[t2]P1,记为用户签名私钥dsA
密钥生成中心KGC产生一个位于计算[1,N-1]之间的随机数t21,计算[t21]P1,将计算结果记为P,计算[t22]P1,将计算结果记为Q,计算P+Q,记为dsA,并且客户端掌握P,服务端掌握Q;
步骤二中服务端生成第一部分签名s1、第二部分签名s2、第三部分签名s3、第四部分签名u和第五部分签名v包括以下步骤:
步骤34:服务端计算群GT中的元素e(P1,Ppub-s),记为g;
即有:g=e(P1,Ppub-s);
步骤35:客户端产生一个位于[1,N-1]之间的随机数,记为r1,并向服务端发送签名请求,同时发送[r1]P到服务端,记为R;
即有:r1∈[1,N-1];
R=[r1]P;
步骤36:服务端生成两个位于[1,N-1]之间的随机数,记为r2,r3
即有:r2,r3∈[1,N-1];
步骤37:服务端计算第一部分签名[r2]R,记为s1,第二部分签名[r3]R,记为s2,第三部分签名[r2]Q,记为s3,第四部分签名
Figure FDA0002393415110000081
记为u,第五部分签名
Figure FDA0002393415110000082
记为v,并将s1,s2,s3,u,v发送给客户端;
即有:s1=[r2]R;
s2=[r3]R;
s3=[r2]Q;
Figure FDA0002393415110000083
Figure FDA0002393415110000084
步骤四中客户端计算s1+[r1 -1]s2+[r1]s3+s4-[h mod N]P,记为S,则对消息M的签名即为(h,S),即有:S=s1+[r1 -1]s2+[r1]s3+s4-[h mod N]P。
5.无介质环境中的解封装方法,其特征在于,包括:
步骤一:密钥生成中心KGC产生系统加密主密钥和私钥deB,并将加密私钥deB拆分为P和Q两部分,客户端掌握P,服务端掌握Q;
步骤二:客户端将密文C结果发送给服务端,服务端计算双线性对w′;
步骤三:客户端根据双线性对w′计算封装的密钥K′,并输出密钥K′,其中:
步骤一中将加密私钥deB拆分为t22和P两部分,包括以下步骤:
步骤15:密钥生成中心KGC产生一个位于[1,N-1]之间的随机数ke,将产生的随机数作为加密主私钥,并由KGC秘密保存;
即有:ke∈[1,N-1];
步骤16:计算群G1中的元素[ke]P1,将计算结果Ppub-e作为加密主公钥,并公开Ppub-e
即有:Ppub-e∈G1
Ppub-e=[ke]P1
步骤17:KGC在有限域FN上计算H1(IDB||hid,N)+ke,并将计算结果记为t1
即有:t1=H1(IDB||hid,N)+ke;
其中H1()表示由密码杂凑函数派生的密码函数,IDB为解封装用户B的标识,hid为加密私钥生成函数识别符;
那么,若t1等于0,则返回步骤15;若t1不等于0,则执行步骤18;
步骤18:计算ke·t1 -1,将结果记为t2
即有:t2=ke·t1 -1
步骤19:KGC产生一个位于[1,N-1]的随机数t21,计算[t21]P1,将计算结果记为P,计算t2·t21 -1,将计算结果记为t22,计算[t22]P,记为deB
即有:t21∈[1,N-1];
P=[t21]P1
t22=t2·t21 -1
deB=[t22]P。
6.无介质环境中的解密方法,其特征在于,包括:
步骤一:密钥生成中心KGC产生系统加密主密钥和加密私钥deB,并将私钥deB拆分为P和Q两部分,客户端掌握P,服务端掌握Q;
步骤二:服务端计算双线性对e(C1,Q),记为l′,将l′发送给客户端,客户端计算e(C1,Q)+l′,记为w′;
步骤三:客户端按照加密明文的方法分类计算明文M′;
步骤四:验证消息认证码函数值与比特串C3是否相等,如果相等,输出明文M′,其中:
步骤一中将加密私钥deB拆分为t22和P两部分,包括以下步骤:
步骤15:密钥生成中心KGC产生一个位于[1,N-1]之间的随机数ke,将产生的随机数作为加密主私钥,并由KGC秘密保存;
即有:ke∈[1,N-1];
步骤16:计算群G1中的元素[ke]P1,将计算结果Ppub-e作为加密主公钥,并公开Ppub-e
即有:Ppub-e∈G1
Ppub-e=[ke]P1
步骤17:KGC在有限域FN上计算H1(IDB||hid,N)+ke,并将计算结果记为t1
即有:t1=H1(IDB||hid,N)+ke;
其中H1()表示由密码杂凑函数派生的密码函数,IDB为解封装用户B的标识,hid为加密私钥生成函数识别符;
那么,若t1等于0,则返回步骤15;若t1不等于0,则执行步骤18;
步骤18:计算ke·t1 -1,将结果记为t2
即有:t2=ke·t1 -1
步骤19:KGC产生一个位于[1,N-1]的随机数t21,计算[t21]P1,将计算结果记为P,计算t2·t21 -1,将计算结果记为t22,计算[t22]P,记为deB
即有:t21∈[1,N-1];
P=[t21]P1
t22=t2·t21 -1
deB=[t22]P;
步骤三包括:
(1)如果加密明文的方法是基于密钥派生函数的序列密码算法,则
1)计算整数mlen+K2_len,记为klen,然后计算KDF(C1||w′||IDB,klen),记为K′,并且令K1′为K′最左边的mlen比特,K2′为剩下的K2_len比特;
2)计算
Figure FDA0002393415110000121
(2)如果加密明文的方法是结合密钥派生函数的分组密码算法,则
1)计算整数K1_len+K2_len,记为klen,然后计算KDF(C1||w′||IDB,klen),记为K′,令K1′为K′最左边的K1_len比特,K2′为剩下的K2_len比特;
2)计算M′=Dec(K1′,C2);
即有:klen=mlen+K2_len;
klen=K1_len+K2_len;
K′=KDF(C1||w′||IDB,klen)。
CN201710712016.9A 2017-08-18 2017-08-18 无介质环境中的数字签名方法及解封装方法与解密方法 Active CN107395368B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710712016.9A CN107395368B (zh) 2017-08-18 2017-08-18 无介质环境中的数字签名方法及解封装方法与解密方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710712016.9A CN107395368B (zh) 2017-08-18 2017-08-18 无介质环境中的数字签名方法及解封装方法与解密方法

Publications (2)

Publication Number Publication Date
CN107395368A CN107395368A (zh) 2017-11-24
CN107395368B true CN107395368B (zh) 2020-09-11

Family

ID=60352915

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710712016.9A Active CN107395368B (zh) 2017-08-18 2017-08-18 无介质环境中的数字签名方法及解封装方法与解密方法

Country Status (1)

Country Link
CN (1) CN107395368B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108282331A (zh) * 2018-01-02 2018-07-13 金邦达有限公司 密码处理方法、装置及系统
CN108173639B (zh) * 2018-01-22 2020-10-27 中国科学院数据与通信保护研究教育中心 一种基于sm9签名算法的两方合作签名方法
CN110278073B (zh) * 2018-03-14 2021-11-02 西安西电捷通无线网络通信股份有限公司 一种群组数字签名、验证方法及其设备和装置
CN109039656B (zh) * 2018-09-19 2021-06-18 深圳奥联信息安全技术有限公司 Sm9联合数字签名方法、装置和计算机设备
CN109951292B (zh) * 2019-02-20 2020-08-04 武汉理工大学 精简的sm9数字签名分离交互生成方法及系统
CN110247759B (zh) * 2019-06-03 2020-07-10 武汉理工大学 一种sm9私钥生成和使用方法及系统
CN110505061B (zh) * 2019-09-06 2022-05-03 北京天诚安信科技股份有限公司 一种数字签名算法及系统
CN111130803B (zh) * 2019-12-26 2023-02-17 信安神州科技(广州)有限公司 数字签名的方法、系统及装置
CN112202568B (zh) * 2020-10-09 2022-05-20 天津大学 软硬件协同设计sm9数字签名通信方法和系统
CN114257374B (zh) * 2021-12-20 2023-08-15 山东大学 一种用于标识密码体制的可验证安全外包计算方法及系统
CN116132118B (zh) * 2022-12-27 2024-07-09 四川清沐科技有限公司 一种基于区块链技术的加密通讯方法和系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5588061A (en) * 1994-07-20 1996-12-24 Bell Atlantic Network Services, Inc. System and method for identity verification, forming joint signatures and session key agreement in an RSA public cryptosystem
CN102739401A (zh) * 2012-06-05 2012-10-17 北京工业大学 基于身份公钥密码体制的私钥安全管理方法
CN104158661A (zh) * 2014-07-23 2014-11-19 中国人民武装警察部队工程大学 一种基于模糊身份的一次性公钥签密构造方法
CN105024994A (zh) * 2015-05-29 2015-11-04 西北工业大学 无对运算的安全无证书混合签密方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5588061A (en) * 1994-07-20 1996-12-24 Bell Atlantic Network Services, Inc. System and method for identity verification, forming joint signatures and session key agreement in an RSA public cryptosystem
CN102739401A (zh) * 2012-06-05 2012-10-17 北京工业大学 基于身份公钥密码体制的私钥安全管理方法
CN104158661A (zh) * 2014-07-23 2014-11-19 中国人民武装警察部队工程大学 一种基于模糊身份的一次性公钥签密构造方法
CN105024994A (zh) * 2015-05-29 2015-11-04 西北工业大学 无对运算的安全无证书混合签密方法

Also Published As

Publication number Publication date
CN107395368A (zh) 2017-11-24

Similar Documents

Publication Publication Date Title
CN107395368B (zh) 无介质环境中的数字签名方法及解封装方法与解密方法
CN108667626B (zh) 安全的两方协作sm2签名方法
CN107196763B (zh) Sm2算法协同签名及解密方法、装置与系统
CN108418686B (zh) 一种多分布式的sm9解密方法与介质及密钥生成方法与介质
CN109088726B (zh) 基于sm2算法的通信双方协同签名及解密方法和系统
CN107634836B (zh) 一种sm2数字签名生成方法及系统
CN111314089B (zh) 一种基于sm2的两方协同签名方法及解密方法
CN111049650B (zh) 一种基于sm2算法的协同解密方法及装置、系统、介质
CN107248909B (zh) 一种基于sm2算法的无证书安全签名方法
CN111106936A (zh) 一种基于sm9的属性加密方法与系统
CN111130804B (zh) 一种基于sm2算法的协同签名方法及装置、系统、介质
CN107425971B (zh) 无证书的数据加/解密方法和装置、终端
CN111162906A (zh) 一种基于茫然传输算法的协同秘密分享方法及装置、系统、介质
US20150288527A1 (en) Verifiable Implicit Certificates
CN112564907B (zh) 密钥生成方法及装置、加密方法及装置、解密方法及装置
CN111147245A (zh) 一种区块链中使用国家密码进行加密的算法
CN113285959A (zh) 一种邮件加密方法、解密方法及加解密系统
CN112118113A (zh) 一种基于sm2算法的多方协同群签名方法及装置、系统、介质
CN110855425A (zh) 一种轻量级多方协同sm9密钥生成、密文解密方法与介质
CN113660087A (zh) 一种基于有限域的sm9标识密码算法硬件实现系统
CN111030801A (zh) 一种多方分布式的sm9密钥生成、密文解密方法与介质
CN114448641A (zh) 一种隐私加密方法、电子设备、存储介质以及芯片
CN112699394A (zh) 一种基于sm9算法的密钥应用方法
CN102946315A (zh) 一种采用分组方式构造mac码的方法及系统
TWI593267B (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
PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: Digital signature method, unpacking method and decryption method in media free environment

Effective date of registration: 20220426

Granted publication date: 20200911

Pledgee: China Construction Bank Corporation Beijing Suzhou bridge sub branch

Pledgor: BEIJING WUZITIANSHU TECHNOLOGY CO.,LTD.

Registration number: Y2022110000102