一种协同数字签名系统及其方法
【技术领域】
[0001]本发明涉及计算机信息安全技术,尤其涉及一种协同数字签名系统及其方法。
【背景技术】
[0002]目前通行的数字签名机制,通常使用智能密钥和集成电路(IC)卡来存储用户密钥、完成签名的密码运算,因此还需要专门的硬件设备以及相关的各类中间件来协同完成操作。这不仅给移动智能终端(如手机)的携带和使用均带来不便,而且,在很多对信息有高安全性要求的应用场合,也受当前技术的限制而无法在移动智能终端上开展相关业务。
【发明内容】
[0003]有鉴于此,本发明的主要目的在于提供一种协同数字签名系统及其方法,通过将数字签名活动委托给数字签名服务器端,以简化在移动智能终端上进行数字签名的操作,使用户能够在确保网络签名高度安全的环境下使用相关业务,如网络交易、金融支付等过程中的电子身份鉴权。
[0004]为达到上述目的,本发明的技术方案在将部分密钥托管在服务端的前提下,是这样实现的:
一种协同数字签名系统,该系统主要包括安装有移动应用客户端程序的移动智能终端和签名服务器;其中,
所述签名服务器,用于托管用户的数字签名的密钥部分,然后在最终用户的确认下完成数字签名,并验证数字签名;
所述移动智能终端,用于保存除了用户的数字签名的密钥部分之外的部分,以便进行数字签名活动的确认,并配合签名服务器端完成数字签名。
[0005]其中,所述移动智能终端还用于通过所述数字签名服务进行业务应用。
[0006]所述签名服务器和移动智能终端还需要进一步配合,经最终用户通过移动智能终端进行确认产生所述数字签名。
[0007]一种协同数字签名方法,用户将其数字签名密钥部分托管在服务器端,称为服务端密钥因子Dsotvot,剩余部分保存在其拥有的终端设备上,称为客户端密钥因子Dcdimt,所述方法包括:
Al、应用系统先对需要签名的数据进行数字签名所需的预处理运算,然后发送给签名服务器端,要求签名服务器端为指定的客户进行数字签名;
A2、签名服务器端通过客户约定的通知方式通知最终用户,并要求客户端确认是否进行数字签名;
A3、客户端应用程序使用用户输入的信息,恢复客户端部分密钥Ddimt,从签名请求中得到待签名哈希值H,计算客户端签名结果Scdimt;
A4、将签名结果Sdimt发送到签名服务端;
A5、签名服务纟而收到签名结果,恢复您、钥因子D SOTve;1.,使用签名结果、钥因子Dsotvot、摘要信息H计算服务器端签名S_VOT,并发送给客户端;
A6、客户端使用客户端密钥因子Dcdimt、签名结果Sdimt、服务器端签名^_计算得到最终签名结果S ;
A7、将最终签名结果S返回给签名服务,服务端经验证后返回给相应的业务应用。
[0008]其中,所述客户约定的通知方式,包括短信、微信、邮件中的一种或多种。
[0009]步骤A2中所述签名服务器端请求客户端确认的信息,进一步包括签名所需的摘要信息H。
[0010]步骤A3所述用户输入的信息进一步包括个人识别码PIN、设备信息、终端上保存的随机数据中的一种或多种。
[0011]所述客户纟而签名结果Selien1^:
Sdient= ClientSign( H, Dclient);
其中,Dcdimt为客户端密钥因子,H为待签名哈希值。
[0012]步骤A5中所述的服务器端签名Ssotvct为:
Sserver-ServerSign ( Sclient,Dserver,H );
其中,Sdimt为签名结果,D SOTVCT为密钥因子,H为摘要信息。
[0013]步骤A6所述的最终签名结果S为:
S = CombineSign (Dclient, Sclient, Sserver);
其中,Dcdimt为客户端密钥因子,S 为签名结果,S 为服务器端签名。
[0014]本发明所提供的协同数字签名系统及其方法,具有以下优点:
I)采用本发明,能够使用户通过移动智能终端进行身份鉴权时,毋需再使用额外的硬件数字证书介质(如U盾、USB-Key ),即可便捷地、安全地进行数字签名操作。
[0015]2)本发明通过简化数字签名操作,可将很多对安全性要求较高的业务在移动智能终端上完成。由于使用本发明的数字签名系统及其方法,服务器端和用户端还需要相互配合才能完成数字签名,而且该数字签名须经最终用户的确认才能产生,因此,能够保证数字签名的高安全性要求,同时,还能够在密钥托管和数字签名的过程中,防止网络上窃听者、中间人的攻击,并能够防止服务端的不诚信行为,保证了服务器端的签名行为完全由用户控制。
【附图说明】
[0016]图1为本发明实施例协同数字签名系统的数字签名过程图;
图2为本发明协同数字签名系统的具体应用示意图。
【具体实施方式】
[0017]下面结合附图及本发明的实施例对本发明协同数字签名系统及其方法作进一步详细的说明。
[0018]本发明的协同数字签名系统,在签名密钥托管在服务器端的情况下,通过将数字签名活动委托给数字签名服务器端,由服务器端的硬件加密设备来进行数字签名,而所有的数字签名,均需要经过用户的确认才能完成,因而能保证数字签名的高安全性要求。
[0019]图1为本发明实施例协同数字签名系统的数字签名过程图。
[0020]如图1所示,在网络交易、金融支付等过程中需要电子身份鉴权等的业务应用中,需要用户进行数字签名来完成业务流程时,需要执行如下生成密钥和数字签名的过程,具体为:
步骤11:业务应用在需要用户进行数字签名时,先对需要签名的数据进行数字签名所需的预处理运算,包括对数据原文进行摘要,然后发送给签名服务器端,要求签名服务器端为指定的客户进行数字签名。
[0021]步骤12:签名服务器端通过客户约定的通知方式,包括但不限于短信、微信、邮件等方式,通知最终用户,并要求客户确认是否进行数字签名,进一步可以包含签名所需的摘要信息H。
[0022]步骤13:客户端应用程序使用用户输入的信息,如个人识别码(PIN)、设备信息、手机上保存的随机数据的一种或多种,恢复客户端密钥因子Dcdimt,从签名请求中得到待签名哈希值H,计算客户端签名结果Selient= ClientSign ( H, Delient)。
[0023]步骤14:将签名结果Selien^送到签名服务器端。
[0024]步骤15:签名服务器端收到签名结果,使用加密存储的密钥数据,恢复密钥因子Dsotvot,使用签名结果Scdimt、密钥因子Dsotvot、摘要信息H计算服务器端签名Sserver=ServerSign ( Sclient, Dserver, H ),并发送给客户端。
[0025]步骤16:客户端使用客户端密钥因子Ddimt、签名结果Sdimt、服务器端签名