首页 / 专利库 / 电脑安全 / 密码体制 / 一种基于SOTP技术对私钥乘加密的SM2同态签名方法

一种基于SOTP技术对私钥乘加密的SM2同态签名方法

阅读:292发布:2020-05-08

专利汇可以提供一种基于SOTP技术对私钥乘加密的SM2同态签名方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种基于SOTP技术对私钥乘加密的SM2同态签名方法,用户的私钥使用基于模乘加密后保存在客户端,客户端可周期性的对私钥做模乘加密更新私钥密文,签名时无需解密私钥密文,可直接使用密文私钥进行签名;客户端做签名操作时使用最新的签名私钥密文做签名运算。验证签名的时候验签服务中心接收用户uid,签名私钥密文生成时的时间戳T、公钥证书、签名值、签名数据。使用SOTP 算法 恢复出对应用户私钥模乘加密时用到的乱数u,用该乱数与原始公钥做倍点计算得到验签公钥,用验签公钥来验证签名是否合法。本发明中,私钥保护可实质性融合诸如口令之类的基于记忆的简单防护措施,以增强抗设备盗用之类攻击的能 力 ,有比较好的可移植性。,下面是一种基于SOTP技术对私钥乘加密的SM2同态签名方法专利的具体信息内容。

1.一种基于SOTP技术对私钥乘加密的SM2同态签名方法,其特征在于:
用户的私钥使用基于模乘加密后保存在客户端,客户端可周期性的对私钥做模乘加密更新私钥密文,签名时无需解密私钥密文,直接使用密文私钥进行签名;
客户端做签名操作时使用最新的签名私钥密文做签名运算;验证签名的时候验签服务中心接收用户uid,签名私钥密文生成时的时间戳T、公钥证书、签名值、签名数据;使用SOTP算法恢复出对应用户私钥模乘加密时用到的乱数u,用该乱数与原始公钥做倍点计算得到验签公钥,用验签公钥来验证签名是否合法。
2.根据权利要求1所述的基于SOTP技术对私钥乘加密的SM2同态签名方法,其特征在于:
客户端在每次签名操作前对私钥密文进行更新;客户端保存最近生成的私钥模乘密文和时间戳,签名直接使用私钥密文计算,任何时候私钥明文不会出现;
客户端在签名时使用SOTP算法通过服务中心认证后,保存签名原文摘要和签名私钥密文生成时的时间戳T到服务中心;服务中心验证时查找待验证的签名数据摘要是否有记录,如没有记录则判断签名为非法签名。
3.根据权利要求1所述的基于SOTP技术对私钥乘加密的SM2同态签名方法,其特征在于:
客户端和服务中心的认证和协商乱数算法使用的SOTP算法,在用户端初次注册到系统中的时候,系统根据用户的名称、客户端设备标识码、用户口令特征值生成对应的算法代码S;认证的时候用此加密代码处理一个输入发送给对方,对方使用自己对应的代码段处理同样的输入,根据处理结果是否相同判断认证是否通过;用算法代码S处理一个约定输入的结果可作为协商的共同的乱数数据使用。
4.根据权利要求1至3之一所述的基于SOTP技术对私钥乘加密的SM2同态签名方法,其特征在于,具体步骤为:
步骤一、用户在使用初期,必须在安全环境下向服务器进行注册,以完成初始化操作;
客户端U提供用户标识uid,用户口令特征P,设备识别码M;服务器为U产生一个随机密钥—用户密钥k,将k注入SOTP算法发生器E,生成一个与密钥k相关的加密函数Sk;服务器存储E、k、uid和M、P,用户U下载Sk;服务器每次生成的函数Sk都不相同,动态变化,保证每个用户下载Sk算法各不相同;
步骤二、客户端进行身份认证;
客户端和服务中心进行身份认证后,保存签名原文摘要和签名私钥密文生成时的时间戳T到服务中心,服务中心对通过认证的客户端数据进行记录,认证失败的不予记录;
步骤三、基于动态可重构的密码体制SOTP、时间戳,融合用户口令,计算出一个乱数u,使用u对原来存储的私钥密文做模乘加密,然后用SOTP算法根据上一次加密的时间戳恢复出上次加密乱数u`,模乘u`模n的逆元得到新的私钥密文u.dA;
基于SM2算法,定义椭圆曲线C,基点G,阶为素数n,
用户私钥:dA∈[1,n-1]是一个大整数,客户端只保存和使用加密后的私钥d'A,其中d'A=u.dA,u由客户端使用可重构的密码体制SOTP、时间戳,融合用户口令得到;
原始公钥:PA=[dA]G;
使用d'A用SM2标准签名流程步骤生成签名值;
服务中心使用u和原始公钥的倍点计算结果[u]PA作为验签公钥来验证签名;
步骤四、客户端直接使用私钥密文进行签名运算,在客户端保存签名值和私钥密文生成时的时间戳T;
步骤五、服务中心接受签名验证请求,包括签名证书、签名值、签名私钥密文生成时的时间戳T和签名数据;用户uid包含在证书主题项中,根据用户uid、签名私钥密文生成时的时间戳T和用户注册时记录的信息恢复出用户SOTP算法代码S,使用算法代码S,根据签名私钥密文生成时的时间戳T,融合用户口令计算出签名时的私钥保护因子乱数u,使用u点倍乘证书中的公钥得到验签公钥[u]PA,用验签公钥按照SM2标准流程进行签名验证。
5.根据权利要求1至3之一所述的基于SOTP技术对私钥乘加密的SM2同态签名方法,其特征在于,服务端验证签名具体步骤为:
步骤1、服务中心接受签名验证请求,包括签名证书、签名值、签名私钥密文生成时的时间戳T和签名数据;用户uid包含在证书主题项中,根据用户uid、签名私钥密文生成时的时间戳T和用户注册时记录的信息恢复出用户SOTP算法代码S,使用算法代码S;
步骤2、根据签名私钥密文生成时的时间戳T,融合用户口令计算出签名时的私钥保护因子乱数u,使用u点倍乘证书中的公钥得到验签公钥[u]PA;
步骤3、用验签公钥按照SM2标准流程进行签名验证。
6.根据权利要求4所述的基于SOTP技术对私钥乘加密的SM2同态签名方法,其特征在于,所述步骤一中:
接受验签签名验证请求,包括签名证书、签名值、签名私钥密文生成时的时间戳T 和签名数据,在配置了服务中心保存签名数据的杂凑值和签名私钥密文生成时的时间戳T时,只有在服务中心用户签名记录中存在的摘要值和时间戳才进行验证,否则直接判断签名非法。
7.根据权利要求4所述的基于SOTP技术对私钥乘加密的SM2同态签名方法,其特征在于,所述步骤二具体包括:
步骤2-1、客户端身份认证请求:发送用户标识uid|时间T,,T>上次通联时间;
步骤2-2、服务端响应:回发随机数R;
步骤2-3、客户端身份认证:计算并发送S(S(S(R)+P)+M);
步骤2-4、服务端验证:服务端对客户端消息解密,获得R,与发过去的R比对,如果相同,则认证通过,否则,认证失败;
步骤2-5、服务端身份认证:计算并发送S(S(S(T)+P)+M);
步骤2-6、客户端验证:客户端计算S(S(S(T)+P)+M),与服务器端发来结果进行对比,如果相同,则认证通过,否则,认证失败;认证通过后单独计算S(S(S(T)+uid)+P)作为本次协商的乱数u。
8.根据权利要求4所述的一种基于SOTP技术对私钥乘加密的SM2同态签名方法,其特征在于,所述步骤三中:
私钥dA∈[1,n-1]是一个大整数,模乘加密时原来私钥密文为d`A=u`dA,其中u`为上-1 -1
次模乘加密时使用的乱数,使用SOTP算法恢复出u`并计算模n的逆元u` ,计算(u` .u.d`A)模n即得到新的私钥密文u.dA,其中n为SM2椭圆曲线基点G的阶;
计算正确性证明:
u`-1.u.d`A=u`-1.u.u`.dA=u.(u`-1.u`).dA=u.dA。
9.根据权利要求4所述的基于SOTP技术对私钥乘加密的SM2同态签名方法,其特征在于,所述步骤四中:
客户端直接使用私钥密文进行签名运算,保存签名值和私钥密文生成时的时间戳T。
10.根据权利要求4所述的基于SOTP技术对私钥乘加密的SM2同态签名方法,其特征在于,所述步骤五中:
客户端签名前先使用SOTP算法和服务中心互相进行身份认证,同时将签名私钥密文生成时的时间戳T和待签名数据摘要值m保存至服务中心;使用最新私钥密文进行签名运算,保存签名私钥密文生成时的时间戳T和签名值;签名验证的时候服务中心需要签名值对应的时间戳来恢复出保护因子乱数用来计算验签公钥。
11.根据权利要求4所述的基于SOTP技术对私钥乘加密的SM2同态签名方法,其特征在于:根据安全等级要求,需要增强安全性时,可实现为签名时客户端必须通过服务中心的认证,保存签名数据的杂凑值和签名私钥密文生成时的时间戳T到服务中心,服务中心对没有通过认证的客户端的数据不予记录;签名验证时服务中心先查找是否有匹配签名数据杂凑值的记录,没有找到记录则判断为非法签名。
12.根据权利要求4所述的基于SOTP技术对私钥乘加密的SM2同态签名方法,其特征在于:服务中心使用SOTP算法对客户端进行认证,认证通过后保存本次签名用到的签名私钥密文生成时的时间戳T和待签名原文摘要值m到用户uid对应的记录中;没有通过认证则不保存T和m;签名验证时,只有在服务中心用户签名记录中存在的摘要值和时间戳才进行验证,否则直接判断签名非法。
13.一种实现权利要求1至12任一所述方法的系统,其特征在于,包括:签名方和验证方,其中:签名方包含用于保存签名参数的存储模以及用于签名的计算模块;验证方包含用于保存验证参数的存储模块和用于验证签名的计算模块。

说明书全文

一种基于SOTP技术对私钥乘加密的SM2同态签名方法

技术领域

[0001] 本发明属于信息安全、数据业务领域,具体而言,本发明涉及一种基于SOTP技术对私钥乘加密的SM2同态签名方法。

背景技术

[0002] 现有的SM2私钥保护的方法:
[0003] 不存储签名私钥原文,存储私钥和预先生成乱数的混合结果,使用存储的私钥模乘结果来生成签名。例如公开号为CN201810133887.X的发明专利公开了一种SM2白盒密码实现方法,该专利提出了私钥加密存储的方案,但没有解决存储的密文私钥被盗用后的防止伪造签名的问题。
[0004] 现有技术方案分析:
[0005] 现有SM2私钥保护方案通过不存储签名私钥原文,签名时使用存储的中间私钥直接计算,按照自定义流程验证签名,存在如下问题:
[0006] 存在问题一:改变了标准SM2签名流程步骤和签名验证步骤,和SM2标准算法不兼容。
[0007] 存在问题二:第三方攻击者获取到了存储的私钥中间结果,运用方案中的签名流程可以生成任意合法签名。

发明内容

[0008] 针对现有技术中存在的问题,本发明提出一种基于SOTP技术对私钥乘加密的SM2同态签名方法,SOTP算法保证不同用户其加解密算法不同。它依据数学原理将密码算法与用户密钥有机融合,利用用户密钥对原本共同的算法进行重构,使得不同用户使用不同加解密算法,用户密钥融合在自己的算法中,可以有效的解决上述问题。
[0009] 为了实现上述发明目的,本发明采用的技术方案是:一种基于SOTP技术对私钥乘加密的SM2同态签名方法,具体步骤为:
[0010] 步骤一、用户在使用初期,必须在安全环境下向服务器进行注册,以完成初始化操作;客户端U提供用户标识uid,用户口令特征P,设备识别码M;服务器为U产生一个随机密钥—用户密钥k,将k注入SOTP算法发生器E,生成一个与密钥k相关的加密函数Sk;服务器存储E、k、uid和M、P,用户U下载Sk;服务器每次生成的函数Sk都不相同,动态变化,保证每个用户下载Sk算法各不相同;
[0011] 步骤二、客户端进行身份认证;
[0012] 步骤三、基于动态可重构的密码体制SOTP、时间戳,融合用户口令,计算出一个乱数u,使用u对原来存储的私钥密文做模乘加密,然后用SOTP算法根据上一次加密的时间戳恢复出上次加密乱数u`,模乘u`模n的逆元得到新的私钥密文dA;
[0013] 步骤四、基于SM2算法,定义椭圆曲线C,基点G,阶为素数n,
[0014] 用户私钥:dA∈[1,n-1]是一个大整数,客户端只保存和使用加密后的私钥d'A,其中d'A=u.dA,u由客户端使用可重构的密码体制SOTP、时间戳,融合用户口令得到;
[0015] 原始公钥:PA=[dA]G;
[0016] 使用d'A用SM2标准签名流程步骤生成签名值;
[0017] 服务中心使用u和原始公钥的倍点计算结果[u]PA作为验签公钥来验证签名;
[0018] 步骤五、服务中心接受签名验证请求,包括签名证书、签名值、签名私钥密文生成时的时间戳T和签名数据;用户uid包含在证书主题项中,根据用户uid、签名私钥密文生成时的时间戳T和用户注册时记录的信息恢复出用户SOTP算法代码S,使用算法代码S,根据签名私钥密文生成时的时间戳T,融合用户口令计算出签名时的私钥保护因子乱数u,使用u点倍乘证书中的公钥得到验签公钥[u]PA,用验签公钥按照SM2标准流程进行签名验证。
[0019] 用户的私钥使用基于模乘加密后保存在客户端,客户端可周期性的对私钥做模乘加密更新私钥密文,签名时无需解密私钥密文,可直接使用密文私钥进行签名;可选的,需要增强安全性时,客户端可在每次签名操作前对私钥密文进行更新。客户端做签名操作时使用最新的签名私钥密文做签名运算。验证签名的时候验签服务中心接收用户uid,签名私钥密文生成时的时间戳T、公钥证书、签名值、签名数据。使用SOTP算法恢复出对应用户私钥模乘加密时用到的乱数u,用该乱数与原始公钥做倍点计算得到验签公钥,用验签公钥来验证签名是否合法。可选的,需要增强安全性时,客户端可在签名时使用SOTP算法通过服务中心认证后,保存签名原文摘要和签名私钥密文生成时的时间戳T到服务中心;服务中心验证时查找待验证的签名数据摘要是否有记录,如没有记录则判断签名为非法签名。
[0020] 基于乘法加密保护签名私钥的原理为,基于动态可重构的密码体制SOTP、时间戳,融合用户口令,计算出一个乱数u,使用u对私钥做模乘加密,加密过程中先使用u模乘原私钥密文,再模乘上一次的加密乱数逆元得到新的私钥密文,整个过程中私钥明文不出现。
[0021] 客户端保存最近生成的私钥模乘密文和时间戳,签名直接使用私钥密文计算,任何时候私钥明文不会出现;可根据安全等级要求设置不同的私钥密文更新周期,对用户私钥进行不断变化的加密保存,避免用户私钥的直接泄露。不断变化的加密保存也使得攻击者即使非法获取了加密私钥也会很快过时失效。
[0022] 客户端和服务中心的认证和协商乱数算法使用SOTP算法,保证不同用户拥有的算法不同。在用户端初次注册到系统中的时候,系统根据用户的名称、客户端设备标识码、用户口令特征值生成对应的算法代码S。认证的时候用此加密代码处理一个输入发送给对方,对方使用自己对应的代码段处理同样的输入,根据处理结果是否相同判断认证是否通过。用算法代码S处理一个约定输入的结果可作为协商的共同的乱数数据使用。
[0023] 整个签名过程私钥密文只在客户端出现,服务中心没有私钥的任何信息。
[0024] 本发明同时公开了一种实现上述基于SOTP技术对私钥乘加密的SM2同态签名方法的系统,包括:签名方和验证方,其中:签名方包含用于保存签名参数的存储模以及用于签名的计算模块;验证方包含用于保存验证参数的存储模块和用于验证签名的计算模块。
[0025] 与现有技术相比,本发明的有益效果:
[0026] 1、本发明中的私钥加密保存,并且这种加密是动态的、可变的,可根据系统安全等级要求改变加密乱数的更新周期。增强没有安全硬件存贮私钥和没有硬件完成解密运算的抗攻击能
[0027] 2、本发明中,私钥保护可实质性融合诸如口令之类的基于记忆的简单防护措施,以增强抗设备盗用之类攻击的能力。
[0028] 3、本发明中,签名和验签算法保持SM2标准一致,有比较好的兼容性和可移植性。附图说明
[0029] 图1是本发明实施例的私钥密文加密流程图
[0030] 图2本发明实施例的客户端签名流程流程图。
[0031] 图3是本发明实施例的服务中心验证签名第一流程图。
[0032] 图4是本发明实施例的保存签名摘要到服务中心的客户端签名流程图。
[0033] 图5是本发明实施例的服务中心保存签名摘要流程图。
[0034] 图6是本发明实施例的服务中心验证签名第二流程图。
[0035] 图7是本发明实施例的乱数生成示意图。

具体实施方式

[0036] 以下结合附图和具体实施例对本发明作进一步详细说明。
[0037] SOTP算法保证不同用户其加解密算法不同。它依据数学原理将密码算法与用户密钥有机融合,利用用户密钥对原本共同的算法进行重构,使得不同用户使用不同加解密算法,用户密钥融合在自己的算法中。
[0038] 注册过程
[0039] 用户在使用初期,必须在安全环境下向服务器进行注册,以完成初始化操作。客户端U提供用户标识uid,用户口令特征P,设备识别码M;服务器为U产生一个随机密钥—用户密钥k,将k注入SOTP算法发生器E,生成一个与密钥k相关的加密函数Sk。服务器存储E、k、uid和M、P,用户U下载Sk。服务器每次生成的函数Sk都不相同,动态变化,保证每个用户下载Sk算法各不相同。
[0040] 认证过程
[0041] (1)客户端身份认证请求:发送用户标识uid|时间T,,T>上次通联时间;
[0042] (2)服务端响应:回发随机数R;
[0043] (3)客户端身份认证:计算并发送S(S(S(R)+P)+M);
[0044] (4)服务端验证:服务端对客户端消息解密,获得R,与发过去的R比对,如果相同,则认证通过,否则,认证失败;
[0045] (5)服务端身份认证:计算并发送S(S(S(T)+P)+M);
[0046] (6)客户端验证:客户端计算S(S(S(T)+P)+M),与服务器端发来结果进行对比,如果相同,则认证通过,否则,认证失败;认证通过后单独计算S(S(S(T)+uid)+P)作为本次协商的乱数u。
[0047] 乘法加密私钥原理过程
[0048] 基于动态可重构的密码体制SOTP、时间戳,融合用户口令,计算出一个乱数u,使用u对原来存储的私钥密文做模乘加密,然后用SOTP算法根据上一次加密的时间戳恢复出上次加密乱数u`,模乘u`模n的逆元得到新的私钥密文。(私钥dA∈[1,n-1]是一个大整数,模乘加密时原来私钥密文为d`A=u`dA,其中u`为上次模乘加密时使用的乱数,使用SOTP算法恢复出u`并计算模n的逆元u`-1,计算(u`-1.u.d`A)模n即得到新的私钥密文u.dA,其中n为SM2椭圆曲线基点G的阶)。
[0049] 计算正确性证明:
[0050] u`-1.u.d`A=u`-1.u.u`.dA=u.(u`-1.u`).dA=u.dA。
[0051] 加密流程如图1所示,整个加密过程中,私钥明文没有出现,使用了上一次加密乱数的逆元,为了恢复上一次加密乱数,需要用到上一次加密的时间戳。每次加密后,客户端保存最新的私钥密文,另外客户端需要保存本次加密的时间戳留作后续加密时恢复加密乱数使用。
[0052] 本实施例的基于STOP技术对私钥乘加密的SM2同态签名方法,用户的私钥使用基于模乘加密后保存在客户端,客户端可周期性的对私钥做模乘加密更新私钥密文,签名时无需解密私钥密文,可直接使用密文私钥进行签名;可选的,需要增强安全性时,客户端可在每次签名操作前对私钥密文进行更新。客户端做签名操作时使用最新的签名私钥密文做签名运算。验证签名的时候验签服务中心接收用户uid,签名私钥密文生成时的时间戳T、公钥证书、签名值、签名数据。使用SOTP算法恢复出对应用户私钥模乘加密时用到的乱数u,用该乱数与原始公钥做倍点计算得到验签公钥,用验签公钥来验证签名是否合法。可选的,需要增强安全性时,客户端可在签名时使用SOTP算法通过服务中心认证后,保存签名原文摘要和签名私钥密文生成时的时间戳T到服务中心;服务中心验证时查找待验证的签名数据摘要是否有记录,如没有记录则判断签名为非法签名。
[0053] 基于乘法加密保护签名私钥的原理为,基于动态可重构的密码体制SOTP、时间戳,融合用户口令,计算出一个乱数u,使用u对私钥做模乘加密,加密过程中先使用u模乘原私钥密文,再模乘上一次的加密乱数逆元得到新的私钥密文,整个过程中私钥明文不出现。
[0054] 客户端保存最近生成的私钥模乘密文和时间戳,签名直接使用私钥密文计算,任何时候私钥明文不会出现;可根据安全等级要求设置不同的私钥密文更新周期,对用户私钥进行不断变化的加密保存,避免用户私钥的直接泄露。不断变化的加密保存也使得攻击者即使非法获取了加密私钥也会很快过时失效。
[0055] 客户端和服务中心的认证和协商乱数算法使用SOTP算法,保证不同用户拥有的算法不同。在用户端初次注册到系统中的时候,系统根据用户的名称、客户端设备标识码、用户口令特征值生成对应的算法代码S。认证的时候用此加密代码处理一个输入发送给对方,对方使用自己对应的代码段处理同样的输入,根据处理结果是否相同判断认证是否通过。用算法代码S处理一个约定输入的结果可作为协商的共同的乱数数据使用。
[0056] 整个签名过程私钥密文只在客户端出现,服务中心没有私钥的任何信息。
[0057] 本实施例的基于STOP技术对私钥乘加密的SM2同态签名方法,其基于SM2算法,定义椭圆曲线C,基点G,阶为素数n。
[0058] 用户私钥:dA∈[1,n-1]是一个大整数,客户端只保存和使用加密后的私钥d'A,其中d'A=u.dA,u由客户端使用可重构的密码体制SOTP、时间戳,融合用户口令得到。
[0059] 原始公钥:PA=[dA]G。
[0060] 使用d'A用SM2标准签名流程步骤生成签名值。
[0061] 服务中心使用u和原始公钥的倍点计算结果[u]PA作为验签公钥来验证签名。
[0062] 客户端签名流程如图2所示,客户端直接使用私钥密文进行签名运算,保存签名值和私钥密文生成时的时间戳T,服务中心进行签名验证时需要使用。
[0063] 服务中心验证签名流程如图3所示,服务中心接受签名验证请求,包括签名证书、签名值、签名私钥密文生成时的时间戳T和签名数据。用户uid可包含在证书主题项中,根据用户uid、签名私钥密文生成时的时间戳T和用户注册时记录的信息恢复出用户SOTP算法代码S,使用算法代码S,根据签名私钥密文生成时的时间戳T,融合用户口令计算出签名时的私钥保护因子乱数u,使用u点倍乘证书中的公钥得到验签公钥[u]PA,用验签公钥按照SM2标准流程进行签名验证。
[0064] 可选择安全增强的实现方案:根据安全等级要求,需要增强安全性时,可实现为签名时客户端必须通过服务中心的认证,保存签名数据的杂凑值和签名私钥密文生成时的时间戳T到服务中心,服务中心对没有通过认证的客户端的数据不予记录;签名验证时服务中心先查找是否有匹配签名数据杂凑值的记录,没有找到记录则判断为非法签名。
[0065] 保存签名摘要到服务中心的客户端签名流程如图4所示,客户端签名前先使用SOTP算法和服务中心互相进行身份认证,同时将签名私钥密文生成时的时间戳T和待签名数据摘要值m保存至服务中心。(可选择认证通过后生成本次私钥保护因子乱数u,使用u对原来保存的签名私钥密文进行模乘运算得到新私钥密文);使用最新私钥密文进行签名运算,保存签名私钥密文生成时的时间戳T和签名值。签名验证的时候服务中心需要签名值对应的时间戳来恢复出保护因子乱数用来计算验签公钥。
[0066] 服务中心保存签名摘要的流程如图5所示,服务中心使用SOTP算法对客户端进行认证,认证通过后保存本次签名用到的签名私钥密文生成时的时间戳T和待签名原文摘要值m到用户uid对应的记录中。没有通过认证则不保存T和m。认证用户身份除了上述SOTP外,还可以是其他如人像比对,短信验证等方式。签名验证时,只有在服务中心用户签名记录中存在的摘要值和时间戳才进行验证,否则直接判断签名非法。
[0067] 服务中心验证签名流程如图6所示,服务中心接受签名验证请求,包括签名证书、签名值、签名私钥密文生成时的时间戳T和签名数据。用户uid可包含在证书主题项中,首先根据uid和签名私钥密文生成时的时间戳T查找签名杂凑值记录是否存在,不存在则判断签名非法。存在则根据用户uid、签名私钥密文生成时的时间戳T和用户注册时记录的信息恢复出用户SOTP算法代码S,使用算法代码S,根据签名私钥密文生成时的时间戳T,融合用户口令计算签名时的私钥保护因子乱数序u,使用u点倍乘证书中的公钥得到验签公钥[u]PA,用验签公钥按照SM2标准流程进行签名验证。
[0068] 基于SOTP乘法保护签名私钥,签名,验证实施例:
[0069] 1、客户端用户私钥dA:
[0070] 446A82FDDBB1035945126A61186914EEBA63C5DE3EFE6264D5135032C6AF062C;
[0071] 公钥PA:
[0072] 04049D300EE23B874A7566E30028C64702743A3806F56D5B6D2BF889A0FD9EE7869E73ECFBE4D7B3EFE59EF1559EC9B4241BF7127A47B0C635A014E2A9C206B7E4;
[0073] 2、客户端签名过程:
[0074] 时间戳T:1577807999
[0075] 客户端和服务中心验证后协商出乘法加密保护因子乱数u:
[0076] A4D528F4D6493F4B114AA9251EACC59DC498E792F957754CC99CCFFC33503FAA;
[0077] 使用乱数u对用户私钥dA乘法加密后得到udA:
[0078] E7D685AD9D8AFE37AB21BB80B4685DAA95840ED81A0D6A9C7A5AC1354ACC4C07;
[0079] 待签名原文杂凑值m为:
[0080] C3918C3903209181097C2B75207C49D69C23F0D35F5B220810AEF860E281A032;
[0081] 使用udA对m进行SM2签名得到签名值sig为:304502204542EF51AED0B2648297726A1834C7D7733E0E3FAD502CE4151DF5ADAB972E2E022100B70720CAC5A6426A07AEA2B78ABEB17E530B5301208F3486553B0DED58A07CBD。
[0082] 3、服务中心验证签名过程:
[0083] 3.1接收验证请求,用户uid,时间戳T,签名值sig,公钥证书,原文杂凑值m;查找m和T是否存在于用户签名记录中
[0084] 3.2根据用户uid生成SOTP代码S,使用SOTP算法S(S(T)+uid)得到密钥模乘保护因子乱数u:
[0085] A4D528F4D6493F4B114AA9251EACC59DC498E792F957754CC99CCFFC33503FAA[0086] 3.3使用乱数u点乘公钥得到验签公钥[u]PA:
[0087] 045EA0341AE9C131EC426120BD9BD1BE6C2310214C4F64859FE91709A9657BE70705FB69118B696364CB70792D39D5EB668C36540246383752AFF034574B9B4B11
[0088] 3.4使用上一步得到的验签公钥验证签名值通过。
[0089] 本实施例的乱数U生成如图7所示。
[0090] 本发明使用SOTP算法来生成私钥保护乱数,SOTP算法是现有的密码算法方案,也可使用其他类似算法替换使用。
[0091] 以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明的权利要求书的保护范围之内。本发明未涉及的技术均可通过现有技术加以实现。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈