第31卷第1期北京电子科技学院学报
2023年3月Vol.31No.1
Journal of Beijing Electronic Science and Technology Institute Mar.2023
基于SM2的云端双方协同签名方案设计与应用∗
许盛伟㊀邓㊀烨㊀田㊀宇
北京电子科技学院,北京市㊀100070
摘㊀要:针对当前国内对基于国密算法的协同签名方案的相关研究较少,方案的效率和安全性难以达到实际应用需求等问题,本文对基于SM2的协同签名方案进行优化设计和应用㊂通过提出私钥分片方案和移动智能终端私钥安全管理技术,保障了用户私钥安全㊂方案中私钥分别存储在移动智能终端和云端,移动智能终端使用私钥进行数字签名时,需要和云端联合签名服务器协同工作,保证在签名过程中的敏感数据安全性和签名结果的合法性㊂同时本方案结合SM2算法的特点优化实现了云端双方协同签名系统,采用自主设计的预计算技术提高了协同签名效率㊂通过实验验证和性能测试,本方案在安全性方面优于同类且在效率上不受损失,易于成果转化,可以广泛应用于移动办公㊁即时通信和网络音视频会议等应用中㊂关键词:私钥分片;协同签名;移动智能终端;国密算法中图分类号:TN915.08㊀㊀㊀文献
标识码:A
文章编号:1672-464X (2023)1-01-08
∗㊀基金项目:国家重点研发计划(项目编号:2022YFB3104402);中央高校基本科研业务费专项资金资助(项目编号:328202221)
∗∗㊀作者简介:许盛伟(1976-),男,教授,博士生导师,研究方向为大数据安全㊁人工智能与密码应用㊂
邓㊀烨(1999-),男,硕士研究生,主要研究方向为密码应用(E-mail:dyaipai@163)㊂
田㊀宇(1998-),男,硕士研究生,主要研究方向为零信任安全㊂
引㊀言
㊀㊀当前国外的密码研究水平处于前沿位置,并且有较为完善的密码产品和体系,国内的大型企业㊁银行等资本雄厚的机构也青睐于使用外国的密码产品,但在美国的 棱镜门 事件发生后,我们不得不考虑其存在的后门问题,这使得我国网络安全甚至国家安全都受到了严重的威胁㊂上述这些数据和事件不断提醒我们推动国产化信息安全产品的研发和使用,把相关技术掌握在自己手中,努力建立健全密码产品体系及管理体制,亟需推进信息产品㊁密码产品的国产化替代㊂
目前国内在对于保障信息安全的手段中起到重要作用的协同签名方案的研究多是基于国
外算法如AES 等,基于国密算法的协同签名方案仅有几篇专利和少数论文,在安全性和效率方面都无法适应用户的需求㊂例如‘基于国密算法分片密钥技术的政务移动安全接入研究“[4]一文提出的基于SM9密钥分片的政务方案,虽然有着密钥分片的思想,但是缺乏对私钥安全性保护的方案,不符合密码安全要求,而本方案则提出了终端安全管理技术,通过PIN 码的设计保证了密钥管理的安全性,通过测试验证了本系统的设计思路是可行的㊂另如在‘基于组合密钥的智能电网多源数据安全保护“[5]中,提出了根据不同条件获得分片方案,把一个密钥分成若干个互不相同的子密钥片,然后把这些密钥分片组合生成新的密钥,分配到系统中的不同终端
北京电子科技学院学报2023年
上,这种方案过程繁琐,效率不高,在实际应用中难以适配,本系统与其相比在安全性得到保证的前提下运行效率有所提高㊂
因此,本文基于这些问题与应用需求,在国家政务信息系统和关键基础设施国产化密码应用要求的指导下,对基于国密算法的协同签名方案进行设计和优化,该方案满足了移动智能终端对于协同签名以及一些通用密码服务等方面的安全需求,同时提升了协同签名过程的效率㊂本文提出的基于SM2算法的协同签名方案,主要贡献有三个方面:
应用分片密钥技术,根据相关密码模块技术要求,提出了基于门限思想的密钥分片技术,实现移动智能终端和云端的密钥分片存储,使移动智能终端和云端不再存储完整的用户私钥,提高了抵抗同时攻击的能力,解决密钥管理的安全和密码运算的安全问题㊂
同时基于密钥分片存储,提出移动智能终端私钥安全管理技术㊂该技术使用PIN码来设计实现,移动智能终端在执行数字签名㊁数据加密等操作时需要与云端联合运算,通过在移动智能终端设置PIN码并在云端验证,能够有效抵抗针对移动智能终端PIN码的离线暴力攻击,提升了安全强度㊂
提出基于SM2国密算法的快速协同签名技术,针对国密算法的特点,设计了预计算的处理环节㊂简化了协同签名流程,提高了协同签名效率,且网络资源㊁硬件资源消耗较低,并具备很好的安全性㊂相较于之前的类似方案,本方案在安全性和效率方面皆得到了提高,具有很好的应用前景㊂
基于SM2算法的协同签名方案的设计依托于拥有我国自主知识产权的SM2椭圆曲线公钥密码算法,可解决签名安全㊁终端存储密钥安全㊁个人隐私安全㊁数据安全㊁移动办公等安全问题,下一步将对本文成果进行系统集成,为日后的实际应用做好准备,为我国关键信息基础设施的国产化替代作出卓越贡献㊂
1㊀相关知识
1.1㊀门限法
Shamir教授在1979年曾提出基于门限秘密共享的分布式签名[6],门限秘密共享指的是n 个实体分别持有私钥的一部分,当且仅当凑齐超过阈值数量的被分割密钥才可以恢复成完整密钥,从而完成签名或解密的工作㊂这种方法虽然实现了分布式签名,然而一旦私钥被恢复,持有完整私钥的一方就可以在其他实体不知晓的情况下任意使用私钥,造成极大的安全隐患㊂1.2㊀SM2签名算法
2010年底,国家密码管理局公布了我国自主研制的 椭圆曲线公钥密码算法 (SM2算法)[7]㊂SM2椭圆曲线公钥密码算法是我国自主设计的公钥密码算法,包括SM2-1椭圆曲线数字签名算法,SM2-2椭圆曲线密钥交换协议, SM2-3椭圆曲线公钥加密算法,分别用于实现数字签名密钥协商和数据加密等功能㊂SM2签名算法包含了以下四个步骤㊂(1)初始化(Setup):
给定安全参数λ,生成椭圆曲线参数params=(p,a,b,P,q)并输出㊂
(2)密钥生成(Key):
给定参数后,选择随机数xɪZ∗q作为私钥,计算Q=x㊃P作为公钥,输出(Q,x)作为公私钥对㊂
(3)签名算法(Sign):
给定参数params,私钥x以及消息m,签名者将执行以下步骤:
①计算Z=H v(ENTL||IDA||a||b||pk),其中IDA是用户的可辩别标识,ENTL是IDA的长度,计算M=Z||M;
②计算e=H v(M);
③选择随机数kɪZ∗q,计算椭圆曲线点R =k㊃P=(x1,y1);
㊃2㊃
第31卷基于SM2的云端双方协同签名方案设计与应用㊀
④计算r=x1+e mod q,s=(1+x)-1(k-r㊃x)mod q;
⑤输出签名δ=(r,s)㊂
(4)验证算法(Ver):
给定参数params公钥Q=x㊃P,消息mᶄ以及它的签名δᶄ=(rᶄ,sᶄ),验证算法运行如下:
①检验rᶄ,sᶄɪZ∗q是否成立;
②设Mᶄ=Z||Mᶄ,计算eᶄ=H v(Mᶄ);
③计算t=rᶄ+sᶄ,若t=0则验证不通过;否则计算椭圆曲线点Rᶄ=sᶄˑP+t㊃Q=(x1ᶄ, y1ᶄ),验证rᶄ=eᶄ+x1ᶄmod q是否成立,验证通过则输出1,否则输出0㊂
2㊀方案设计及实现方法
㊀㊀针对移动智能终端中对于身份认证㊁数字签名等密码应用的需求,本文设计并优化了基于SM2算法的协同签名方案,实现了在移动智能终端可以进行密钥分片的生成和安全存储㊂在本方案中主要是基于SM2算法,采用了密钥分片存储㊁协同签名技术以及终端私钥安全管理技术,同时针对SM2算法的特点对协同签名流程进行优化,实现了签名过程中的敏感数据安全性和签名结果的合法性,同时在签名速度方面得到提高㊂
2.1㊀方案设计
如图1所示,本方案设计了一个由云端㊁移动智能终端组成的基于SM2的云端双方协同签名方案㊂通过创新性的快速协同签名技术㊁密钥分片技术㊁终端私钥安全管理技术,使得本方案相较于同类方案,在安全性得到大大提升的同时保证了运行效率不受太多损耗㊂
方案中的云端负责响应移动智能终端的密钥分片㊁协同签名请求,提供云端公㊁私钥分片生成功能;在密钥分片过程中向移动智能终端发送云端产生的云端公钥分片,同时接收移动智能终端发送的终端公钥分片,与移动智能终端交互完成密钥的分片;
在协同签名过程中发送和接收移
图1㊀本方案的设计架构图
动智能终端发送的协同签名的各种中间值,与移动智能终端交互完成协同签名,接收到用户的ID㊁PIN码及公钥分片后,将向服务器密码设备发出储存申请将用户的ID㊁PIN码及公钥分片储存至服务器密码设备中,在云端需要用户口令㊁密钥数据时临时向服务器密码设备进行申请㊂
移动智能终端部分通过app上集成的密码模块即移动智能终端密码模块提供分片密钥生成㊁更新和存储功能㊂其中封装了多种安全接口,支持多种开发语言,提供分片密钥存储和管理功能等㊂它由多个模块组成,包括SM2协同签名模块㊁验签模块㊁SM3杂凑模块㊁SM4加解密模块㊁密钥管理模块和通信模块,上层封装成SM2协同签名㊁验签接口,作为对外部提供的接口㊂其中密钥管理模块又包含密钥的生成㊁更新和存储㊂移动智能终端基于java实现,在安卓系统上运行㊂通过调用GmSSL库函数来完成一系列功能,其中GmSSL是个开源的密码工具箱,支持SM2/SM3/SM4/SM9/ZUC等国密算法㊂云端密码模块则与密钥管理模块相互配合达成包括密钥生成㊁更新和存储等功能(通过调用云端密码设备)㊂密码机设备用于储存用户的PIN码,以及私钥分片㊂设备使用中安网脉基于云端密码设备的软硬件设备㊂
㊃3㊃
北京电子科技学院学报2023年
本系统进行协同签名主要分为两个步骤,即密钥分片和协同签名㊂
(1)密钥分片
进行密钥分片时,主要调用密钥生成模块生成部分私钥,使用密钥存储模块进行公私钥的存储,在云端会将公私钥存储在云端密码设备中,此外,本系统还利用PIN码对移动智能终端私钥分片进行保护㊂
(2)协同签名
进行协同签名时,主要调用SM2协同签名模块;移动智能终端和云端的通信模块负责协同签名过程中的参数传递㊂
(3)安全的传输协议
移动智能终端与云端通信使用HTTPS安全传输协议,以保证用户PIN码㊁签名计算中间值不会泄露,以及预防可能遭到的重放攻击㊂2.2㊀实现方法
(1)密钥分片技术
密钥分片技术即将私钥分割为两个部分:第一分片子密钥和第二分片子密钥㊂第一分片子密钥存放到移动智能终端,第二分片子密钥则由云端服务器派生生成,两个分片子密钥完成协同签名㊂最后,完成的协同签名在移动智能终端生成,完整签名可以实现数据的不可否认和操作的不可抵赖㊂密钥分片具体流程如图2所示㊂定义p为大素数,Fp为有限域㊂选择a,bɪFp作为椭圆曲线E的参数,定义P为椭圆曲线E上的一点,并且将其作为G的生成元㊂G 的阶为q,M为待签名的消息,ENTL为IDT的长度,IDT为签名用户的名字㊂其余未注明变量均为计算的中间变量,pk为联合公钥,pk A为移动智能终端公钥分片,pk B为云端公钥分片,d A为移动智能终端私钥分片㊁d B为云端私钥分片㊂①移动智能终端随机秘密选择私钥分片d A ɪZ q,并计算公钥分片pk A=d AˑP,后将pk A传给云端㊂
②云端随机秘密选择私钥分片d BɪZ q,
图2㊀密钥分片流程图
算出公钥分片pk B=d BˑP与完整公钥pk= d A d B P-P,即pk=d B pk A-P,并将(pk,d B,pk A)储存至UsbKey中,将pk B传输给移动智能终端㊂③移动智能终端接受到云端的公钥分片后即可计算出公钥pk,pk=d A d B P-P,即pk=d A pk B-P,存储(pk,d A,pk B)㊂
④移动智能终端设置PIN码,该PIN码和用户ID及其私钥绑定,并存储在Usbkey中㊂(2)快速协同签名技术
移动智能终端密码模块使用第一分片子密钥对消息进行签名后,将部分签名结果s传递给云端服务器,云端服务器使用第二分片子密钥对签名结果变换后生成t并传回给移动智能终端㊂整个协同签名只使用两个报文(1个来回)就完成整个过程,简化了协同签名流程,提高了协同签名效率,网络资源㊁硬件资源消耗较低,也具备很好的安全性㊂协同签名流程如图3所示㊂①移动智能终端输入PIN码,加载密钥分片㊂
②移动智能终端和云端进行相互验证,云端通过身份验证后即可向UsbKey申请与用户对应的密钥分片㊂移动智能终端秘密选择k AɪZ∗q,
㊃4㊃
第31卷基于SM2的云端双方协同签名方案设计与应用㊀
图3㊀协同签名流程图
并计算R A=k AˑP,RᶄA=k Aˑpk B,并将R A与RᶄA的值传给云端;在云端验证是否满足R A=d B
ˑRᶄ
A,若满足,则计算R B=k Bˑpk A,RᶄB=k BˑP,并将R B,RᶄB发送给移动智能终端㊂移动智能终端收到消息后,验证是否满足R B=d AˑRᶄB,若满足,则开始进行签名㊂
③移动智能终端使用分片私钥生成部分签名sᶄ计算Rᶄ=R A+R B=(x A,y A),Z A=SM3 (ENTL ID T a b P pk),r=SM3(Z A M) +x A mod q,计算sᶄ=(k A+r)d A-1mod q然后将sᶄ的值发送给云端并请求云端进行协同签名㊂
④云端计算t=(sᶄ+k B)d B-1mod q,生成部分签名,然后将t的值发送给移动智能终端㊂
⑤移动智能终端计算s=t-r,并输出协同签名(r,s)㊂
3㊀性能测试与分析
㊀㊀云端测试环境:
硬件环境:
CPU:Intel Xeon(R)Bronze3106CPU@1.70GHzˑ16RAM:16.0GB
安卓软件签名工具软件环境:系统:Ubuntu20.04.3LTS64位
测试平台:Qt Creator4.8.0Based on Qt 5.12.0(GCC5.3.1)
移动智能终端测试环境:
硬件环境:
CPU:海思麒麟970处理器RAM:6.0GB
软件环境:系统:Android10
测试平台:Android studio11
测试范围:对该协同签名方案的实际性能进行测试㊂
3.1㊀性能测试
性能数据如下图所示,程序运行资源消耗较低,资源占比仅维持在百分之十左右
图4㊀移动智能终端CPU
测试图
图5㊀移动智能终端内存测试图
表1㊀性能测试数据
序号测试项测试项描述值
1协同签名速度平均每秒签名速度40次/秒2密钥生成速度平均每秒密钥生成90次/秒3.2㊀性能分析
(1)密钥分片
密钥分片技术将私钥分成两个部分,分别存
㊃5㊃

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。