一种数字签名方法技术

技术编号:3514998 阅读:166 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种数字签名方法。在该方法中,预先设置一个用于表示是否允许进行数字签名的签名标志变量,并在用户认可的系统开始时初始化该签名标志变量为“允许进行数字签名”。在进行数字签名时首先根据该签名标志变量的值确定是否允许进行数字签名,如果是,将签名标志变量的值修改为表示不允许进行数字签名的值并执行签名操作;否则不进行数字签名并返回错误提示信息。本发明专利技术能够防止被动签名设备,如IC卡等在用户毫无察觉的情况下被未经授权地多次调用,从而保证用户对签名的控制。

【技术实现步骤摘要】

本专利技术涉及信息安全技术,具体涉及一种数字签名的方法。
技术介绍
由于电子商务和信息安全技术的迅速发展,智能卡也应运而生并逐渐得到迅速发展。智能卡可以通过其接口连接到台式计算机(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,当用户使用智能卡的应用程序进行操作时,应用程本文档来自技高网
...

【技术保护点】
一种数字签名方法,至少包括:a.预先设置一个用于表示是否允许进行数字签名的签名标志变量,并在开始进行数字签名之前初始化该签名标志变量为表示允许进行数字签名的值;b.在进行数字签名时根据该签名标志变量的值确定是否允许进行数字签名,如果是,将签名标志变量的值修改为表示不允许进行数字签名的值并执行签名操作;否则结束本流程。

【技术特征摘要】

【专利技术属性】
技术研发人员:冯登国荆继武刘海蛟
申请(专利权)人:中国科学院研究生院
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利