一种基于多方安全计算的电子签名移动客户端与协同服务器通信的方法以及设备与流程

文档序号:18639008发布日期:2019-09-11 22:44阅读:186来源:国知局
一种基于多方安全计算的电子签名移动客户端与协同服务器通信的方法以及设备与流程

本发明涉及电子签名领域,特别是为了保证云计算环境中私钥的安全性,采用签名人持有的客户端与系统提供的服务端协助配合,在相互不暴露机密信息的情况下,完成电子签名的应用系统。



背景技术:

常规的电子签名是基于公钥密码学,以签名人私钥对数据消息进行签名,而以公钥对签名值进行验证签名的一种方式,在电子签名过程中,由于私钥直接代表了签名人的身份,因此私钥的安全管理成为了非常重要的任务,为了能够保证私钥安全,常见的做法是使用ukey,但由于ukey在使用上存在不够便捷的缺陷,使用门槛高,并且在现在移动互联环境下,对手机等智能移动终端的支持不足,如何在免ukey的情况下,保证私钥的签名安全性是一个问题。



技术实现要素:

本发明的目的是构造一个在不使用usbkey、smartcard等外设密码硬件设备的情况下,用户(签名人)可以安全使用其基于sm2密码标准的私钥,进行数字签名的方法,并提供可以克服传统技术无法保护用户隐私、抵抗恶意攻击等问题的sm2算法协同签名系统。

本发明的技术方案是:

本发明提供一种基于多方安全计算的电子签名移动客户端与协同服务器通信的方法,该方法包括以下步骤;

注册步骤

s1.1用户u智能手机安装并运行客户端app,app中业务模块使用统一规则,通过移动终端的硬件信息特征,计算设备唯一标识uuid;

s1.2业务模块调用助记词模块随机向u显示词组,用户u选择相应词组作为助记词字符串ph,并要求用户按顺序记住助记词明文;

s1.3业务模块请用户u提交身份信息idu,并设置一个pin码;

s1.4业务模块向sdk发出a指令包括参数ph、pin、uuid、idu;

s1.5sdk执行计算:

使用密钥派生算法kdfs以ph为输入参数进行计算,生成第一私钥分量d1∈[1,2,…,n-1];

计算公钥第一分量p1,

使用密钥派生算法kdfs,以pin为输入参数进行计算,产生对称密钥keyp1;

使用keys、keyp1、uuid对d1进行加密运算en(keys,keyp1,uuid),

得到cd1s,其中keys表示sdk预置的密钥。

s1.6sdk向业务模块输出cd1s,并使用安全信道,向协同服务器ser输出p1、idu;

s1.7业务模块使用密钥派生算法kdfy以pin码为输入,生成对称密钥keyp2,使用keyp2对cd1s进行加密运算,得到密文cd1y,将cd1y保存;

s1.8执行s1.7的同时,协同服务器ser收到p1后,保存p1、idu,执行如下运算:

ser选取一个随机安全参数作为输入,使用kdfser密钥派生算法生成私钥第二分量d2,

d2∈[1,2,…,n-1];

结合p1和椭圆曲线参数g,进一步计算出完整的公钥

s1.9ser保存p,将p与idu关联,并通过安全信道将完整公钥p发送给sdk,sdk将p交付给业务模块,业务模块保存p,用户u获得完整公钥,系统注册完成;

签名步骤:

s1.10用户u将拟签名的文件m导入app业务模块,发起一个签名请求;

s1.11app业务模块计算e=h(m),将e发送给sdk,并提交b指令;

s1.12sdk随机产生一个安全随机参数k1∈[1,2,…,n-1],计算q1=k1g,并将e、q1通过安全信道发送给协同服务器ser;

s1.13ser收到sdk发来的e、q1,执行如下运算:

ser产生随机安全参数k2,k3,k2∈[1,2,…,n-1],

k3∈[1,2,…,n-1],结合q1,

计算x,y是椭圆曲线上的坐标;

计算r=(e+x)modn,n是椭圆曲线的参数;

计算s3=d2(r+k3)modn;

s1.14ser通过安全信道发送(r,s2,s3)到sdk;

s1.15在s1.12~1.14执行的同时,业务模块使用统一规则,通过移动终端的硬件信息计算设备唯一标识uuid,并请用户u输入pin码,使用密钥派生算法kdfy以pin码为输入,生成对称密钥keyp2;

s1.16业务模块使用keyp2对cd1y进行解密,得到cd1s,将参数pin、uuid、cd1s提交给sdk,并请求执行c指令;

s1.17sdk接收到业务模块的c指令和参数pin、uuid、cd1s,并结合s1.14中ser通过安全信道发送(r,s2,s3)执行如下运算:

使用密钥派生算法kdfs,以pin为输入参数进行计算得到keyp1;

使用keys、keyp1、uuid对cd1s进行解密,de(keys,keyp1,uuid),

得到d1;

计算s=d1k1s2+d1s3-rmodn

s1.18sdk得到文件m的签名值(r,s),签名流程结束。

进一步地,步骤s1.2中,助记词模块随机向u显示词组的具体步骤如下:助记词模块中内置m个汉字词组组成的词典dic,给每一个词组配置相应的编号,该编号为0~m-1;

助记词产生的流程如下:

生成一个长度j位的随机序列作为熵str’,j为32的倍数,m=8j;

对随机序列str’计算哈希值h(str’),取h(str’)的前n’位作为校验和,n’=j/32;将校验和连接到str’的末尾,得到完整序列str;

将str按照每11位为一个单位进行分割,得到至少(j+n’)/11个分块,将每个分块转换为十进制,得到0~m-1的整数;

以前述整数为索引,在词典dic中按顺序找到对应的(j+n’)/11个关键词,并按顺序拼接在一起,产生词组提交给业务模块,供用户选择作为助记词ph。

进一步地,该方法还包括:

密钥恢复步骤:

用户u运行客户端app,提交恢复密钥的请求;

助记词模块请用户按顺序明文输入需要妥善保存的助记词ph;

业务模块请用户输入身份信息idu’,重置pin码,同时业务模块计算设备的唯一标识符uuid,并将ph、pin、uuid、idu’作为参数发送给sdk,请求执行a指令,sdk向业务模块输出cd1s。业务模块使用密钥派生算法kdfy以pin码作为输入,生成业务模块的对称密钥keyp2;业务模块使用keyp2对cd1s进行加密运算,得到密文cd1y并保存;

sdk模块执行a指令进行运算,得到p1’,并通过安全信道将p1’、idu’发送给系统服务器ser;

协同服务器ser收到sdk模块提交的p1’、idu’后,与步骤s1.6中保存的p1、idu进行比对;比对一致,则ser通过安全信道将之前保存的用户u的完整公钥p发送给sdk,sdk将p交付给业务模块,用户u的密钥恢复完成;比对不一致,则恢复失败。

一种基于多方安全计算的电子签名移动客户端设备处执行的方法,该方法包括以下步骤;

注册步骤:

s2.1、用户u智能手机安装并运行客户端app,客户端中业务模块通过移动终端的硬件信息特征获取设备唯一标识uuid;

s2.2、业务模块调用助记词模块随机向u显示词组,用户u选择显示的相应词组作为助记词字符串ph,并要求用户按顺序记住助记词明文ph;

s2.3、业务模块请用户u提交身份信息idu,u表示用户编号,并设置一个pin码;

s2.4、业务模块向sdk发出a指令包含参数ph、pin、uuid、idu;

s2.5、sdk执行计算:

使用密钥派生算法kdfs以ph为输入参数进行计算,生成第一私钥分量d1∈[1,2,…,n-1],n表示椭圆曲线参数;

计算公钥第一分量p1,g表示椭圆曲线参数;

使用密钥派生算法kdfs,以pin为输入参数进行计算,产生对称密钥keyp1;

使用keys、keyp1、uuid对d1进行加密运算en(keys,keyp1,uuid),

得到d1的密文cd1s,keys表示预设的对称密钥;

s2.6、sdk向业务模块输出cd1s,并使用安全信道,向协同服务器ser输出公钥第一分量p1、idu;

s2.7、业务模块将ph、pin、uuid发送至sdk模块,同时使用密钥派生算法kdfy以pin码作为输入,生成业务模块的对称密钥keyp2;业务模块使用keyp2对cd1s进行加密运算,得到密文cd1y并保存;

签名步骤:

s2.8、用户u将拟签名的文件m导入app的业务模块,发起一个签名请求;

s2.9、业务模块计算e=h(m),将e发送给sdk,并向sdk提交b指令;

sdk随机产生一个安全随机参数k1∈[1,2,…,n-1],计算中间参数q1=k1g,并将e、q1通过安全信道发送给协同服务器ser;

同时,业务模块请用户u输入pin码,使用密钥派生算法kdfy以pin码为输入,生成对称密钥keyp2;

s2.10、业务模块使用keyp2对步骤2.7获取的密文cd1y进行解密,得到cd1s,将参数pin、uuid、cd1s提交给sdk,并请求执行c指令;

sdk接收到业务模块的c指令和参数pin、uuid、cd1s,并结合ser通过安全信道发送的中间参数(r,s2,s3)执行如下运算:

使用密钥派生算法kdfs,以pin为输入参数进行计算得到keyp1;

使用keys、keyp1、uuid对cd1s进行解密,de(keys,keyp1,uuid),得到d1;

计算s=d1k1s2+d1s3-rmodn

s2.11、sdk得到文件m的签名值(r,s),签名流程结束。

进一步地,移动客户端设备处执行的方法还包括:

密钥恢复步骤:

用户u运行客户端app,提交恢复密钥的请求;

助记词模块请用户按顺序明文输入需要妥善保存的助记词ph;

业务模块请用户输入身份信息idu’,重置pin码,同时业务模块计算设备的唯一标识符uuid,并将ph、pin、uuid、idu’作为参数发送给sdk,请求执行a指令,sdk向业务模块输出cd1s。业务模块使用密钥派生算法kdfy以pin码作为输入,生成业务模块的对称密钥keyp2;业务模块使用keyp2对cd1s进行加密运算,得到密文cd1y并保存;

sdk模块执行a指令进行运算,得到p1’,并通过安全信道将p1’、idu’发送给系统服务器ser。

一种基于多方安全计算的电子签名移动客户端设备,该设备包括sdk模块、助记词模块和业务模块,其中;

助记词模块:用于向u显示词组,用户u选择显示的相应词组作为明文助记词字符串ph;

sdk模块:

初始化单元:初始化sdk,产生并保存一个用于加密和解密对称密钥keys,预设sdk用于非对称签名的sm2椭圆曲线公钥密码算法的椭圆曲线参数g、n;

a指令执行单元:当sdk收到业务模块输入a指令,执行计算:sdk使用密钥派生算法kdfs以ph为输入参数进行计算,生成第一私钥分量d1∈[1,2,…,n-1];计算公钥第一分量使用密钥派生算法kdfs,以pin为输入参数进行计算,产生对称密钥keyp1;使用keys、keyp1、uuid对d1进行加密运算en(keys,keyp1,uuid),得到d1的密文cd1s;sdk向业务模块输出cd1s;同时,使用安全信道,向协同服务器ser输出p1、idu;

b指令执行单元:当sdk收到业务模块输入的b指令和文件m的哈希值e,执行计算:sdk随机产生一个安全随机参数k1∈[1,2,…,n-1],计算中间参数q1=k1g,并将e、q1通过安全信道发送给协同服务器ser;

c指令执行单元:当sdk接收到业务模块的c指令、参数pin、uuid、cd1s和来自于协调服务器ser的中间参数r,s2,s3,执行计算:sdk使用密钥派生算法kdfs,以pin为输入参数进行计算得到keyp1;使用keys、keyp1、uuid对cd1s进行解密,de(keys,keyp1,uuid),得到d1;计算中间参数s=d1k1s2+d1s3-rmodn;sdk向业务模块输出(r,s);

公钥交付单元:当sdk收到协同服务器ser发送的完整公钥p,将p交付给业务模块;

业务模块:

设备唯一标识获取单元:业务模块以移动终端的硬件信息为特征,获取设备唯一标识uuid;

身份信息获取单元:当助记词模块产生助记词ph后,业务模块请用户u提交身份信息idu,u表示用户编号,并设置pin码;

a指令发送单元:业务模块调用助记词模块产生ph,并将ph、pin、uuid、idu和a指令发送至sdk模块处理;

加密单元:业务模块接收到sdk模块输出的cd1s,使用密钥派生算法kdfy以pin码作为输入,生成业务模块的对称密钥keyp2;使用keyp2对cd1s进行加密运算en(keyp2,cd1s)=cd1y,保存密文cd1y;

注册完成单元:业务模块收到sdk交付的用户u的完整公钥p后,u的身份注册完成;

b指令发送单元:签名时,业务模块收到用户u提交的待签名文件m之后,计算m的哈希值e=h(m),发送给sdk模块,并发出b指令;

解密单元:业务模块向用户u申请输入pin码,使用密钥派生算法kdfy以pin码为输入,生成对称密钥keyp2,并以keyp2为密钥对保存的cd1y进行解密,de(keyp2,cd1y)=cd1s;

c指令发送单元:业务模块向sdk请求执行c指令,并发送参数pin、uuid和cd1s;

签名完成单元:业务模块收到sdk返回的文件m的签名值(r,s),签名流程完成。

一种基于多方安全计算的电子签名协同服务器设备处执行的方法,该方法包括以下步骤;

注册步骤

s3.1、协同服务器ser收到sdk发出的公钥第一分量p1和用户身份信息idu后,执行如下运算;选取一个随机安全参数作为输入,使用kdfser密钥派生算法生成私钥第二分量d2,d2∈[1,2,…,n-1],n表示椭圆曲线参数;结合p1和椭圆曲线参数g,进一步计算出完整的公钥;

s3.2、ser保存p,将p与idu关联,并通过安全信道将完整公钥p发送给sdk;

签名步骤:

s3.3、ser收到sdk发来的e、q1,产生随机安全参数k2,k3,k2∈[1,2,…,n-1],k3∈[1,2,…,n-1],结合q1,计算中间参数q2、q3、r和s2、s3;

x,y是椭圆曲线上的坐标;

r=(e+x)modn,n是椭圆曲线的参数;

s3=d2(r+k3)modn;

s3.4、ser通过安全信道发送中间参数(r,s2,s3)到sdk。

进一步地,协同服务器设备处执行的方法该方法还包括:

密钥恢复步骤:协同服务器ser收到sdk模块提交的p1’、idu’后,与步骤

s3.2中保存的p1、idu进行比对;比对一致,则ser通过安全信道将之前保存的用户u的完整公钥p发送给sdk,sdk将p交付给业务模块,用户u的密钥恢复完成;比对不一致,则恢复失败。

一种基于多方安全计算的电子签名协同服务器设备,该设备包括:公钥获取单元:当收到sdk发出的公钥第一分量p1和用户身份信息idu后,用于执行如下运算;选取一个随机安全参数作为输入,使用kdfser密钥派生算法生成私钥第二分量d2,d2∈[1,2,…,n-1],n表示椭圆曲线参数;结合p1和椭圆曲线参数g,进一步计算出完整的公钥;

公钥发送单元:用于保存p,将p与idu关联,并通过安全信道将完整公钥p发送给sdk;

中间参数获取单元:当收到sdk发来的e、q1,产生随机安全参数k2,k3,k2∈[1,2,…,n-1],k3∈[1,2,…,n-1],结合q1,用于计算中间参数q2、q3、r和s2、s3;

x,y是椭圆曲线上的坐标;

r=(e+x)modn,n是椭圆曲线的参数;

s3=d2(r+k3)modn;

中间参数发送单元:用于通过安全信道发送中间参数(r,s2,s3)到sdk。

本发明的有益效果:

本发明安全多方计算可以抽象的理解为两方分别拥有各自的私有数据,在不泄漏各自私有数据的情况下,能够计算出关于公共函数的结果。整个计算完成时,只有计算结果对双方可知,且双方均不知对方的数据以及计算过程的中间数据。

本发明基于安全多方计算的思想,在签名人之外增加一个协助签名人完成签名任务的公共服务端,签名人通过移动智能终端与公共服务端分别存储管理部分私钥的因子,在签名时需要双方联合计算才能完成对消息的完整签名,在此过程中,任何一方均无法获取到关于另一方私钥的任何信息,因此即使攻击者能入侵其中任何一方,攻击者仍然不能伪造合法的签名。

本发明的其它特征和优点将在随后具体实施方式部分予以详细说明。

附图说明

通过结合附图对本发明示例性实施方式进行更详细的描述,本发明的上述以及其它目的、特征和优势将变得更加明显,其中,在本发明示例性实施方式中,相同的参考标号通常代表相同部件。

图1示出了本发明的助记词产生流程图。

图2示出了本发明的流程图。

具体实施方式

下面将参照附图更详细地描述本发明的优选实施方式。虽然附图中显示了本发明的优选实施方式,然而应该理解,可以以各种形式实现本发明而不应被这里阐述的实施方式所限制。

如图2所示,一种基于多方安全计算的电子签名移动客户端与协同服务器通信的方法,该方法包括以下步骤;

注册步骤

s1.1用户u智能手机安装并运行客户端app,app中业务模块使用统一规则,通过移动终端的硬件信息特征,计算设备唯一标识uuid;

s1.2业务模块调用助记词模块随机向u显示词组,用户u选择相应词组作为助记词字符串ph,并要求用户按顺序记住助记词明文,如图1所示;

m:词典中词组的数量(始终为熵的8倍,比如熵为128位,则m为1024;如熵为256位,则m为2048;)

n’:校验和,长度始终等于熵的长度/32,比如熵为128位,则n’为4;如熵为256位,则n’为8;

助记词模块中内置m个汉字词组组成的词典dic,给每一个词组配置相应的编号,该编号为0~m-1;助记词产生的流程如下:

生成一个长度j位的随机序列作为熵str’,j为32的倍数,j取值以256为例,m为2048;

对随机序列str’计算哈希值h(str’),取h(str’)的前n’位作为校验和,n’=j/32,取值为8;将8位校验和连接到srr’的末尾,得到264位完整序列str;

将str按照每11位为一个单位进行分割,得到至少24个分块,将每个分块转换为十进制,得到0~m-1的整数;

以前述整数为索引,在词典dic中按顺序找到对应的24个关键词,并按顺序拼接在一起,产生词组提交给业务模块,供用户选择作为助记词ph。

s1.3业务模块请用户u提交身份信息idu,并设置一个pin码;

s1.4业务模块向sdk发出a指令和参数ph、pin、uuid、idu;

s1.5sdk执行计算:

使用密钥派生算法kdfs以ph为输入参数进行计算,生成第一私钥分量d1∈[1,2,…,n-1];

计算公钥第一分量p1,

使用密钥派生算法kdfs,以pin为输入参数进行计算,产生对称密钥keyp1;

使用keys、keyp1、uuid对d1进行加密运算en(keys,keyp1,uuid),

得到cd1s,其中keys表示sdk预置密钥;

s1.6sdk向业务模块输出cd1s,并使用安全信道,向协同服务器ser输出p1、idu;

s1.7业务模块使用密钥派生算法kdfy以pin码为输入,生成对称密钥keyp2,使用keyp2对cd1s进行加密运算,得到密文cd1y,将cd1y保存;

s1.8执行s1.7的同时,协同服务器ser收到p1后,保存p1、idu,执行如下运算:

ser选取一个随机安全参数作为输入,使用kdfser密钥派生算法生成私钥第二分量d2,

d2∈[1,2,…,n-1];

结合p1和椭圆曲线参数g,进一步计算出完整的公钥

s1.9ser保存p,将p与idu关联,并通过安全信道将完整公钥p发送给sdk,sdk将p交付给业务模块,业务模块保存p,用户u获得完整公钥,系统注册完成;

签名步骤:

s1.10用户u将拟签名的文件m导入app业务模块,发起一个签名请求;

s1.11app业务模块计算e=h(m),将e发送给sdk,并提交b指令;

s1.12sdk随机产生一个安全随机参数k1∈[1,2,…,n-1],计算q1=k1g,并将e、q1通过安全信道发送给协同服务器ser;

s1.13ser收到sdk发来的e、q1,执行如下运算:

ser产生随机安全参数k2,k3,k2∈[1,2,…,n-1],k3∈[1,2,…,n-1],结合q1,

计算x,y是椭圆曲线上的坐标;

计算r=(e+x)modn,n是椭圆曲线的参数;

计算s3=d2(r+k3)modn;

s1.14ser通过安全信道发送(r,s2,s3)到sdk;

s1.15在s1.12~1.14执行的同时,业务模块使用统一规则,通过移动终端的硬件信息计算设备唯一标识uuid,并请用户u输入pin码,使用密钥派生算法kdfy以pin码为输入,生成对称密钥keyp2;

s1.16业务模块使用keyp2对cd1y进行解密,得到cd1s,将参数pin、uuid、cd1s提交给sdk,并请求执行c指令;

s1.17sdk接收到业务模块的c指令和参数pin、uuid、cd1s,并结合s1.14中ser通过安全信道发送(r,s2,s3)执行如下运算:

使用密钥派生算法kdfs,以pin为输入参数进行计算得到keyp1;

使用keys、keyp1、uuid对cd1s进行解密,de(keys,keyp1,uuid),

得到d1,其中keys表示sdk预置密钥;

计算s=d1k1s2+d1s3-rmodn

s1.18sdk得到文件m的签名值(r,s),签名流程结束。

进一步地,该方法还包括:

密钥恢复步骤:

用户u运行客户端app,提交恢复密钥的请求;

助记词模块请用户按顺序明文输入需要妥善保存的助记词ph;

业务模块请用户输入身份信息idu’,重置pin码,同时业务模块计算设备的唯一标识符uuid,并将ph、pin、uuid、idu’作为参数发送给sdk,请求执行a指令,sdk向业务模块输出cd1s。业务模块使用密钥派生算法kdfy以pin码作为输入,生成业务模块的对称密钥keyp2;业务模块使用keyp2对cd1s进行加密运算,得到密文cd1y并保存;

sdk模块执行a指令进行运算,得到p1’,并通过安全信道将p1’、idu’发送给系统服务器ser;

协同服务器ser收到sdk模块提交的p1’、idu’后,与步骤s1.6中保存的p1、idu进行比对;比对一致,则ser通过安全信道将之前保存的用户u的完整公钥p发送给sdk,sdk将p交付给业务模块,用户u的密钥恢复完成;比对不一致,则恢复失败。

一种基于多方安全计算的电子签名移动客户端设备,该设备包括sdk模块、助记词模块和业务模块,其中;

助记词模块:用于向u显示词组,用户u选择显示的相应词组作为明文助记词字符串ph;

sdk模块:

初始化单元:初始化sdk,产生并保存一个用于加密和解密对称密钥keys,预设sdk用于非对称签名的sm2椭圆曲线公钥密码算法的椭圆曲线参数g、n;

a指令执行单元:当sdk收到业务模块输入a指令,执行计算:sdk使用密钥派生算法kdfs以ph为输入参数进行计算,生成第一私钥分量d1∈[1,2,…,n-1];计算公钥第一分量使用密钥派生算法kdfs,以pin为输入参数进行计算,产生对称密钥keyp1;使用keys、keyp1、uuid对d1进行加密运算en(keys,keyp1,uuid),得到d1的密文cd1s;sdk向业务模块输出cd1s;同时,使用安全信道,向协同服务器ser输出p1、idu;

b指令执行单元:当sdk收到业务模块输入的b指令和文件m的哈希值e,执行计算:sdk随机产生一个安全随机参数k1∈[1,2,…,n-1],计算中间参数q1=k1g,并将e、q1通过安全信道发送给协同服务器ser;

c指令执行单元:当sdk接收到业务模块的c指令、参数pin、uuid、cd1s和来自于协调服务器ser的中间参数r,s2,s3,执行计算:sdk使用密钥派生算法kdfs,以pin为输入参数进行计算得到keyp1;使用keys、keyp1、uuid对cd1s进行解密,de(keys,keyp1,uuid),得到d1;计算中间参数s=d1k1s2+d1s3-rmodn;sdk向业务模块输出(r,s);

公钥交付单元:当sdk收到协同服务器ser发送的完整公钥p,将p交付给业务模块;

业务模块:

设备唯一标识获取单元:业务模块以移动终端的硬件信息为特征,获取设备唯一标识uuid;

身份信息获取单元:当助记词模块产生助记词ph后,业务模块请用户u提交身份信息idu,u表示用户编号,并设置pin码;

a指令发送单元:业务模块调用助记词模块产生ph,并将ph、pin、uuid、idu和a指令发送至sdk模块处理;

加密单元:业务模块接收到sdk模块输出的cd1s,使用密钥派生算法kdfy以pin码作为输入,生成业务模块的对称密钥keyp2;使用keyp2对cd1s进行加密运算en(keyp2,cd1s)=cd1y,保存密文cd1y;

注册完成单元:业务模块收到sdk交付的用户u的完整公钥p后,u的身份注册完成;

b指令发送单元:签名时,业务模块收到用户u提交的待签名文件m之后,计算m的哈希值h(m)=e,发送给sdk模块,并发出b指令;

解密单元:业务模块向用户u申请输入pin码,使用密钥派生算法kdfy以pin码为输入,生成对称密钥keyp2,并以keyp2为密钥对保存的cd1y进行解密,de(keyp2,cd1y)=cd1s;

c指令发送单元:业务模块向sdk请求执行c指令,并发送参数pin、uuid和cd1s;

签名完成单元:业务模块收到sdk返回的文件m的签名值(r,s),签名流程完成。

一种基于多方安全计算的电子签名协同服务器设备,该设备包括:公钥获取单元:当收到sdk发出的公钥第一分量p1和用户身份信息idu后,用于执行如下运算;选取一个随机安全参数作为输入,使用kdfser密钥派生算法生成私钥第二分量d2,d2∈[1,2,…,n-1],n表示椭圆曲线参数;结合p1和椭圆曲线参数g,进一步计算出完整的公钥;

公钥发送单元:用于保存p,将p与idu关联,并通过安全信道将完整公钥p发送给sdk;

中间参数获取单元:当收到sdk发来的e、q1,产生随机安全参数k2,k3,k2∈[1,2,…,n-1],k3∈[1,2,…,n-1],结合q1,用于计算中间参数q2、q3、r和s2、s3;

x,y是椭圆曲线上的坐标;

r=(e+x)modn,n是椭圆曲线的参数;

s3=d2(r+k3)modn;

中间参数发送单元:用于通过安全信道发送中间参数(r,s2,s3)到sdk。

以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1