根据GSMA移动智库(GSMA intelligence)实时数据[1],目前全球有超过51.3亿人拥有移动设备(即全球66.53%的人口拥有移动设备,如手机、平板电脑或支持蜂窝网络的物联网设备).通常情况下,移动设备通过无线通信与各种服务提供者(如数字货币交易所、DNS、网络购物等)进行通信.然而,开放的网络连接和简单的设备安全部署使得移动设备极易成为网络攻击的目标.因此,服务提供商在提供服务之前,往往需要移动设备向服务器做身份认证,以保证移动网络服务的安全性和可靠性.
数字签名伴随着网络安全的需求而出现,其作用类似于传统的手书签名或印章的电子标记,可以在网络世界中达到与手写签名类似的作用,在信息安全,包括身份鉴别、数据完整性、抗抵赖性等方面,特别是在大型网络安全通信中的密钥分配、身份鉴别及电子商务系统中具有重要作用.相较于其他公钥密码体制,椭圆曲线密码体制(elliptic curve cryptography, ECC)[2]的安全性可以归约到椭圆曲线群上的离散对数困难问题,同时具有密钥长度短、计算速度快等优点,适用于资源受限的移动设备.
在数字签名中,密钥是实施安全身份和消息认证的基础,而密钥泄露往往给网络攻击者可乘之机,例如当密钥泄露并且数字签名被应用于恶意软件时,它会欺骗扫描下载的浏览器过滤器和防病毒软件,让设备认为它来自可信媒介[3].在移动互联网环境中的移动设备,例如智能手机、平板电脑等终端设备自身也存在一些安全隐患:1)移动设备易丢失或被盗,导致内部包含的密钥易丢失或被窃取;2)移动设备搭载的操作系统及第三方程序可能存在漏洞,易被攻击者利用从而实现冷启动等攻击,导致用户密钥信息泄露;3)移动设备可能包含恶意软件,导致用户执行数字签名时数据被攻击者截获.
传统的密钥安全解决方案有2种:1)将密钥存储在外部硬件令牌(U盾、智能卡等),但存在携带不便且成本高的问题,难以应用到移动设备中;2)使用协同签名的思想[4],即存在2个及以上设备分别存储密钥的一部分,数字签名由参与方协同完成,任何参与方都无法掌握完整密钥,这种方法有效保证了在单个设备被恶意实体控制的情况下用户密钥的安全性.
SM2是中国基于椭圆曲线的公钥密码标准,由国家密码管理局于2010年发布,相关标准为“GM
T0003—2012《SM2椭圆曲线公钥密码算法》”[5],目前是中国国家密码标准(GB
T 32918—2016),其中数字签名算法同时还收录于国际标准ISO
IEC 14888—3:2018《信息安全技术带附录的数字签名第3部分:基于离散对数的机制》中.中国二代身份证已全面使用SM2数字签名技术提供身份鉴别.此外,《中国人民共和国密码法》第二十七条明确了关键信息基础设施应当使用商用密码进行保护,网络产品及服务相关密码国产化成为大势所趋.因此,本文针对SM2签名算法设计协同签名协议,为SM2签名密钥的安全存储和使用提供一种高效的解决思路.
本文的主要贡献有3个方面:
1) 针对移动互联网环境下的特殊需求,设计一种轻量级的非平衡SM2协同签名方案,客户端在服务器的帮助下协同完成签名,且不暴露密钥信息.
2) 对设计的协同签名协议提供了完整的安全性证明,结果表明我们所提方案可以有效保护SM2签名密钥.
3) 相关功能、性能的测试结果表明提出的SM2两方协同签名以较小的性能代价提高了密钥的安全性,具有较好的应用价值.
基于门限秘密共享的分布式签名由Shamir教授于1979年提出[6],经过持续的研究已经有丰富的理论成果.最初的门限秘密共享指的是n个实体分别持有私钥的一部分,当且仅当超过阈值t个被分割密钥才可以恢复完整私钥,完成签名或解密操作.但是一旦私钥被恢复,持有完整私钥的那一方就可以在其他实体不知晓的情况下任意使用私钥,带来极大的安全隐患.
因此,MacKenzie和Reiter教授[7]首次提出针对DSA
ECDSA的两方签名协议,私钥同样是分割存放在2个实体中,但是签名操作无须私钥恢复,而是通过双方交互式协议的方式完成,同时保证了协议执行过程中没有泄露双方持有私钥碎片的信息.随后,经由Gennaro和Boneh等学者[8-9]的努力,DSA
ECDSA签名协议得到(t,n)门限框架上的扩展.但是他们使用的分布式Paillier密钥生成使得整体性能较差,Lindell教授[4]于2017年在密码学会议CRYPTO上发表了一个改进的两方ECDSA协同签名方案,仅依赖Paillier的同态加密功能,完成2个实体协同产生公钥和签名的过程,极大提高了协同签名的性能.
自此,门限签名以其优越的密钥保护特性受到学者们的广泛关注.Doerner等学者[10]提出了基于秘密共享和不经意传输协议的(2,n)门限ECDSA签名方案和(t,n)门限ECDSA签名方案.与以往使用同态加密的方案相比,Doerner等学者[10]使用基于Simplest Oblivious Transfer[11]和KOS[12]的隐私乘法协议,在计算性能方面做出了优化.同年,Gennaro等人[13]和Lindell等学者[14]分别发表了新的(t,n)门限ECDSA签名方案,并在基于模拟的模型下证明了协议的安全性.
此外,国内外学者还提出了针对其他密码算法的密钥安全解决方案.Frederiksen等学者[15]提出了一种相对高效的两方RSA密钥生成方案.但是,该方案需要多次使用Paillier同态加密算法,带来较高的通信和计算开销,而且无法扩展到多方框架.针对IEEE P1363标准中基于身份的数字签名,Zhang和He等学者[16-17]先后设计了2种两方协同签名方案,前者仍沿用基于同态加密的方法实现密钥的安全保护,而后者在此基础上取消了同态加密的协助,极大提升了协同签名的速度.随后,Feng等学者[18]利用加法秘密共享的思路,将IEEE P1363标准中基于身份的数字签名协议扩展到了多方.
针对中国数字签名标准SM2,Zhang等学者[19]提出了SM2数字签名算法的两方协同签名方案,但是签名过程中同样需要使用Paillier同态加密操作,方案的执行效率较低.尚铭等学者[20]设计的SM2门限密码算法,因其交互次数过多而导致计算和通信代价相对较大.综上所述,国内外学者在基于门限签名的密钥保护方面已经取得一定的研究成果,但这些成果难以适用于计算和存储资源受限的移动终端.
本节我们主要介绍与论文设计方案相关的基础知识.
根据《SM2椭圆曲线公钥密码算法》规范,SM2数字签名的定义为:
E为有限域Fp上满足y2=x3+ax+b mod p,a,b∈Fp且(4a3+27b2) mod p≠0的椭圆曲线.E上所有点的集合构成加法循环群 G
其中
是无穷远点.
G是 G上阶为n的基点(生成元).
H:{0,1}*→Zn是输出整数的Hash函数,H256:{0,1}*→{0,1}256是输出256 b比特串的Hash函数.
SM2私钥表示为随机数d←RZn,对应的公钥为Ppub=d×G.消息M∈{0,1}*的SM2数字签名σ=(r,s)的生成步骤如下:
1) 计算e=H(Z‖M),其中Z=H256(ENTL‖ID‖a‖b‖xG‖yG‖xpub‖ypub)是将用户字节长度为ENTL的身份标识符ID,椭圆曲线参数a,b,G的坐标xG,yG和公钥Ppub的坐标xpub,ypub使用Hash函数计算而来的256 b长的Hash值;
2) 生成随机数k←Zn;
3) 计算(x1,y1)=R=k×G;
4) 计算r=(e+x1) mod n,s=(1+d)-1×(k-r×d) mod n.若r=0,r+k=n或s=0则返回第2)步.
5) 签名结果为σ=(r,s).
SM2签名的验证过程为:计算
判断
是否成立.为了加快签名速度,SM2常用的一种变形为公钥Ppub=(d-1-1)×G,签名值s=d×(k+r)-r mod n.因此,本文针对这种变形签名算法设计两方计算协议,以实现快速的SM2协同签名.
安全两方计算(secure two-party computation, 2PC)由姚期智教授于1986年提出[21-22],是指2个参与方在无须进行数据归集的情况下完成数据协同计算,同时保护数据所有方的原始数据隐私.协议双方在数据保留在各自本地的情况下,执行既定的计算逻辑并获得计算结果,其隐私性要求为:在计算完成后,计算双方除了自己的输入数据、自己输入数据相关的中间结果和输出结果外,无法获知任何额外的有效信息.针对签名算法的形式化描述为:计算双方分别持有私钥d1,d2,当确定待签名消息M后,共同计算签名逻辑fsign(M,d1,d2),得到正确的签名值σ=(r,s).
该过程要求2PC签名协议满足:
1) 数据隐私性.协议执行过程中的中间数据及结果都不会泄露关于d1,d2的相关信息.
2) 健壮性.诚实执行协议后,参与方输出正确的签名结果σ .
3) 兼容性.不改变签名结果的形式,使用原始验证算法可正确完成签名验证.
这3点可以保证数字签名过程中所需满足的密钥保护要求,以及2PC签名协议在工程化实现中所需达到的便捷性.
本节详细描述了安全性证明所基于的安全模型和本文方案的设计目标.
本文协议的安全性证明框架是基于游戏的MPC安全证明模型[23-24],即通过构造模拟协议,利用与敌手的交互,将安全性归约到原始签名方案的安全假设.
1) 通信模型
假设系统参数(以及SM2的标准参数)可以通过高效、安全的方式传递给所有参与方.此外,还有一个连接着2个参与方的点对点通道来承载协议的交互.
2) 敌手能力
假设概率多项式时间(probabilistic polynomial time, P.P.T)敌手
是恶意的,即它可以在协议执行过程中任意地偏离协议设定.如果双方都被
控制,那么证明是无意义的.所以我们假设
可以控制其中一方,并且知道腐化方的所有秘密值.此外,假设敌手
是静态的,即仅在协议执行之前确定腐化哪一方,在协议执行过程中不会发生角色转变.一般来讲敌手
是非常高效的,可以非常及时地处理本轮消息,即它可以在接收到诚实方在这一轮中发送的消息之后,迅速发送己方的消息.因此,在安全证明的过程中,通信的每一轮都是由诚实方首先发送消息给腐败方,随后立即接收
返回的消息.
进一步定义
的视图包括所有腐败方的输入、随机带和根据协议设定需传输的所有文本.恶意的敌手
不仅可以从其视图进行分析,还可以采取各种方法更新其视图以了解更多信息.
3) 安全目标
传统的签名方案在针对选择明文攻击下的存在性不可伪造(existential unforgeability against chosen-message attacks, EU-CMA)的安全模型[25]中得到了证明.假定概率多项式时间(P.P.T)敌手
已知公钥且可以自适应地选择任何消息进行签名查询.
定义1. EU-CMA.假定签名方案π的安全参数为λ,在EU-CMA模型下,如果P.P.T敌手
在多项式次签名查询后,仍无法以一个不可忽略的概率伪造一个新消息(未被查询过)的签名,那么此签名方案是可证明安全的,即:
![]()
(1)
协同签名方案的定义为分布式签名生成方法,而输出的签名在原验证算法下也是有效的.由此同样可以定义协同签名方案的存在性不可伪造.
定义2. TwoParty-EU-CMA.假定两方签名协议Π的安全参数为λ,如果P.P.T敌手
在控制了参与方Dμ(μ∈{U,S})的情况下,同时允许
获知多项式组消息签名协议实例的视图,
仍无法以一个不可忽略的概率伪造出一个新消息(之前未被签名的消息)的签名,那么此协议满足存在性不可伪造的安全性,即:
与EU-CMA定义不同的是,敌手可以看到腐化方的密钥生成和签名协议实例的视图.定义2遵循基于游戏的MPC安全证明模型.此外,基于现有框架[26],可以将本文设计的协议扩展到一个更强的基于模拟的安全性证明,但是复杂度也有相应地增加.
本文将基于零知识证明理想功能,承诺-零知识证明理想功能完成SM2两方协同签名的构造以及安全性证明.
1) 零知识证明理想功能![]()
根据Lindell等学者[14]的定义,零知识证明函数可以形式化表示为
其中λ是公共字符串,
定义了声明x和证据w的关系.其形式化具体定义如下:
与客户端U和服务器S进行交互:
当接收到来自U(或S)的指令(prove,sid,x,w).如果sid已使用过,则忽略此消息.否则向另一参与方S(或U)发送
其中
当且仅当![]()
2) 承诺-零知识证明理想功能![]()
的构造基于非交互式零知识证明,首先由证明者发送关于零知识证明的承诺,随后打开承诺并且验证零知识证明来实现.具体定义为
与客户端U和服务器S进行交互:
① 当接收到来自U(或S)的指令(com-prove,sid,x,w).如果
或sid已使用过,则忽略此消息.否则记录(sid,U(或S),x)并向S(或U)发送(proof-receipt,sid);
② 当接收到来自U(或S)的指令(decom-proof,sid).如果查询到(sid,U(或S),x)则向另一参与方S(或U)发送(decom-proof,sid,x).
在本文协同SM2的设计中,
特指关于加法循环群G上的离散对数关系的零知识证明,即:
DLOG={(G,G,n,P,w)|P=w×G},
其中,G是群G上阶为n的生成元.关于DLOG的证明可以使用经典的Sigma协议[27],同时利用Fiat-Shamir框架[28]实现非交互式的零知识证明.此外,任意一个通用可组合安全的承诺方案[29-30]均可以满足本文关于安全性的需求,例如在随机谕言机下,使用一个Hash函数H和随机数r即可定义关于x的承诺Com(x)=H(x,r).
在本文设计的协议中,生成SM2数字签名涉及2个参与方:客户端U和服务器S.协议内容包括密钥生成协议和协同签名协议,其中密钥生成协议执行一次,协同签名协议可以执行若干次.我们并未改变SM2签名方案的系统参数及椭圆曲线,关于SM2的系统初始化部分则可参考《SM2椭圆曲线公钥密码算法》规范.
SM2密钥生成算法由客户端U和服务器S共同参与完成.具体流程图如图1所示:
Fig. 1 The workflow of distributed key generation protocol
图1 密钥生成协议流程图
1) U→S:{IDU,承诺}
① U生成随机数dU←Zn作为部分私钥,计算部分公钥![]()
② U向
发送
即证明DU关于G的离散对数为
并将IDU发送给S.
2) S→U:{DS,π2}
① 当接收到
返回的消息(proof-receipt,sidkey)后,S生成随机数dS←Zn作为部分私钥,计算部分公钥![]()
② S发送
给
即证明
成立).
3) U→S:{DU,π1}
当接收到
返回的消息(proof,sidkey,DS,βS)后,若βS≠1,则说明零知识证明无效,U中止协议.否则,U发送(decom-proof,sidkey)给
指示其打开承诺.
4) U和S输出公钥:
若没有接收到
返回的消息(decom-proof,sidkey,DU),则说明承诺-零知识证明无效,那么S会中止协议;否则双方都计算公钥
即U计算
计算![]()
客户端U和服务器S在本阶段利用密钥生成阶段的密钥信息,协同产生关于消息M的SM2签名,并由客户端U输出最终签名结果.具体流程图如图2所示.
1) U→S:{e,承诺}
① U计算e=H(Z‖M),生成随机数kU←Zn,计算KU=kU×G.
② U向
发送(com-prove,sidsign,KU,kU)(承诺离散对数关系KU=kU×G),向S发送消息的Hash值e.
2) S→U:{KS,π4}
① 当接收到
返回的消息(proof-receipt,sidsign)后,S生成随机数kS←Zn,计算KS=kS×G.
② S向
发送(prove,sidsign,KS,kS)(即已知离散对数kU满足KU=kU×G).
3) U→S:{KU,π3}
① 当接收到
返回的消息(proof,sidsign,KS,βS)后,若βS≠1,则说明零知识证明无效,U中止协议.否则,U发送(decom-proof,sidsign)给
指示其打开承诺.
4) U→S:{r,s′}
① 若接收到
返回的消息(decom-proof,sidkey,KU),则说明承诺-零知识证明有效,S计算
mod n,s′=dS×r+kSmod n.
② S向U发送{r,s′}.
5) U输出签名σ:
① U计算s=dU×(s′+kU)-r mod n,令σ
(r,s).
② 使用SM2签名验证算法,验证σ是否为关于M的有效签名.若验证正确,那么U输出签名σ;否则U终止会话.
Fig. 2 The workflow of distributed signing protocol
图2 协同签名协议流程图
注:一次协同密钥生成需要3次通信,协同签名协议需要4次通信.若是在半诚实模型下,即参与方仅分析获取的消息,但会诚实执行协议,那么就不需要承诺和零知识证明,此时一次协同密钥生成仅需2次通信,协同签名协议需要2次通信(步骤2和4可以合在一起,而KS也无需发送).
根据密钥生成协议,有:
根据协同签名协议,可得:
![]()
![]()
s=dU×(s′+kU)-r mod n=
dU×(dS×r+kS+kU)-r mod n=![]()
此时的(r=x1+e mod n,s)可以看作是私钥d′=dS×dUmod n和随机数
mod n的SM2签名.
本文所设计的协同SM2签名方案的安全性是基于原始SM2签名方案的可证明安全性.
定理1. 假设原始的SM2签名是不可伪造的,那么在随机谕言机和
-混合模型下,本文所提出的两方SM2协同签名协议满足存在性不可伪造.
证明. 本文方案的安全性证明遵从模拟归约的论证方法,即假设概率多项式时间敌手
能以不可忽略的概率ε在协同SM2签名方案中伪造成功,那么我们将构造一个模拟器在原始SM2方案中充当伪造者,且伪造成功的概率也是不可忽略的.由于方案存在客户端U和服务器S 2种角色,我们考虑腐化的U和腐化的S这2种情况,并分别展示如何模拟密钥生成和协同签名协议.
假设敌手
控制了服务器S;我们现在构造一个模拟器
其任务是提取腐化方的输入,生成一个敌手不可区分的执行视图,并利用敌手构造的伪造签名攻击原始SM2方案.
1) 模拟密钥生成
① 模拟器
询问SM2密钥生成谕言机,接收一个SM2公钥Ppub;
② 模拟器
模拟
发送消息(proof-receipt,sidkey)给腐化方S,同时发送IDU给腐化方S;
③ 当接收到敌手
发送给
的
验证
是否成立,若不成立,
中止协议.否则,
计算DU=dS×(Ppub+G),模拟
发送(decom-proof,sidkey,DU)给腐化方;
④ 模拟器
本地存储
此时若敌手
诚实计算,则必定会得到正确的SM2公钥Ppub.
2) 模拟协同签名
① 模拟器
询问SM2签名谕言机,接收一个关于消息M的SM2签名结果σ=(r,s);
② 模拟器
模拟
发送消息(proof-receipt,sidsign)给腐化方S;
③ 当接收到敌手
发送给
的(prove,sidsign,KS,kS),模拟器
验证KS=kS×G是否成立,若不成立,
中止协议.否则,
执行下一步;
④ 模拟器
从签名中恢复R=s×G+(s+r)×Ppub,计算KU=dS×R-KS,并模拟
发送(decom-proof,sidsign,KU)给腐化方S;
⑤ 模拟器
接收腐化方S发来的(r,s′),验证s′=dS×r+kSmod n是否成立、以及r是否与SM2签名谕言机返回的r一致.若验证失败,则中止协议;否则输出σ=(r,s).
3) 不可区分性分析
观察模拟器的构造可知,
的视图分布与真实协议执行环境下密钥生成阶段U的输出是不可区分的,因为:①DU在模拟执行环境中(DU=dS×(Ppub+G))和在真实协议执行环境中
分布相同,均满足均匀随机分布;②模拟的离散对数零知识证明是随机且独立的,所以
无法分辨
的返回值与模拟器
模拟
的返回值.此外如果
提供不正确的零知识证明,那么模拟器
可以通过检查
使用
提交给
的
值),发现该恶意行为并中止.最后,
和
输出的公钥为Ppub,就是从SM2密钥生成谕言机中得到的公钥.因此,S的输出和诚实方U的输出分布是相同的.
在签名阶段,由于模拟承诺和离散对数零知识证明随机且独立,我们可以看到对KU承诺和打开承诺在
的视图上和诚实客户端U的输出分布是相同的.第1个区别是如何计算KU:U在真实协议执行环境中计算KU=kU×G;模拟器
使用
发送给
的KS值和从SM2签名谕言机中计算而来的R值得到的KU=dS×R-KS.显然,kU×G和dS×R-KS的分布是相同的,因为R,kU是随机选择的.此外,如果
偏离协议,
可以通过验证KS=kS×G和s′=dS×r+kS来判断,如果验证失败则中止协议,这与真实执行环境的情况一致.最后,
输出有效签名σ=(r,s),即从SM2签名谕言机中得到的有效签名.因此,
的视图和诚实方U的输出分布是相同的.
4) 伪造
对于敌手
来说,S腐化时的模拟协议与真实执行环境的协议是不可区分的.敌手将伪造一个新的签名(即模拟器
从未向SM2签名谕言机询问过待伪造签名的消息m*),其概率与真实世界中相同,即
成立.所以,S可以直接利用模拟器
的输出,作为原始SM2签名方案的伪造,伪造概率与敌手的伪造概率相等.
假设敌手
控制了客户端U;类似地,这种情况下我们构造模拟器
提取腐化方的输入,并生成一个敌手不可区分的执行视图,利用敌手构造的伪造签名攻击原始SM2方案.
1) 模拟密钥生成
① 模拟器
询问SM2密钥生成谕言机,接收一个SM2公钥Ppub;
② 模拟器
向敌手
发送(start,sidkey)指令,指示其开始执行密钥生成协议;
③ 当接收到敌手
发送给
的
以及腐化方U发来的IDU,模拟器
计算DS=dU×(Ppub+G),模拟
发送(proof,sidkey,DS,1)给腐化方U;
④ 当接收到敌手
发送给
的(decom-proof,sidsign),模拟器
验证
是否成立,若不成立则中止协议;否则,执行下一步;
⑤ 模拟器
本地存储
此时若敌手
诚实计算,必定会得到正确的SM2公钥Ppub.
2) 模拟协同签名
① 模拟器
询问SM2签名谕言机,接收一个关于消息M的SM2签名结果σ=(r,s);
② 模拟器
向敌手
发送(start,sidsign)的指令,指示其开始执行协同签名协议;
③ 当接收到敌手
发送给
的(com-prove,sidsign,KU,kU),模拟器
随机选择KS,并模拟
发送(proof,sidsign,KS,1)给腐化方U;
④ 当接收到敌手
发送给
的(decom-proof,sidsign),模拟器
验证KU=kU×G是否成立,若不成立,
中止协议;否则,
执行下一步;
⑤
计算
发送(r,s′)给腐化方S;
⑥ 若敌手
诚实执行协议,则会输出正确的SM2签名σ=(r,s).
3) 不可区分性分析
现在我们进一步证明对于
来说,模拟环境下执行的协议与真实环境下执行的协议是不可区分的.首先,在密钥生成阶段,
和
输出的公钥为Ppub,与SM2密钥生成谕言机输出的公钥相同.这是因为在
向
正确证明DS后,S计算DS=dU×(Ppub+G),因此
可得
与真实环境下执行的协议描述相同.如果
证明无效(通过检查
那么S输出协议中止,
不会获得任何关于Ppub的信息.由此可见,此阶段
的输出和诚实方U的输出分布是相同的.
类似地,模拟签名协议与真实签名协议的区别在于:①KS在模拟执行环境中是随机生成的,而在真实协议执行环境中是由随机数kS计算而来KS=kS×G,由于敌手无从得知关于kS的信息,因此二者均满足均匀随机分布,敌手视角不可区分;②S在真实环境中计算s′=dS×r+kSmod n;模拟器
使用
发送给
的KU值和从SM2签名谕言机返回的r,s计算
显然,他们在统计意义上是相近的,因为kS是随机选择的,而由SM2签名谕言机生成的(s,r)一定满足随机且均匀的特性(这是基于SM2签名的存在性不可伪造假设).此外,如果
不提供正确的零知识证明,
可以通过验证KU=kU×G发现该恶意行为并中止协议,这与真实执行环境的情况一致.最后,如果
诚实执行输出阶段的计算,将得到正确签名σ=(r,s),与从SM2签名谕言机中得到的签名一致.综上所述,对于敌手
来说,模拟协议与真实协议是不可区分的.
4) 伪造
根据分析我们可知U腐化时的模拟协议对于敌手
是不可区分性的,即:
在客户端U被腐化的情况下成立.由此可以推出模拟环境下(即m*之前未被签名)成功伪造的概率与真实环境中的相同的.那么
可以直接使用
的伪造在原始的SM2签名方案中进行伪造.
综上所述,如果敌手
在两方协同SM2协议中以不可忽略的概率伪造了一个签名,那么
也可以在原始SM2签名方案中以同样不可忽略的概率伪造签名,这与SM2的安全性假设相悖.可证得本文方案是可证明安全的.
证毕.
本节针对第4节所设计的协同SM2签名方案进行性能评估,此外还与原始SM2签名方案做了比较.测试所基于的参数遵循《SM2椭圆曲线公钥密码算法》规范中关于素数域Fp上的椭圆曲线定义,椭圆曲线的阶n为长度32 B的大整数,椭圆曲线点的长度为64 B(通过对坐标的压缩可以简化为33 B),Hash函数采用SM3算法.本文测试程序的构建基于开源密码学库MIRACL[31],测试环境为一台配置有64位Window10操作系统,Intel® CoreTM i5-8265 CPU@1.60 GHz,8.00 GB RAM的惠普笔记本电脑.
如表1所示,在恶意模型下,SM2密钥生成需要客户端和服务器分别执行一对零知识证明的生成和验证,以及一个椭圆曲线点乘,因此性能相近;SM2签名则需要客户端执行一对零知识证明的生成和验证、一个椭圆曲线点乘和一次SM2签名验证,服务器同样一对零知识证明的生成和验证,而
利用多点乘方法所需计算时间仅相当于1个点乘.而在半诚实模型下,双方均会诚实执行协议,因此可以省去零知识证明与最后的SM2签名验证,性能得到极大提高,特别是在签名阶段客户端所需计算时间已经与原始SM2签名所需时间大致相等.
Table 1 Runtime of Our Proposed Protocol
表1 本文协议计算性能的评估结果 ms
SecurityModelSM2 KeyGeneration ProtocolSM2 SigningProtocolClientServerClientServerMalicious Setting22.31422.69317.85517.827Semi-Honest Setting8.9049.2164.3818.965Original SM24.2484.395
Note: The computation time of semi-honest setting client is roughly equal to that of original SM2 signature.
接着,我们统计分析了协议在恶意模型和半诚实模型下的计算复杂度,如表2所示.根据协议设定,恶意模型下的密钥生成过程中,客户端与服务器之间相互发送一个椭圆曲线点和关于它的零知识证明,此外还有客户端向服务器发送的承诺;而签名比密钥生成多了服务器向客户端返回的(r,s′).表2所示的恶意模型通信复杂度中,括号中表示的是将椭圆曲线点进行压缩以后的通信量.同样,当去掉零知识证明后,通信复杂度也可以减到100 B以内.
Table 2 Communication Overhead of Our Proposed
Protocol
表2 本文协议通讯复杂度的评估结果 B
SecurityModelSM2 Key Generation ProtocolSM2 SigningProtocolMalicious Setting352(228)416(292)Semi-Honest Setting128(66)128(97)
Note: The communication overheads (and those values in brackets) are calculated based on uncompressed public keys (and compressed public keys, respectively).
总体来看,由于把私钥求逆的步骤放在密钥生成阶段中,因此密钥生成阶段的计算复杂度相对较高.但是在实际生活中密钥的生成并不频繁.而本文签名协议在客户端的性能几乎接近于原始SM2签名,因此对于用户设备来说有着非常小的计算压力,由此可见本文设计的方案在非平衡的客户端
服务器构架中有较好的应用前景.
为了保护移动互联网环境下用户存储于客户端的SM2密钥,本文基于协同签名的思想,设计了一个轻量级的SM2两方协同签名方案,它允许客户端和服务器在不泄露各自部分签名密钥的情况下共同完成SM2数字签名,产生签名的过程须由双方同时参与,生成签名的过程中也没有恢复过完整的签名密钥,充分保证签名密钥的安全性.此外,我们将协同签名的安全性归约到标准SM2签名,由此证明我们所提协议的安全性,即如果原始SM2是概率多项式时间不可伪造的,那么我们的协议也满足概率多项式时间不可伪造性.最后,本文针对协议的正确性和性能完成了测试与评估.实验结果表明,在半诚实模型下,客户端计算量为4.381 ms,接近相同环境下客户端执行一次原始SM2签名的时间.特别地,协同签名未改变签名结果的格式以及签名验证算法,与标准SM2数字签名算法具有很高的兼容性,因此在实际应用中具有广泛的应用前景.
[1]Newsroom of GSMA. Number of Mobile Subscribers Worldwide Hits 5 Billion[EB/OL]. [2017-02-27]. https://www.gsma.com/newsroom/press-re-lease/number-of-global-mobile-subscribers-to-surpass-five-billion-this-year/
[2]Xu Qiuliang, Li Daxing. Elliptic curve cruptosystems[J]. Journal of Computer Research and Development, 1999, 36(11): 2-9 (in Chinese)(徐秋亮, 李大兴. 椭圆曲线密码体制[J]. 计算机研究与发展, 1999, 36(11): 2-9)
[3]ESET. Plead malware distributed viaMitM attacks at router level, misusing ASUS WebStorage[EB/OL]. [2019-05-14]. https://www.welivesecurity.com/2019/05/14/plead-malware-mitm-asus-webstorage/
[4]Lindell Y. Fast secure two-party ECDSA signing[C] //Proc of Annual Int Cryptology Conf. Berlin: Springer, 2017: 613-644
[5]State Cryptography Administration. GM/T0003—2012 Public Key Cryptographic Algorithm SM2 Based on Elliptic Curves[S]. Beijing: Standards Press of China, 2010 (in Chinese)(国家密码管理局. GM/T0003—2012 SM2椭圆曲线公钥密码算法[S]. 北京: 中国标准出版社, 2010)
[6]Shamir A. How to share a secret[J]. Communications of the ACM, 1979, 22(11): 612-613
[7]MacKenzie P, Reiter M K. Two-party generation of DSA signatures[C] //Proc of Annual Int Cryptology Conf. Berlin: Springer, 2001: 137-154
[8]Gennaro R, Goldfeder S, Narayanan A. Threshold-optimal DSA/ECDSA signatures and an application to bitcoin wallet security[C] //Proc of Int Conf on Applied Cryptography and Network Security. Berlin: Springer, 2016: 156-174
[9]Boneh D, Gennaro R, Goldfeder S. Using level-1 homomorphic encryption to improve threshold DSA signatures for bitcoin wallet security[C] //Proc of Int Conf on Cryptology and Information Security in Latin America. Berlin: Springer, 2017: 352-377
[10]Doerner J, Kondi Y, Lee E, et al. Secure two-party threshold ECDSA from ECDSA assumptions[C] //Proc of 2018 IEEE Symp on Security and Privacy (SP). Piscataway, NJ: IEEE, 2018: 980-997
[11]Chou T, Orlandi C. The simplest protocol for oblivious transfer[C] //Proc of Int Conf on Cryptology and Information Security in Latin America. Berlin: Springer, 2015: 40-58
[12]Keller M, Orsini E, Scholl P. Actively secure OT extension with optimal overhead[C] //Proc of Annual Cryptology Conf. Berlin: Springer, 2015: 724-741
[13]Gennaro R, Goldfeder S. Fast multiparty threshold ECDSA with fast trustless setup[C] //Proc of the 2018 ACM SIGSAC Conf on Computer and Communications Security. New York: ACM, 2018: 1179-1194
[14]Lindell Y, Nof A. Fast secure multiparty ECDSA with practical distributed key generation and applications to cryptocurrency custody[C] //Proc of the 2018 ACM SIGSAC Conf on Computer and Communications Security. New York: ACM, 2018: 1837-1854
[15]Frederiksen T K, Lindell Y, Osheter V, et al. Fast distributed RSA key generation for semi-honest and malicious adversaries[C] //Proc of Annual Int Cryptology Conf. Berlin: Springer, 2018: 331-361
[16]Zhang Yudi, He Debiao, Zeadally S, et al. Efficient and provably secure distributed signing protocol for mobile devices in wireless networks[J]. IEEE Internet of Things Journal, 2018, 5(6): 5271-5280
[17]He Debiao, Zhang Yudi, Wang Ding, et al. Secure and efficient two-party signing protocol for the identity-based signature scheme in the IEEE P1363 standard for public key cryptography[J]. IEEE Transactions on Dependable and Secure Computing, 2018, doi: 10.1109/TDSC.2018.2857775
[18]Feng Qi, He Debiao, Liu Zhe, et al. Distributed signing protocol for IEEE P1363-compliant identity-based signature scheme[J]. IET Information Security, 2020, 14(4): 443-451
[19]Zhang Yudi, He Debiao, Zhang Mingwu, et al. A provable-secure and practical two-party distributed signing protocol for SM2 signature algorithm[J]. Frontiers of Computer Science, 2020, 14(3): 196-208
[20]Shang Ming, Ma Yuan, Lin Jingqiang, et al. A threshold scheme for SM2 elliptic curve cryptographic algorithm[J]. Journal of Cryptologic Research, 2014, 1(2): 155-166 (in Chinese)(尚铭, 马原, 林璟锵, 等. SM2椭圆曲线门限密码算法[J]. 密码学报, 2014, 1(2): 155-166)
[21]Yao A C. Protocols for secure computations[C] //Proc of the 23rd Annual Symp on Foundations of Computer Science. Piscataway, NJ: IEEE, 1982: 160-164
[22]Yao A C. How to generate and exchange secrets[C] //Proc of the 27th Annual Symp on Foundations of Computer Science. Piscataway, NJ: IEEE, 1986: 162-167
[23]Hazay C, Lindell Y. Efficient Secure Two-Party Protocols: Techniques and Constructions[M]. Berlin: Springer, 2010
[24]Lindell Y. How to simulate it—A tutorial on the simulation proof technique[M] //Tutorials on the Foundations of Cryptography. Berlin: Springer, 2017: 277-346
[25]Goldwasser S,Micali S, Rivest R L. A digital signature scheme secure against adaptive chosen-message attacks[J]. SIAM Journal on Computing, 1988, 17(2): 281-308
[26]Castagnos G, Catalano D, Laguillaumie F, et al. Two-party ECDSA from Hash proof systems and efficient instantiations[C] //Proc of Annual Int Cryptology Conf. Berlin: Springer, 2019: 191-221
[27]Schnorr C P. Efficient identification and signatures for smart cards[C] //Proc of Conf on the Theory and Application of Cryptology. Berlin: Springer, 1989: 239-252
[28]Fiat A, Shamir A. How to prove yourself: Practical solutions to identification and signature problems[C]//Proc of Conf on the Theory and Application of Cryptographic Techniques. Berlin: Springer, 1986: 186-194
[29]Blazy O, Chevalier C, Pointcheval D, et al. Analysis and improvement of Lindell’s UC-secure commitment schemes[C] //Proc of Int Conf on Applied Cryptography and Network Security. Berlin: Springer, 2013: 534-551
[30]Fujisaki E. Improving practical UC-secure commitments based on the DDH assumption[C] //Proc of Int Conf on Security and Cryptography for Networks. Berlin: Springer, 2016: 257-272
[31]Integer M, Rational Arithmetic C. C++ library (miracl)[CP/OL]. (2013-07-15)[2019-08-21]. https://github.com/miracl/MIRACL