SM9解密方法和装置转让专利

申请号 : CN201710548227.3

文献号 : CN107135080B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 夏玲陈刚平黄乾瑛程朝辉

申请人 : 深圳奥联信息安全技术有限公司

摘要 :

本发明揭示了一种SM9解密方法和装置,其中方法包括:S1:解密客户端获取其标识对应的标识私钥S_A的第一分片子密钥M,其中,所述标识私钥S_A的第二分片子密钥N由所述解密客户端对应的解密服务端获取;其中,密钥生成中心随机选择主密钥,生成系统参数组;S2:从解密服务端获得密文C和N的部分数据解密密钥种子T_s;S3:从密文C和M获得部分数据解密密钥种子T_c;根据T_s和T_c恢复完整的解密密钥种子T,并使用T对密文进行完整解密。本发明在解密过程中,需要获取到第一分片子密钥M和第二分片子密钥N,然后利用M和N,以及密文C恢复解密密钥种子T进行完整解密,方法简单、安全。

权利要求 :

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解密方法,其特征在于,所述系统参数组包括,其中,E为椭圆曲线,e代表二元映射e:G1·G2→Gt,G1和G2为椭圆曲线E上的两个点群,G1是一个阶为q的循环群,G2是一个幂为q群,其子群阶为q,q为素数,P1∈G1,P2∈G2,e(P1,[s]P2)=e(P1,P2)s,主密钥包括s,[s]P1表示s个P1相加,[s]P2表示s个P2相加,H为消息映射函数,用于将比特串映射到[1,q-1]上。

3.根据权利要求2所述的SM9解密方法,其特征在于,在S1中,所述标识私钥S_A通过以下公式计算获得:S_A=[s/(H(1||ID_A)+s)]P2,其中,ID_A为标识ID_A。

4.根据权利要求3所述的SM9解密方法,其特征在于,在S1中,所述第一分片子密钥M和第二分片子密钥N的获取方法,包括:方法1)、所述解密客户端随机生成G1中的一个元素N,随机生成1

5.根据权利要求4所述的SM9解密方法,其特征在于,在S2中,所述解密密钥种子T_s的获取方法,包括:解密客户端获得密文C后将其解析为;其中,C1,C2,C3为所述密文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解密装置,其特征在于,所述系统参数组包括,其中,E为椭圆曲线,e代表二元映射e:G1·G2→Gt,G1和G2为椭圆曲线E上的两个点群,G1是一个阶为q的循环群,G2是一个幂为q群,其子群阶为q,q为素数,P1∈G1,P2∈G2,e(P1,[s]P2)=e(P1,P2)s,主密钥包括s,[s]P1表示s个P1相加,[s]P2表示s个P2相加,H为消息映射函数,用于将比特串映射到[1,q-1]上。

9.根据权利要求8所述的SM9解密装置,其特征在于,所述第一获取单元,包括:S_A计算模块,用于计算S_A=[s/(H(1||ID_A)+s)]P2,其中,ID_A为标识ID_A。

10.根据权利要求9所述的SM9解密装置,其特征在于,所述第一获取单元,包括:分片子密钥获取模块,用于所述解密客户端随机生成G1中的一个元素N,随机生成1

F是标准的密钥派生函数KDF、哈希函数或加密函数中的一种,计算M=S_A-N,发送M到解密客户端;或者,用于利用不同于所述解密客户端和解密服务端的第三方随机生成G1中的一个元素N,随机生成1

11.根据权利要求10所述的SM9解密装置,其特征在于,所述第二获取单元,包括:解析模块,用于解密客户端获得密文C后将其解析为;其中,C1,C2,C3为所述密文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;否则验证失败,输出错误。

说明书 :

SM9解密方法和装置

技术领域

[0001] 本发明涉及到SM9的解密领域,特别是涉及到一种SM9解密方法和装置。

背景技术

[0002] SM9标识密码算法是一种基于双线性对的标识密码算法,它可以把用户的身份标识用以生成用户的公、私密钥对,主要用于数字签名、数据加密、密钥交换以及身份认证等。

发明内容

[0003] 本发明的主要目的为提供一种解密简单安全的SM9解密方法和装置。
[0004] 为了实现上述发明目的,本发明提出一种SM9解密方法,包括:
[0005] S1:解密客户端获取其标识对应的标识私钥S_A的第一分片子密钥M,其中,所述标识私钥S_A的第二分片子密钥N由所述解密客户端对应的解密服务端获取;其中,密钥生成中心随机选择主密钥,生成系统参数组;
[0006] S2:从解密服务端获得密文C和N的部分数据解密密钥种子T_s;
[0007] S3:从密文C和M获得部分数据解密密钥种子T_c;根据T_s和T_c恢复完整的解密密钥种子T,并使用T对密文进行完整解密;
[0008] 进一步地,所述系统参数组包括,其中,E为椭圆曲线,e代表二元映射e:G1·G2→Gt,G1和G2为椭圆曲线E上的两个点群,G1是一个阶为q的循环群,G2是一个幂为q群,其子群阶为q,q为素数,P1∈G1,P2∈G2,e(P1,[s]P2)=e(P1,P2)s,主密钥包括s,[s]P2表示s个P2相加,H为消息映射函数,用于将比特串映射到[1,q-1]上;
[0009] 进一步地,在S1中,所述标识私钥S_A通过以下公式计算获得:
[0010] S_A=[s/(H(1||ID_A)+s)]P2。
[0011] 进一步地,在S1中,所述第二分片子密钥N和第一分片子密钥M的获取方法,包括:
[0012] 所述第一分片子密钥M和第二分片子密钥N的获取方法,包括:
[0013] 方法1)、所述解密客户端随机生成G1中的一个元素N,随机生成1
[0014] 方法2)、所述解密服务端随机生成G1中的一个元素N,随机生成1
[0015] 方法3)、所述解密服务端生成秘密kdfs,根据派生函数F,派生a=F(kdfs,FI),计算N=[a]P1或N=[a][s]P1;其中FI包括标识ID_A、请求时间t、请求次数J;F是标准的密钥派生函数KDF、哈希函数或加密函数中的一种,计算M=S_A-N,发送M到解密客户端;或者,[0016] 方法4)、利用不同于所述解密客户端和解密服务端的第三方随机生成G1中的一个元素N,随机生成1
[0017] 方法5)、利用不同于所述解密客户端和解密服务端的第三方生成秘密kdft,根据派生函数F,派生a=F(kdft,FI),计算N=[a]P1或N=[a][s]P1,计算M=S_A-N,发送M到解密客户端,发送N到解密服务端。
[0018] 进一步地,,在S2中,所述解密密钥种子T_s的获取方法,包括:
[0019] 解密客户端获得密文C后将其解析为
[0020] 将ID_A与C1发送到所述解密服务端;
[0021] 通过解密服务端将C1的数据类型转换为椭圆曲线E上的点X,检验X∈G1是否成立;若否,则解密失败,否则计算T_s=e(X,N);
[0022] 进一步地,在S3,包括:
[0023] 将C1的数据类型转换为椭圆曲线E上的点X,检验X∈G1是否成立;若[0024] 是,则计算T_c=e(X,M);
[0025] 计算w=T_c*T_s;将w的数据类型转换为比特串U;
[0026] K1||K2=KDF(C1||U);
[0027] 计算M=C2⊕K1;
[0028] 计算C'=MAC(K2,M);
[0029] 检验C'=C3是否成立,若成立,则验证通过,输出M;否则验证失败,输出错误。
[0030] 本发明还提供一种SM9解密装置,包括:
[0031] 第一获取单元,用于解密客户端获取其标识对应的标识私钥S_A的第一分片子密钥M,其中,所述标识私钥S_A的第二分片子密钥N由所述解密客户端对应的解密服务端获取;其中,密钥生成中心随机选择主密钥,生成系统参数组;
[0032] 第二获取单元,用于从解密服务端获得密文C和N的部分数据解密密钥种子T_s;
[0033] 获取解密单元,用于从密文C和M获得部分数据解密密钥种子T_c;根据T_s和T_c恢复完整的解密密钥种子T,并使用T对密文进行完整解密;
[0034] 进一步地,所述系统参数组包括,其中,E为椭圆曲线,e代表二元映射e:G1·G2→Gt,G1和G2为椭圆曲线E上的两个点群,G1是一个阶为q的循环群,G2是一个幂为q群,其子群阶为q,q为素数,P1∈G1,P2∈G2,e(P1,[s]P2)=e(P1,P2)s,主密钥包括s,[s]P2表示s个P2相加,H为消息映射函数,用于将比特串映射到[1,q-1]上;
[0035] 进一步地,在S1中,所述标识私钥S_A通过以下公式计算获得:
[0036] S_A=[s/(H(1||ID_A)+s)]P2。
[0037] 进一步地,所述第一获取单元,包括:
[0038] 分片子密钥获取模块,用于所述解密客户端随机生成G1中的一个元素N,随机生成1
[0039] 进一步地,所述第二获取单元,包括:
[0040] 解析模块,用于解密客户端获得密文C后将其解析为
[0041] 发送模块,用于将ID_A与C1发送到所述解密服务端;
[0042] T_s获取模块,用于通过解密服务端将C1的数据类型转换为椭圆曲线E上的点X,检验X∈G1是否成立;若否,则解密失败,否则计算T_s=e(X,N);
[0043] 进一步地,所述获取解密单元,包括:
[0044] 第一检验模块,用于将C1的数据类型转换为椭圆曲线E上的点X,检验X[0045] ∈G1是否成立;若是,则计算T_c=e(X,M);
[0046] 第一计算模块,用于计算w=T_c*T_s;将w的数据类型转换为比特串U;
[0047] 第二计算模块,用于K1||K2=KDF(C1||U);
[0048] 第三计算模块,用于计算M=C2⊕K1;
[0049] 第四计算模块,用于计算C'=MAC(K2,M);
[0050] 第二检验模块,用于检验C'=C3是否成立,若成立,则验证通过,输出M;否则验证失败,输出错误。
[0051] 本发明的SM9解密方法和装置,在解密过程中,需要获取到第一分片子密钥M和第二分片子密钥N,然后利用M和N,以及密文C恢复解密密钥种子T,并使用T对密文进行完整解密,方法简单、安全。

附图说明

[0052] 图1为本发明一实施例的SM9解密方法的流程示意图;
[0053] 图2为本发明一实施例的解密密钥种子T_s的获取方法的流程示意图;
[0054] 图3为本发明一实施例的SM9解密方法的步骤S3的具体流程示意图;
[0055] 图4为本发明一实施例的SM9解密装置的结构示意框图;
[0056] 图5为本发明一实施例的第一获取单元的结构示意框图;
[0057] 图6为本发明一实施例的第二获取单元的结构示意框图;
[0058] 图7为本发明一实施例的获取解密单元的结构示意框图。
[0059] 本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

[0060] 应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0061] 参照图1,本发明实施例提供一种SM9解密方法,包括步骤:
[0062] S1:解密客户端获取其标识对应的标识私钥S_A的第一分片子密钥M,其中,所述标识私钥S_A的第二分片子密钥N由所述解密客户端对应的解密服务端获取;其中,密钥生成中心随机选择主密钥,生成系统参数组。
[0063] 本步骤中,上述所述系统参数组包括,其中,E为椭圆曲线,e代表二元映射e:G1·G2→Gt,G1和G2为椭圆曲线E上的两个点群,G1是一个阶为q的循环群,G2是一个幂为q群,其子群阶为q,q为素数,P1∈G1,P2∈G2,e(P1,[s]P2)=e(P1,P2)s,主密钥包括s,[s]P2表示s个P2相加,H为消息映射函数,用于将比特串映射到[1,q-1]上。上述标识私钥S_A通过以下公式计算获得S_A=[s/(H(1||ID_A)+s)]P2。
[0064] 本步骤中,上述第一分片子密钥M和第二分片子密钥N的获取方法,包括多种,如下:
[0065] 方法1)、所述解密客户端随机生成G1中的一个元素N,随机生成1
[0066] 方法2)、所述解密服务端随机生成G1中的一个元素N,随机生成1
[0067] 方法3)、所述解密服务端生成秘密kdfs,根据派生函数F,派生a=F(kdfs,FI),计算N=[a]P1或N=[a][s]P1;其中FI包括标识ID_A、请求时间t、请求次数J;F是标准的密钥派生函数KDF、哈希函数或加密函数中的一种,计算M=S_A-N,发送M到解密客户端;或者,[0068] 方法4)、利用不同于所述解密客户端和解密服务端的第三方随机生成G1中的一个元素N,随机生成1
[0069] 方法5)、利用不同于所述解密客户端和解密服务端的第三方生成秘密kdft,根据派生函数F,派生a=F(kdft,FI),计算N=[a]P1或N=[a][s]P1,计算M=S_A-N,发送M到解密客户端,发送N到解密服务端。
[0070] S2:从解密服务端获得密文C和N的部分数据解密密钥种子T_s。
[0071] 参照图2,本步骤中,上述解密密钥种子T_s的获取方法,包括:
[0072] S21、解密客户端获得密文C后将其解析为
[0073] S22、将ID_A与C1发送到所述解密服务端;
[0074] S23、通过解密服务端将C1的数据类型转换为椭圆曲线E上的点X,检验X∈G1是否成立;
[0075] S24、若否,则解密失败,否则计算T_s=e(X,N)。
[0076] S3:从密文C和M获得部分数据解密密钥种子T_c;根据T_s和T_c恢复完整的解密密钥种子T,并使用T对密文进行完整解密。
[0077] 参照图3,本步骤中,具体过程为:
[0078] S31、将C1的数据类型转换为椭圆曲线E上的点X,检验X∈G1是否成立;
[0079] S32,若否,则解密失败;
[0080] S33,若是,则计算T_c=e(X,M);
[0081] S34、计算w=T_c*T_s;将w的数据类型转换为比特串U;
[0082] S35、K1||K2=KDF(C1||U);
[0083] S36、计算M=C2⊕K1;
[0084] S37、计算C'=MAC(K2,M);
[0085] S38、检验C'=C3是否成立,若成立,则验证通过,输出M;否则验证失败,输出错误。
[0086] 本发明实施例的SM9解密方法,在解密过程中,需要获取到第一分片子密钥M和第二分片子密钥N,其中然后第一分片子密钥M和第二分片子密钥N组合成ID_A对应的标识私钥S_A;利用M和N,以及密文C恢复解密密钥种子T,并使用T对密文进行完整解密,方法简单、安全。
[0087] 参照图4,本发明还提供一种SM9解密装置,包括:
[0088] 第一获取单元10,用于解密客户端获取其标识对应的标识私钥S_A的第一分片子密钥M,其中,所述标识私钥S_A的第二分片子密钥N由所述解密客户端对应的解密服务端获取;其中,密钥生成中心随机选择主密钥,生成系统参数组。
[0089] 在上述第一获取单元10中,上述系统参数组包括,其中,E为椭圆曲线,e代表二元映射e:G1·G2→Gt,G1和G2为椭圆曲线E上的两个点群,G1是一个阶为q的循环群,G2是一个幂为q群,其子群阶为q,q为素数,P1∈G1,P2∈G2,e(P1,[s]P2)=e(P1,P2)s,主密钥包括s,[s]P2表示s个P2相加,H为消息映射函数,用于将比特串映射到[1,q-1]上。
[0090] 参照图5,上述第一获取单元10,包括:S_A计算模块11,用于计算S_A=[s/(H(1||ID_A)+s)]P2。
[0091] 分片子密钥获取模块12,用于所述解密客户端随机生成G1中的一个元素N,随机生成1
[0092] 第二获取单元20,用于从解密服务端获得密文C和N的部分数据解密密钥种子T_s。
[0093] 参照图6,上述第二获取单元20,包括:
[0094] 解析模块21,用于解密客户端获得密文C后将其解析为
[0095] 发送模块22,用于将ID_A与C1发送到所述解密服务端;
[0096] T_s获取模块23,用于通过解密服务端将C1的数据类型转换为椭圆曲线E上的点X,检验X∈G1是否成立;若否,则解密失败,否则计算T_s=e(X,N)。
[0097] 获取解密单元30,用于从密文C和M获得部分数据解密密钥种子T_c;根据T_s和T_c恢复完整的解密密钥种子T,并使用T对密文进行完整解密。
[0098] 参照图7,上述获取解密单元30,包括:
[0099] 第一检验模块31,用于将C1的数据类型转换为椭圆曲线E上的点X,检验X∈G1是否成立;若是,则计算T_c=e(X,M);
[0100] 第一计算模块32,用于计算w=T_c*T_s;将w的数据类型转换为比特串U;
[0101] 第二计算模块33,用于K1||K2=KDF(C1||U);
[0102] 第三计算模块34,用于计算M=C2⊕K1;
[0103] 第四计算模块35,用于计算C'=MAC(K2,M);
[0104] 第二检验模块36,用于检验C'=C3是否成立,若成立,则验证通过,输出M;否则验证失败,输出错误。
[0105] 本发明实施例的SM9解密装置,在解密过程中,需要获取到第一分片子密钥M和第二分片子密钥N,其中然后第一分片子密钥M和第二分片子密钥N组合成ID_A对应的标识私钥S_A;利用M和N,以及密文C恢复解密密钥种子T,并使用T对密文进行完整解密,方法简单、安全。
[0106] 以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。