本发明涉及信息安全技术领域,并且更具体地,涉及一种基于同态运算的协同签名方法及系统。
背景技术:
随着智能终端技术、移动互联技术和云计算技术的发展,越来越多的互联网络应用开始迁往智能移动终端,如:用于手机终端的支付宝、微信、网银等,使得用户在移动过程中,随时随地的都可以使用移动终端进行支付、购物、发送网络消息等。为了保障网络消息的可认证性和不可抵赖性,网络各种交易消息都需要用户签名进行保护。
由于当前智能移动终端大多都不携带有密码硬件模块,且由于便携性原因,不适合外接密码设备。因此,用户用于签名的私钥直接存储于智能移动终端上并不安全。
技术实现要素:
针对上述问题,本发明提出了一种基于同态运算的协同签名方法,包括:
接收用户的签名请求及签名文件,获取用户的身份信息,对用户身份信息进行验证,验证通过后,根据用户的签名请求,生成公钥和私钥,并对公钥和私钥进行存储;
调用存储的公钥和私钥,对公钥和私钥进行解析,获取解析数据,根据解析数据生成签名公钥和签名私钥密文,并对签名公钥和签名私钥密文进行存储;
生成协同签名确认协议,传输至用户,请求用户确认协议,当确定用户确认协议后,再次获取用户的身份信息,对用户的身份信息进行二次验证;
当二次验证通过后,根据所述签名公钥和签名私钥密文,针对用户的签名文件生成签名数据,对签名数据进行加密生成签名密文,对签名密文进行存储并生成签名密文已生成的指令;
接收签名密文已生成的指令,并根据指令生成下发签名的请求,当接收到下发签名的请求后,调用存储的签名密文,对签名密文进行解析,获取签名数据,使用签名数据对用户的签名文件进行签名。
可选的,生成公钥和私钥的过程为,包括:
使用随机数发生器以预设条件生成两个大素数,针对两个大素数以预设方式进行计算,获取中间数据,根据中间数据,确定公钥和私钥。
可选的,本发明方法还包括:
获取多个目标用户的身份信息,对多个目标用户的身份信息进行核查,核查通过后,对多个目标用户的身份信息进行加密并存储至数据库,对用户身份信息进行验证时,调用数据库存储的多个目标用户的身份信息,对用户的身份信息进行验证。
可选的,用户身份信息进行验证或二次验证时,若不通过,则拒绝签名请求。
可选的,用户的签名文件为同一签名文件时,用户身份信息验证及二次验证通过后,调用签名密文,对签名密文解析获取签名数据后,使用签名数据进行签名。
本发明还提出了一种基于同态运算的协同签名系统,包括:
第一验证模块,接收用户的签名请求及签名文件,获取用户的身份信息,对用户身份信息进行验证,验证通过后,根据用户的签名请求,生成公钥和私钥,并对公钥和私钥进行存储;
处理模块,调用存储的公钥和私钥,对公钥和私钥进行解析,获取解析数据,根据解析数据生成签名公钥和签名私钥密文,并对签名公钥和签名私钥密文进行存储;
第二验证模块,生成协同签名确认协议,传输至用户,请求用户确认协议,当确定用户确认协议后,再次获取用户的身份信息,对用户的身份信息进行二次验证;
密文生成模块,确定当二次验证通过后,根据所述签名公钥和签名私钥密文,针对用户的签名文件生成签名数据,对签名数据进行加密生成签名密文,对签名密文进行存储并生成签名密文已生成的指令;
签名模块,接收签名密文已生成的指令,并根据指令生成下发签名的请求,当接收到下发签名的请求后,调用存储的签名密文,对签名密文进行解析,获取签名数据,使用签名数据对用户的签名文件进行签名。
可选的,生成公钥和私钥的过程为,包括:
使用随机数发生器以预设条件生成两个大素数,针对两个大素数以预设方式进行计算,获取中间数据,根据中间数据,确定公钥和私钥。
可选的,第一验证模块,还用于:
获取多个目标用户的身份信息,对多个目标用户的身份信息进行核查,核查通过后,对多个目标用户的身份信息进行加密并存储至数据库,对用户身份信息进行验证时,调用数据库存储的多个目标用户的身份信息,对用户的身份信息进行验证。
可选的,用户身份信息进行验证或二次验证时,若不通过,则拒绝签名请求。
可选的,用户的签名文件为同一签名文件时,用户身份信息验证及二次验证通过后,调用签名密文,对签名密文解析获取签名数据后,使用签名数据进行签名。
本发明保证了签名私钥的安全性,另一方面可起到签名约束作用,保障了签名的权威性。
附图说明
图1为本发明一种基于同态运算的协同签名方法流程图;
图2为本发明一种基于同态运算的协同签名方法实施例流程图;
图3为本发明一种基于同态运算的协同签名系统结构图。
具体实施方式
现在参考附图介绍本发明的示例性实施方式,然而,本发明可以用许多不同的形式来实施,并且不局限于此处描述的实施例,提供这些实施例是为了详尽地且完全地公开本发明,并且向所属技术领域的技术人员充分传达本发明的范围。对于表示在附图中的示例性实施方式中的术语并不是对本发明的限定。在附图中,相同的单元/元件使用相同的附图标记。
除非另有说明,此处使用的术语(包括科技术语)对所属技术领域的技术人员具有通常的理解含义。另外,可以理解的是,以通常使用的词典限定的术语,应当被理解为与其相关领域的语境具有一致的含义,而不应该被理解为理想化的或过于正式的意义。
本发明提出了一种基于同态运算的协同签名方法,如图1所示,包括:
获取多个目标用户的身份信息,对多个目标用户的身份信息进行核查,核查通过后,对多个目标用户的身份信息进行加密并存储至数据库,对用户身份信息进行验证时,调用数据库存储的多个目标用户的身份信息,对用户的身份信息进行验证。
接收用户的签名请求及签名文件,获取用户的身份信息,对用户身份信息进行验证,验证通过后,根据用户的签名请求,生成公钥和私钥,并对公钥和私钥进行存储;
生成公钥和私钥的过程为,包括:
使用随机数发生器以预设条件生成两个大素数,针对两个大素数以预设方式进行计算,获取中间数据,根据中间数据,确定公钥和私钥。
调用存储的公钥和私钥,对公钥和私钥进行解析,获取解析数据,根据解析数据生成签名公钥和签名私钥密文,并对签名公钥和签名私钥密文进行存储;
生成协同签名确认协议,传输至用户,请求用户确认协议,当确定用户确认协议后,再次获取用户的身份信息,对用户的身份信息进行二次验证;
当二次验证通过后,根据所述签名公钥和签名私钥密文,针对用户的签名文件生成签名数据,对签名数据进行加密生成签名密文,对签名密文进行存储并生成签名密文已生成的指令;
接收签名密文已生成的指令,并根据指令生成下发签名的请求,当接收到下发签名的请求后,调用存储的签名密文,对签名密文进行解析,获取签名数据,使用签名数据对用户的签名文件进行签名。
用户身份信息进行验证或二次验证时,若不通过,则拒绝签名请求。
用户的签名文件为同一签名文件时,用户身份信息验证及二次验证通过后,调用签名密文,对签名密文解析获取签名数据后,使用签名数据进行签名。
下面结合实施例对本发明进行进一步说明;
根据本发明所述方法,使用服务端密钥生成、移动端签名私钥密文生成和消息协同签名计算三个过程,消息的签名验证计算可采用原有的sm2验证计算过程来完成,不影响原有系统验证签名算法的使用。
本发明中的椭圆曲线参数采用国家密码管理局规定的sm2曲线参数,具体可参见《sm2椭圆曲线公钥密码算法》(gm/t0003-2012)。设椭圆曲线为e(fq),基点为g=(xg,yg),阶为n,用[k]p表示椭圆曲线上的点乘运算,其中k为整数,p为椭圆曲线上的点。
fq为包含q个元素的素域。
具体过程如图2所示:
服务端利用随机数发生器产生两个大素数p1、p2,其中p1·p2>n4,且满足gcd(p1p2,(p1-1)(p2-1))=1,n为sm2曲线的阶。
服务端计算:n=p1·p2
g=n 1
λ=lcm(p1-1,p2-1)
μ=(l(gλmodn2))-1modn
其中函数lcm表示求两个输入整数的最小公倍数,函数l为paillier算法中的函数,如下:
服务端输出服务端的私钥参数sks={g,n,n2,λ,μ}以及服务端的公钥参数kp={g,n,n2}。
公钥用于对用户签名私钥进行加密处理,私钥用于对用户签名密文进行解密处理。
移动端a向服务端s发起密钥生成请求后,服务端利用随机数发生器产生随机数d2∈[1,n-1]和r1∈[1,n-1],并计算:
w=[d2]g
然后发送w,ptk1给移动端。
移动端利用随机数发生器产生随机数d1∈[1,n-1]和v1∈[1,n5-1],计算:
其中hda为移动端签名私钥密文,pa为移动签名公钥。
以上过程中,服务端为移动端生成一个签名私钥d2后并用服务端的公钥对签名私钥进行加密处理得到ptk1,移动端在收到加密的签名私钥ptk1后,混入一个自己的签名私钥d1,形成最终的移动端签名私钥密文hda,以保证移动端最终的签名私钥服务端无法解出。
同时移动端没有服务端的私钥,所以也无法解开hda获得真正的签名私钥。
移动端经过服务端认证后,服务端利用随机数发生器产生随机数k2∈[1,n-1],然后计算:
q=[k2]g
并发送q给移动端。
移动端收到送q后,利用随机数发生器产生随机数k1,u1∈[1,n-1],并对消息m进行以下计算:
(x1,y1)=[k1]g [u1]q
r=(e x1)modn
然后发送m,r,hs1,hs2给服务端。
服务端收到m,r,hs1,hs2后,执行如下计算:
s1=(l(hs1λmodn2)×μmodn)modn
s2=(l(hs2λmodn2)×μmodn)modn
s=(s1 s2×k2-r)modn
服务端用对应的移动端签名公钥pa调用标准的sm2签名验证算法验证签名σ=(r,s)的有效性;
如果有效则发送σ=(r,s)给移动端;
否则终止协议执行。
以上协同消息签名计算过程中,移动端用移动端签名私钥密文hda对消息m进行签名,形成签名密文hs1和hs2,服务端用自己的私钥对签名密文进行解密和还原,得到最终的签名(r,s)。
此过程中,由于用户端无法解密自己的签名私钥,因此无法单独产生所需的签名;而服务端由于不知道移动端最终的签名私钥密文,所以服务端也无法单独产生所需的签名,须由服务端配合才能产生真正的签名结果。
本发明在不改变原有签名系统的情况下,实现了对移动端签名私钥的加密存储,在移动端不暴露签名私钥密文的情况下,移动端、服务端,以及任何其它第三方都无法获得签名私钥的明文,保证了签名私钥的安全性。在进行签名计算时,移动端无需解密签名私钥密文,只需使用签名私钥密文对消息以同态运算方式签名即可,获得签名密文后,提交服务端解密获得签名。此过程一方面保证了签名私钥的安全性,另一方面可起到签名约束作用,任何单独一方都无法单独完成消息签名,保障了签名的权威性。该方法可用于移动智能终端需要签名私钥安全的应用场景,以及任何需要使用协同计算而达到签名私钥安全和有条件签名的应用场景中。
本发明还提出了一种基于同态运算的协同签名系统200,如图3所示,包括:
第一验证模块201,接收用户的签名请求及签名文件,获取用户的身份信息,对用户身份信息进行验证,验证通过后,根据用户的签名请求,生成公钥和私钥,并对公钥和私钥进行存储;
生成公钥和私钥的过程为,包括:
使用随机数发生器以预设条件生成两个大素数,针对两个大素数以预设方式进行计算,获取中间数据,根据中间数据,确定公钥和私钥。
第一验证模块201,还用于:
获取多个目标用户的身份信息,对多个目标用户的身份信息进行核查,核查通过后,对多个目标用户的身份信息进行加密并存储至数据库,对用户身份信息进行验证时,调用数据库存储的多个目标用户的身份信息,对用户的身份信息进行验证。
处理模块202,调用存储的公钥和私钥,对公钥和私钥进行解析,获取解析数据,根据解析数据生成签名公钥和签名私钥密文,并对签名公钥和签名私钥密文进行存储;
第二验证模块203,生成协同签名确认协议,传输至用户,请求用户确认协议,当确定用户确认协议后,再次获取用户的身份信息,对用户的身份信息进行二次验证;
密文生成模块204,确定当二次验证通过后,根据所述签名公钥和签名私钥密文,针对用户的签名文件生成签名数据,对签名数据进行加密生成签名密文,对签名密文进行存储并生成签名密文已生成的指令;
签名模块205,接收签名密文已生成的指令,并根据指令生成下发签名的请求,当接收到下发签名的请求后,调用存储的签名密文,对签名密文进行解析,获取签名数据,使用签名数据对用户的签名文件进行签名。
用户身份信息进行验证或二次验证时,若不通过,则拒绝签名请求。
用户的签名文件为同一签名文件时,用户身份信息验证及二次验证通过后,调用签名密文,对签名密文解析获取签名数据后,使用签名数据进行签名。
本发明保证了签名私钥的安全性,另一方面可起到签名约束作用,保障了签名的权威性。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。
1.一种基于同态运算的协同签名方法,所述方法包括:
接收用户的签名请求及签名文件,获取用户的身份信息,对用户身份信息进行验证,验证通过后,根据用户的签名请求,生成公钥和私钥,并对公钥和私钥进行存储;
调用存储的公钥和私钥,对公钥和私钥进行解析,获取解析数据,根据解析数据生成签名公钥和签名私钥密文,并对签名公钥和签名私钥密文进行存储;
生成协同签名确认协议,传输至用户,请求用户确认协议,当确定用户确认协议后,再次获取用户的身份信息,对用户的身份信息进行二次验证;
当二次验证通过后,根据所述签名公钥和签名私钥密文,针对用户的签名文件生成签名数据,对签名数据进行加密生成签名密文,对签名密文进行存储并生成签名密文已生成的指令;
接收签名密文已生成的指令,并根据指令生成下发签名的请求,当接收到下发签名的请求后,调用存储的签名密文,对签名密文进行解析,获取签名数据,使用签名数据对用户的签名文件进行签名。
2.根据权利要求1所述的方法,所述生成公钥和私钥的过程为,包括:
使用随机数发生器以预设条件生成两个大素数,针对两个大素数以预设方式进行计算,获取中间数据,根据中间数据,确定公钥和私钥。
3.根据权利要求1所述的方法,所述方法还包括:
获取多个目标用户的身份信息,对多个目标用户的身份信息进行核查,核查通过后,对多个目标用户的身份信息进行加密并存储至数据库,对用户身份信息进行验证时,调用数据库存储的多个目标用户的身份信息,对用户的身份信息进行验证。
4.根据权利要求1所述的方法,所述用户身份信息进行验证或二次验证时,若不通过,则拒绝签名请求。
5.根据权利要求1所述的方法,所述用户的签名文件为同一签名文件时,用户身份信息验证及二次验证通过后,调用签名密文,对签名密文解析获取签名数据后,使用签名数据进行签名。
6.一种基于同态运算的协同签名系统,所述系统包括:
第一验证模块,接收用户的签名请求及签名文件,获取用户的身份信息,对用户身份信息进行验证,验证通过后,根据用户的签名请求,生成公钥和私钥,并对公钥和私钥进行存储;
处理模块,调用存储的公钥和私钥,对公钥和私钥进行解析,获取解析数据,根据解析数据生成签名公钥和签名私钥密文,并对签名公钥和签名私钥密文进行存储;
第二验证模块,生成协同签名确认协议,传输至用户,请求用户确认协议,当确定用户确认协议后,再次获取用户的身份信息,对用户的身份信息进行二次验证;
密文生成模块,确定当二次验证通过后,根据所述签名公钥和签名私钥密文,针对用户的签名文件生成签名数据,对签名数据进行加密生成签名密文,对签名密文进行存储并生成签名密文已生成的指令;
签名模块,接收签名密文已生成的指令,并根据指令生成下发签名的请求,当接收到下发签名的请求后,调用存储的签名密文,对签名密文进行解析,获取签名数据,使用签名数据对用户的签名文件进行签名。
7.根据权利要求6所述的系统,所述生成公钥和私钥的过程为,包括:
使用随机数发生器以预设条件生成两个大素数,针对两个大素数以预设方式进行计算,获取中间数据,根据中间数据,确定公钥和私钥。
8.根据权利要求6所述的系统,所述第一验证模块,还用于:
获取多个目标用户的身份信息,对多个目标用户的身份信息进行核查,核查通过后,对多个目标用户的身份信息进行加密并存储至数据库,对用户身份信息进行验证时,调用数据库存储的多个目标用户的身份信息,对用户的身份信息进行验证。
9.根据权利要求6所述的系统,所述用户身份信息进行验证或二次验证时,若不通过,则拒绝签名请求。
10.根据权利要求6所述的系统,所述用户的签名文件为同一签名文件时,用户身份信息验证及二次验证通过后,调用签名密文,对签名密文解析获取签名数据后,使用签名数据进行签名。
技术总结