一种数字签名方法

文档序号:6428321阅读:137来源:国知局
专利名称:一种数字签名方法
技术领域
本发明涉及信息安全技术,具体涉及一种数字签名的方法。
背景技术
由于电子商务和信息安全技术的迅速发展,智能卡也应运而生并逐渐得到迅速发展。智能卡可以通过其接口连接到台式计算机(PC)、便携式计算机、苹果计算机(MAC)或者其它网络设备,用户可以通过智能卡实现数字签名、身份认证、数据加密、证书存储等多种功能。目前的智能卡一般包括中央处理器(CPU)和存储器,其工作主要是基于卡内操作系统(COS)。
COS的主要功能是控制CPU和外界信息的交互、管理存储器的文件系统以及在CPU内完成各种命令的处理。为了防止非法用户访问卡内信息,COS还有安全管理机制,用于对各种操作进行控制以保护卡内的信息不会泄露出去。COS与外界信息的交互遵循ISO/IEC 7816-3标准中的异步字符传输协议,而COS所完成的管理和基本功能则遵循ISO/IEC 7816-4标准。智能卡中的存储器用来存储CPU运行时所需要的信息和智能卡保存的信息,存储器一般包括随机存取存储器(RAM)和电可擦可编程只读存储器(EEPROM)。
在目前如果用户要利用智能卡进行数字签名,首先将智能卡插入到和计算机接口连接的读卡器,然后用户将待签名数据通过计算机发送给读卡器中的智能卡,智能卡中CPU的COS操作系统提示用户输入个人身份号码(PIN),并在验证用户输入的PIN正确后调用对待签名数据进行签名,而如果用户输入的PIN不正确,则向用户返回错误提示信息并丢弃该数据。
在上述流程中,验证用户的PIN是对用户身份进行认证的唯一安全机制,这样存在冒充签名的问题,从而降低了数字签名的安全性。具体地说,在用户完成了PIN的验证后执行签名操作时,用户已经不能控制使用密钥进行签名,此时如果有恶意程序入侵,恶意程序可以冒充用户进行一次或多次签名,而用户却并不知道进行过几次签名;或者,在用户的PIN被恶意程序获取的情况下,恶意程序可以冒充用户进行一次或多次签名而用户毫无察觉。而众所周知,数字签名在实际应用中可能涉及到诸如合同签字、资金支付、法律确认等一系列经济和法律问题,因此其安全性在电子商务和电子政务,甚至整个国家社会经济秩序中都占有非常重要的地位。因此,如果数字签名被多次冒充并且用户毫无察觉,那么将会极大地降低数字签名的安全性,给用户和整个国家的社会经济持续带来不良影响。

发明内容
有鉴于此,本发明的主要目的是提供一种数字签名方法,以防止数字签名在用户毫无察觉的情况下被多次冒充,从而提高数字签名的安全性。
本发明的上述目的是通过如下的技术方案予以解决的一种数字签名方法,至少包括a.预先设置一个用于表示是否允许进行数字签名的签名标志变量,并在开始进行数字签名之前初始化该签名标志变量为表示允许进行数字签名的值;b.在进行数字签名时根据该签名标志变量的值确定是否允许进行数字签名,如果是,将签名标志变量的值修改为表示不允许进行数字签名的值并执行签名操作;否则结束本流程。
较佳地,在步骤b之前进一步包括验证用户输入的个人身份号码PIN是否正确,如果是,执行步骤b;否则结束本流程。
较佳地,在验证用户输入的PIN之后进一步包括根据用户输入的PIN提高智能卡的安全级别,并在执行步骤b之前进一步包括查找用户的私钥文件并根据该私钥文件所要求的安全级别和智能卡的当前安全级别来验证用户的私钥使用权限,如果用户拥有对文件中私钥的使用权限,则执行步骤b;否则结束本流程。这里根据私钥文件所要求的安全级别和智能卡的当前安全级别来验证用户的私钥使用权限是比较智能卡的当前安全级别是否大于等于该私钥文件所要求的安全级别,如果是,确定用户拥有对文件中私钥的使用权限,否则确定用户不具有对文件中私钥的使用权限。
在本发明中,签名标志变量存储在智能卡的存储器上,步骤b是由智能卡的CPU进行的。
在这种情况下,步骤a中初始化签名标志变量是在智能卡上电时进行的。在步骤b之前进一步包括判断所接收的命令是否是签名命令,如果是,执行步骤b;否则由CPU进行对应于该命令的处理。
较佳地,在上述不进行数字签名而结束本流程之前进一步包括返回错误提示信息的步骤。
从本发明的技术方案可以看出,本发明首先设置一个表示是否允许进行数字签名的标志变量,并在智能卡上电后将该值初始化为表示允许进行数字签名的值,并在进行过一次签名后将该值修改为不允许进行数字签名的值。这样,在智能卡上电后,除非将智能卡断电并重新上电,只要进行一次数字签名之后就不允许再进行数字签名,从而防止了在合法用户签名之后恶意程序再冒充用户进行一次或多次签名的情况。另外,即使恶意程序得到了用户的PIN从而冒充用户进行签名,或者恶意程序在用户输入PIN之后先于用户进行数字签名,也只能冒充一次签名,并且在合法用户进行签名之前会发现自己不能进行签名,从而合法用户可以知道非法用户冒充自己进行了一次签名,配合其它措施可以将这种冒充行为给合法用户的损失降到最低。
因此,通过本发明,只要合法用户进行了签名之后,恶意程序就不可能再冒充用户进行签名。即使恶意程序能在合法用户签名之前冒充合法用户进行签名,最多也只能冒充一次签名并且这次签名能够被合法用户所察觉。因此,本发明能够防止数字签名在用户毫无察觉的情况下被多次冒充,从而提高了数字签名的安全性。


图1是本发明的总体流程图。
图2是本发明一个具体实施例的流程图。
图3是计算机和智能卡之间的数据传输格式的示意图。
具体实施例方式
下面结合附图和具体实施例对本发明进行详细说明。
在本发明中首先设置一个签名标志变量,该签名标志变量有两个值允许进行数字签名和不允许进行数字签名,并在进行数字签名之前初始化签名标志变量为表示允许进行数字签名的值,在用户进行一次数字签名后修改签名标志变量为表示不允许进行数字签名的值,从而防止恶意程序再次冒充用户签名。
图1示出了本发明的总体流程。如图1所示,根据本发明的数字签名方法包括如下步骤。
在步骤101,预先设置一个用于表示是否允许进行数字签名的签名标志变量。
在步骤102,在进行数字签名之前初始化该签名标志变量为表示允许进行数字签名的值。
在步骤103,在需要进行数字签名时,首先读取该签名标志变量。
在步骤104,根据读取的签名标志变量的值确定是否允许进行签名。如果允许进行签名,执行步骤105及其后续步骤,否则结束本流程。
在步骤105,将该签名标志变量的值修改为表示不允许进行数字签名的值。
在步骤106,对待签名数据进行数字签名。然后结束。
上述是本发明的总体流程图。下面通过一个具体实施例进一步说明本发明。
如上所述,一般进行数字签名是通过智能卡进行的,而智能卡包括CPU和存储器。在使用智能卡进行数字签名的本发明具体实施例中,其操作流程如图2所示。
在步骤201,预先在智能卡的存储器中设置一个用于表示是否允许进行数字签名的签名标志变量。这里的签名标志变量可以存储在RAM中的一个寄存器中,这样当智能卡上电后初始化,在智能卡掉电后其信息不再保存。或者,也可以存储在EEPROM中,这样该签名标志变量的值会持续保存。
在步骤202,在需要进行数字签名时,将智能卡插入到和计算机连接的读卡器中。
在步骤203,智能卡上电,进行智能卡的初始化,在该智能卡的初始化过程中,对存储器中的签名标志变量初始化为一个表示允许进行数字签名的值。
在步骤204,当用户使用智能卡的应用程序进行操作时,应用程序提示用户输入PIN,并将用户输入的PIN发送给智能卡。
在步骤205,智能卡在接收到用户输入的PIN后判断用户输入是否正确,如果正确,表示用户是合法用户,执行步骤206及其后续步骤;否则在步骤216返回错误提示信息,结束本流程。
在步骤206,智能卡提升安全级别。当智能卡确定输入的PIN是用户输入的PIN后,提升安全级别为用户级别;当智能卡确定输入的PIN不是用户输入的PIN而是发卡方输入的PIN后,提升安全级别为发卡方级别。
在步骤207,在接收到来自计算机的命今后,智能卡判断该命令是否是一个数字签名命令。如果是数字签名命令,执行步骤208及其后续步骤;如果不是数字签名命令,例如是身份认证命令、数据加密命令等,则在步骤214由CPU执行对应该命令的操作,然后向计算机返回操作结果。在返回操作结果之后,智能卡再次进入接收命令前的等待命令状态。也就是会重复执行步骤207。
在步骤208,如果智能卡接收的命令是数字签名命令,首先查找用户私钥文件,确定用户私钥文件中所要求的安全级别。
在步骤209,智能卡根据用户私有文件和智能卡的当前安全级别判断用户是否拥有对文件中私钥的使用权限,如果是,执行步骤210及其后续步骤;否则在步骤215返回错误提示信息,然后再次进入接收命令前的等待命令状态,也就是重复执行步骤207。这里判断用户是否拥有对文件中私钥的使用权限可以是判断智能卡的当前安全级别是否大于等于用户私钥文件中所要求的安全级别,如果是,则表明用户拥有对文件中私钥的使用权限,否则表明用户不具有对文件中私钥的使用权限。
在步骤210,智能卡的CPU读取签名标志变量的值。
在步骤211,智能卡判断当前值表示允许进行数字签名还是不允许进行数字签名;如果是允许进行数字签名,执行步骤212及其后续步骤;否则在步骤215返回错误提示信息,然后再次进入接收命令前的等待命令状态,也就是重复执行步骤207。
在步骤212,智能卡修改签名标志变量的值,使其表示不允许进行数字签名。
在步骤213,智能卡对来自计算机和数字签名命令同时发送的待签名数据进行数字签名,并向计算机返回数字签名结果。然后再次进入接收命令前的等待命令状态,也就是重复执行步骤207。
在上述步骤202中,将智能卡插入到和计算机连接的读卡器中,通过读卡器和计算机进行信息交互。可以理解,智能卡也可以包括在一个单独设计的数字签名装置中,该数字签名装置通过例如通用总线接口(USB)和计算机连接,智能卡通过数字签名装置的接口接收计算机的命令,并在执行命令后将执行结果返回给计算机。
在上述步骤207中,智能卡判断一个命令是否是数字签名命令是根据计算机和智能卡之间的数据传输格式的字节而确定的。图3示出了该数据传输格式的一个示例。在该传输格式中,如果CLA为0则表示读写CPU的命令,如果INS为F2则表示数字签名命令。因此判断一个命令是否是数字签名命令就是判断接收命令的数据中INS字段是否为F2。
上述数字签名标志变量设置有两个值,允许进行签名的值和不允许进行签名的值,这两个值可以通过数字来表示,例如0表示允许进行签名,1表示不允许进行签名。或者,也可以通过其它数字或者字符来表示。另外,可以理解,上述签名标志标量也可以设置有三个值或更多的值,只是这样会降低数字签名的安全性。
另外,即使用户使用智能卡进行的操作不是数字签名操作,例如是数据加密操作,用户在完成该操作之后最好也再进行一次数字签名操作,这样如果恶意程序冒充用户进行了一次签名,用户也可以察觉到。这里再进行一次数字签名操作可以是对没有任何意义的数据进行签名,其目的仅仅是为了确定是否有恶意程序冒充自己的签名。如果恶意程序冒充了用户的签名,在对无意义的数据进行加密时,用户将会发现智能卡不允许自己进行签名,从而可以确定有恶意程序冒充自己进行了一次签名。同样配合其他措施可以挽回冒充签名给自己造成的损失。通过这样的操作,可以进一步提高用户数字签名的安全性。
因此可以理解,以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种数字签名方法,至少包括a.预先设置一个用于表示是否允许进行数字签名的签名标志变量,并在开始进行数字签名之前初始化该签名标志变量为表示允许进行数字签名的值;b.在进行数字签名时根据该签名标志变量的值确定是否允许进行数字签名,如果是,将签名标志变量的值修改为表示不允许进行数字签名的值并执行签名操作;否则结束本流程。
2.根据权利要求1所述的数字签名方法,其特征是,在步骤b之前进一步包括验证用户输入的个人身份号码PIN是否正确,如果是,执行步骤b;否则结束本流程。
3.根据权利要求2所述的数字签名方法,其特征是,在验证用户输入的PIN之后进一步包括根据用户输入的PIN提高智能卡的安全级别,并在执行步骤b之前进一步包括查找用户的私钥文件并根据该私钥文件所要求的安全级别和智能卡的当前安全级别来验证用户的私钥使用权限,如果用户拥有对文件中私钥的使用权限,则执行步骤b;否则结束本流程。
4.根据权利要求3所述的数字签名方法,其特征是,所述根据私钥文件所要求的安全级别和智能卡的当前安全级别来验证用户的私钥使用权限是比较智能卡的当前安全级别是否大于等于该私钥文件所要求的安全级别,如果是,确定用户拥有对文件中私钥的使用权限,否则确定用户不具有对文件中私钥的使用权限。
5.根据权利要求1至4中任意一项所述的数字签名方法,其特征是,所述签名标志变量存储在智能卡的存储器上,步骤b是由智能卡的CPU进行的。
6.根据权利要求5所述的数字签名方法,其特征是,步骤a中初始化签名标志变量是在智能卡上电时进行的。
7.根据权利要求5所述的数字签名方法,其特征是,在步骤b之前进一步包括判断所接收的命令是否是签名命令,如果是,执行步骤b;否则由CPU进行对应于该命令的处理。
8.根据权利要求1至4中任意一项所述的数字签名方法,其特征是,在所述结束本流程之前进一步包括返回错误提示信息的步骤。
全文摘要
本发明公开了一种数字签名方法。在该方法中,预先设置一个用于表示是否允许进行数字签名的签名标志变量,并在用户认可的系统开始时初始化该签名标志变量为“允许进行数字签名”。在进行数字签名时首先根据该签名标志变量的值确定是否允许进行数字签名,如果是,将签名标志变量的值修改为表示不允许进行数字签名的值并执行签名操作;否则不进行数字签名并返回错误提示信息。本发明能够防止被动签名设备,如IC卡等在用户毫无察觉的情况下被未经授权地多次调用,从而保证用户对签名的控制。
文档编号G06K5/00GK1756154SQ200410079058
公开日2006年4月5日 申请日期2004年9月30日 优先权日2004年9月30日
发明者冯登国, 荆继武, 刘海蛟 申请人:中国科学院研究生院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1