SM9解密方法和装置转让专利
申请号 : CN201710548227.3
文献号 : CN107135080B
文献日 : 2019-09-27
发明人 : 夏玲 , 陈刚平 , 黄乾瑛 , 程朝辉
申请人 : 深圳奥联信息安全技术有限公司
摘要 :
权利要求 :
1.一种SM9解密方法,其特征在于,包括:
S1:解密客户端获取其标识对应的标识私钥S_A的第一分片子密钥M,其中,所述标识私钥S_A的第二分片子密钥N由所述解密客户端对应的解密服务端获取;其中,密钥生成中心随机选择主密钥,生成系统参数组;
S2:从解密服务端获得密文C和N的部分数据解密密钥种子T_s;
S3:从密文C和M获得部分数据解密密钥种子T_c;根据T_s和T_c恢复完整的解密密钥种子T,并使用T对密文进行完整解密。
2.根据权利要求1所述的SM9解密方法,其特征在于,所述系统参数组包括
3.根据权利要求2所述的SM9解密方法,其特征在于,在S1中,所述标识私钥S_A通过以下公式计算获得:S_A=[s/(H(1||ID_A)+s)]P2,其中,ID_A为标识ID_A。
5.根据权利要求4所述的SM9解密方法,其特征在于,在S2中,所述解密密钥种子T_s的获取方法,包括:解密客户端获得密文C后将其解析为
将ID_A与C1发送到所述解密服务端;
通过解密服务端将C1的数据类型转换为椭圆曲线E上的点X,检验X∈G1是否成立;若否,则解密失败,否则计算T_s=e(X,N)。
6.根据权利要求5所述的SM9解密方法,其特征在于,在S3,包括:
将C1的数据类型转换为椭圆曲线E上的点X,检验X∈G1是否成立;
若是,则计算T_c=e(X,M);
计算w=T_c*T_s;将w的数据类型转换为比特串U;
K1||K2=KDF(C1||U);
计算M=C2⊕K1;
计算C'=MAC(K2,M);
检验C'=C3是否成立,若成立,则验证通过,输出M;否则验证失败,输出错误。
7.一种SM9解密装置,其特征在于,包括:
第一获取单元,用于解密客户端获取其标识对应的标识私钥S_A的第一分片子密钥M,其中,所述标识私钥S_A的第二分片子密钥N由所述解密客户端对应的解密服务端获取;其中,密钥生成中心随机选择主密钥,生成系统参数组;
第二获取单元,用于从解密服务端获得密文C和N的部分数据解密密钥种子T_s;
获取解密单元,用于从密文C和M获得部分数据解密密钥种子T_c;根据T_s和T_c恢复完整的解密密钥种子T,并使用T对密文进行完整解密。
8.根据权利要求7所述的SM9解密装置,其特征在于,所述系统参数组包括
9.根据权利要求8所述的SM9解密装置,其特征在于,所述第一获取单元,包括:S_A计算模块,用于计算S_A=[s/(H(1||ID_A)+s)]P2,其中,ID_A为标识ID_A。
11.根据权利要求10所述的SM9解密装置,其特征在于,所述第二获取单元,包括:解析模块,用于解密客户端获得密文C后将其解析为
发送模块,用于将ID_A与C1发送到所述解密服务端;
T_s获取模块,用于通过解密服务端将C1的数据类型转换为椭圆曲线E上的点X,检验X∈G1是否成立;若否,则解密失败,否则计算T_s=e(X,N)。
12.根据权利要求11所述的SM9解密装置,其特征在于,所述获取解密单元,包括:第一检验模块,用于将C1的数据类型转换为椭圆曲线E上的点X,检验X∈G1是否成立;
若是,则计算T_c=e(X,M);
第一计算模块,用于计算w=T_c*T_s;将w的数据类型转换为比特串U;
第二计算模块,用于K1||K2=KDF(C1||U);
第三计算模块,用于计算M=C2⊕K1;
第四计算模块,用于计算C'=MAC(K2,M);
第二检验模块,用于检验C'=C3是否成立,若成立,则验证通过,输出M;否则验证失败,输出错误。