发明内容
有鉴于此,本发明的主要目的在于提供一种双因素数字签名方法,能够确保数字签名的安全性,且便于实现。
本发明的另一目的在于提供一种双因素数字签名系统,能够确保数字签名的安全性,且便于实现。
本发明的又一目的在于提供一种服务器,能够确保数字签名的安全性,且便于实现。
本发明的再一目的在于提供一种客户端,能够确保数字签名的安全性,且便于实现。
为达到上述目的,本发明的技术方案是这样实现的:
一种双因素数字签名方法,包括:
服务器产生待签名数据,并产生与待签名数据存在一一对应关系的验证数据,将验证数据呈现给用户,待签名数据发送给用户所使用的客户端;
客户端要求并接收用户输入的验证数据,将验证数据与待签名数据进行合并后发送给数字签名设备;
数字签名设备对合并后的数据进行数字签名,并将签名后的数据返回给客户端,客户端将签名后的数据进一步返回给服务器;
服务器验证签名正确且其中的待签名数据和验证数据对应,确定本次签名有效,否则,确定本次签名无效。
一种双因素数字签名系统,包括:
服务器,用于产生待签名数据,并产生与待签名数据存在一一对应关系的验证数据,将验证数据呈现给用户,将待签名数据发送给用户所使用的客户端;接收客户端返回的签名后的数据,若签名正确且其中的待签名数据与验证数据对应,则确定本次签名有效,否则,确定本次签名无效;
客户端,用于在接收到待签名数据后,要求并接收用户输入的验证数据,将验证数据与待签名数据进行合并后发送给数字签名设备,并将数字签名设备返回的签名后的数据发送给服务器;
数字签名设备,用于对合并后的数据进行数字签名,并将签名后的数据返回给客户端。
一种服务器,包括:
第一处理单元,用于产生待签名数据,并产生与待签名数据存在一一对应关系的验证数据,将验证数据呈现给用户,将待签名数据发送给用户所使用的客户端;
第二处理单元,用于接收客户端返回的签名后的数据,若签名正确且其中的待签名数据与验证数据对应,则确定本次签名有效,否则,确定本次签名无效。
一种客户端,包括:
第三处理单元,用于接收来自服务器的待签名数据,要求并接收用户输入的验证数据;
第四处理单元,用于将验证数据和待签名数据进行合并后发送给数字签名设备,并接收数字签名设备返回的签名后的数据,发送给服务器。
可见,采用本发明的技术方案,如果恶意程序要冒充用户进行数字签名,那么必须要有正确的验证数据才行,而验证数据和待签名数据之间是存在一一对应关系的,所以即使恶意程序获取到了验证数据,也无法利用其来冒充用户进行数字签名,从而确保了数字签名的安全性;而且,本发明所述方案无需对数字签名设备的硬件进行改造,实现起来非常方便,便于普及。
具体实施方式
针对现有技术中存在的问题,本发明中提出一种双因素数字签名方案,能够确保数字签名的安全性,且便于实现。
为使本发明的技术方案更加清楚、明白,以下参照附图并举实施例,对本发明所述方案作进一步地详细说明。
图1为本发明双因素数字签名方法实施例的流程图。如图1所示,包括以下步骤:
步骤11:服务器产生待签名数据,并产生与待签名数据存在一一对应关系的验证数据。
所述验证数据可以是纯粹的随机数据,如随机产生一串指定长度的数字和/或字符,将所产生的数字和/或字符作为验证数据;或者,也可以是与待签名数据相关的随机变量,如对待签名数据进行数字签名,并对签名后的数据进行哈希运算,将哈希运算结果作为验证数据,或者,对待签名数据及其指定相关信息进行数字签名,并对签名后的数据进行哈希运算,将哈希运算结果作为验证数据。上述相关信息可为:用户所使用的客户端的IP、用户标识、产生待签名数据的时间等。
上述仅为举例说明,在实际应用中,如果采用其它的方式来产生验证数据,也是可以的,只要保证验证数据和待签名数据之间存在一一对应关系即可。
步骤12:服务器将验证数据呈现给用户。
为了确保验证数据的安全性,防止被恶意程序获取,本步骤中,可首先通过多媒体变换,将步骤11中产生的验证数据转换为机器不易识别的形式,如用户可识别的图片、用户可收听的音频或要求用户回答的问题(如今年是建国多少周年)等;之后,将转换后的验证数据通过可信信道呈现给用户,这里所提到的可信信道包括:短信、电子邮件、即时通讯工具(如QQ或MSN)、电话等。具体使用哪种可信通道可根据用户注册时登记的信息而定,比如用户登记了电子邮箱地址,那么则可将电子邮件作为可信通道。
举例说明:服务器通过短信发送一幅图片到用户的手机上,用户查看图片所显示的内容,假设为一串数字5678,那么即可知道验证数据为5678;或者,服务器自动拨打用户的手机或座机,为用户播放一段音频,从而将验证数据通知给用户;再或者,服务器将要求用户回答的问题发到用户的电子邮箱内,用户将问题的答案作为验证数据。
步骤13:服务器将待签名数据发送给用户所使用的客户端。
本步骤中,客户端接收到待签名数据后,需要向服务器返回一个反馈消息,如果服务器发送出待签名数据后,经过预定时长仍未接收到反馈消息,可重复向客户端发送待签名数据,并且,如果重复发送N次,如5次后,仍未接收到反馈消息,可结束流程。类似地,步骤12中,如果用户接收到服务器通过短信、电子邮件、即时通讯工具等可信信道呈现的验证数据,也可向服务器返回一个反馈消息,相应地,如果服务器经过预定时长后仍未接收到反馈消息,可按照之前的方式再次将验证数据呈现给用户。
步骤14:客户端要求并接收用户输入的验证数据,将验证数据与待签名数据进行合并后发送给数字签名设备。
本步骤中,客户端可采用以下方式来接收用户输入的验证数据:
1)接收用户通过键盘输入的数字和/或字符,将接收到的数字和/或字符作为验证数据。
假设用户通过查看服务器发送到其手机上的图片得知验证数据为5678,那么直接通过客户端的键盘输入5678即可。
2)为用户显示两幅以上图片,确定用户所选择的图片,将用户所选择的图片作为验证数据。
假设服务器预先向客户端发送了6幅图片,分别显示一个数字4、5、6、7、8、9,并短信通知用户需要选择哪些图片,假设为5、6、7、8对应的图片,那么客户端将6幅图片显示给用户后,用户将依次点击5、6、7、8对应的图片,客户端将这4幅图片作为验证数据。
3)为用户显示一幅图片,其中包括两个以上区域,确定用户所选择的区域,将用户所选择的区域作为验证数据。
该方式与方式2)类似,不再赘述。
4)接收用户上传的图片,将用户所上传的图片作为验证数据。
用户可将服务器发送到其手机上的图片上传给客户端,客户端将该图片作为验证数据。
另外,本步骤中,客户端可采用预定算法将验证数据插入到待签名数据中,从而实现验证数据与待签名数据的合并。具体采用何种算法可根据实际需要而定。
步骤15:数字签名设备对合并后的数据进行数字签名,并将签名后的数据返回给客户端,客户端将签名后的数据进一步返回给服务器。
数字签名设备接收到合并后的数据之后,可按照现有方式,通过客户端要求并接收用户输入的PIN,并对PIN进行验证,若验证通过,则对合并后的数据进行数字签名,否则,通过客户端向用户返回错误信息,结束流程。或者,在验证通过后,进一步提示用户是否需要进行数字签名操作,如果用户选择是,则对合并后的数据进行数字签名,否则,结束流程。
步骤16:服务器验证签名正确且其中的待签名数据和验证数据对应,确定本次签名有效,否则,确定本次签名无效。
服务器中会保存有待签名数据及其对应的验证数据,所以本步骤中可以很容易地确定出签名后的数据中的待签名数据与验证数据是否对应。如何验证签名是否正确为现有技术,不再赘述。
如果确定本次签名无效,可通过客户端向用户返回错误信息。这样,如果恶意程序冒充用户进行数字签名,那么其发送给服务器的签名后的数据中的待签名数据与验证数据必然不对应,相应地,用户收到错误信息后,即可知道受到了恶意程序的攻击,并可采取相应的解决措施。
图2为本发明双因素数字签名方法较佳实施例的流程图。如图2所示,包括:
步骤21:服务器产生待签名数据,并产生与待签名数据存在一一对应关系的验证数据。
步骤22:服务器将验证数据转换为机器不易识别的形式,并将转换后的验证数据通过可信信道呈现给用户。
步骤23:服务器将待签名数据发送给用户所使用的客户端。
步骤24:客户端要求并接收用户输入的验证数据,将验证数据与待签名数据进行合并后发送给数字签名设备。
步骤25:数字签名设备通过客户端要求并接收用户输入的PIN。
步骤26:数字签名设备对PIN进行验证,并确定验证是否通过,如果是,则执行步骤27,否则,结束流程。
如果验证不通过,可通过客户端向用户返回错误信息。
步骤27:数字签名设备提示用户是否需要进行数字签名操作,如果用户选择是,则执行步骤28,否则,结束流程。
步骤28:数字签名设备对合并后的数据进行数字签名,并将签名后的数据返回给客户端,客户端将签名后的数据进一步返回给服务器。
步骤29:服务器验证签名是否正确且其中的待签名数据和验证数据是否对应,如果是,则执行步骤210,否则,执行步骤211。
步骤210:服务器确定本次签名有效,结束流程。
后续如何处理与本发明所述方案无关,不作介绍。
步骤211:服务器确定本次签名无效,结束流程。
另外,还可进一步通过客户端向用户返回错误信息。
基于上述方法,图3为本发明双因素数字签名系统实施例的组成结构示意图。如图3所示,包括:
服务器31,用于产生待签名数据,并产生与待签名数据存在一一对应关系的验证数据,将验证数据呈现给用户,将待签名数据发送给用户所使用的客户端32;接收客户端32返回的签名后的数据,若签名正确且其中的待签名数据与验证数据对应,则确定本次签名有效,否则,确定本次签名无效;
客户端32,用于在接收到待签名数据后,要求并接收用户输入的验证数据,将验证数据与待签名数据进行合并后发送给数字签名设备33,并将数字签名设备33返回的签名后的数据发送给服务器31;
数字签名设备33,用于对合并后的数据进行数字签名,并将签名后的数据返回给客户端32。
其中,服务器31中可具体包括(为简化附图,未图示):
第一处理单元,用于产生待签名数据,并产生与待签名数据存在一一对应关系的验证数据,将验证数据呈现给用户,将待签名数据发送给用户所使用的客户端32;
第二处理单元,用于接收客户端32返回的签名后的数据,若签名正确且其中的待签名数据与验证数据对应,则确定本次签名有效,否则,确定本次签名无效。
第一处理单元中又可进一步包括:
第一处理子单元,用于产生待签名数据,并随机产生一串指定长度的数字和/或字符,将所产生的数字和/或字符作为验证数据,或者,对待签名数据进行数字签名,对签名后的数据进行哈希运算,将哈希运算结果作为验证数据,或者,对待签名数据及其指定相关信息进行数字签名,对签名后的数据进行哈希运算,将哈希运算结果作为验证数据;
第二处理子单元,用于将验证数据转换为机器不易识别的形式,将转换后的验证数据通过可信信道呈现给用户,并将待签名数据发送给客户端32。
客户端32中可具体包括(为简化附图,未图示):
第三处理单元,用于接收来自服务器31的待签名数据,要求并接收用户输入的验证数据;
第四处理单元,用于将验证数据和待签名数据进行合并后发送给数字签名设备33,并接收数字签名设备33返回的签名后的数据,发送给服务器31。
图3所示系统实施例的具体工作流程请参照图1所示方法实施例中的相应说明,不再赘述。
总之,采用本发明的技术方案,如果恶意程序要冒充用户进行数字签名,那么必须要有正确的验证数据才行,而验证数据和待签名数据之间是存在一一对应关系的,所以即使恶意程序获取到了验证数据,也无法利用其来冒充用户进行数字签名,从而确保了数字签名的安全性;而且,本发明所述方案无需对数字签名设备的硬件进行改造,实现起来非常方便,便于普及。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。