一种基于SM2算法的密钥分量托管方法和系统技术方案

技术编号:15846991 阅读:39 留言:0更新日期:2017-07-18 19:50
一种基于SM2公钥密码算法的密钥分量托管方法和系统,属于信息安全领域。由N(N≥1)个不同的密钥分量托管系统构成一个密钥托管网络,采用密钥分割存储和多方联合计算的方式,将用户的SM2私钥分割为N+1个分量,由用户和N个不同的密钥分量托管系统分散保存,在需要使用私钥时,由用户和N个密钥分量托管系统联合完成相关计算。在用户密钥生成和使用阶段,密钥分量托管系统通过标识映射算法产生用户私钥分量,但不实际保存,可以大大减小系统建设规模,节约系统投资成本,提高系统运行效率和服务水平。

【技术实现步骤摘要】
一种基于SM2算法的密钥分量托管方法和系统
本专利技术涉及基于SM2公钥密码算法和密钥分割存储机制的密钥分量托管方法和系统,属于信息安全领域。
技术介绍
在互联网和云计算环境下,出现了大量与网络相关的应用,如网上银行、网上支付、网上购物和互联网医疗等,需要进行网上用户身份认证、网上操作确认和用户隐私保护,以保证网络应用的安全性。解决这种安全需求的最佳手段是使用公钥密码技术来实现数字签名和公钥加密。在使用公钥密码技术时,保证所使用私钥的安全则是关键所在。在通常情况下,为了保证私钥的存储安全和使用安全,用于签名和解密的私钥都要求保存在密码设备内,相应的密码运算也在密码设备内执行。所采用的密码设备在服务器端通常为密码机,在客户端为带CPU的USBKEY和IC卡等。但在网络环境和手机移动终端等环境下,使用这些密码设备来保存密钥和执行密码运算就很不方便,因而出现了将密钥保存在手机文件中并在手机上执行密码运算的应用需求。这种软环境给密钥的存储安全和使用安全带来很大隐患。为了提高密钥存储和密码运算的安全性,可以采用密钥分割存储和多方联合计算的方式,将用户的私钥分割为几个分量,各个私钥分量分散保存在本文档来自技高网...
一种基于SM2算法的密钥分量托管方法和系统

【技术保护点】
一种基于SM2公钥密码算法的密钥分量托管方法,其特征在于:应用于由N(N≥1)个不同的密钥分量托管系统所构成的一个密钥托管网络;所述方法包括:采用密钥分割存储和多方联合计算的方式,将用户端的SM2私钥分割为N+1个分量;由用户端和N个不同的密钥分量托管系统分散保存;在需要使用私钥对一个消息作数字签名时,由用户端和N个密钥分量托管系统联合完成签名计算,其中,计算形成的签名可使用用户端的公钥进行验证;在需要对用户端公钥加密后的密文进行解密时,由用户端和N个密钥分量托管系统联合完成对所述密文的解密计算,实现对所述密文的完整解密。

【技术特征摘要】
1.一种基于SM2公钥密码算法的密钥分量托管方法,其特征在于:应用于由N(N≥1)个不同的密钥分量托管系统所构成的一个密钥托管网络;所述方法包括:采用密钥分割存储和多方联合计算的方式,将用户端的SM2私钥分割为N+1个分量;由用户端和N个不同的密钥分量托管系统分散保存;在需要使用私钥对一个消息作数字签名时,由用户端和N个密钥分量托管系统联合完成签名计算,其中,计算形成的签名可使用用户端的公钥进行验证;在需要对用户端公钥加密后的密文进行解密时,由用户端和N个密钥分量托管系统联合完成对所述密文的解密计算,实现对所述密文的完整解密。2.根据权利要求1所述的密钥分量托管方法,其特征在于:所述方法还包括:在每个密钥分量托管系统中生成一个主密钥;通过一种标识映射算法,在用户密钥生成阶段,密钥分量托管系统采用所生成的主密钥对用户提供的识别信息进行分散映射,生成对应的私钥分量;其中,所述识别信息为:用户标识、用户设置的PIN码和用户端设备信息的一种组合或叠加;在用户端需使用自已的私钥分量时,按所述标识映射算法恢复用户端的私钥分量后,再进行相关密码运算。3.根据权利要求1所述的密钥分量托管方法,其特征在于:本发明所依托的密码算法为国密SM2公钥密码算法,与SM2相关的椭圆曲线参数按国密SM2算法标准设置,有限域上的椭圆曲线记为E(Fq),其基点记为G,G的阶记为n;本发明涉及到的实体包括用户端和N(N≥1)个密钥分量托管系统,N个密钥分量托管系统分别记为PKE[1],PKE[2],…,PKE[N];每个用户端针对N个密钥分量托管系统,分别设置N个识别信息UID[1],UID[2],…,UID[N],而用户端数量不限;在系统运行初期,密钥分量托管系统PKE[i]随机生成1个系统主密钥MK[i]和1对SM2非对称密钥,系统主密钥MK[i]也可以用非对称密钥的私钥充当;密钥分量托管系统PKE[i]选取一个密钥分量映射生成函数g(x,y),对任意用户端,通过对系统主密钥MK[i]和用户识别信息UID[i]的映射可生成一个私钥分量di=g(MK[i],UID[i]),且di∈[1,n-1]。4.根据权利要求1所述的密钥分量托管方法,其特征在于:通过以下步骤可完成用户签名密钥的生成与分割存储:第1步:所述用户端以自已的标识、输入的PIN码和硬件设备信息构造N个用户识别信息UID[1],UID[2],…,UID[N],再设置初始公钥参数QN+1=G;第2步:对于i=N,N-1,…,1,所述用户端依次与PKE[i]交互执行:(2a)所述用户端以PKE[i]的公钥对UID[i]加密生成一个密文C[i],发送C[i]和Qi+1到PKE[i];(2b)所述PKE[i]使用私钥对C[i]解密获取所述用户识别信息UID[i],计算di=g(MK[i],UID[i]),Qi=(di)-1Qi+1,回送Qi到用户端,将di作为用户的第i个签名私钥分量,但不需保存;(2c)所述用户保存Qi;第3步:所述用户端随机选取d0∈[1,n-1],计算Q0=(d0)-1Q1,Q=Q0-G,将d0作为用户端的签名私钥分量保存,将Q作为用户端的实际签名公钥保存,同时保存Q0;通过上述步骤生成的用户实际签名私钥d=(d0d1d2…dN)-1-1,实际签名公钥Q=dG,实际签名私钥在生成过程中并未出现,且对用户和N个密钥分量托管系统都不可知。5.根据权利要求1所述的密钥分量托管方法,其特征在于:通过以下步骤可完成用户加密密钥的生成与分割存储:第1步:所述用户以自已的标识、输入的PIN码和硬件设备信息构造一个用户识别信息,并将所述用户识别信息记为UID’[1],UID’[2],…,UID’[N],再设置初始值Q’N+1=G;第2步:对于i=N,N-1,…,1,所述用户依次与PKE[i]交互执行:(2a)所述用户以PKE[i]的公钥对UID’[i]加密生成一个密文C[i],发送C[i]和Q’i+1到PKE[i];(2b)所述PKE[i]使用私钥对C[i]解密获取所述用户UID’[i],计算di’=g(MK[i],UID’[i]),Q’i=di’...

【专利技术属性】
技术研发人员:熊荣华其他发明人请求不公开姓名
申请(专利权)人:北京百旺信安科技有限公司熊荣华
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1