(19)国家知识产权局
(12)发明 专利申请
(10)申请公布号
(43)申请公布日
(21)申请 号 202210480769.2
(22)申请日 2022.04.27
(71)申请人 河南省核芯微电子科技有限公司
地址 450000 河南省郑州市高新 技术产业
开发区枫林路27号6号楼4层401
申请人 王燕
(72)发明人 尚磊 直丹婷 曹涛 王军强
赵英华 王燕
(74)专利代理 机构 郑州联科专利事务所(普通
合伙) 41104
专利代理师 刘建芳
(51)Int.Cl.
H04L 9/30(2006.01)
H04L 9/08(2006.01)
H04L 9/32(2006.01)
(54)发明名称
基于SM2密钥分散存储的密钥对生成方法、
协作签名方法、 解密方法、 装置和介质
(57)摘要
本发明公开了一种基于SM2密钥分散存储的
密钥对生成方法、 协作签名方法、 解密方法、 装置
和介质。 本发明通过客户端、 服务端以及密钥共
享中心三方协作生成公私钥对的生成, 各个设备
生成各自的私钥因子并分别存储, 在协作签名和
协作解密过程中完整私钥不会出现在任何一方,
进而保证私钥的安全性。 此外基于公私钥对协同
生成方法提出的密钥共享分发过程, 保证在私钥
共享分发过程中只需要使用客户端和密钥共享
中心两部分私钥因子进行密钥计算分发, 而服务
端私钥因子不参与分发过程, 进一步的保证任何
时刻完整密钥不会出现在任何设备的内存中, 完
整密钥在任意 一方设备中不存在泄 露的风险。
权利要求书3页 说明书5页 附图4页
CN 115499126 A
2022.12.20
CN 115499126 A
1.一种基于SM2密钥分布式存 储的密钥对生成方法, 其特 征在于, 包括以下步骤:
A1、 客户端生成自身子私钥dA,服务端生成自身子私钥dB,密钥共享中心生成自身子私
钥dC;
A2: 客户端、 服 务端和密钥共享中心交 互运算共同生成公钥P;
在子私钥生成和公钥生成过程中, 客户端、 服务端以及密钥共享中心共享SM2椭圆曲线
算法参数E(Fq)、 G、 n、 Z, 其中椭圆曲线E为定义在有限域G上的椭圆曲线, G为椭圆曲线E上的
n阶基点, Z为双方的共有 身份标识。
2.如权利要求1所述的基于SM2密钥分布式存储的密钥对生成方法, 其特征在于, 在所
述步骤A1中, 客户端随机生成随机数D1并计算自身子私钥dA=(1+D1)‑1mod n, 服务端随机
生成随机数D2 并计算自身子私钥dB=(1+D2)‑1mod n, 密钥共享中心C随机生成随机数D3并
计算自身子私钥dC=(1+D3)‑1mod n, 其中随机数D1、 D2、 D3介于[ 1,n‑1]之间, n为椭圆曲线
的阶, mod为取模运 算。
3.如权利要求1或2所述的基于SM2密钥分布式存储的密钥对生成方法, 其特征在于, 所
述步骤A3中, 客户端A向服务端B发送密钥对生 成请求, 服务端接收到密钥对生成请求后, 计
算第一部分公钥中间变量P1=D2[*]G, 并将第一部分公钥中间变量P1发送至密钥共享中
心; 密钥共享中心接收第一部 分公钥中间变量P1, 并计算第二部 分公钥中间变量P2 =D3[*]
P1+D3[*]G+P1; 密钥共享中心将第二部分公钥中间变量P2发送至终端, 终端接收第二部分
公钥中间变量P2并计算完整公钥P=D1[*]P2+D1[*] G+P2, 其中[*]表示椭圆曲线点乘运 算。
4.一种基于SM2密钥分布式存 储的协作签名方法, 其特 征在于, 包括以下步骤:
B1、 客户端根据待签名消息原文M生成消息摘 要e, 同时生成随机数k1, 并根据k1计算第
一签名中间变量 Q1,之后将Q1 发送至密钥共享中心;
B2、 密钥共享中心接收第一签名中间变量Q1并生成随机数k2, 根据随机数k2和Q1计算
第二签名中间变量 Q2,之后将Q2发送回客户端;
B3、 客户端接收第二签名中间变量Q2, 并将消息摘要e和Q2发送至服务端, 服务端根据
消息摘要e和Q2, 计算第一部分签名值R以及第三签名中间变量Q3和第四签名中间变量Q4,
并将部分签名R以及Q3、 Q 4发送至客户端;
B4、 客户端接收R、 Q3、 Q4, 并将Q3、 Q4发送至密钥共享中心, 由密钥共享中心计算第五签
名中间变量 Q5和第六签名中间变量 Q6, 并将Q5、 Q6发送至客户端;
B5、 客户端接签名中间变量Q5、 Q6, 计算第二部分签名值S, 并将(R,S)作为完整签名值
输出。
5.如权利要求4所述的基于SM2密钥分布式存储的协作签名方法, 其特征在于, 所述步
骤B1中, 客户端根据待签名消息原文M计算M'=Z||M,根据M'计算消息摘要e=Hash(M'),之
后根据生 成的随机数k 1计算第一部分签名Q1=k 1[*]G, 并将第一签名中间变量Q1发送至密
钥共享中心, 其中Hash()表示预定的SM 3密码杂凑函数, [*]表示椭圆曲线点乘运 算;
所述步骤B2中, 密钥共享中心接收第一签名中间变量Q1, 根据 Q1和生成的随机数k2, 计
算第二签名中间变量 Q2=k2[*]Q1, 并将Q2发送至终端;
所述步骤B3中, 终端接收第二签名中间变量Q2, 并将消息摘要e和Q2发送至服务端, 服
务端生成随机数k3、 k4, 并计算基点G的k倍点中间变量G1=k4[*]G, 根据G1、 Q2 计算(x1,y1)
=k3[*]Q2[+]G1以及R=(x1+e)modn, 根据自身子私钥计算第三签名中间变量Q3=dB*k3 权 利 要 求 书 1/3 页
2
CN 115499126 A
2mod n和第四签名中间变量 Q4=dB*(R+k4)mod n, 之后将部分签名R和Q3、 Q 4发送至客户端;
所述步骤B4 中, 客户端接收部分签名R和签名中间变量Q3、 Q4, 并将Q3、 Q4发送至密钥共
享中心请求协作签名运算, 密码共享中心计算第五签名中间变量Q5=k2*dC*Q3以及第六签
名中间变量 Q6=dC*Q4并将Q5、 Q6返回至客户端;
所述步骤B5中, 客户端根据接收的签名中间变量Q5、 Q6, 计算部分签名S=(dA*k1*Q5+
dA*Q6‑R)mod n, 并将步骤R和S作为完整签名输出; 其中Hash()表示SM3密码杂凑函数, [*]
表示椭圆曲线点乘运 算, mod表示取模运 算。
6.一种基于SM2密钥分布式存 储的协作解密方法, 其特 征在于, 包括以下步骤:
C1、 客户端接收协作解密请求, 生成随机数k,对获取的密文进行部分解密得到第一解
密中间变量T1, 并将T1 发送至服 务端;
C2、 服务端接收T1, 根据自身子私钥dB以及接收的第一解密中间变量T1,计算第二解密
中间变量T2,并将T2发送至密钥共享中心;
C3、 密钥共享中心接收T2, 根据自身子私钥dC和T2计算第三解密中间变量T3,并将T3发
送至客户端;
C4、 客户端根据接收的T3以及自身子私钥dA解密出完整明文 T。
7.根据权利要求6所述的基于SM2密钥分布式存储的协作解密方法, 其特征在于, 所述
步骤C1中, 客户端接收密文C, 从密文C中提取比特串C1, 对C1进行数据类型转换后, 验证C1
是否为椭圆 曲线E上的非无穷远点; 若是, 则随机生 成随机数k, 计算第一解密中间变量T1=
k[*]C1, 其中[*]表示椭圆曲线点乘运 算;
所述步骤C2中, 服务端根据接收到的第一解密中间变量T1计算第二解密中间变量T2=
dB‑1[*]T1, 并将T2发送至密钥共享中心设备C;
所述步骤C3中, 密钥共享中心根据接收到T2计算第三解密中间变量T3=dC‑1[*]T2, 并
将T3发送回客户端;
所述步骤C4中, 客户端根据接收到T3以及自身私钥dA计算(x2,y2)=k‑1*dA‑1[*]T3[‑]
C1, 其中[ ‑]表示椭圆曲线点减运算, 根据(x2,y2)计算tmp=kdf(x2||y2,klen),其中||表
示字符串拼接, kdf()表示预定的密钥派生函数, klen表示预定的输出的比特串长度; 判断
tmp, 若tmp不等于0, 则从密文中提取比特串C2, 并计算得到结果
根据(x2,
y2)以及M ”计算结果校验值u=Hash(x2||M ”||y2),其 中
表示异或运算, Hash()表示预定
的密码杂凑函数, 从密文C中提取比特串C3, 比对u和C3, 若u=C3, 则将M ”作为完整明文输
出。
8.一种基于SM2密钥分布式存储的密钥共享授权分发方法, 其特征在于, 包括以下步
骤:
D1、 客户端向密钥共享中心发起密钥共享分发请求, 密钥共享中心接收请求将自身私
钥dC密文发送至客户端;
D2、 客户端接收私钥dC, 根据自身私钥dA, 计算临时私钥tmpD, 客户端生成 随机数dAA, 根
据tmpD、 dAA计算dCC, 将dAA、 dCC分别作为密钥共享客户端和密钥共享 中心C的私钥 进行存储,
同时将dAA、 dCC分发给密钥共享 客户端;
D3、 服务端自身私钥dB保持不变, 由密钥共享共享客户端、 服务端以及密钥共享中心协
作进行签名或者 解密操作。权 利 要 求 书 2/3 页
3
CN 115499126 A
3
专利 基于SM2密钥分散存储的密钥对生成方法、协作签名方法、解密方法、装置和介质
文档预览
中文文档
13 页
50 下载
1000 浏览
0 评论
309 收藏
3.0分
温馨提示:本文档共13页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 人生无常 于 2024-03-18 08:19:00上传分享