CN111049650B - 一种基于sm2算法的协同解密方法及装置、系统、介质 - Google Patents

一种基于sm2算法的协同解密方法及装置、系统、介质 Download PDF

Info

Publication number
CN111049650B
CN111049650B CN201911376285.8A CN201911376285A CN111049650B CN 111049650 B CN111049650 B CN 111049650B CN 201911376285 A CN201911376285 A CN 201911376285A CN 111049650 B CN111049650 B CN 111049650B
Authority
CN
China
Prior art keywords
private key
decryption
component
calculating
result
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
CN201911376285.8A
Other languages
English (en)
Other versions
CN111049650A (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.)
Shanghai Digital Certificate Certification Center Co ltd
Original Assignee
Shanghai Digital Certificate Certification Center 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 Shanghai Digital Certificate Certification Center Co ltd filed Critical Shanghai Digital Certificate Certification Center Co ltd
Priority to CN201911376285.8A priority Critical patent/CN111049650B/zh
Publication of CN111049650A publication Critical patent/CN111049650A/zh
Application granted granted Critical
Publication of CN111049650B publication Critical patent/CN111049650B/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/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

Landscapes

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

Abstract

本发明涉及数据解密技术领域,更具体的说,涉及一种基于SM2算法的协同解密方法及装置、系统、介质。本方法包括以下步骤:S1第一通信方和第二通信方分别获取第一私钥分量DA和第二私钥分量DB;S2第一通信方和第二通信方的第一私钥分量DA和第二私钥分量DB进行加法分享变换,获得第一私钥变换分量d1和第二私钥变换分量d2,满足如下变换关系,
Figure DDA0002341062840000011
S3第一通信方和第二通信方,采用第一私钥变换分量d1和第二私钥变换分量d2,基于SM2算法协同解密协议传递中间结果,并对加密结果进行协同解密,获取解密结果。本发明实现两方协同完成数据解密,既保证数据解密的正确性,又保证密钥的安全性。

Description

一种基于SM2算法的协同解密方法及装置、系统、介质
技术领域
本发明涉及数据解密技术领域,更具体的说,涉及一种基于SM2算法的协同解密方法及装置、系统、介质。
背景技术
公钥密码算法已经在电子商务、电子政务、移动警务、移动办公得到广泛使用,在车联网、智能医疗系统、智能家居系统等物联网应用以及云计算系统中也发挥了越来越重要的作用。在公钥密码体制中,保证私钥的安全性是一个非常重要的问题。用户的私钥通常需要在专门的硬件安全模块(HSM,Hardware Security Module)中安全存储和使用,私钥不能从密码硬件中导出。常见的HSM包括USBKEY(U盾)、智能卡、TF卡(Trans-flash Card,闪存卡)、密码芯片等。
随着互联网技术的发展,移动智能终端的普及率越来越高,随之而来的是安全问题,需要解决移动端的数据加密解密问题。智能移动终端通常并没有配置专用的硬件密码模块,只能依赖于软件密码模块来完成密码运算,私钥则需要存储在用户终端本地存储介质中。
智能移动终端的防护能力较弱,虽然存储私钥时可以使用加密、PIN(PersonalIdentification Number,个人识别密码)码等方式加以保护,并保存在永久存储设备中,但是攻击者可能通过权限提升、动态分析算法运算过程等手段来获得私钥,这增加了私钥泄露的风险。比如,攻击者通过木马窃取保存在移动终端中的用户私钥,破解用户保护私钥的PIN码,从而获得用户私钥。
针对此类问题,常见的解决方法是采用门限秘密共享方案,将私钥被分割成t个子私钥,并安全地分给t个参与者掌管,这些t个参与者中的k(k≤t)个及以上所构成的子集可以重构私钥,少于k个参与者则无法获得完整私钥。这会存在以下两个问题,一方面,恢复出完整私钥之后,持有完整私钥的一方就可以在其他参与方不知情的情况下独立地进行数据解密,从而破坏了系统的安全性和公平性,另一方面,参与者的原始子私钥参与重构私钥,会造成原始子私钥泄露的风险。
特别是在只有两个参与方的情况下,原始子私钥的泄露或者某一方恢复并持有完整私钥,就可以在另一方不知情的情况下独立地进行解密数据,给系统造成利益损失。
发明内容
本发明的目的是提供一种基于SM2算法的协同解密方法及装置、系统、介质,解决现有技术中两个参与方之间协同完成数据解密时的私钥分量的安全性问题。
为了实现上述目的,本发明提供了一种基于SM2算法的协同解密方法,包括以下步骤:
S1第一通信方和第二通信方分别获取第一私钥分量DA和第二私钥分量DB
S2第一通信方和第二通信方的第一私钥分量DA和第二私钥分量DB进行加法分享变换,获得第一私钥变换分量d1和第二私钥变换分量d2,满足如下变换关系,
Figure BDA0002341062820000021
n为素数,是椭圆曲线E的基点G的阶,
其中,第一私钥变换分量d1和第二私钥变换分量d2为加法分享的私钥分量,用于执行后续的协同解密操作;
S3第一通信方和第二通信方,采用第一私钥变换分量d1和第二私钥变换分量d2,基于SM2算法协同解密协议传递中间结果,并对加密结果进行协同解密,获取解密结果。
在一实施例中,所述步骤S2中,私钥分量进行加法分享变换,采用基于茫然传输协议的私钥分量变换协议实现,进一步包括以下步骤:
S21第一通信方和第二通信方在椭圆曲线E上随机选取一个群元素P作为公共参数;
S22第二通信方基于SM2算法计算得到混淆因子集合{Ui}={U1,U2,…,Ul},所述混淆因子集合{Ui}中每一个元素Ui与第二私钥分量DB的模逆
Figure BDA0002341062820000035
中的1个比特相对应;
第二通信方将混淆因子集合的计算结果{Ui}发给第一通信方;
S23第一通信方接收混淆因子集合{Ui};
选择l个随机数x1,x2,…,xl,根据随机参数VaP和混淆因子集合{Ui},对随机数xi,i∈{1,2,…,l}与第一私钥分量DA形成的第一集合{<sj,s′j>}的每一个元素分别加密计算,得到加密结果集合{<Xj,X′j>},j∈{1,2,…,l};
第一通信方计算得到第一私钥变换分量d1
Figure BDA0002341062820000031
第一通信方将随机参数Va和加密结果集合{<Xj,X′j>}发送给第二通信方;
S24第二通信方接收随机参数Va和加密结果集合{<Xj,X′j>};
根据随机参数Va和加密结果集合{<Xj,X′j>},计算分享参数集合{ti},所述分享参数集合{ti}中每一个元素ti与第二私钥分量DB的模逆
Figure BDA0002341062820000036
中的1个比特相对应;
计算得到第二私钥变换分量d2
Figure BDA0002341062820000032
第一私钥变换分量d1和第二私钥变换分量d2,满足如下变换关系,
Figure BDA0002341062820000033
在一实施例中,所述步骤S21中,第一通信方和第二通信方通过密钥协商算法,协商选取公共参数。
在一实施例中,所述步骤S22中,混淆因子集合{Ui}的计算方法,进一步包括以下步骤:
S221选择l个随机数m1,m2,…,mi,…ml,l为第二私钥分量DB的模逆
Figure BDA0002341062820000037
的比特长度;
S222第二通信方从第二私钥分量DB的模逆
Figure BDA0002341062820000034
中提取每一个比特bi∈{0,1},i∈{1,2,…,l};
S223第二通信方根据比特bi的值来决定计算Ui的计算公式:
若bi=0,计算Ui=[mi]G;
若bi=1,计算Ui=P-[mi]G;
其中,G是椭圆曲线E的基点,P是协商选取的公共参数,[mi]G代表基点G的mi倍点。
在一实施例中,所述步骤S23中,随机参数Va、VaP和第一集合{<sj,s′j>}通过以下步骤获得:
根据第一私钥分量DA,计算得到第一集合{<sj,s′j>},j∈{1,2,…,l},其中第j个元素<sj,s′j>的计算公式为:
Figure BDA0002341062820000041
选取1个比特长度为l的随机数a∈{0,1}l,计算随机参数Va和VaP,其中随机参数Va和VaP的计算公式为:
Figure BDA0002341062820000042
在一实施例中,所述步骤S23中,第一集合{<sj,s′j>}的每一个元素分别加密计算,得到加密结果集合{<Xj,X′j>},第j个元素<Xj,X′j>的计算公式:
Figure BDA0002341062820000043
在一实施例中,所述步骤S24中,分享参数集合{ti}的计算方法,进一步包括以下步骤:
S2411第二通信方从第二私钥分量DB的模逆
Figure BDA0002341062820000044
中提取每一个比特bi∈{0,1},i∈{1,2,…,l};
S2412第二通信方根据比特bi的值来决定计算分享参数集合{ti}的计算公式:
若bi=0,计算
Figure BDA0002341062820000045
若bi=1,计算
Figure BDA0002341062820000046
在一实施例中,所述步骤S23中,第一集合{<sj,s′j>}的每一个元素分别加密计算,得到加密结果集合{<Xj,X′j>},第j个元素<Xj,X′j>的计算公式:
Figure BDA0002341062820000047
在一实施例中,所述步骤S24中,分享参数集合{ti}的计算方法,进一步包括以下步骤:
S2421第二通信方从第二私钥分量DB的模逆
Figure BDA0002341062820000051
中提取每一个比特bi∈{0,1},i∈{1,2,…,l};
S2422第二通信方根据比特bi的值来决定计算分享参数集合{ti}的计算公式:
若bi=0,计算
Figure BDA0002341062820000052
若bi=1,计算
Figure BDA0002341062820000053
在一实施例中,所述步骤S23中,第一集合{<sj,s′j>}的每一个元素分别加密计算,得到加密结果集合{<Xj,X′j>},第j个元素<Xj,X′j>的计算公式:
Figure BDA0002341062820000054
在一实施例中,所述步骤S24中,分享参数集合{ti}的计算方法,进一步包括以下步骤:
S2431第二通信方从第二私钥分量DB的模逆
Figure BDA0002341062820000055
中提取每一个比特bi∈{0,1},i∈{1,2,…,l};
S2432第二通信方根据比特bi的值来决定计算分享参数集合{ti}的计算公式:
若bi=0,计算:
Figure BDA0002341062820000056
若bi=1,计算:
Figure BDA0002341062820000057
在一实施例中,所述第一私钥变换分量d1设为固定值。
在一实施例中,所述步骤S3进一步包括以下步骤:
S31输入基于SM2算法的加密结果C=C1||C3||C2
S32第一通信方从加密结果C提取第一比特串C1
将第一比特串C1的数据类型转换为第一椭圆曲线群元素
Figure BDA0002341062820000058
S33第一通信方根据第一私钥变换分量d1和第一椭圆曲线群元素
Figure BDA0002341062820000059
计算得到第一中间结果
Figure BDA00023410628200000510
将第一中间结果T1和第一椭圆曲线群元素
Figure BDA00023410628200000511
发送给第二通信方;
S34第二通信方接收第一中间结果T1和第一椭圆曲线群元素
Figure BDA00023410628200000512
第二通信方根据第一中间结果T1、第二私钥变换分量d2和第一椭圆曲线群元素
Figure BDA0002341062820000061
计算得到第二中间结果
Figure BDA0002341062820000062
第二椭圆曲线群元素
Figure BDA0002341062820000063
S35第二通信方计算得到第三中间结果t=KDF(x2||y2,klen),其中,||表示拼接,KDF(*)为预先定义的密钥派生函数,klen为输出的比特串长度;
S36第二通信方从加密结果C提取第二比特串C2,根据第三中间结果t,计算获取解密结果
Figure BDA0002341062820000064
其中
Figure BDA0002341062820000065
表示按位异或运算。
在一实施例中,所述步骤S36之后,进一步包括以下步骤:第二通信方计算u=Hv(x2||M′||y2),从加密结果C中提取第三比特串C3,若u≠C3则提示错误,并退出解密流程,若u=C3,则输出解密结果M′。
在一实施例中,所述步骤S32之后,进一步包括以下步骤:验证第一椭圆曲线群元素
Figure BDA0002341062820000066
是否满足椭圆曲线E(Fq),若不满足则提示错误,并退出解密流程;
计算并判断椭圆曲线点S=[h]
Figure BDA0002341062820000067
是否为无穷远点,若是无穷远点,则提示错误,并退出解密流程。其中h为余因子,hE(Fq)/n;n为基点G的阶。
在一实施例中,所述步骤S35之后,进一步包括以下步骤:验证第三中间结果t是否为全0比特串,若是则提示错误,并退出解密流程。
为了实现上述目的,本发明提供了一种基于SM2算法的协同解密装置,包括第一通信方和第二通信方:
所述第一通信方包括第一密钥获取单元、第一密钥变换单元和第一协同解密单元;
所述第二通信方包括第二密钥获取单元、第二密钥变换单元和第二协同解密单元:
所述第一密钥获取单元,获取乘法分享的第一私钥分量DA,所述第二密钥获取单元,获取乘法分享的第二私钥分量DB
所述第一密钥变换单元和第二密钥变换单元,将乘法分享的第一私钥分量DA和第二私钥分量DB,变换为加法分享的第一私钥变换分量d1和第二私钥变换分量d2,满足如下变换关系,
Figure BDA0002341062820000068
n为素数,是椭圆曲线E的基点G的阶;
所述第一协同解密单元,接收第一密钥变换单元的得到的第一私钥变换分量d1;所述第二协同解密单元,接收第二密钥变换单元的得到的第二私钥变换分量d2
第一协同解密单元和第二协同解密单元,基于SM2算法的协同解密协议传递中间结果,并对加密结果进行协同解密,获取解密结果。
在一实施例中,所述第一密钥变换单元和第二密钥变换单元,采用基于茫然传输协议实现私钥分量变换;
第一通信方和第二通信方在椭圆曲线E上随机选取一个群元素P作为公共参数;
所述第一密钥变换单元,随机选择的l个随机数xi,i∈{1,2,…,l},计算得到第一私钥变换分量d1
Figure BDA0002341062820000071
所述第一密钥变换单元,根据随机参数VaP和混淆因子集合{Ui},对随机数xi,i∈{1,2,…,l}与第一私钥分量DA形成的第一集合{<sj,s′j>}的每一个元素分别加密计算,得到加密结果集合{<Xj,X′j>},j∈{1,2,…,l},向第二密钥变换单元发送随机参数Va和加密结果集合{<Xj,X′j>};
所述第二密钥变化单元,基于SM2算法计算得到混淆因子集合{Ui}={U1,U2,…,Ul},向第一密钥单元发送混淆因子集合{Ui},所述混淆因子集合{Ui}中每一个元素Ui与第二私钥分量DB的模逆
Figure BDA0002341062820000072
中的1个比特相对应;
所述第二密钥变换单元,根据随机参数Va和加密结果集合{<Xj,X′j>},计算分享参数集合{ti},计算得到第二私钥变换分量d2
Figure BDA0002341062820000073
所述分享参数集合{ti}中每一个元素ti与第二私钥分量DB的模逆
Figure BDA0002341062820000074
中的1个比特相对应。
在一实施例中,所述混淆因子集合{Ui}={U1,U2,…,Ul},由第二密钥变换单元通过以下方式获得:
选择l个随机数m1,m2,…,mi,…ml,l为第二私钥分量DB的模逆
Figure BDA0002341062820000075
的比特长度;
从第二私钥分量DB的模逆
Figure BDA0002341062820000081
中提取每一个比特bi∈{0,1},i∈{1,2,…,l};
根据比特bi的值来决定计算Ui的计算公式:
若bi=0,计算Ui=[mi]G;
若bi=1,计算Ui=P-[mi]G;
其中,G是椭圆曲线E的基点,P是协商选取的公共参数,[mi]G代表基点G的mi倍点。
在一实施例中,所述随机参数Va、VaP和第一集合{<sj,s′j>},由第一密钥变换单元通过以下方式获得,
选择l个随机数x1,x2,…,xl,根据第一私钥分量DA,计算得到第一集合{<sj,s′j>},j∈{1,2,…,l},其中第j个元素<sj,s′j>的计算公式为:
Figure BDA0002341062820000082
选取1个比特长度为l的随机数a∈{0,1}l,计算随机参数Va和VaP,其中随机参数Va和VaP的计算公式为:
Figure BDA0002341062820000083
在一实施例中,所述第一密钥变换单元,对第一集合{<sj,s′j>}的每一个元素分别加密计算,得到加密结果集合{<Xj,X′j>},第j个元素<Xj,X′j>的计算公式为:
Figure BDA0002341062820000084
在一实施例中,所述分享参数集合{ti},由第二密钥变换单元通过以下方式获得:
从第二私钥分量DB的模逆
Figure BDA0002341062820000085
中提取每一个比特bi∈{0,1},i∈{1,2,…,l};
根据比特bi的值来决定计算分享参数集合{ti}的计算公式:
若bi=0,计算
Figure BDA0002341062820000086
若bi=1,计算
Figure BDA0002341062820000087
在一实施例中,所述第一密钥变换单元,对第一集合{<sj,s′j>}的每一个元素分别加密计算,得到加密结果集合{<Xj,X′j>},第j个元素<Xj,X′j>的计算公式为:
Figure BDA0002341062820000091
在一实施例中,所述分享参数集合{ti},由第二密钥变换单元通过以下方式获得:
从第二私钥分量DB的模逆
Figure BDA0002341062820000092
中提取每一个比特bi∈{0,1},i∈{1,2,…,l};
根据比特bi的值来决定计算分享参数集合{ti}的计算公式:
若bi=0,计算
Figure BDA0002341062820000093
若bi=1,计算
Figure BDA0002341062820000094
在一实施例中,所述第一密钥变换单元,对第一集合{<sj,s′j〉}的每一个元素分别加密计算,得到加密结果集合{〈Xj,X′j〉},第j个元素<Xj,X′j〉的计算公式为:
Figure BDA0002341062820000095
在一实施例中,所述分享参数集合{ti},由第二密钥变换单元通过以下方式获得:
从第二私钥分量DB的模逆
Figure BDA0002341062820000096
中提取每一个比特bi∈{0,1},i∈{1,2,…,l};
根据比特bi的值来决定计算分享参数集合{ti}的计算公式:
若bi=0,计算:
Figure BDA0002341062820000097
若bi=1,计算:
Figure BDA0002341062820000098
在一实施例中,所述第一协同解密单元,接收解密结果C并提取第一比特串C1,根据第一比特串C1计算得到第一椭圆曲线群元素
Figure BDA0002341062820000099
结合第一私钥变换分量d1计算得到第一中间结果T,将第一中间结果T1和第一椭圆曲线群元素
Figure BDA00023410628200000910
发送给第二协同解密单元;
所述第二协同解密单元,接收第一中间结果T1和第一椭圆曲线群元素
Figure BDA0002341062820000101
接收解密结果C并提取第二比特串C2,根据第一中间结果T1、第一椭圆曲线群元素
Figure BDA0002341062820000102
第二私钥变换分量d2,对第二比特串C2进行计算获取解密结果M′。
在一实施例中,所述第二协同解密单元通过以下方法计算获取解密结果M′:根据第一中间结果T1、第二私钥变换分量d2和第一椭圆曲线群元素
Figure BDA0002341062820000103
计算得到第二中间结果
Figure BDA0002341062820000104
第二椭圆曲线群元素
Figure BDA0002341062820000105
Figure BDA0002341062820000106
计算得到第三中间结果t=KDF(x2||y2,klen),其中,||表示拼接,KDF(*)为预先定义的密钥派生函数,klen为输出的比特串长度;
从加密结果C提取第二比特串C2,根据第三中间结果t,计算获取解密结果
Figure BDA0002341062820000107
其中
Figure BDA0002341062820000108
表示按位异或运算。
在一实施例中,所述第二协同解密单元,对解密结果M′进行校验,计算u=Hv(x2||M′||y2),从加密结果C中提取第三比特串C3,若u≠C3则提示错误,协同解密装置退出解密流程,若u=C3,则输出解密结果M′。
在一实施例中,第一通信方是服务器,第二通信方是客户端。
为了实现上述目的,本发明提供了一种基于SM2算法的协同解密系统,包括:存储器,用于存储可由处理器执行的指令;
处理器,用于执行所述指令以实现如上述任一项所述的方法。
为了实现上述目的,本发明提供了一种计算机可读介质,其上存储有计算机指令,其中当计算机指令被处理器执行时,执行如上述任一项所述的方法。
本发明提供的一种SM2算法的协同解密方法及装置、系统、介质,实现两个参与方之间协同完成解密,该解密必须由两方共同参与,并且原始的私钥分量不参与解密过程,在数据解密过程中不会恢复完整的私钥,既保证数据解密的正确性,又能保证密钥的安全性。
附图说明
本发明上述的以及其他的特征、性质和优势将通过下面结合附图和实施例的描述而变的更加明显,在附图中相同的附图标记始终表示相同的特征,其中:
图1揭示了根据本发明一实施例的基于SM2算法的协同解密方法流程图;
图2揭示了根据本发明一实施例的协同解密装置的结构示意图;
图3揭示了根据本发明一实施例的协同解密系统的框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释发明,并不用于限定发明。
椭圆曲线密码(ECC,Elliptic curve cryptography)是一种基于在有限域上定义的椭圆曲线算法的公开密钥体制。SM2算法是是ECC密码体制的一种具体算法。在国家标准《GB/T 32918信息安全技术SM2椭圆曲线公钥密码算法》标准中规定了一种椭圆曲线公钥密码算法,基于SM2的加密算法和解密算法符合该标准的规定。
本发明的技术方案基于椭圆曲线密码体制(ECC,Elliptic curvecryptography),涉及两个对等的通信实体,在通信双方执行规定的协议,实现基于SM2算法的两方协同解密。
参考图1所示,图1揭示了根据本发明一实施例的基于SM2算法的协同解密方法流程图。该基于SM2算法的协同解密方法,主要包括如下的步骤:
S1、密钥对的获取。第一通信方和第二通信方分别获取第一私钥分量DA和第二私钥分量DB
S2、私钥分量变换。第一通信方和第二通信方的第一私钥分量DA和第二私钥分量DB进行加法分享变换,获得第一私钥变换分量d1和第二私钥变换分量d2,满足如下变换关系,
Figure BDA0002341062820000111
n为素数,是椭圆曲线E的基点G的阶,
其中,第一私钥变换分量d1和第二私钥变换分量d2为加法分享的私钥分量,用于执行后续的协同解密操作。
S3、两方协同解密。第一通信方和第二通信方,采用第一私钥变换分量d1和第二私钥变换分量d2,基于SM2算法协同解密协议传递中间结果,并对加密结果进行协同解密,获取解密结果。
下面对基于SM2算法的协同解密方法中的每一步骤进行详细的展开阐述。
不失一般性,使用Alice和Bob来标识两个对等的通信实体。通信实体Alice和Bob分别对应第一通信方和第二通信方,两者的地位与顺序可以互换,不影响整体方案的实现。
Alice和Bob共同约定椭圆曲线的公共参数,并规定以下符号,以下符号同样参照了国家标准《GB/T 32918信息安全技术SM2椭圆曲线公钥密码算法》规定的参数:
Fq,包含q个元素的有限域;a,b,Fq中的元素,它们定义Fq上的一条椭圆曲线E;E,有限域上由a和b定义的一条椭圆曲线。
E(Fq),Fq上椭圆曲线E的所有有理点(包括无穷远点O)组成的集合。
#E(Fq),E(Fq)上点的数目,称为椭圆曲线E(Fq)的阶。
G,椭圆曲线的一个基点,其阶为素数;n,基点G的阶,n是#E(Fq)的素因子;mod n,模n运算。
O,椭圆曲线上的一个特殊点,称为无穷远点或零点,是椭圆曲线加法群的单位元;P,P=(xP,yP)是椭圆曲线上除O之外的一个点,其坐标xP,yP满足椭圆曲线方程。
xP,点P的x坐标;yP,点P的y坐标;x‖y,x与y的拼接,其中x和y是比特串或字节串;P1+P2,椭圆曲线E上两个点P1与P2的和。
[k]P,椭圆曲线上点P的k倍点,即
Figure BDA0002341062820000121
其中k是正整数。
Figure BDA0002341062820000122
为长度相等的两个比特串按比特的异或运算。
Hv(*),消息摘要长度为v比特的密码杂凑算法;IDA,用户A的可辨别标识;ZA,关于用户A的可辨别标识、部分椭圆曲线系统参数和用户A公钥的杂凑值。
步骤S1、密钥对的获取。
在进行协同解密之前,通信实体Alice和Bob分别获取第一私钥分量DA和第二私钥分量DB
该第一私钥分量和第二私钥分量为乘法分享的私钥分量,是根据SM2算法产生的原始私钥分量,并可以生成对应的公钥。较佳的,私钥和公钥密码算法符合国家标准《GB/T32918信息安全技术SM2椭圆曲线公钥密码算法》。
乘法分享的私钥分量可以通过以下步骤产生,并生成公钥:
S11、Alice选择一个随机数DA∈[1,…,n-1],作为第一私钥分量DA
S12、Bob选择一个随机数DB∈[1,…,n-1],作为第二私钥分量DB
S13、Alice根据第一私钥分量DA,计算公钥参数
Figure BDA0002341062820000131
并将公钥参数P1发送给Bob;
S14、Bob根据接收的公钥参数P1和第二私钥分量DB,生成双方的共同公钥
Figure BDA0002341062820000132
并公开共同公钥Ppub
步骤S2、私钥分量变换。
Alice和Bob在生成第一私钥分量DA和第二私钥分量DB并推导共同的SM2公钥之后,还需要将私钥分量进行变换,获得第一私钥变换分量d1和第二私钥变换分量d2,用于执行后续的两方协同解密操作,其中,第一私钥变换分量d1和第二私钥变换分量d2为加法分享的私钥分量。
第一私钥变换分量d1和第二私钥变换分量d2和第一私钥分量DA、第二私钥分量DB应满足如下数学关系:
Figure BDA0002341062820000133
其中,n为素数,是椭圆曲线E的基点G的阶。
本步骤中的私钥分量变换得到的加法分享的私钥分量d1、d2,参与后续的两方协同解密操作,解决了以下两方面的问题:
一方面,加法分享的私钥分量d1、d2不会逆向得到原始的乘法分享的私钥分量DA、DB,双方都无法获取到对方私钥分量DA、DB的任何信息,保证私钥分量DA、DB的安全性;
另一方面,加法分享的私钥分量d1、d2参与协同解密过程中,不会恢复出完整的密钥,解决了参与的一方获得完整的密钥从而破坏安全性的问题。
本步骤中的私钥分量变换可以采用多种安全多方计算协议来实现。可选的,采用基于Paillier(帕耶)半同态加密实现该私钥分量的变换。
作为较优实施例,本发明提出一种基于茫然传输协议(Oblivious Transfer,简称OT)的技术方案,实现基于茫然传输协议的私钥分量变换协议。
Alice持有比特长度为l的第一私钥分量的模逆
Figure BDA0002341062820000141
作为秘密输入,Bob持有比特长度为l的第二私钥分量的模逆
Figure BDA0002341062820000142
作为秘密输入。Alice与Bob通过交换中间计算结果,并执行如下分布式计算协议:
步骤S21、Alice和Bob在椭圆曲线E上随机选取一个群元素P作为公共参数。
作为安全条件Alice和Bob可以通过密钥协商算法,协商选取公共参数。在本实施例中,Alice和Bob执行ECDH(elliptic curves Diffie-Hellman,椭圆曲线密钥交换算法)协议来选取群元素P,计算共享的点乘结果,Alice和Bob任何一方均无法获得群元素P的离散对数结果。
步骤S22、Bob基于SM2算法计算混淆因子集合{Ui}={U1,U2,…,Ul},混淆因子集合{Ui}中每一个元素Ui与第二私钥分量DB的模逆
Figure BDA0002341062820000143
的1个比特相对应。
本实施例中,混淆因子集合{Ui}具体计算规则如下:
步骤S221、Bob选择l个随机数m1,m2,…,mi,…ml,l为第二私钥分量DB的比特长度;
步骤S222、Bob从第二私钥分量DB的模逆
Figure BDA0002341062820000144
中提取每一个比特bi∈{0,1},i∈{1,2,…,l};
步骤S223、Bob根据比特bi的值来决定计算Ui的公式:
若bi=0,计算Ui=[mi]G;
若bi=1,计算Ui=P-[mi]G;
其中,G是椭圆曲线E的基点,P是在步骤S21中协商获得的公共参数;
[mi]G代表基点G的mi倍点。
在完成对混淆因子集合{Ui}的计算之后,Bob将混淆因子集合{Ui}的结果发给Alice。
步骤S23、Alice收到混淆因子集合{Ui}之后,选择1个比特长度为l的随机数a∈{0,1}l,计算以下随机参数Va和VaP
Figure BDA0002341062820000151
选择l个随机数x1,x2,…,xl,根据第一私钥分量DA的模逆
Figure BDA0002341062820000152
来计算得到第一集合{<sj,s′j>},j∈{1,2,…,l},其中第j个元素<sj,s′j>的计算公式为:
Figure BDA0002341062820000153
根据随机参数VaP和混淆因子集合{Ui},对第一集合{<sj,s′j>}的每一个元素分别加密计算,得到加密结果集合{<Cj,X′j>},j∈{1,2,…,l}。
本发明根据加密结果集合的加密计算方法的区别,提出三种不同的实施例。
在第一实施例中,加密结果集合{<Xj,X′j>},j∈{1,2,…,l},其中第j个元素<Xj,X′j>的计算公式:
Figure BDA0002341062820000154
其中,运算符“||”代表将其两边的操作数执行比特串接的运算;Uj是混淆因子集合{Ui}的第j个元素,是一个椭圆曲线E上的群元素;[a]Uj代表以标量a作为输入与群元素Uj执行椭圆曲线点乘运算的计算结果。
labelA和labelB是固定的标签参数,在本实施例中,
Figure BDA0002341062820000155
Figure BDA0002341062820000156
{(x,y)|[a]Uj}代表将点乘计算结果[a]Uj的横坐标x和纵坐标y按照预先定义的方式进行处理。在本实施例中,预先定义的方式为将比特串进行串接。
Hv(*)代表使用预先规定的密码杂凑函数H来对输入数据进行处理并获得杂凑值,保证了本发明算法的安全性。可选的,密码杂凑函数Hv采用的SM3密码杂凑算法。更进一步的,密码杂凑算法采用的相关标准为GB/T32905-2016《信息安全技术SM3密码杂凑算法》。
在第二实施例中,加密结果集合{<Xj,X′j>},j∈{1,2,…,l},其中第j个元素<Xj,X′j>的计算公式:
Figure BDA0002341062820000161
其中,Uj是混淆因子集合{Ui}的第j个元素,是一个椭圆曲线E上的群元素;[a]Uj代表以标量a作为输入与群元素Uj执行椭圆曲线点乘运算的计算结果。
{(x,y)|[a]Uj}代表将点乘计算结果[a]Uj的横坐标x和纵坐标y按照预先定义的方式进行处理。在本实施例中,预先定义的方式为将比特串进行串接。
Hv(*)代表使用预先规定的密码杂凑函数H来对输入数据进行处理并获得杂凑值。可选的,密码杂凑函数Hv采用的SM3密码杂凑算法。更进一步的,密码杂凑算法采用的相关标准为GB/T 32905-2016《信息安全技术SM3密码杂凑算法》。
在第三实施例中,加密结果集合{<Xj,X′j>},j∈{1,2,…,l},其中第j个元素<Xj,X′j>的计算公式:
Figure BDA0002341062820000162
其中,{(x,y)|[a]Uj}代表将点乘计算结果[a]Uj的横坐标x和纵坐标y按照预先定义的方式进行处理。在本实施例中,预先定义的方式为将比特串进行串接。
KDF(*)代表使用预先规定的密钥派生函数,klen表述输出的比特串长度。密钥派生函数的作用是对输入数据进行处理并获得密钥数据。可选的,密钥派生函数采用的相关标准为GB/T 32918.4-2016《信息安全技术SM2椭圆曲线公钥密码算法第4部分:公钥加密算法》。
Alice计算得到第一私钥变换分量d1
Figure BDA0002341062820000163
在完成计算之后,Alice将随机参数Va和加密结果集合{<Xj,X′j>}发送给Bob。
在一实施例中,第一私钥变换分量d1设为固定值,l个随机数x1,x2,…,xl求和得到的值为固定值,从而简化Alice作为服务器端的实现。对于每一个用户Bob,在执行乘法-加法变换的OT协议过程中,服务端Alice都选择一组不同的随机数xi,i∈{1,2,…,l},但是xi的求和总是和固定值d1相等。这一方案的优点是作为服务端的Alice仅需要存储1个加法私钥变换分量d1,就可以为海量的移动终端Bob提供协同签名服务,为了确保安全性,服务端需要将私钥变换分量d1存储在HSM内部以保证私钥变换分量d1的私密性。
步骤S24、Bob在收到随机参数Va和加密结果集合{<Xj,X′j>}之后,根据收到的结果来计算分享参数集合{ti},所述分享参数集合{ti}中每一个元素ti与第二私钥分量DB的模逆
Figure BDA0002341062820000171
中的1个比特相对应。
对应于加密结果集合的三个实施例,在第一实施例中,分享参数集合{ti}计算规则如下:
步骤S2411、Bob从第二私钥分量DB的模逆
Figure BDA0002341062820000172
中提取每一个比特bi∈{0,1},i∈{1,2,…,l};
步骤S2412、Bob根据比特bi的值来决定计算分享参数集合{ti}中第i个元素ti的公式:
若bi=0,计算
Figure BDA0002341062820000173
若bi=1,计算
Figure BDA0002341062820000174
在第二实施例中,分享参数集合{ti}计算规则如下:
步骤S2421、Bob从第二私钥分量DB的模逆
Figure BDA0002341062820000175
中提取每一个比特bi∈{0,1},i∈{1,2,…,l};
步骤S2422、Bob根据比特bi的值来决定计算分享参数集合{ti}中第i个元素ti的公式:
若bi=0,计算:
Figure BDA0002341062820000176
若bi=1,计算:
Figure BDA0002341062820000177
在第三实施例中,分享参数集合{ti}计算规则如下:
步骤S2431、Bob从第二私钥分量DB的模逆
Figure BDA0002341062820000181
中提取每一个比特bi∈{0,1},i∈{1,2,…,l};
步骤S2432、Bob根据比特bi的值来决定计算分享参数集合{ti}中第i个元素ti的公式:
若bi=0,计算:
Figure BDA0002341062820000182
若bi=1,计算:
Figure BDA0002341062820000183
Bob在计算出分享参数集合{ti}之后,计算得到第二私钥变换分量d2
Figure BDA0002341062820000184
在执行上述分布式计算协议之后,Alice获得第一私钥变换分量d1,Bob获得第二私钥变换分量d2,它们满足如下数学关系:
Figure BDA0002341062820000185
通过基于ECC的茫然传输协议来执行私钥变换操作,可以在协同解密方案中采用SM2标准算法实现全部私钥变换过程,而不需要引入其他类型的半同态加密算法,有利于产品标准化,满足合规性。
同时,基于ECC的茫然传输协议的效率较高,相比逐比特传输可以减少大量运算步骤。对于双方传输256比特的秘密,与本发明的技术方案相比较,现有技术的茫然传输协议将需要执行更多的ECC点乘运算,同时需要传输更多的中间计算结果。
步骤S3、两方协同解密。
Alice和Bob,采用第一私钥变换分量d1和第二私钥变换分量d2,基于SM2算法协同解密协议传递中间结果,并对加密结果进行协同解密,获取解密结果。
本实施例中协同解密方案的具体实施步骤如下所示:
Alice持有第一私钥变换分量d1,Bob持有第二私钥变换分量d2
S31、输入基于SM2算法的加密结果C=C1||C3||C2。Alice和Bob接收到该加密结果C并可以对该加密结果进行操作。
Alice和Bob协同执行如下协议,获取解密结果M′。
S32、Alice从加密结果C中提取第一比特串C1,将第一比特串C1的数据类型转换为第一椭圆曲线群元素
Figure BDA0002341062820000186
可选的,数据类型转换方法按照GB/T 32918.1标准给出的方法执行。
S33、Alice使用第一私钥变换分量d1和第一椭圆曲线群元素
Figure BDA0002341062820000191
计算得到第一中间结果
Figure BDA0002341062820000192
将第一中间结果T1和第一椭圆曲线群元素
Figure BDA0002341062820000193
发送给Bob。
S34、Bob接收第一中间结果T1和第一椭圆曲线群元素
Figure BDA0002341062820000194
Bob使用第二私钥变换分量d2,计算得到第二中间结果
Figure BDA0002341062820000195
第二椭圆曲线群元素
Figure BDA0002341062820000196
S35、Bob计算第三中间结果t=KDF(x2||y2,klen),其中||表示拼接,KDF(*)为预先定义的密钥派生函数,klen表述输出的比特串长度。密钥派生函数的作用是从一个共享的秘密比特串中派生出密钥数据,可选的,密钥派生函数采用国家标准GB/T 32918.4标准给出的定义。
S36、Bob从加密结果C中提取第二比特串C2,并根据第三中间结果t,计算获取解密结果
Figure BDA0002341062820000197
其中
Figure BDA0002341062820000198
表示按位异或运算。
更进一步的,在步骤S36之后,还包括以下步骤:Bob计算u=Hv(x2||M′||y2),然后从加密结果C中提取第三比特串C3,若u≠C3则提示错误,并退出解密流程,若u=C3,则输出解密结果M′。该步骤对解密结果进行校验,保证解密结果的正确性。
更进一步的,在所述步骤S32之后,进一步包括以下步骤:
验证第一椭圆曲线群元素
Figure BDA0002341062820000199
是否满足椭圆曲线E(Fq),若不满足则提示错误,并退出解密流程;
计算并判断椭圆曲线点S=[h]
Figure BDA00023410628200001910
是否为无穷远点,若是无穷远点,则提示错误,并退出解密流程。其中h为余因子,hE(Fq)/n,n为基点G的阶。
上述验证步骤可以参照国家标准《GB/T32918.4》。
更进一步的,在所述步骤S35之后,进一步包括以下步骤:验证第三中间结果t是否为全0比特串,若是则提示错误,并退出解密流程。
上述验证步骤来对中间计算结果进行检查,提升安全性,如果不进行检查,则其后续步骤计算及传输的中间结果可能会泄漏私钥的部分信息。
必须指出,在上述基于SM2算法的协同解密方法中,Alice和Bob的角色可以互换,即可以代表客户端、服务端其中一个角色,如果Alice是客户端则Bob是服务端。一般地,优先选择客户端执行Bob的步骤,因为服务器端执行Alice的步骤,则客户端计算输出解密结果,这样有利于保护用户隐私。
本发明的基于SM2算法的协同解密方案,结合移动端的特点,利用移动设备(客户端)和云端密码服务(服务端)共同产生SM2密钥,并将密钥分割为两部分(私钥分量),分别由移动设备端和云端密码服务器各自保存,由移动设备和云端共同完成数据解密,保证了数据解密过程中密钥不被泄露,并能有效的保护移动设备端的密钥安全性。协同解密过程中不使用原始的乘法分享的私钥分量,通信双方均无法获取到对方私钥的任何信息,因此攻击者在入侵其中任何一方的情况下,都不能解密密文。
本发明还提供了一种可以实现上述基于SM2算法的协同解密方法的协同解密装置。图2揭示了根据本发明一实施例的协同解密装置的结构示意图,如图2所示,该协同解密装置包括第一通信方100和第二通信方200:
所述第一通信方100包括第一密钥获取单元101、第一密钥变换单元102和第一协同解密单元103;所述第二通信方200包括第二密钥获取单元201、第二密钥变换单元202和第二协同解密单元203。
第一密钥获取单元101,与第一密钥变换单元102连接,获取乘法分享的第一私钥分量DA,并发送给第一密钥变换单元102,与第二密钥获取单元201连接。
第二密钥获取单元201,与第二密钥变换单元202连接,获取乘法分享的第二私钥分量DB,并发送给第二密钥变换单元202。
所述第一密钥变换单元102和第二密钥变换单元202,进行中间数据交换,将乘法分享的第一私钥分量DA和第二私钥分量DB,变换为加法分享的第一私钥变换分量d1和第二私钥变换分量d2,满足如下变换关系,
Figure BDA0002341062820000201
n为素数,是椭圆曲线E的基点G的阶。
所述第一协同解密单元103,与第一密钥变换单元102连接,接收第一密钥变换单元102的第一私钥变换分量d1;所述第二协同解密单元203,与第二密钥变换单元202连接,接收第二密钥变换单元202的第二私钥变换分量d2。第一协同解密单元103和第二协同解密单元203,基于SM2算法的协同解密协议传递中间结果,并对加密结果进行协同解密,获取解密结果。
更进一步的,所述第一密钥变换单元102和第二密钥变换单元202,采用基于茫然传输协议实现私钥分量变换,具体通过以下方法实现:
第一通信方100和第二通信方200在椭圆曲线E上随机选取一个群元素P作为公共参数。
第一密钥变换单元102,计算得到第一私钥变换分量d1
Figure BDA0002341062820000211
Figure BDA0002341062820000212
xi为随机选择的l个随机数。
第一密钥变换单元102,接收第二密钥变换单元202发送的混淆因子集合{Ui},根据随机参数VaP和混淆因子集合{Ui},对随机数xi,i∈{1,2,…,l}与第一私钥分量DA的模逆
Figure BDA0002341062820000213
形成的第一集合{〈sj,s′j>}的每一个元素分别加密计算,得到加密结果集合{<Xj,X′j>},j∈{1,2,…,l},向第二密钥变换单元202发送随机参数Va和加密结果集合{<Xj,X′j>}。
第二密钥变换单元202,根据第一密钥变换单元102发送的随机参数Va和加密结果集合{<Xj,X′j>},计算分享参数集合{ti},计算得到第二私钥变换分量d2
Figure BDA0002341062820000214
所述分享参数集合{ti}中每一个元素ti与第二私钥分量DB的模逆
Figure BDA0002341062820000215
中的1个比特相对应。
其中,混淆因子集合{Ui},由第二密钥变换单元202通过步骤S2中的方式获得;随机参数Va、VaP、第一集合{<sj,s′j>},由第一密钥变化单元102通过步骤S22中的方式获得。
更进一步的,所述第一密钥变换单元102,对第一集合{<sj,s′j>}的每一个元素进行加密计算,加密计算公式通过上述步骤S23中的方式获得。
更进一步的,所述分享参数集合{ti}的计算公式,由第二密钥变换单元202通过上述步骤S24中的方式获得。
以下对第一协同解密单元103与第二协同解密单元203的协同解密过程进行详细说明。
加密结果C=C1||C3||C2,基于SM2算法的公钥进行加密,符合相应SM2标准。
第一协同解密单元103,接收加密结果C=C1||C3||C2,并提取第一比特串C1,根据第一比特串C1计算得到第一椭圆曲线群元素
Figure BDA0002341062820000221
结合第一私钥变换分量d1计算得到第一中间结果T1,将第一中间结果T1和第一椭圆曲线群元素
Figure BDA0002341062820000222
发送给第二协同解密单元203。
第二协同解密单元203,接收第一中间结果T1和第一椭圆曲线群元素
Figure BDA0002341062820000223
接收加密结果C=C1||C3||C2,并提取第二比特串C2,根据第一中间结果T1、第一椭圆曲线群元素
Figure BDA0002341062820000224
第二私钥变换分量d2,计算得到计算获取解密结果M′。
更进一步的,第二协同解密单元203通过以下方法计算获取解密结果M′:
根据第一中间结果T1、第二私钥变换分量d2和第一椭圆曲线群元素
Figure BDA0002341062820000225
计算得到第二中间结果
Figure BDA0002341062820000226
第二椭圆曲线群元素
Figure BDA0002341062820000227
Figure BDA0002341062820000228
计算得到第三中间结果t=KDF(x2||y2,klen),其中,||表示拼接,KDF(*)为预先定义的密钥派生函数,klen为输出的比特串长度;
从加密结果C提取第二比特串C2,根据第三中间结果t,计算获取解密结果
Figure BDA0002341062820000229
其中
Figure BDA00023410628200002210
表示按位异或运算。
更进一步的,第二协同解密单元203,对解密结果M′进行校验,计算u=Hv(x2||M′||y2),从加密结果C中提取第三比特串C3,若u≠C3则提示错误,退出解密流程,若u=C3,则输出解密结果M′。
基于同样的理由,较佳的,第一通信方100是服务器,第二通信方200是客户端,则客户端计算输出解密结果,这样有利于保护用户隐私。
如果系统仅需支持协同解密操作,不需要支持协同签名操作,则在获得第一私钥变换分量d1和第二私钥变换分量d2之后,第一通信方100可以销毁第一私钥分量DA并仅存储第一私钥变换分量d1,第二通信方200可以销毁第二私钥分量DB并仅存储第二私钥变换分量d2,进一步保证原始乘法分享的私钥分量DA、DB的安全性。
如果系统需要同时支持协同解密、协同解密操作,则第一通信方100需要同时存储私钥分量d1和DA,第二通信方200需要同时存储私钥分量d2和DB
图3揭示了根据本发明一实施例的协同解密系统的框图。协同解密系统可包括内部通信总线301、处理器(processor)302、只读存储器(ROM)303、随机存取存储器(RAM)304、通信端口305、输入/输出端306以及硬盘307。内部通信总线301可以实现协同解密系统组件间的数据通信。处理器302可以进行判断和发出提示。在一些实施例中,处理器302可以由一个或多个处理器组成。
通信端口305可以实现协同解密系统与外部的输入/输出设备之间进行数据传输与通信。在一些实施例中,协同解密系统可以通过通信端口305从网络发送和接收信息及数据。在一些实施例中,协同解密系统可以通过输入/输出端306以有线的形式与外部的输入/输出设备之间进行数据传输与通信。在一些实施例中,输入端为虚拟键盘,在解密过程中供用户在移动终端输入验证信息,验证信息可以是PIN码。
协同解密系统还可以包括不同形式的程序储存单元以及数据储存单元,例如硬盘307,只读存储器(ROM)303和随机存取存储器(RAM)304,能够存储计算机处理和/或通信使用的各种数据文件,以及处理器302所执行的可能的程序指令。处理器302执行这些指令以实现方法的主要部分。处理器302处理的结果通过通信端口305传给外部的输出设备,在输出设备的用户界面上显示。
举例来说,上述的协同解密方法的实施过程文件可以为计算机程序,保存在硬盘307中,并可记载到处理器302中执行,以实施本申请的方法。
需要指出的是,术语“计算机”应该做广义的理解,可以包括但不限于云计算服务器,智能移动终端,物联网设备,计算机电脑等。对于移动端,私钥分量/私钥变换分量可以储存在本地介质中,对于服务端,私钥分量/私钥变换分量可以选择储存在数据库、HSM内部。
协同解密方法的实施过程文件为计算机程序时,也可以存储在计算机或移动设备的可读存储介质中作为制品。例如,计算机可读存储介质可以包括但不限于磁存储设备(例如,硬盘、软盘、磁条)、光盘(例如,压缩盘(CD)、数字多功能盘(DVD))、智能卡和闪存设备(例如,电可擦除可编程只读存储器(EPROM)、卡、棒、键驱动)。此外,本文描述的各种存储介质能代表用于存储信息的一个或多个设备和/或其它机器可读介质。术语“机器可读介质”可以包括但不限于能存储、包含和/或承载代码和/或指令和/或数据的无线信道和各种其它介质(和/或存储介质)。
本发明提供的一种SM2算法的协同解密方法及装置、系统、介质,实现两个参与方之间协同完成解密,该解密必须由两方共同参与,并且原始的私钥分量不参与解密过程,在数据解密过程中不会恢复完整的私钥,既保证数据解密的正确性,又能保证密钥的安全性。
本发明具体具有以下技术效果:
1)通过基于ECC的茫然传输协议来执行私钥变换操作,这样可以在协同解密方案中采用SM2标准算法实现全部过程,而不需要引入其他类型的半同态加密算法,有利于产品标准化,满足合规性;
2)茫然传输协议的效率较高,相比逐比特传输可以减少大量运算步骤。
尽管为使解释简单化将上述方法图示并描述为一系列动作,但是应理解并领会,这些方法不受动作的次序所限,因为根据一个或多个实施例,一些动作可按不同次序发生和/或与来自本文中图示和描述或本文中未图示和描述但本领域技术人员可以理解的其他动作并发地发生。如本申请和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其他的步骤或元素。
上述实施例是提供给熟悉本领域内的人员来实现或使用本发明的,熟悉本领域的人员可在不脱离本发明的发明思想的情况下,对上述实施例做出种种修改或变化,因而本发明的保护范围并不被上述实施例所限,而应该是符合权利要求书提到的创新性特征的最大范围。

Claims (30)

1.一种基于SM2算法的协同解密方法,其特征在于,包括以下步骤:
S1第一通信方和第二通信方分别获取第一私钥分量DA和第二私钥分量DB
S2第一通信方和第二通信方的第一私钥分量DA和第二私钥分量DB进行加法分享变换,获得第一私钥变换分量d1和第二私钥变换分量d2,满足如下变换关系,
Figure FDA0003815878950000011
n为素数,是椭圆曲线E的基点G的阶,
其中,第一私钥变换分量d1和第二私钥变换分量d2为加法分享的私钥分量,用于执行后续的协同解密操作;
S3第一通信方和第二通信方,采用第一私钥变换分量d1和第二私钥变换分量d2,基于SM2算法协同解密协议传递中间结果,并对加密结果进行协同解密,获取解密结果;
其中,所述步骤S2中,私钥分量进行加法分享变换,采用基于茫然传输协议的私钥分量变换协议实现,进一步包括以下步骤:
S21第一通信方和第二通信方在椭圆曲线E上随机选取一个群元素P作为公共参数;
S22第二通信方基于SM2算法计算得到混淆因子集合{Ui}={U1,U2,...,Ui},所述混淆因子集合{Ui}中每一个元素Ui与第二私钥分量DB的模逆
Figure FDA0003815878950000013
中的1个比特相对应;
第二通信方将混淆因子集合的计算结果{Ui}发给第一通信方;
S23第一通信方接收混淆因子集合{Ui};
选择l个随机数x1,x2,...,xl,根据随机参数VaP和混淆因子集合{Ui},对随机数xi,i∈{1,2,…,l}与第一私钥分量DA形成的第一集合{<sj,s′j>}的每一个元素分别加密计算,得到加密结果集合{<Xj,X′j>},j∈{1,2,…,l};
第一通信方计算得到第一私钥变换分量d1
Figure FDA0003815878950000012
第一通信方将随机参数Va和加密结果集合{<Xj,X′j>}发送给第二通信方;
S24第二通信方接收随机参数Va和加密结果集合{<Xj,X′j>};
根据随机参数Va和加密结果集合{<Xj,X′j>},计算分享参数集合{ti},所述分享参数集合{ti}中每一个元素ti与第二私钥分量DB的模逆
Figure FDA0003815878950000026
中的1个比特相对应;
计算得到第二私钥变换分量d2
Figure FDA0003815878950000021
第一私钥变换分量d1和第二私钥变换分量d2,满足如下变换关系,
Figure FDA0003815878950000022
2.根据权利要求1所述的基于SM2算法的协同解密方法,其特征在于,所述步骤S21中,第一通信方和第二通信方通过密钥协商算法,协商选取公共参数。
3.根据权利要求1所述的基于SM2算法的协同解密方法,其特征在于,所述步骤S22中,混淆因子集合{Ui}的计算方法,进一步包括以下步骤:
S221选择l个随机数m1,m2,...,mi,...ml,l为第二私钥分量DB的模逆
Figure FDA0003815878950000023
的比特长度;
S222第二通信方从第二私钥分量DB的模逆
Figure FDA0003815878950000024
中提取每一个比特bi∈{0,1},i∈{1,2,…,l};
S223第二通信方根据比特bi的值来决定计算Ui的计算公式:
若bi=0,计算Ui=[mi]G;
若bi=1,计算Ui=P-[mi]G;
其中,G是椭圆曲线E的基点,P是协商选取的公共参数,[mi]G代表基点G的mi倍点。
4.根据权利要求1所述的基于SM2算法的协同解密方法,其特征在于,所述步骤S23中,随机参数Va、VaP和第一集合{<sj,s′j>}通过以下步骤获得:
根据第一私钥分量DA,计算得到第一集合{<sj,s′j>},j∈{1,2,…,l},其中第j个元素<sj,s′j>的计算公式为:
Figure FDA0003815878950000025
选取1个比特长度为l的随机数a∈{0,1}l,计算随机参数Va和VaP,其中随机参数Va和VaP的计算公式为:
Figure FDA0003815878950000031
5.根据权利要求4所述的基于SM2算法的协同解密方法,其特征在于,所述步骤S23中,第一集合{<sj,s′j>}的每一个元素分别加密计算,得到加密结果集合{<Xj,X′j>},第j个元素<Xj,X′j>的计算公式:
Figure FDA0003815878950000032
6.根据权利要求5所述的基于SM2算法的协同解密方法,其特征在于,所述步骤S24中,分享参数集合{ti}的计算方法,进一步包括以下步骤:
S2411第二通信方从第二私钥分量DB的模逆
Figure FDA0003815878950000033
中提取每一个比特bi∈{0,1},i∈{1,2,…,l};
S2412第二通信方根据比特bi的值来决定计算分享参数集合{ti}的计算公式:
若bi=0,计算
Figure FDA0003815878950000034
若bi=1,计算
Figure FDA0003815878950000035
7.根据权利要求4所述的基于SM2算法的协同解密方法,其特征在于,所述步骤S23中,第一集合{<sj,s′j>}的每一个元素分别加密计算,得到加密结果集合{<Xj,X′j>},第j个元素<Xj,X′j>的计算公式:
Figure FDA0003815878950000036
8.根据权利要求7所述的基于SM2算法的协同解密方法,其特征在于,所述步骤S24中,分享参数集合{ti}的计算方法,进一步包括以下步骤:
S2421第二通信方从第二私钥分量DB的模逆
Figure FDA0003815878950000037
中提取每一个比特bi∈{0,1},i∈{1,2,…,l};
S2422第二通信方根据比特bi的值来决定计算分享参数集合{ti}的计算公式:
若bi=0,计算
Figure FDA0003815878950000041
若bi=1,计算
Figure FDA0003815878950000042
9.根据权利要求4所述的基于SM2算法的协同解密方法,其特征在于,所述步骤S23中,第一集合{<sj,s′j>}的每一个元素分别加密计算,得到加密结果集合{<Xj,X′j>},第j个元素<Xj,X′j>的计算公式:
Figure FDA0003815878950000043
10.根据权利要求9所述的基于SM2算法的协同解密方法,其特征在于,所述步骤S24中,分享参数集合{ti}的计算方法,进一步包括以下步骤:
S2431第二通信方从第二私钥分量DB的模逆
Figure FDA0003815878950000044
中提取每一个比特bi∈{0,1},i∈{1,2,…,l};
S2432第二通信方根据比特bi的值来决定计算分享参数集合{ti}的计算公式:
若bi=0,计算:
Figure FDA0003815878950000045
若bi=1,计算:
Figure FDA0003815878950000046
11.根据权利要求1所述的基于SM2算法的协同解密方法,其特征在于,所述第一私钥变换分量d1设为固定值。
12.根据权利要求1所述的基于SM2算法的协同解密方法,其特征在于,所述步骤S3进一步包括以下步骤:
S31输入基于SM2算法的加密结果C=C1||C3||C2
S32第一通信方从加密结果C提取第一比特串C1
将第一比特串C1的数据类型转换为第一椭圆曲线群元素
Figure FDA0003815878950000047
S33第一通信方根据第一私钥变换分量d1和第一椭圆曲线群元素
Figure FDA0003815878950000048
计算得到第一中间结果
Figure FDA0003815878950000051
将第一中间结果T1和第一椭圆曲线群元素
Figure FDA0003815878950000052
发送给第二通信方;
S34第二通信方接收第一中间结果T1和第一椭圆曲线群元素
Figure FDA0003815878950000053
第二通信方根据第一中间结果T1、第二私钥变换分量d2和第一椭圆曲线群元素
Figure FDA0003815878950000054
计算得到第二中间结果
Figure FDA0003815878950000055
第二椭圆曲线群元素
Figure FDA0003815878950000056
S35第二通信方计算得到第三中间结果t=KDF(x2||y2,klen),其中,||表示拼接,KDF(*)为预先定义的密钥派生函数,klen为输出的比特串长度;
S36第二通信方从加密结果C提取第二比特串C2,根据第三中间结果t,计算获取解密结果
Figure FDA0003815878950000057
其中
Figure FDA0003815878950000058
表示按位异或运算。
13.根据权利要求12所述的基于SM2算法的协同解密方法,其特征在于,所述步骤S36之后,进一步包括以下步骤:第二通信方计算u=Hv(x2||M′||y2),从加密结果C中提取第三比特串C3,若u≠C3则提示错误,并退出解密流程,若u=C3,则输出解密结果M′。
14.根据权利要求12所述的基于SM2算法的协同解密方法,其特征在于,所述步骤S32之后,进一步包括以下步骤:
验证第一椭圆曲线群元素
Figure FDA0003815878950000059
是否满足椭圆曲线E(Fq),若不满足则提示错误,并退出解密流程;
计算并判断椭圆曲线点
Figure FDA00038158789500000510
是否为无穷远点,若是无穷远点,则提示错误,并退出解密流程,其中h为余因子,h=E(Fq)/n,n为基点G的阶。
15.根据权利要求12所述的基于SM2算法的协同解密方法,其特征在于,所述步骤S35之后,进一步包括以下步骤:验证第三中间结果t是否为全0比特串,若是则提示错误,并退出解密流程。
16.一种基于SM2算法的协同解密装置,其特征在于,包括第一通信方和第二通信方:
所述第一通信方包括第一密钥获取单元、第一密钥变换单元和第一协同解密单元;
所述第二通信方包括第二密钥获取单元、第二密钥变换单元和第二协同解密单元:
所述第一密钥获取单元,获取乘法分享的第一私钥分量DA,所述第二密钥获取单元,获取乘法分享的第二私钥分量DB
所述第一密钥变换单元和第二密钥变换单元,将乘法分享的第一私钥分量DA和第二私钥分量DB,变换为加法分享的第一私钥变换分量d1和第二私钥变换分量d2,满足如下变换关系,
Figure FDA0003815878950000061
n为素数,是椭圆曲线E的基点G的阶;
所述第一协同解密单元,接收第一密钥变换单元得到的第一私钥变换分量d1,第二协同解密单元,接收第二密钥变换单元得到的第二私钥变换分量d2
第一协同解密单元和第二协同解密单元,基于SM2算法的协同解密协议传递中间结果,并对加密结果进行协同解密,获取解密结果;
其中,所述第一密钥变换单元和第二密钥变换单元,采用基于茫然传输协议实现私钥分量变换:
第一通信方和第二通信方在椭圆曲线E上随机选取一个群元素P作为公共参数;
所述第一密钥变换单元,随机选择的l个随机数xi,i∈{1,2,…,l},计算得到第一私钥变换分量d1
Figure FDA0003815878950000062
所述第一密钥变换单元,根据随机参数VaP和混淆因子集合{Ui},对随机数xi,i∈{1,2,…,l}与第一私钥分量DA形成的第一集合{<sj,s′j>}的每一个元素分别加密计算,得到加密结果集合{<Xj,X′j>},j∈{1,2,…,l},向第二密钥变换单元发送随机参数Va和加密结果集合{<Xj,X′j>};
所述第二密钥变换 单元,基于SM2算法计算得到混淆因子集合{Ui}={U1,U2,...,Ui},向第一密钥单元发送混淆因子集合{Ui},所述混淆因子集合{Ui}中每一个元素Ui与第二私钥分量DB的模逆
Figure FDA0003815878950000071
中的1个比特相对应;
所述第二密钥变换单元,根据随机参数Va和加密结果集合{<Xj,X′j>},计算分享参数集合{ti},计算得到第二私钥变换分量d2
Figure FDA0003815878950000072
所述分享参数集合{ti}中每一个元素ti与第二私钥分量DB的模逆
Figure FDA0003815878950000073
中的1个比特相对应。
17.根据权利要求16所述的基于SM2算法的协同解密装置,其特征在于,所述混淆因子集合{Ui}={U1,U2,...,Ui},由第二密钥变换单元通过以下方式获得:
选择l个随机数m1,m2,...,mi,...mi,l为第二私钥分量DB的模逆
Figure FDA0003815878950000074
的比特长度;
从第二私钥分量DB的模逆
Figure FDA0003815878950000075
中提取每一个比特bi∈{0,1},i∈{1,2,…,l};
根据比特bi的值来决定计算Ui的计算公式:
若bi=0,计算Ui=[mi]G;
若bi=1,计算Ui=P-[mi]G;
其中,G是椭圆曲线E的基点,P是协商选取的公共参数,[mi]G代表基点G的mi倍点。
18.根据权利要求16所述的基于SM2算法的协同解密装置,其特征在于,所述随机参数Va、VaP和第一集合{<sj,s′j>},由第一密钥变换单元通过以下方式获得,
选择l个随机数x1,x2,...,xl,根据第一私钥分量DA,计算得到第一集合{<sj,s′j>},j∈{1,2,…,l},其中第j个元素<sj,s′j>的计算公式为:
Figure FDA0003815878950000076
选取1个比特长度为l的随机数a∈{0,1}l,计算随机参数Va和VaP,其中随机参数Va和VaP的计算公式为:
Figure FDA0003815878950000081
19.根据权利要求18所述的基于SM2算法的协同解密装置,其特征在于,所述第一密钥变换单元,对第一集合{<sj,s′j>}的每一个元素分别加密计算,得到加密结果集合{<Xj,X′j>},第j个元素<Xj,X′j>的计算公式为:
Figure FDA0003815878950000082
20.根据权利要求19所述的基于SM2算法的协同解密装置,其特征在于,所述分享参数集合{ti},由第二密钥变换单元通过以下方式获得:
从第二私钥分量DB的模逆
Figure FDA0003815878950000083
中提取每一个比特bi∈{0,1},i∈{1,2,…,l};
根据比特bi的值来决定计算分享参数集合{ti}的计算公式:
若bi=0,计算
Figure FDA0003815878950000084
若bi=1,计算
Figure FDA0003815878950000085
21.根据权利要求18所述的基于SM2算法的协同解密装置,其特征在于,所述第一密钥变换单元,对第一集合{<sj,s′j>}的每一个元素分别加密计算,得到加密结果集合{<X′j,X′j>},第j个元素<Xj,X′j>的计算公式为:
Figure FDA0003815878950000086
22.根据权利要求21所述的基于SM2算法的协同解密装置,其特征在于,所述分享参数集合{ti},由第二密钥变换单元通过以下方式获得:
从第二私钥分量DB的模逆
Figure FDA0003815878950000087
中提取每一个比特bi∈{0,1},i∈{1,2,…,l};
根据比特bi的值来决定计算分享参数集合{ti}的计算公式:
若bi=0,计算
Figure FDA0003815878950000088
若bi=1,计算
Figure FDA0003815878950000089
23.根据权利要求18所述的基于SM2算法的协同解密装置,其特征在于,所述第一密钥变换单元,对第一集合{<sj,s′j>}的每一个元素分别加密计算,得到加密结果集合{<Xj,X′j>},第j个元素<Xj,X′j>的计算公式为:
Figure FDA0003815878950000091
24.根据权利要求23所述的基于SM2算法的协同解密装置,其特征在于,所述分享参数集合{ti},由第二密钥变换单元通过以下方式获得:
从第二私钥分量DB的模逆
Figure FDA0003815878950000092
中提取每一个比特bi∈{0,1},i∈{1,2,…,l};
根据比特bi的值来决定计算分享参数集合{ti}的计算公式:
若bi=0,计算:
Figure FDA0003815878950000093
若bi=1,计算:
Figure FDA0003815878950000094
25.根据权利要求16所述的基于SM2算法的协同解密装置,其特征在于:
所述第一协同解密单元,接收加密结果C并提取第一比特串C1,根据第一比特串C1计算得到第一椭圆曲线群元素
Figure FDA0003815878950000095
结合第一私钥变换分量d1计算得到第一中间结果T1,将第一中间结果T1和第一椭圆曲线群元素
Figure FDA0003815878950000096
发送给第二协同解密单元;
所述第二协同解密单元,接收第一中间结果T1和第一椭圆曲线群元素
Figure FDA0003815878950000097
接收加密结果C并提取第二比特串C2,根据第一中间结果T1、第一椭圆曲线群元素
Figure FDA0003815878950000098
第二私钥变换分量d2,计算获取解密结果M′。
26.根据权利要求25所述的基于SM2算法的协同解密装置,其特征在于:所述第二协同解密单元通过以下方法计算获取解密结果M′:
根据第一中间结果T1、第二私钥变换分量d2和第一椭圆曲线群元素
Figure FDA0003815878950000099
计算得到第二中间结果
Figure FDA0003815878950000101
第二椭圆曲线群元素
Figure FDA0003815878950000102
Figure FDA0003815878950000103
计算得到第三中间结果t=KDF(x2||y2,klen),其中,||表示拼接,KDF(*)为预先定义的密钥派生函数,klen为输出的比特串长度;
从加密结果C提取第二比特串C2,根据第三中间结果t,计算获取解密结果
Figure FDA0003815878950000104
其中
Figure FDA0003815878950000105
表示按位异或运算。
27.根据权利要求26所述的基于SM2算法的协同解密装置,其特征在于:所述第二协同解密单元,对解密结果M′进行校验,计算u=Hv(x2||M′||y2),从加密结果C中提取第三比特串C3,若u≠C3则提示错误,退出解密流程,若u=C3,则输出解密结果M′。
28.根据权利要求25所述的基于SM2算法的协同解密装置,其特征在于,第一通信方是服务器,第二通信方是客户端。
29.一种基于SM2算法的协同解密系统,包括:
存储器,用于存储可由处理器执行的指令;
处理器,用于执行所述指令以实现如权利要求1-15任一项所述的方法。
30.一种计算机可读介质,其上存储有计算机指令,其中当计算机指令被处理器执行时,执行如权利要求1-15任一项所述的方法。
CN201911376285.8A 2019-12-27 2019-12-27 一种基于sm2算法的协同解密方法及装置、系统、介质 Active CN111049650B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911376285.8A CN111049650B (zh) 2019-12-27 2019-12-27 一种基于sm2算法的协同解密方法及装置、系统、介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911376285.8A CN111049650B (zh) 2019-12-27 2019-12-27 一种基于sm2算法的协同解密方法及装置、系统、介质

Publications (2)

Publication Number Publication Date
CN111049650A CN111049650A (zh) 2020-04-21
CN111049650B true CN111049650B (zh) 2022-10-25

Family

ID=70239251

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911376285.8A Active CN111049650B (zh) 2019-12-27 2019-12-27 一种基于sm2算法的协同解密方法及装置、系统、介质

Country Status (1)

Country Link
CN (1) CN111049650B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113630240B (zh) * 2020-05-09 2024-04-26 成都天瑞芯安科技有限公司 一种拟态安全密码计算系统
CN111756537B (zh) * 2020-07-13 2022-11-29 广州安研信息科技有限公司 基于sm2标准的两方协同解密方法、系统及存储介质
CN112055021B (zh) * 2020-09-08 2021-07-23 苏州同济区块链研究院有限公司 一种基于椭圆曲线的茫然传输方法及装置
CN112019335B (zh) * 2020-09-18 2023-12-29 上海市数字证书认证中心有限公司 一种基于sm2算法的多方协同加解密方法及装置、系统、介质
CN112910645A (zh) * 2021-04-13 2021-06-04 三未信安科技股份有限公司 一种基于椭圆曲线的分布式协同解密方法
CN113381854B (zh) * 2021-05-21 2022-05-31 杭州趣链科技有限公司 数据传输方法、装置、设备和存储介质
CN113300841B (zh) * 2021-05-25 2022-11-25 贵州大学 一种基于身份的协同签名方法及系统
CN113676462B (zh) * 2021-08-03 2022-08-19 北京海泰方圆科技股份有限公司 一种密钥分发、解密方法、装置、设备及介质
CN114584285B (zh) * 2022-05-05 2022-07-29 深圳市洞见智慧科技有限公司 安全多方处理方法及相关设备
CN115955302B (zh) * 2022-12-02 2023-07-04 杭州脉讯科技有限公司 一种基于协同签名的国密安全通信方法
CN116132029B (zh) * 2022-12-22 2023-09-26 泉城省实验室 基于三选一茫然传输协议的通配符模式匹配方法及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108667625A (zh) * 2018-07-19 2018-10-16 数安时代科技股份有限公司 协同sm2的数字签名方法
CN108667627A (zh) * 2018-07-20 2018-10-16 武汉大学 基于两方协同的sm2数字签名方法
CN108667626A (zh) * 2018-07-20 2018-10-16 陕西师范大学 安全的两方协作sm2签名方法
CN109474422A (zh) * 2018-11-19 2019-03-15 武汉大学 一种多方协同产生sm2数字签名的方法
CN109672539A (zh) * 2019-03-01 2019-04-23 深圳市电子商务安全证书管理有限公司 Sm2算法协同签名及解密方法、装置及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8861716B2 (en) * 2010-03-30 2014-10-14 International Business Machines Corporation Efficient homomorphic encryption scheme for bilinear forms

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108667625A (zh) * 2018-07-19 2018-10-16 数安时代科技股份有限公司 协同sm2的数字签名方法
CN108667627A (zh) * 2018-07-20 2018-10-16 武汉大学 基于两方协同的sm2数字签名方法
CN108667626A (zh) * 2018-07-20 2018-10-16 陕西师范大学 安全的两方协作sm2签名方法
CN109474422A (zh) * 2018-11-19 2019-03-15 武汉大学 一种多方协同产生sm2数字签名的方法
CN109672539A (zh) * 2019-03-01 2019-04-23 深圳市电子商务安全证书管理有限公司 Sm2算法协同签名及解密方法、装置及系统

Also Published As

Publication number Publication date
CN111049650A (zh) 2020-04-21

Similar Documents

Publication Publication Date Title
CN111049650B (zh) 一种基于sm2算法的协同解密方法及装置、系统、介质
CN111130804B (zh) 一种基于sm2算法的协同签名方法及装置、系统、介质
CN111162906B (zh) 一种基于茫然传输算法的协同秘密分享方法及装置、系统、介质
CN110870250B (zh) 密钥协商设备和方法
US20220353083A1 (en) Leveraging Multiple Devices To Enhance Security Of Biometric Authentication
CN109088726B (zh) 基于sm2算法的通信双方协同签名及解密方法和系统
CN108352015B (zh) 用于基于区块链的系统结合钱包管理系统的安全多方防遗失存储和加密密钥转移
CN110383754B (zh) 基于椭圆曲线同源的密钥协商协议
CN107395368B (zh) 无介质环境中的数字签名方法及解封装方法与解密方法
CN110224812B (zh) 一种基于多方安全计算的电子签名移动客户端与协同服务器通信的方法以及设备
JP2007510947A (ja) 多数当事者の効率的な乗算のための方法及び装置
WO2009026771A1 (fr) Procédé pour négocier une clé, chiffrer et déchiffrer des informations, signer et authentifier les informations
CN105027492B (zh) 用于确定共享密钥的设备、方法和系统
CN110224816B (zh) 基于密钥卡和序列号的抗量子计算应用系统以及近距离节能通信方法和计算机设备
CN104158880A (zh) 一种用户端云数据共享解决方法
CN112118113A (zh) 一种基于sm2算法的多方协同群签名方法及装置、系统、介质
KR20100024605A (ko) Rsa기반 패스워드 인증을 통한 세션키 분배방법
CN113132104A (zh) 一种主动安全的ecdsa数字签名两方生成方法
WO2020042023A1 (zh) 一种即时通信的数据加密方法及装置
CN113556225A (zh) 一种基于哈希及密钥交换的高效psi方法
CN117155615A (zh) 数据加密传输方法、系统、电子设备及存储介质
CN111756537A (zh) 基于sm2标准的两方协同解密方法、系统及存储介质
CN113904833B (zh) 一种基于门限的动态多因素身份认证方法和通信方法
Zhu et al. Provably Secure Multi-server Privacy-Protection System Based on Chebyshev Chaotic Maps without Using Symmetric Cryptography.
CN112019335B (zh) 一种基于sm2算法的多方协同加解密方法及装置、系统、介质

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