CN112737783B - 一种基于sm2椭圆曲线的解密方法及设备 - Google Patents

一种基于sm2椭圆曲线的解密方法及设备 Download PDF

Info

Publication number
CN112737783B
CN112737783B CN201911033315.5A CN201911033315A CN112737783B CN 112737783 B CN112737783 B CN 112737783B CN 201911033315 A CN201911033315 A CN 201911033315A CN 112737783 B CN112737783 B CN 112737783B
Authority
CN
China
Prior art keywords
private key
message
elliptic curve
ciphertext
public key
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
CN201911033315.5A
Other languages
English (en)
Other versions
CN112737783A (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.)
Aisino Corp
Original Assignee
Aisino Corp
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 Aisino Corp filed Critical Aisino Corp
Priority to CN201911033315.5A priority Critical patent/CN112737783B/zh
Publication of CN112737783A publication Critical patent/CN112737783A/zh
Application granted granted Critical
Publication of CN112737783B publication Critical patent/CN112737783B/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/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
    • 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/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage

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)

Abstract

本发明公开了一种基于SM2椭圆曲线的解密方法及设备,用于把私钥分解成两个私钥分量,分别存储于两个不同的地方以保护私钥的安全,利用两个私钥分量实现对加密消息的解密。该方法包括:根据随机选取的SM2椭圆曲线上的点坐标和所述第一对象的第一私钥对密文的第一部分进行盲化得到盲化消息;将所述密文的第一部分和盲化消息发送给第二对象,以使所述第二对象利用所述第二对象的第二私钥对所述盲化消息进行解封装得到解封装消息;接收所述第二对象得到的解封装消息,并基于SM2椭圆曲线公钥密码算法,利用所述第一对象的第一私钥对所述解封装消息进行解密。

Description

一种基于SM2椭圆曲线的解密方法及设备
技术领域
本发明涉及网络安全技术领域,尤其涉及一种基于SM2椭圆曲线的解密方法及设备。
背景技术
随着智能终端技术、移动互联技术和云计算技术的发展,越来越多的互联网络应用开始迁往智能移动终端,如:用于手机终端的支付宝、微信、网银等,使得用户在移动过程中,随时随地的都可以使用移动终端进行支付、购物、发送网络消息等,但随之也带来很多的安全风险问题。
目前的智能终端中并没有集成密码运算安全芯片,因此要在智能终端中使用密码算法,用户的密钥,如加密密钥、签名密钥等只能存放在智能终端的存储卡上,无形中加大了用户密钥被拷贝和非法获取的安全风险,给用户的安全应用带来很大的安全隐患。
发明内容
本发明提供了一种基于SM2椭圆曲线的解密方法及设备,用于把私钥分解成两个私钥分量,分别存储于两个不同的地方以保护私钥的安全,利用两个私钥分量实现对加密消息的解密。
第一方面,本发明提供一种基于SM2椭圆曲线的解密方法,应用于第一对象,该方法包括:
根据随机选取的SM2椭圆曲线上的点坐标和所述第一对象的第一私钥对密文的第一部分进行盲化得到盲化消息;
将所述密文的第一部分和盲化消息发送给第二对象,以使所述第二对象利用所述第二对象的第二私钥对所述盲化消息进行解封装得到解封装消息;
接收所述第二对象得到的解封装消息,并基于SM2椭圆曲线公钥密码算法,利用所述第一对象的第一私钥对所述解封装消息进行解密。
作为一种可能的实施方式,通过如下方式生成所述第一对象的第一私钥:
基于SM2椭圆曲线公钥密码算法,利用随机数生成第一私钥;
通过如下方式生成所述密文的加密密钥:
根据所述第一私钥和所述SM2椭圆曲线的基点确定第一公钥;
根据所述第一公钥和接收的所述第二对象的第二公钥生成加密密钥。
作为一种可能的实施方式,根据所述第一私钥和所述SM2椭圆曲线的基点确定第一公钥之后,还包括:
将所述第一公钥发送给所述第二对象,以使所述第二对象根据所述第一公钥以及所述第二对象的第二公钥生成加密密钥。
作为一种可能的实施方式,通过如下公式基于SM2椭圆曲线公钥密码算法,利用所述第一对象生成的第一私钥对接收的所述解封装消息进行解密:
(x2,y2)=CS1-R;
Figure BDA0002250758390000021
v=Hash(x2||M||y2);
其中,所述密文为C=C1||C2||C3,C1为所述密文的第一部分,C2为所述密文的第二部分,C3为所述密文的第三部分,(x2,y2)为所述SM2椭圆曲线上的点坐标,CS1为所述解封装消息,R为所述随机选取的SM2椭圆曲线上的一个点坐标,klen为所述密文的比特长度;
若v=C3时,确定解密的消息为M。
第二方面,本发明提供一种基于SM2椭圆曲线的解密方法,应用于第二对象,该方法包括:
接收第一对象发送的密文的第一部分和盲化消息,所述盲化消息是所述第一对象根据随机选取的SM2椭圆曲线上的点坐标和所述第一对象生成的第一私钥对密文的第一部分进行盲化得到的;
基于SM2椭圆曲线公钥密码算法,根据所述密文的第一部分和所述第二对象的第二私钥对所述盲化消息进行解封装得到解封装消息;
将所述解封装消息发送给所述第一对象,以使所述第一对象利用所述第一对象的第一私钥对接收的所述解封装消息进行解密。
作为一种可能的实施方式,通过如下方式生成所述第二对象的第二私钥:
基于SM2椭圆曲线公钥密码算法,利用随机数生成第二私钥;
通过如下方式生成所述密文的加密密钥:
根据所述第二私钥和所述SM2椭圆曲线的基点确定第二公钥;
根据接收的所述第一对象的第一公钥和所述第二公钥生成加密密钥。
作为一种可能的实施方式,根据所述第二私钥和所述SM2椭圆曲线的基点确定第二公钥之后,还包括:
将所述第二公钥发送给所述第一对象,以使所述第一对象根据所述第一公钥以及所述第二对象的第二公钥生成加密密钥。
作为一种可能的实施方式,通过如下公式基于SM2椭圆曲线公钥密码算法,根据所述密文的第一部分和所述第二对象的第二私钥对所述盲化消息进行解封装得到解封装消息:
CS1=[eS]C1+CA1
其中,所述密文为C=C1||C2||C3,C1为所述密文的第一部分,C2为所述密文的第二部分,C3为所述密文的第三部分,CS1为所述解封装消息,CA1为所述盲化消息,eS为所述第二私钥。
第三方面,本发明提供一种基于SM2椭圆曲线的解密方法,应用于设备,该方法包括:
根据随机选取的SM2椭圆曲线上的点坐标和第一存储介质存储的第一私钥对密文的第一部分进行盲化得到盲化消息;
根据所述密文的第一部分和第二存储介质存储的第二私钥对所述盲化消息进行解封装得到解封装消息;
基于SM2椭圆曲线公钥密码算法,利用所述第一私钥对所述解封装消息进行解密。
作为一种可能的实施方式,通过如下方式生成所述第一私钥:
基于SM2椭圆曲线公钥密码算法,利用随机数生成第一私钥;
通过如下方式生成所述第二私钥:
基于SM2椭圆曲线公钥密码算法,利用随机数生成第二私钥;
通过如下方式生成所述密文的加密密钥:
根据所述第一私钥和所述SM2椭圆曲线的基点确定第一公钥,根据所述第二私钥和所述SM2椭圆曲线的基点确定第二公钥,根据所述第一公钥和所述第二公钥生成加密密钥。
第四方面,本发明提供第一种基于SM2椭圆曲线的解密设备,该设备包括:处理器以及存储器,其中,所述存储器存储有程序代码,当所述程序代码被所述处理器执行时,使得所述处理器执行如下方法的步骤:
根据随机选取的SM2椭圆曲线上的点坐标和所述第一对象的第一私钥对密文的第一部分进行盲化得到盲化消息;
将所述密文的第一部分和盲化消息发送给第二对象,以使所述第二对象利用所述第二对象的第二私钥对所述盲化消息进行解封装得到解封装消息;
接收所述第二对象得到的解封装消息,并基于SM2椭圆曲线公钥密码算法,利用所述第一对象的第一私钥对所述解封装消息进行解密。
作为一种可能的实施方式,所述处理器具体用于:
基于SM2椭圆曲线公钥密码算法,利用随机数生成第一私钥;
根据所述第一私钥和所述SM2椭圆曲线的基点确定第一公钥;
根据所述第一公钥和接收的所述第二对象的第二公钥生成加密密钥。
作为一种可能的实施方式,所述处理器具体还用于:
将所述第一公钥发送给所述第二对象,以使所述第二对象根据所述第一公钥以及所述第二对象的第二公钥生成加密密钥。
作为一种可能的实施方式,所述处理器具体用于:
(x2,y2)=CS1-R;
Figure BDA0002250758390000051
v=Hash(x2||M||y2);
其中,所述密文为C=C1||C2||C3,C1为所述密文的第一部分,C2为所述密文的第二部分,C3为所述密文的第三部分,(x2,y2)为所述SM2椭圆曲线上的点坐标,CS1为所述解封装消息,R为所述随机选取的SM2椭圆曲线上的一个点坐标,klen为所述密文的比特长度;
若v=C3时,确定解密的消息为M。
第五方面,本发明提供第二种基于SM2椭圆曲线的解密设备,该设备包括:处理器以及存储器,其中,所述存储器存储有程序代码,当所述程序代码被所述处理器执行时,使得所述处理器执行如下方法的步骤:
接收第一对象发送的密文的第一部分和盲化消息,所述盲化消息是所述第一对象根据随机选取的SM2椭圆曲线上的点坐标和所述第一对象生成的第一私钥对密文的第一部分进行盲化得到的;
基于SM2椭圆曲线公钥密码算法,根据所述密文的第一部分和所述第二对象的第二私钥对所述盲化消息进行解封装得到解封装消息;
将所述解封装消息发送给所述第一对象,以使所述第一对象利用所述第一对象的第一私钥对接收的所述解封装消息进行解密。
作为一种可能的实施方式,所述处理器具体用于:
基于SM2椭圆曲线公钥密码算法,利用随机数生成第二私钥;
根据所述第二私钥和所述SM2椭圆曲线的基点确定第二公钥;
根据接收的所述第一对象的第一公钥和所述第二公钥生成加密密钥。
作为一种可能的实施方式,所述处理器具体还用于:
将所述第二公钥发送给所述第一对象,以使所述第一对象根据所述第一公钥以及所述第二对象的第二公钥生成加密密钥。
作为一种可能的实施方式,所述处理器具体用于:
CS1=[eS]C1+CA1
其中,所述密文为C=C1||C2||C3,C1为所述密文的第一部分,C2为所述密文的第二部分,C3为所述密文的第三部分,CS1为所述解封装消息,CA1为所述盲化消息,eS为所述第二私钥。
第六方面,本发明提供第三种基于SM2椭圆曲线的解密设备,该设备包括:处理器以及存储器,其中,所述存储器存储有程序代码,当所述程序代码被所述处理器执行时,使得所述处理器执行如下方法的步骤:
根据随机选取的SM2椭圆曲线上的点坐标和第一存储介质存储的第一私钥对密文的第一部分进行盲化得到盲化消息;
根据所述密文的第一部分和第二存储介质存储的第二私钥对所述盲化消息进行解封装得到解封装消息;
基于SM2椭圆曲线公钥密码算法,利用所述第一私钥对所述解封装消息进行解密。
作为一种可能的实施方式,所述处理器具体用于:
基于SM2椭圆曲线公钥密码算法,利用随机数生成第一私钥;
基于SM2椭圆曲线公钥密码算法,利用随机数生成第二私钥;
根据所述第一私钥和所述SM2椭圆曲线的基点确定第一公钥,根据所述第二私钥和所述SM2椭圆曲线的基点确定第二公钥,根据所述第一公钥和所述第二公钥生成加密密钥。
第七方面,本发明提供第一种基于SM2椭圆曲线的解密装置,该装置包括:盲化模块、发送模块、解密模块,其中:
所述盲化模块,用于根据随机选取的SM2椭圆曲线上的点坐标和所述第一对象的第一私钥对密文的第一部分进行盲化得到盲化消息;
所述发送模块,用于将所述密文的第一部分和盲化消息发送给第二对象,以使所述第二对象利用所述第二对象的第二私钥对所述盲化消息进行解封装得到解封装消息;
所述解密模块,用于接收所述第二对象得到的解封装消息,并基于SM2椭圆曲线公钥密码算法,利用所述第一对象的第一私钥对所述解封装消息进行解密。
作为一种可选的实施方式,所述装置具体用于:
通过如下方式生成所述第一对象的第一私钥:
基于SM2椭圆曲线公钥密码算法,利用随机数生成第一私钥;
通过如下方式生成所述密文的加密密钥:
根据所述第一私钥和所述SM2椭圆曲线的基点确定第一公钥;
根据所述第一公钥和接收的所述第二对象的第二公钥生成加密密钥。
作为一种可选的实施方式,所述装置还包括发送模块用于:
将所述第一公钥发送给所述第二对象,以使所述第二对象根据所述第一公钥以及所述第二对象的第二公钥生成加密密钥。
作为一种可选的实施方式,所述解密模块具体用于:
通过如下公式基于SM2椭圆曲线公钥密码算法,利用所述第一对象生成的第一私钥对接收的所述解封装消息进行解密:
(x2,y2)=CS1-R;
Figure BDA0002250758390000071
v=Hash(x2||M||y2);
其中,所述密文为C=C1||C2||C3,C1为所述密文的第一部分,C2为所述密文的第二部分,C3为所述密文的第三部分,(x2,y2)为所述SM2椭圆曲线上的点坐标,CS1为所述解封装消息,R为所述随机选取的SM2椭圆曲线上的一个点坐标,klen为所述密文的比特长度;
若v=C3时,确定解密的消息为M。
第八方面,本发明提供第一种基于SM2椭圆曲线的解密装置,该装置包括:接收模块、解封装模块、发送模块,其中:
所述接收模块,用于接收第一对象发送的密文的第一部分和盲化消息,所述盲化消息是所述第一对象根据随机选取的SM2椭圆曲线上的点坐标和所述第一对象生成的第一私钥对密文的第一部分进行盲化得到的;
所述解封装模块,用于基于SM2椭圆曲线公钥密码算法,根据所述密文的第一部分和所述第二对象的第二私钥对所述盲化消息进行解封装得到解封装消息;
所述发送模块,用于将所述解封装消息发送给所述第一对象,以使所述第一对象利用所述第一对象的第一私钥对接收的所述解封装消息进行解密。
作为一种可选的实施方式,所述装置具体用于:
通过如下方式生成所述第二对象的第二私钥:
基于SM2椭圆曲线公钥密码算法,利用随机数生成第二私钥;
通过如下方式生成所述密文的加密密钥:
根据所述第二私钥和所述SM2椭圆曲线的基点确定第二公钥;
根据接收的所述第一对象的第一公钥和所述第二公钥生成加密密钥。
作为一种可选的实施方式,所述装置还包括发送模块用于:
将所述第二公钥发送给所述第一对象,以使所述第一对象根据所述第一公钥以及所述第二对象的第二公钥生成加密密钥。
作为一种可选的实施方式,所述解封装模块具体用于:
通过如下公式基于SM2椭圆曲线公钥密码算法,根据所述密文的第一部分和所述第二对象的第二私钥对所述盲化消息进行解封装得到解封装消息:
CS1=[eS]C1+CA1
其中,所述密文为C=C1||C2||C3,C1为所述密文的第一部分,C2为所述密文的第二部分,C3为所述密文的第三部分,CS1为所述解封装消息,CA1为所述盲化消息,eS为所述第二私钥。
第九方面,本发明提供第一种基于SM2椭圆曲线的解密装置,该装置包括:盲化模块、解封装模块、解密模块,其中:
所述盲化模块,用于根据随机选取的SM2椭圆曲线上的点坐标和第一存储介质存储的第一私钥对密文的第一部分进行盲化得到盲化消息;
所述解封装模块,用于根据所述密文的第一部分和第二存储介质存储的第二私钥对所述盲化消息进行解封装得到解封装消息;
所述解密模块,用于基于SM2椭圆曲线公钥密码算法,利用所述第一私钥对所述解封装消息进行解密。
作为一种可选的实施方式,所述装置具体用于:
通过如下方式生成所述第一私钥:
基于SM2椭圆曲线公钥密码算法,利用随机数生成第一私钥;
通过如下方式生成所述第二私钥:
基于SM2椭圆曲线公钥密码算法,利用随机数生成第二私钥;
通过如下方式生成所述密文的加密密钥:
根据所述第一私钥和所述SM2椭圆曲线的基点确定第一公钥,根据所述第二私钥和所述SM2椭圆曲线的基点确定第二公钥,根据所述第一公钥和所述第二公钥生成加密密钥。
第十方面,本发明提供一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述第一方面所述方法的步骤。
第十一方面,本发明提供一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述第二方面所述方法的步骤。
第十二方面,本发明提供一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述第三方面所述方法的步骤。
本发明提供的一种基于SM2椭圆曲线的解密方法及设备,具有以下有益效果:
用于把私钥分解成两个私钥分量,分别存储于两个不同的地方以保护私钥的安全,在保持原有加密算法不变的情况下,提供双方解密算法,利用两个私钥分量实现对加密消息的解密,且保障了解密过程中只有一方能够得到最终的解密结果。
附图说明
图1为本发明实施例提供的一种基于SM2椭圆曲线的解密***示意图;
图2为本发明实施例提供的一种基于SM2椭圆曲线的密钥生成方法流程图;
图3为本发明实施例提供的一种基于SM2椭圆曲线的解密方法流程图;
图4为本发明实施例提供的一种基于SM2椭圆曲线的密钥生成方法具体流程图;
图5为本发明实施例提供的一种基于SM2椭圆曲线的具体解密方法流程图;
图6为本发明实施例提供的应用于设备的一种基于SM2椭圆曲线的解密方法流程图;
图7为本发明实施例提供的应用于第一对象的一种基于SM2椭圆曲线的解密方法流程图;
图8为本发明实施例提供的应用于第二对象的一种基于SM2椭圆曲线的解密方法流程图;
图9为本发明实施例提供的第一种基于SM2椭圆曲线的解密设备示意图;
图10为本发明实施例提供的第二种基于SM2椭圆曲线的解密设备示意图;
图11为本发明实施例提供的第三种基于SM2椭圆曲线的解密设备示意图;
图12为本发明实施例提供的第一种基于SM2椭圆曲线的解密装置示意图;
图13为本发明实施例提供的第二种基于SM2椭圆曲线的解密装置示意图;
图14为本发明实施例提供的第三种基于SM2椭圆曲线的解密装置示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
随着智能终端技术、移动互联技术和云计算技术的发展,越来越多的互联网络应用开始迁往智能移动终端,如:用于手机终端的支付宝、微信、网银等,使得用户在移动过程中,随时随地的都可以使用移动终端进行支付、购物、发送网络消息等。但随之也带来很多的安全风险问题。
在传统的互联网络中,这些涉及敏感操作的应用,如支付、订单、转帐汇款等,通常需要加密、签名等密码运算来保障信息传输和处理的过程安全。而密码运算所涉及到的非临时性密钥通常都保存在不可导出的密码运算设备中,如:USBKEY、IC卡、密码卡等,使得密钥在产生、加解密计算等过程中都不会出现在用户所用的电脑内存中,充分保障了应用使用密码操作的安全性。
而当前的移动智能终端通常是为满足用户便携性而设计的,如果用户在使用移动终端时,为了安全而***类似USBKEY、IC卡等这样的密码外设到移动智能终端,就失去了移动智能终端便携性的意义。同时,目前的智能终端中并没有集成密码运算安全芯片,因此要在智能终端中使用密码算法,用户的密钥,如:加密密钥、签名密钥等只能存放在智能终端的存储卡上,无形中加大了用户密钥被拷贝和非法获取的安全风险,给用户的安全应用带来很大的安全隐患。
为了解决上述技术问题,本发明实施例提供了一种基于SM2椭圆曲线的双方解密计算方法,通过安全的密钥分割计算方法把私钥分解成两个私钥分量,分别存储于两个不同的地方以保护私钥的安全。同时在保持原有加密计算方法不变的情况下,提供双方解密计算方法,实现对加密消息的解密,且保障只有一方能得到最终的解密结果。
如图1所示,本发明实施例提供了一种基于SM2椭圆曲线的解密***,该***包括:第一对象、第二对象,其中:
所述第一对象用于:
根据随机选取的SM2椭圆曲线上的点坐标和所述第一对象的第一私钥对密文的第一部分进行盲化得到盲化消息;
将所述密文的第一部分和盲化消息发送给第二对象,以使所述第二对象利用所述第二对象的第二私钥对所述盲化消息进行解封装得到解封装消息;
接收所述第二对象得到的解封装消息,并基于SM2椭圆曲线公钥密码算法,利用所述第一对象的第一私钥对所述解封装消息进行解密。
所述第二对象用于:
接收第一对象发送的密文的第一部分和盲化消息,所述盲化消息是所述第一对象根据随机选取的SM2椭圆曲线上的点坐标和所述第一对象生成的第一私钥对密文的第一部分进行盲化得到的;
基于SM2椭圆曲线公钥密码算法,根据所述密文的第一部分和所述第二对象的第二私钥对所述盲化消息进行解封装得到解封装消息;
将所述解封装消息发送给所述第一对象,以使所述第一对象利用所述第一对象的第一私钥对接收的所述解封装消息进行解密。
需要说明的是,本实施例中的第一对象可以是客户端,也可以是服务端,本实施例中的第二对象可以是客户端,也可以是服务端,本实施不作过多限定;本实施例中的第一对象可以为客户端,第二对象可以为服务端,或本实施例中的第一对象可以为服务端,第二对象可以为客户端,本实施例不作过多限定。
本实施例提供的方法,需要第一对象和第二对象双方的私钥来共同完成解密过程,由于第一对象和第二对象的私钥分别存储在不同的地方,因此能够加强私钥的安全性,并且在解密过程中,第二对象只需要利用第二对象的第二私钥对盲化消息进行解封装,而解密结果最终只有第一对象可以获取,保障了解密过程中只有一方能够得到最终的解密结果,例如所述第一对象为客户端,所述第二对象为服务端时,只有客户端能够得到最终的解密结果,而服务端只提供解密的第二密钥,参与解密过程但并不能获取最终的解密结果,保障了解密结果的私密性。
需要说明的是,本实施例中的SM2椭圆曲线中的参数采用国家密码管理局规定的SM2曲线参数及符号定义,具体可参见《SM2椭圆曲线公钥密码算法》(GM/T 0003-2012)。
部分符号定义如下:
G:椭圆曲线的一个基点,其阶为素数。
[k]P:椭圆曲线上点P的k倍点,即,[k]P=P+P+…+P,k是正整数。
[x,y]:大于或等于x且小于或等于y的整数的集合。
x||y:x与y的拼接,其中x、y可以是比特串或字节串。
Hash():密码杂凑函数。
KDF():密钥派生函数。
⊕:长度相等的两个比特串按比特的异或运算。
实施中,在进行解密计算之前,需要第一对象和第二对象生成解密的私钥,并利用私钥生成加密密钥对消息进行加密得到密文,利用第一对象和第二对象生成的私钥对密文进行解密;
如图2所示,所述第一对象的第一私钥的生成和密钥的生成过程,及所述二对象的第二私钥的生成和密钥的生成过程如下:
首先,设椭圆曲线为E(Fq),基点为G=(xG,yG),阶为n,解密计算的参与方为第一对象A和第二对象S,用[k]P表示椭圆曲线上的点乘运算,其中k为整数,P为椭圆曲线上的点。
步骤200、第一对象A生成第一私钥和第一公钥;
实施中,基于SM2椭圆曲线公钥密码算法,利用随机数生成第一私钥;根据所述第一私钥和所述SM2椭圆曲线的基点确定第一公钥;
计算原理如下:
所述第一对象A选取随机数eA∈[1,n-1]作为A的第一私钥,根据第一私钥和SM2椭圆曲线的基点确定第一公钥WA=[eA]G,并发送第一公钥WA给第二对象S;
步骤201、第一对象A将所述第一公钥发送给第二对象S;
步骤202、第二对象S生成第二私钥和第二公钥;
实施中,基于SM2椭圆曲线公钥密码算法,利用随机数生成第二私钥;根据所述第二私钥和所述SM2椭圆曲线的基点确定第二公钥;
计算原理如下:
所述第二对象S选取随机数eS∈[1,n-1]作为S的第二私钥,根据第二私钥和SM2椭圆曲线的基点确定第二公钥WS=[eS]G,并发送第二公钥WS给第一对象A;
步骤203、第二对象S将所述第二公钥发送给第一对象A;
步骤204、所述第一对象A接收所述第二对象S的第二公钥,根据所述第一公钥和所述第二公钥生成加密密钥;
具体的,通过如下公式第一对象A计算其和第二对象S共同拥有的加密密钥PA
PA=WA+WS=[eA+eS]G;
步骤205、所述第二对象S接收所述第一对象A的第一公钥,根据所述第一公钥和所述第二公钥生成加密密钥;
具体的,通过如下公式第二对象S计算其和第一对象A共同拥有的加密密钥PA
PA=WS+WA=[eA+eS]G;
在此过程中,第一对象A和第二对象S都无法得到对方解密的私钥的任何信息,即第一对象A无法得到第二对象S的第二私钥,第二对象S也无法得到第一对象A的第一私钥,第一对象A和第二对象S都无法得到A和S共同拥有的私钥dA=eA+eS
按照《SM2椭圆曲线公钥密码算法》(GM/T 0003-2012)中的公钥加密算法,消息M经过第一对象A和第二对象S共同拥有的加密密钥(也称公钥)PA加密后的密文为C=C1||C2||C3
其中C1为SM2椭圆曲线上的点C1=[k]G=(x1,y1),k为加密时选择的随机数;C2为校验码,C2=Hash(x2||M||y2),(x2,y2)=[k]PA,PA为A和S共同拥有的公钥;C3为密文,
Figure BDA0002250758390000151
t=KDF(x2||y2,klen),klen为M的比特长度;
本实施例中的密文为C=C1||C2||C3,C1为所述密文的第一部分,C2为所述密文的第二部分,C3为所述密文的第三部分。
如图3所示,所述第一对象和第二对象对密文进行解密的具体流程如下:
步骤300、第一对象A根据随机选取的SM2椭圆曲线上的点坐标和所述第一对象的第一私钥对密文的第一部分进行盲化得到盲化消息;
计算原理如下:
第一对象A在SM2椭圆曲线上随机选取一个点R∈E[a,b],并用R对密文C的部C1进行盲化,通过如下公式得到盲化消息CA1
CA1=[eA]C1+R;
步骤301、将所述密文的第一部分和盲化消息发送给第二对象;
第一对象A把盲化消息CA1和C1发送给第二对象S;
步骤302、第二对象S接收所述密文的第一部分和盲化消息,基于SM2椭圆曲线公钥密码算法,根据所述密文的第一部分和所述第二对象的第二私钥对所述盲化消息进行解封装得到解封装消息;
计算原理如下:
第二对象收到盲化消息CA1和C1,利用第二私钥eS对盲化消息CA1进行解封装,通过如下公式得到解封装消息CS1
CS1=[eS]C1+CA1
步骤303、第二对象S将所述解封装消息发送给所述第一对象A;
步骤304、第一对象A接收所述解封装消息,并基于SM2椭圆曲线公钥密码算法,利用所述第一对象的第一私钥对所述解封装消息进行解密;
计算原理如下:
(x2,y2)=CS1-R;
Figure BDA0002250758390000161
v=Hash(x2||M||y2);
其中,(x2,y2)为所述SM2椭圆曲线上的点坐标,CS1为所述解封装消息,R为所述随机选取的SM2椭圆曲线上的一个点坐标,klen为所述密文的比特长度;若v=C3时,确定解密的消息为M,若v≠C3时,确定解密失败。
本实施例中双方(包括第一对象A和第二对象S)的解密计算过程在未合成A和S共同拥有的私钥dA=eA+eS的情况下,完成了对密文的解密,且A和S各自的解密私钥都未暴露,保障了整体密钥的安全性,同时解密的最终结果只能由A方得到,保障了消息的私密性。
下面以第一对象A为客户端,第二对象S为服务端对本实施例中的解密过程进行详细说明:
其中,第一对象A生成的第一私钥eA存储于客户端本地非易失性存储中,第二对象S生成的第二私钥eS存储于服务端数据库中,A向S发起解密请求,A和S进行协同的解密计算,最终由A获得明文(即解密的消息)M。
如图4所示,第一对象A和第二对象S生成各自的私钥和共同拥有的解密密钥(即公钥)的过程如下:
步骤400:A随机选取eA∈[1,n-1]作为A方的解密第一私钥,并计算WA=[eA]G,把WA传给S;
步骤401:S随机选取eS∈[1,n-1]作为S方的解密第二私钥,并计算WS=[eS]G,把WS传给A;
步骤402:A和S计算双方共同拥有的公钥PA=WA+WS
如图5所示,第一对象A和第二对象S协同解密的过程如下:
步骤500、A从密文C=C1||C2||C3中取得C1
步骤501、A随机选择SM2椭圆曲线上的点R∈E[a,b];
步骤502、A使用自己的解密私钥分量eA,密文C1和随机点R做如下计算:
CA1=[eA]C1+R;
步骤503、A发送C1和CA1给S;
步骤504、S收到C1和CA1后,使用自己的解密第二私钥eS做如下计算:
CS1=[eS]C1+CA1
步骤505、S把CS1发送给A。
步骤506、A收到CS1后做如下计算:
(x2,y2)=CS1-R;
Figure BDA0002250758390000171
步骤507、A计算v=Hash(x2||M||y2);
若v=C3时,确定解密的消息为M,若v≠C3时,确定解密失败。
本实施例提供的一种基于SM2椭圆曲线的解密***,能够通过安全计算的方式为双方产生各自的解密私钥分量(即第一私钥和第二私钥),同时计算出双方共同拥有的公钥(即加密密钥)。在双方解密计算过程中,不会合成双方共同拥有的私钥,也不会向对方或任何第三方暴露自己的解密私钥分量,在保障整体密钥安全的前提下,实现了对密文的解密计算,且最终的明文只能由一方取得,保障了信息的私密性,该计算方法不影响原有的加密***,对消息的加密仍可以采用原有的计算方法进行计算。
本实施例还提供一种基于SM2椭圆曲线的解密方法,应用于设备,本实施中所述设备可以是客户端如PC机或终端,也可以是服务器,本实施例不作过多限定。
如图6所示,该方法的具体实施流程如下:
步骤600、根据随机选取的SM2椭圆曲线上的点坐标和第一存储介质存储的第一私钥对密文的第一部分进行盲化得到盲化消息;
步骤601、根据所述密文的第一部分和第二存储介质存储的第二私钥对所述盲化消息进行解封装得到解封装消息;
步骤602、基于SM2椭圆曲线公钥密码算法,利用所述第一私钥对所述解封装消息进行解密。
本实施例中的所述第一存储介质和所述第二存储介质为所述设备的两个不同的存储介质,将所述第一私钥和所述第二私钥分别存储于两个不同的存储介质中,提高了私钥的安全性。
实施中,通过如下方式生成所述第一私钥:
基于SM2椭圆曲线公钥密码算法,利用随机数生成第一私钥;
通过如下方式生成所述第二私钥:
基于SM2椭圆曲线公钥密码算法,利用随机数生成第二私钥;
通过如下方式生成所述密文的加密密钥:
根据所述第一私钥和所述SM2椭圆曲线的基点确定第一公钥,根据所述第二私钥和所述SM2椭圆曲线的基点确定第二公钥,根据所述第一公钥和所述第二公钥生成加密密钥。
其中,上述生成第一私钥和第二私钥的方法可参见上述实施例,生成加密密钥的方法可参见上述实施例,利用第一私钥和第二私钥进行解密的过程可参见上述实施例,此处不再赘述。
本发明实施例提供的一种基于SM2椭圆曲线的解密方法,实现了对用户私钥的安全分割计算,使得用户密钥可以分开以分量的形式存储在两个不同的地方(即分为第一私钥和第二私钥),以提高密钥整体的安全性,在不改变原有的加密计算方法和***的情况下,本发明实施例的解密计算无需将两个私钥分量进行合成,而是双方以安全的计算方式对密文进行解密,且解密后的消息只能由一方得到,保障了消息的私密性。本发明实施例提供的方法可应用于移动智能终端需要解密私钥安全的应用场景,以及任何需要使用分布式存储而达到解密私钥安全的应用场景中。
如图7所示,本发明实施例还提供一种基于SM2椭圆曲线的解密方法,应用于第一对象,该方法的具体实施流程如下:
步骤700、根据随机选取的SM2椭圆曲线上的点坐标和所述第一对象的第一私钥对密文的第一部分进行盲化得到盲化消息;
步骤701、将所述密文的第一部分和盲化消息发送给第二对象,以使所述第二对象利用所述第二对象的第二私钥对所述盲化消息进行解封装得到解封装消息;
步骤702、接收所述第二对象得到的解封装消息,并基于SM2椭圆曲线公钥密码算法,利用所述第一对象的第一私钥对所述解封装消息进行解密。
作为一种可能的实施方式,通过如下方式生成所述第一对象的第一私钥:
基于SM2椭圆曲线公钥密码算法,利用随机数生成第一私钥;
通过如下方式生成所述密文的加密密钥:
根据所述第一私钥和所述SM2椭圆曲线的基点确定第一公钥;
根据所述第一公钥和接收的所述第二对象的第二公钥生成加密密钥。
作为一种可能的实施方式,根据所述第一私钥和所述SM2椭圆曲线的基点确定第一公钥之后,还包括:
将所述第一公钥发送给所述第二对象,以使所述第二对象根据所述第一公钥以及所述第二对象的第二公钥生成加密密钥。
作为一种可能的实施方式,通过如下公式基于SM2椭圆曲线公钥密码算法,利用所述第一对象生成的第一私钥对接收的所述解封装消息进行解密:
(x2,y2)=CS1-R;
Figure BDA0002250758390000191
v=Hash(x2||M||y2);
其中,所述密文为C=C1||C2||C3,C1为所述密文的第一部分,C2为所述密文的第二部分,C3为所述密文的第三部分,(x2,y2)为所述SM2椭圆曲线上的点坐标,CS1为所述解封装消息,R为所述随机选取的SM2椭圆曲线上的一个点坐标,klen为所述密文的比特长度;
若v=C3时,确定解密的消息为M。
如图8所示,本发明实施例还提供一种基于SM2椭圆曲线的解密方法,应用于第二对象,该方法的具体实施流程如下:
步骤800、接收第一对象发送的密文的第一部分和盲化消息,所述盲化消息是所述第一对象根据随机选取的SM2椭圆曲线上的点坐标和所述第一对象生成的第一私钥对密文的第一部分进行盲化得到的;
步骤801、基于SM2椭圆曲线公钥密码算法,根据所述密文的第一部分和所述第二对象的第二私钥对所述盲化消息进行解封装得到解封装消息;
步骤802、将所述解封装消息发送给所述第一对象,以使所述第一对象利用所述第一对象的第一私钥对接收的所述解封装消息进行解密。
作为一种可能的实施方式,通过如下方式生成所述第二对象的第二私钥:
基于SM2椭圆曲线公钥密码算法,利用随机数生成第二私钥;
通过如下方式生成所述密文的加密密钥:
根据所述第二私钥和所述SM2椭圆曲线的基点确定第二公钥;
根据接收的所述第一对象的第一公钥和所述第二公钥生成加密密钥。
作为一种可能的实施方式,根据所述第二私钥和所述SM2椭圆曲线的基点确定第二公钥之后,还包括:
将所述第二公钥发送给所述第一对象,以使所述第一对象根据所述第一公钥以及所述第二对象的第二公钥生成加密密钥。
作为一种可能的实施方式,通过如下公式基于SM2椭圆曲线公钥密码算法,根据所述密文的第一部分和所述第二对象的第二私钥对所述盲化消息进行解封装得到解封装消息:
CS1=[eS]C1+CA1
其中,所述密文为C=C1||C2||C3,C1为所述密文的第一部分,C2为所述密文的第二部分,C3为所述密文的第三部分,CS1为所述解封装消息,CA1为所述盲化消息,eS为所述第二私钥。
基于相同的发明构思,本发明实施例提供了第一种基于SM2椭圆曲线的解密设备,由于该设备即是本发明实施例中的方法中的设备,并且该设备解决问题的原理与该方法相似,因此该设备的实施可以参见方法的实施,重复之处不再赘述。
如图9所示,该设备包括:处理器900以及存储器901,其中,所述存储器901存储有程序代码,当所述程序代码被所述处理器900执行时,使得所述处理器900执行如下方法的步骤:
根据随机选取的SM2椭圆曲线上的点坐标和所述第一对象的第一私钥对密文的第一部分进行盲化得到盲化消息;
将所述密文的第一部分和盲化消息发送给第二对象,以使所述第二对象利用所述第二对象的第二私钥对所述盲化消息进行解封装得到解封装消息;
接收所述第二对象得到的解封装消息,并基于SM2椭圆曲线公钥密码算法,利用所述第一对象的第一私钥对所述解封装消息进行解密。
作为一种可能的实施方式,所述处理器900具体用于:
基于SM2椭圆曲线公钥密码算法,利用随机数生成第一私钥;
根据所述第一私钥和所述SM2椭圆曲线的基点确定第一公钥;
根据所述第一公钥和接收的所述第二对象的第二公钥生成加密密钥。
作为一种可能的实施方式,所述处理器900具体还用于:
将所述第一公钥发送给所述第二对象,以使所述第二对象根据所述第一公钥以及所述第二对象的第二公钥生成加密密钥。
作为一种可能的实施方式,所述处理器900具体用于:
(x2,y2)=CS1-R;
Figure BDA0002250758390000211
v=Hash(x2||M||y2);
其中,所述密文为C=C1||C2||C3,C1为所述密文的第一部分,C2为所述密文的第二部分,C3为所述密文的第三部分,(x2,y2)为所述SM2椭圆曲线上的点坐标,CS1为所述解封装消息,R为所述随机选取的SM2椭圆曲线上的一个点坐标,klen为所述密文的比特长度;
若v=C3时,确定解密的消息为M。
基于相同的发明构思,本发明实施例提供了第二种基于SM2椭圆曲线的解密设备,由于该设备即是本发明实施例中的方法中的设备,并且该设备解决问题的原理与该方法相似,因此该设备的实施可以参见方法的实施,重复之处不再赘述。
如图10所示,该设备包括:处理器1000以及存储器1001,其中,所述存储器1001存储有程序代码,当所述程序代码被所述处理器1000执行时,使得所述处理器1000执行如下方法的步骤:
接收第一对象发送的密文的第一部分和盲化消息,所述盲化消息是所述第一对象根据随机选取的SM2椭圆曲线上的点坐标和所述第一对象生成的第一私钥对密文的第一部分进行盲化得到的;
基于SM2椭圆曲线公钥密码算法,根据所述密文的第一部分和所述第二对象的第二私钥对所述盲化消息进行解封装得到解封装消息;
将所述解封装消息发送给所述第一对象,以使所述第一对象利用所述第一对象的第一私钥对接收的所述解封装消息进行解密。
作为一种可能的实施方式,所述处理器1000具体用于:
基于SM2椭圆曲线公钥密码算法,利用随机数生成第二私钥;
根据所述第二私钥和所述SM2椭圆曲线的基点确定第二公钥;
根据接收的所述第一对象的第一公钥和所述第二公钥生成加密密钥。
作为一种可能的实施方式,所述处理器1000具体还用于:
将所述第二公钥发送给所述第一对象,以使所述第一对象根据所述第一公钥以及所述第二对象的第二公钥生成加密密钥。
作为一种可能的实施方式,所述处理器1000具体用于:
CS1=[eS]C1+CA1
其中,所述密文为C=C1||C2||C3,C1为所述密文的第一部分,C2为所述密文的第二部分,C3为所述密文的第三部分,CS1为所述解封装消息,CA1为所述盲化消息,eS为所述第二私钥。
基于相同的发明构思,本发明实施例提供了第三种基于SM2椭圆曲线的解密设备,由于该设备即是本发明实施例中的方法中的设备,并且该设备解决问题的原理与该方法相似,因此该设备的实施可以参见方法的实施,重复之处不再赘述。
如图11所示,该设备包括:处理器1100以及存储器1101,其中,所述存储器1101存储有程序代码,当所述程序代码被所述处理器1100执行时,使得所述处理器1100执行如下方法的步骤:
根据随机选取的SM2椭圆曲线上的点坐标和第一存储介质存储的第一私钥对密文的第一部分进行盲化得到盲化消息;
根据所述密文的第一部分和第二存储介质存储的第二私钥对所述盲化消息进行解封装得到解封装消息;
基于SM2椭圆曲线公钥密码算法,利用所述第一私钥对所述解封装消息进行解密。
作为一种可能的实施方式,所述处理器1100具体用于:
基于SM2椭圆曲线公钥密码算法,利用随机数生成第一私钥;
基于SM2椭圆曲线公钥密码算法,利用随机数生成第二私钥;
根据所述第一私钥和所述SM2椭圆曲线的基点确定第一公钥,根据所述第二私钥和所述SM2椭圆曲线的基点确定第二公钥,根据所述第一公钥和所述第二公钥生成加密密钥。
基于相同的发明构思,本发明实施例提供了第一种基于SM2椭圆曲线的解密装置,由于该装置即是本发明实施例中的方法中的装置,并且该装置解决问题的原理与该方法相似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。
如图12所示,该装置包括:盲化模块1200、发送模块1201、解密模块1202,其中:
所述盲化模块1200,用于根据随机选取的SM2椭圆曲线上的点坐标和所述第一对象的第一私钥对密文的第一部分进行盲化得到盲化消息;
所述发送模块1201,用于将所述密文的第一部分和盲化消息发送给第二对象,以使所述第二对象利用所述第二对象的第二私钥对所述盲化消息进行解封装得到解封装消息;
所述解密模块1202,用于接收所述第二对象得到的解封装消息,并基于SM2椭圆曲线公钥密码算法,利用所述第一对象的第一私钥对所述解封装消息进行解密。
作为一种可选的实施方式,所述装置具体用于:
通过如下方式生成所述第一对象的第一私钥:
基于SM2椭圆曲线公钥密码算法,利用随机数生成第一私钥;
通过如下方式生成所述密文的加密密钥:
根据所述第一私钥和所述SM2椭圆曲线的基点确定第一公钥;
根据所述第一公钥和接收的所述第二对象的第二公钥生成加密密钥。
作为一种可选的实施方式,所述装置还包括发送模块1201用于:
将所述第一公钥发送给所述第二对象,以使所述第二对象根据所述第一公钥以及所述第二对象的第二公钥生成加密密钥。
作为一种可选的实施方式,所述解密模块1202具体用于:
通过如下公式基于SM2椭圆曲线公钥密码算法,利用所述第一对象生成的第一私钥对接收的所述解封装消息进行解密:
(x2,y2)=CS1-R;
Figure BDA0002250758390000251
v=Hash(x2||M||y2);
其中,所述密文为C=C1||C2||C3,C1为所述密文的第一部分,C2为所述密文的第二部分,C3为所述密文的第三部分,(x2,y2)为所述SM2椭圆曲线上的点坐标,CS1为所述解封装消息,R为所述随机选取的SM2椭圆曲线上的一个点坐标,klen为所述密文的比特长度;
若v=C3时,确定解密的消息为M。
发明实施例提供了第一种基于SM2椭圆曲线的解密装置,由于该装置即是本发明实施例中的方法中的装置,并且该装置解决问题的原理与该方法相似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。
如图13所示,该装置包括:接收模块1300、解封装模块1301、发送模块1302,其中:
所述接收模块1300,用于接收第一对象发送的密文的第一部分和盲化消息,所述盲化消息是所述第一对象根据随机选取的SM2椭圆曲线上的点坐标和所述第一对象生成的第一私钥对密文的第一部分进行盲化得到的;
所述解封装模块1301,用于基于SM2椭圆曲线公钥密码算法,根据所述密文的第一部分和所述第二对象的第二私钥对所述盲化消息进行解封装得到解封装消息;
所述发送模块1302,用于将所述解封装消息发送给所述第一对象,以使所述第一对象利用所述第一对象的第一私钥对接收的所述解封装消息进行解密。
作为一种可选的实施方式,所述装置具体用于:
通过如下方式生成所述第二对象的第二私钥:
基于SM2椭圆曲线公钥密码算法,利用随机数生成第二私钥;
通过如下方式生成所述密文的加密密钥:
根据所述第二私钥和所述SM2椭圆曲线的基点确定第二公钥;
根据接收的所述第一对象的第一公钥和所述第二公钥生成加密密钥。
作为一种可选的实施方式,所述装置还包括发送模块1302用于:
将所述第二公钥发送给所述第一对象,以使所述第一对象根据所述第一公钥以及所述第二对象的第二公钥生成加密密钥。
作为一种可选的实施方式,所述解封装模块1301具体用于:
通过如下公式基于SM2椭圆曲线公钥密码算法,根据所述密文的第一部分和所述第二对象的第二私钥对所述盲化消息进行解封装得到解封装消息:
CS1=[eS]C1+CA1
其中,所述密文为C=C1||C2||C3,C1为所述密文的第一部分,C2为所述密文的第二部分,C3为所述密文的第三部分,CS1为所述解封装消息,CA1为所述盲化消息,eS为所述第二私钥。
基于相同的发明构思,本发明实施例提供了第一种基于SM2椭圆曲线的解密装置,由于该装置即是本发明实施例中的方法中的装置,并且该装置解决问题的原理与该方法相似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。
如图14所示,该装置包括:盲化模块1400、解封装模块1401、解密模块1402,其中:
所述盲化模块,用于根据随机选取的SM2椭圆曲线上的点坐标和第一存储介质存储的第一私钥对密文的第一部分进行盲化得到盲化消息;
所述解封装模块,用于根据所述密文的第一部分和第二存储介质存储的第二私钥对所述盲化消息进行解封装得到解封装消息;
所述解密模块,用于基于SM2椭圆曲线公钥密码算法,利用所述第一私钥对所述解封装消息进行解密。
作为一种可选的实施方式,所述装置具体用于:
通过如下方式生成所述第一私钥:
基于SM2椭圆曲线公钥密码算法,利用随机数生成第一私钥;
通过如下方式生成所述第二私钥:
基于SM2椭圆曲线公钥密码算法,利用随机数生成第二私钥;
通过如下方式生成所述密文的加密密钥:
根据所述第一私钥和所述SM2椭圆曲线的基点确定第一公钥,根据所述第二私钥和所述SM2椭圆曲线的基点确定第二公钥,根据所述第一公钥和所述第二公钥生成加密密钥。
本发明还提供一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时用于实现如下步骤:
根据随机选取的SM2椭圆曲线上的点坐标和所述第一对象的第一私钥对密文的第一部分进行盲化得到盲化消息;
将所述密文的第一部分和盲化消息发送给第二对象,以使所述第二对象利用所述第二对象的第二私钥对所述盲化消息进行解封装得到解封装消息;
接收所述第二对象得到的解封装消息,并基于SM2椭圆曲线公钥密码算法,利用所述第一对象的第一私钥对所述解封装消息进行解密。
本发明还提供一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时用于实现如下步骤:
接收第一对象发送的密文的第一部分和盲化消息,所述盲化消息是所述第一对象根据随机选取的SM2椭圆曲线上的点坐标和所述第一对象生成的第一私钥对密文的第一部分进行盲化得到的;
基于SM2椭圆曲线公钥密码算法,根据所述密文的第一部分和所述第二对象的第二私钥对所述盲化消息进行解封装得到解封装消息;
将所述解封装消息发送给所述第一对象,以使所述第一对象利用所述第一对象的第一私钥对接收的所述解封装消息进行解密。
本发明还提供一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时用于实现如下步骤:
根据随机选取的SM2椭圆曲线上的点坐标和第一存储介质存储的第一私钥对密文的第一部分进行盲化得到盲化消息;
根据所述密文的第一部分和第二存储介质存储的第二私钥对所述盲化消息进行解封装得到解封装消息;
基于SM2椭圆曲线公钥密码算法,利用所述第一私钥对所述解封装消息进行解密。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的设备。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令设备的制造品,该指令设备实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (10)

1.一种基于SM2椭圆曲线的解密方法,其特征在于,应用于第一对象,该方法包括:
根据随机选取的SM2椭圆曲线上的点坐标和所述第一对象的第一私钥对密文的第一部分进行盲化得到盲化消息;
将所述密文的第一部分和盲化消息发送给第二对象;
接收所述第二对象根据所述密文的第一部分和所述第二对象的第二私钥对所述盲化消息进行解封装得到的解封装消息,并基于SM2椭圆曲线公钥密码算法,利用所述第一对象的第一私钥对所述解封装消息进行解密。
2.根据权利要求1所述的方法,其特征在于,通过如下方式生成所述第一对象的第一私钥:
基于SM2椭圆曲线公钥密码算法,利用随机数生成第一私钥;
通过如下方式生成所述密文的加密密钥:
根据所述第一私钥和所述SM2椭圆曲线的基点确定第一公钥;
根据所述第一公钥和接收的所述第二对象的第二公钥生成加密密钥。
3.根据权利要求2所述的方法,其特征在于,根据所述第一私钥和所述SM2椭圆曲线的基点确定第一公钥之后,还包括:
将所述第一公钥发送给所述第二对象,以使所述第二对象根据所述第一公钥以及所述第二对象的第二公钥生成加密密钥。
4.根据权利要求1所述的方法,其特征在于,通过如下公式基于SM2椭圆曲线公钥密码算法,利用所述第一对象生成的第一私钥对接收的所述解封装消息进行解密:
(x2,y2)=CS1-R;
Figure FDA0003061036930000011
v=Hash(x2||M||y2);
其中,所述密文为C=C1||C2||C3,C1为所述密文的第一部分,C2为所述密文的第二部分,C3为所述密文的第三部分,(x2,y2)为所述SM2椭圆曲线上的点坐标,CS1为所述解封装消息,R为所述随机选取的SM2椭圆曲线上的一个点坐标,klen为所述密文的比特长度;
若v=C3时,确定解密的消息为M。
5.一种基于SM2椭圆曲线的解密方法,其特征在于,应用于第二对象,该方法包括:
接收第一对象发送的密文的第一部分和盲化消息,所述盲化消息是所述第一对象根据随机选取的SM2椭圆曲线上的点坐标和所述第一对象生成的第一私钥对密文的第一部分进行盲化得到的;
基于SM2椭圆曲线公钥密码算法,根据所述密文的第一部分和所述第二对象的第二私钥对所述盲化消息进行解封装得到解封装消息;
将所述解封装消息发送给所述第一对象,以使所述第一对象利用所述第一对象的第一私钥对接收的所述解封装消息进行解密。
6.根据权利要求5所述的方法,其特征在于,通过如下方式生成所述第二对象的第二私钥:
基于SM2椭圆曲线公钥密码算法,利用随机数生成第二私钥;
通过如下方式生成所述密文的加密密钥:
根据所述第二私钥和所述SM2椭圆曲线的基点确定第二公钥;
根据接收的所述第一对象的第一公钥和所述第二公钥生成加密密钥。
7.根据权利要求6所述的方法,其特征在于,根据所述第二私钥和所述SM2椭圆曲线的基点确定第二公钥之后,还包括:
将所述第二公钥发送给所述第一对象,以使所述第一对象根据所述第一公钥以及所述第二对象的第二公钥生成加密密钥。
8.根据权利要求5所述的方法,其特征在于,通过如下公式基于SM2椭圆曲线公钥密码算法,根据所述密文的第一部分和所述第二对象的第二私钥对所述盲化消息进行解封装得到解封装消息:
CS1=[eS]C1+CA1
其中,所述密文为C=C1||C2||C3,C1为所述密文的第一部分,C2为所述密文的第二部分,C3为所述密文的第三部分,CS1为所述解封装消息,CA1为所述盲化消息,eS为所述第二私钥。
9.一种基于SM2椭圆曲线的解密方法,其特征在于,应用于设备,该方法包括:
根据随机选取的SM2椭圆曲线上的点坐标和第一存储介质存储的第一私钥对密文的第一部分进行盲化得到盲化消息;
根据所述密文的第一部分和第二存储介质存储的第二私钥对所述盲化消息进行解封装得到解封装消息;
基于SM2椭圆曲线公钥密码算法,利用所述第一私钥对所述解封装消息进行解密。
10.根据权利要求9所述的方法,其特征在于,通过如下方式生成所述第一私钥:
基于SM2椭圆曲线公钥密码算法,利用随机数生成第一私钥;
通过如下方式生成所述第二私钥:
基于SM2椭圆曲线公钥密码算法,利用随机数生成第二私钥;
通过如下方式生成所述密文的加密密钥:
根据所述第一私钥和所述SM2椭圆曲线的基点确定第一公钥,根据所述第二私钥和所述SM2椭圆曲线的基点确定第二公钥,根据所述第一公钥和所述第二公钥生成加密密钥。
CN201911033315.5A 2019-10-28 2019-10-28 一种基于sm2椭圆曲线的解密方法及设备 Active CN112737783B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911033315.5A CN112737783B (zh) 2019-10-28 2019-10-28 一种基于sm2椭圆曲线的解密方法及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911033315.5A CN112737783B (zh) 2019-10-28 2019-10-28 一种基于sm2椭圆曲线的解密方法及设备

Publications (2)

Publication Number Publication Date
CN112737783A CN112737783A (zh) 2021-04-30
CN112737783B true CN112737783B (zh) 2022-08-12

Family

ID=75589311

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911033315.5A Active CN112737783B (zh) 2019-10-28 2019-10-28 一种基于sm2椭圆曲线的解密方法及设备

Country Status (1)

Country Link
CN (1) CN112737783B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113742670B (zh) * 2021-08-30 2023-06-06 建信金融科技有限责任公司 多方协同解密方法和装置
CN115412239B (zh) * 2022-08-29 2024-04-19 中国人民解放军国防科技大学 一种基于sm2的具有可重随机性的公钥加解密方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107196763A (zh) * 2017-07-06 2017-09-22 数安时代科技股份有限公司 Sm2算法协同签名及解密方法、装置与***
CN109257176A (zh) * 2018-10-18 2019-01-22 天津海泰方圆科技有限公司 基于sm2算法的解密密钥分割及解密方法、装置和介质
CN109274503A (zh) * 2018-11-05 2019-01-25 北京仁信证科技有限公司 分布式协同签名方法及分布式协同签名装置、软盾***
CN109818741A (zh) * 2017-11-22 2019-05-28 航天信息股份有限公司 一种基于椭圆曲线的解密计算方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8705730B2 (en) * 2010-12-23 2014-04-22 Morega Systems Inc. Elliptic curve cryptography with fragmented key processing and methods for use therewith
US10594471B2 (en) * 2015-03-20 2020-03-17 Cryptography Research, Inc. Multiplicative blinding for cryptographic operations

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107196763A (zh) * 2017-07-06 2017-09-22 数安时代科技股份有限公司 Sm2算法协同签名及解密方法、装置与***
CN109818741A (zh) * 2017-11-22 2019-05-28 航天信息股份有限公司 一种基于椭圆曲线的解密计算方法及装置
CN109257176A (zh) * 2018-10-18 2019-01-22 天津海泰方圆科技有限公司 基于sm2算法的解密密钥分割及解密方法、装置和介质
CN109274503A (zh) * 2018-11-05 2019-01-25 北京仁信证科技有限公司 分布式协同签名方法及分布式协同签名装置、软盾***

Also Published As

Publication number Publication date
CN112737783A (zh) 2021-04-30

Similar Documents

Publication Publication Date Title
CN108292402B (zh) 用于信息的安全交换的公共秘密的确定和层级确定性密钥
CN108199835B (zh) 一种多方联合私钥解密方法
CN109309569B (zh) 基于sm2算法的协同签名的方法、装置及存储介质
CN110213044B (zh) 基于多个非对称密钥池的抗量子计算https签密通信方法和***
US9705683B2 (en) Verifiable implicit certificates
CN113424185A (zh) 快速不经意传输
CN109818741B (zh) 一种基于椭圆曲线的解密计算方法及装置
CN110289968B (zh) 私钥恢复、协同地址的创建、签名方法及装置、存储介质
CN109245903B (zh) 双方协同生成sm2算法的签名方法、装置及存储介质
CN109068322B (zh) 解密方法、***、移动终端、服务器及存储介质
CN107425971B (zh) 无证书的数据加/解密方法和装置、终端
CN108491184B (zh) 随机数发生器的熵源采集方法、计算机设备及存储介质
CN108199847B (zh) 数字安全处理方法、计算机设备及存储介质
CN110545169B (zh) 基于非对称密钥池和隐式证书的区块链方法和***
CN113572604B (zh) 一种发送密钥的方法、装置、***及电子设备
EP1330702B1 (en) Method and system of using an insecure crypto-accelerator
WO2020155622A1 (zh) 提高影像数据传输安全的方法、装置、***及存储介质
CN109005184A (zh) 文件加密方法及装置、存储介质、终端
CN112737783B (zh) 一种基于sm2椭圆曲线的解密方法及设备
CN106911625B (zh) 一种安全输入法的文本处理方法、装置和***
CN112713989B (zh) 一种解密方法及装置
KR101793528B1 (ko) 무인증서 공개키 암호 시스템
WO2022185328A1 (en) System and method for identity-based key agreement for secure communication
CN107483387A (zh) 一种安全控制方法及装置
CN114050897A (zh) 一种基于sm9的异步密钥协商方法及装置

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