专利名称:数字签名设备与其对端设备实现数据交互的方法
技术领域:
本发明涉及一种用于实现数字签名的数据交互方法,尤其涉及一种数字签名设备与其对端设备实现数据交互的方法,属于信息安全技术领域。
背景技术:
在电子商务、网络银行等网络交易活动中,确保交易安全是十分重要的。因此,数字签名技术将在其中发挥越来越重要的作用。为了方便人们进行数字签名操作,现有的多种手持终端设备如智能卡或USB KEY等都能够提供相应的技术支持。
但是,传统的智能卡或USB KEY属于完全被动式的设备,也没有输入输出单元,因此无法确保实现“所见即所签”。木马程序可以操纵这种被动式的数字签名设备,篡改输入数据,使得被签名的数据是已被木马程序篡改的数据。
如果有一种可确认签名数据的数字签名设备,如带有显示屏和/或按键或者带有生物认证装置的USB KEY,就可以为用户提供安全的数字签名环境。在USB KEY内部就可以对需要签名的数据进行确认,任何被篡改的数据都可以被发现,数据真实性的判断和签名运算的发起需要用户对USB KEY的按键操作,而木马程序无法发起这些物理按键操作。因此,这样的可确认签名数据的数字签名设备能够避免数据被恶意篡改,实现“所见即所签”。但是,就本发明人所知,目前尚没有具有上述功能的数字签名设备问世。
另外,如果要实现上述的可直接确认签名数据的数字签名设备,原来的数据传输处理方式无法适用。因此需要对数据传输处理方式也进行重新设计,并保证通信的安全。
本发明就是为了解决上述问题,提供一种新的可直接确认签名数据的数字签名设备与其对端设备的数据交互方法。
发明内容
本发明的目的是提供一种数字签名设备与其对端设备实现数据交互的方法。
为实现上述的发明目的,本发明采用下述的技术方案一种数字签名设备与其对端设备实现数据交互的方法,其特征在于包括以下步骤步骤1在数字签名设备和对端设备之间建立数据通道,分配通道标识号,用于命令或数据的传输;步骤2所述数字签名设备接收来自所述对端设备的签名命令和需要签名的数据,所述数字签名设备对数据进行确认和数字签名运算;步骤3所述数字签名设备根据所述对端设备的命令,向所述对端设备提供步骤2的执行结果;步骤4关闭所述数据通道。
其中较优地,在所述步骤1中,在建立数据通道时,由所述数字签名设备返回建立通道成功的状态字和通道标记号,之后,所有的命令都需要指定所述通道标识号。
在所述步骤2中,所述数字签名设备根据所述数据的属性,判断是否需要得到用户对该数据的确认。
在所述步骤3中,根据所述对端设备的命令,数字签名设备通过所述接口向对端设备发送数字签名设备的当前执行状态,报告数字签名设备对数据进行确认或签名的状态。
在报告数字签名设备对数据进行确认或签名的状态的时候,数字签名设备发送表示所述状态的状态字,所述状态字至少包括表示等待用户确认所述数据的状态字以及表示用户已确认数据并且正在进行签名运算的状态字。
在所述步骤2中,所述对端设备向所述数字签名设备指定数据格式,所述数字签名设备通过判断所述数据是否符合指定的所述数据格式,而判定出异常数据。
在所述步骤2中,所述对端设备向所述数字签名设备指定的所述数据格式中,还包括数据项属性,所述数字签名设备根据所述数据项属性判断是否需要确认所述数据并且得到用户的确认。
在所述步骤2中,所述对端设备向所述数字签名设备指定的所述数据格式中,包括数据模板标识号,用于根据数据模板标识确定交易数据遵循的数据格式;数据模板长度,用于表示后续部分总长度;标识号和交易数据项。
一种数字签名设备与其对端设备实现数据交互的方法,其特征在于包括以下步骤步骤A所述对端设备向所述数字签名设备发送命令,建立数据通道;步骤B在建立数据通道成功之后,所述对端设备向所述数字签名设备发送数据,并且发送表示所述数据的属性的数据项部分,命令所述数字签名设备进行数字签名运算;步骤C所述数字签名设备获得所述数据和所述数据项部分,根据所述数据项部分判断是否需要用户确认所述数据,如果需要确认,则所述数字签名设备在得到用户的确认后进行数字签名运算或者取消操作;如果不需要确认,则直接进行数字签名运算;然后,向所述对端设备返回结果;步骤D关闭所述数据通道。
其中较优地,在所述步骤B和步骤C中,所述数据项部分包括至少表示三种情况的属性无需确认、需要确认但无选择、需要确认且有选择。
所述数据项包含在所述对端设备的关于数据格式的命令中。
所述用户的确认是通过所述数字签名设备的用户确认组件而确认的,所述用户确认组件为按键或者显示屏或者生物认证装置或者其任意组合。
本发明不仅可以确保签名密钥和运算过程的安全性,而且可以实现“所见即所签”,即独立数字签名设备签署的数据确实是用户想要签名的数据,而不会错误地签署了已遭受篡改的违背用户意图的数据。
下面结合附图和具体实施方式
对本发明作进一步的说明。
图1是现有数字签名的方法示意图。
图2是本发明中独立数字签名设备的结构示意图。
图3是本发明中独立数字签名设备的控制电路模块示意图。
图4是本发明实现电子交易的数字签名的示意图。
具体实施例方式
本发明提供了一种可确认需签名数据的数字签名设备与其对端设备的数据交互方法。以下以USBKEY作为可确认需签名数据的数字签名设备的示例,并且以对交易数据进行数字签名的情况作为示例进行说明。数字签名设备独立于安装有数字签名软件的交易对端设备。
如图2所示,USBKEY的显示屏可以显示数据,以供用户了解数据内容,并对数据进行确认。USBKEY的键盘包括删除(cancel)键、确认(OK)键和方向键等控制按键,用户通过操作键盘而对数据内容进行浏览和确认。其中删除键、确认键和方向键等控制按键也可以根据需要设置成其他可以由用户确认和取消的方式,例如拨动一定方向的键或者指纹输入比较确认等。通过USB接口,独立数字签名设备(USBKEY)可以方便地实现与用户交易终端进行通信。图2所示的只是一个较优的方案,该设备也可以只带有用来显示数据的显示屏,用户根据数据显示是否正确来确定是否进行签名;也可以只带有键盘,由用户最终通过确认键来确定或者取消该签名。总之,签名数据必须经过该设备的确认才能够完成签名。
如图3所示,控制电路模块包括微处理器、3DES/AES协处理器、RSA协处理器、存储器组、输入/输出接口、对显示屏和按键进行控制的显示/按键模块。其中,微处理器控制其他所有的模块。
在程序控制方面,主要包括USBKEY主控程序、智能卡COS(ChipOperating System)、显示/按键控制程序。USBKEY接收到交易终端发送过来的命令后,由微处理器调用主控程序进行解析,如果是需要智能卡完成的命令,则将命令转换成符合ISO7816的命令调用COS来完成;如果是显示/按键相关操作,则由微处理器调用显示/按键控制程序来完成。
本发明的应用领域主要是针对电子交易,比如网上购物、网上银行业务等。此类应用的特点是,交易产生的数据量少,签名只针对交易中的关键数据(比如帐号、时间、金额,等等),在计算机和USB KEY内都能够以特定的格式编码和解码,方便用户对交易数据进行逐项确认。下面就以电子交易为例,具体介绍利用本发明可确认需签名数据的数字签名设备与对端设备的数据交互方法。
参考图4,采用独立数字签名设备进行电子交易的数字签名,至少包含三个组件服务端、客户交易终端、以及独立数字签名设备。此处,独立数字签名设备,作为示例的是带显示屏和按键的USBKEY。在服务端与客户交易终端之间进行电子交易时,USBKEY连接到客户交易终端,并且与客户交易终端之间进行通信,实现对交易数据的确认和签名。
由于服务端与客户交易终端的网络通信是众所周知的技术,在此不再详细描述。本发明主要介绍USBKEY与客户交易终端之间的通信过程、交互命令及数据格式。
首先定义客户交易终端与USBKEY的主要交互命令。
交易终端与USBKEY采用命令与应答的交互方式,一次交易过程中先后发送的主要命令有建立USBKEY通道,执行交易,取交易结果,关闭USBKEY通道。交易过程中还会发起很多符合ISO 7816标准的智能卡命令,比如PIN码认证、选择目录、选择文件,更新记录、数字签名,等等。
建立USBKEY通道、执行交易、取交易结果、关闭USBKEY通道,这四条命令编码符合以下规则 建立通道成功后的所有命令,都需要指定通道标识号,命令才会被接收。
命令分为命令头和数据体两部分;命令头是必须的部分,数据体是可选的部分; 命令长度是可变的,命令头和数据体都是可变长度,可以根据交易自定义各命令的长度。
交易数据采用TLV(Tag,Length,Value)格式,遵循指定数据模板的定义。
命令中的操作码和应答状态字都是可以根据交易自定义的,命令与应答的自定义需遵循USB块传输协议(Universal Serial BusMass Storage Class Bulk-Only Transport)、SCSI块命令标准(SCSI Block Commands)定义的命令描述块(CommandDescriptor Block,CDB)格式。
各命令中有些元素是必须的,比如操作码、通道标识号、数据模板标识号、签名私钥标识号;有些元素是可选的。
交易终端和USBKEY之间的命令传输,自底向上依次遵循USB规范(Universal Serial Bus Specification)、USB块传输协议(UniversalSerial Bus Mass Storage Class Bulk-Only Transport)、SCSI块命令标准(SCSI Block Commands)。CDB命令块作为USB块传输协议中命令块数据包(Command Block Wrapper,CBW)的CBWCB数据域的内容进行传输。如果以CDB[n]为命令块,n为命令长度,通常第一字节CDB[1]为操作码,第二字节CDB[2]为节点地址(Node Address,NAD),其他字节详见下面的命令格式定义。
1)建立USBKEY通道■功能描述交易过程中交易终端可能出现多个应用同时访问USBKEY,在交易之前,必须先建立USBKEY通道。只有取得通道的应用才能与USBKEY进行交互。建立通道成功后,才能发送后续命令,后续命令都必须指定通道标识号。
■命令格式
其中,操作码用作命令的唯一标识,节点地址用于标识与交易终端相连的USBKEY,以下命令都相同。
■应答USBKEY返回建立通道失败的状态字,或者返回建立通道成功的状态字和通道标识号。
2)执行交易■功能描述由交易终端通知USBKEY对交易数据进行数字签名运算。
USBKEY会根据交易数据的属性,判断是否需要显示数据项并得到用户确认。
根据前面描述的USBKEY的具体实现方式,也可以根据交易数据的属性,判断是否需要在USBKEY上进行显示,并由用户在其对端设备上进行确认;还可以根据交易数据的属性,判断是否需要由用户通过USBKEY上的键盘对交易数据进行确认等多种方式来保证用户通过USBKEY这种安全设备对数据进行确认。
■命令格式
此命令带有数据部分,交易数据的格式由指定的数据模板定义,参见下一部分。
■应答无3)取交易结果■功能描述交易终端查询USBKEY执行交易的状况,根据取得的应答状态字决定下一步动作。
■命令格式
■应答
上述状态也可以根据需要进行另外的表示,但都要保证能够正确返回交易的状态,以便进行下一步骤,确保用户对数据签名的可确认。
4)关闭USBKEY通道■功能描述交易终端通知USBKEY关闭指定通道,结束交易。
■命令格式
■应答无2.交易数据格式在“执行交易”命令中带有交易数据,需要对此交易数据在USBKEY中进行确认和数字签名。本发明为具体的交易定义相应的交易数据模板,在发送“执行交易”命令时,需要为此命令所带的交易数据指定“交易数据模板标识号”。交易数据模板由若干个数据项的定义集合而成,如表1所示。其中必须包含“交易数据模板标识号”、“交易模板长度”、“交易标识号”和至少一项交易数据。“交易模板标识号”用于区分交易数据和非交易数据,USB KEY通过判断获得的数据是否符合指定的所述数据格式,而判定出异常数据,可以防止攻击者将交易数据改为非交易数据而得到真实签名。交易标识号与其他交易数据项的定义格式一样,详见表2。
表1 交易数据模板交易数据模板中每个交易数据项的定义包含以下部分数据项的标识、数据项的长度、数据项的属性、数据的长度、变长数据。数据项的各部分所占字节数和取值,可根据具体的交易应用自定义。表2是交易数据模板中各个交易数据项遵循的定义格式
表2 交易数据项的定义格式数据项属性有三种情况无需显示,需要显示但无选择,需要显示且有选择。分别如表3、表4、表5所示。USBKEY根据数据项属性判断是否需要将数据项显示出来等待用户确认,只有数据项属性为“需要显示,无选择”和“需要显示,有选择”的数据项才会被显示在USBKEY的显示屏上。
根据USBKEY的具体情况,数据项属性需要进行相应调整,例如USBKEY无显示屏有键盘,则数据只需要明确是否需要用户确认,具体属性项根据这个原则进行一一列举,其他情况时,也需要作适当的调整。
表3 数据项属性之一
表4 数据项属性之二
表5 数据项属性之三表5的作用是用户可以将一些较长的关键数据项的数值(如“交易类型”中的“转入”和“转出”)作为数据项的可选数值放在模板中,而在交易数据中,仅需要1字节来选择相应的可选数值即可。该字节从0x01开始编码(不能为0),0x01即对应第一个可选的数据项,其他数值的含义依此类推。
下面以网络银行的私人转账交易为例,说明带显示屏和按键的数字签名USBKEY的具体实施方式
。
在网络银行的私人转账交易中,安装了网络银行客户端软件的PC是交易终端,带显示屏和按键的USBKEY是确认交易数据并进行数字签名的安全设备。我们把PC机上的网络银行客户端软件称为上位机,是电子交易的人机操作控制接口。上位机与USBKEY的交互流程和主要命令编码如下(1)上位机发送建立USBKEY通道命令(cdb[1]=0xF2,CDB[2]=NAD),USBKEY返回通道标识号和状态字。NAD(Node Address)是USBKEY内部的智能卡节点地址,是一固定标识号,在以下命令中相同。
(2)建立USBKEY通道成功后,上位机发送选择3F01目录,该目录是网络银行应用目录。
(3)选择应用目录成功后,上位机发送外部认证命令。
(4)外部认证通过后,上位机发送PIN校验命令。
(5)上位机发送交易命令(cdb[1]=0x08,CDB[2]=NAD,CDB[3]=ChannelNo,cdb[4]=数据模板标识号(0~F),cdb[5]=签名私钥标识,cdb[6]=0x00(正常),交易数据);此命令所带的交易数据定义见下文。
(6)USBKEY提示用户确认交易数据。
(7)用户确认交易数据后,USBKEY对交易数据进行数字签名;用户也可以取消此次交易。
(8)上位机发送取交易结果命令(cdb[1]=0x09,CDB[2]=NADCDB[3]=ChannelNo)。USBKEY返回交易成功的状态字和交易结果或其他状态字。
●如果返回数据且Sense Code OK,则返回2继续进行可见交易,或到4退出交易。
●如果没有返回数据Sense Code=A.0xD100(正在等待用户确认),USBKEY弹出对话框“请您上下翻屏查看交易数据,并确认或取消此次交易”;上位机延时500ms后,继续(8)。
B.0xD101(用户已经确认,正在签名),USBKEY弹出对话框“交易正在处理中,请稍候”;上位机延时500ms后,继续(8)。
C.0xD102(用户已经取消该交易),USBKEY弹出对话框“交易取消”;上位机返回(5)继续进行可见交易,或转到(9)退出交易。
D.0xD103(安全键功能正在使用中),USBKEY弹出对话框“USBKEY正在处理安全键流程,是否取消此次交易,或继续等待安全键流程结束”,如果用户点击取消,上位机发送取消该交易命令(cdb[1]=0x08,CDB[2]=NAD,CDB[3]=ChannelNo,cdb[4]=数据模板号(0~F),cdb[5]=签名私钥标识,cdb[6]=0x01(取消),Data Out),返回(5)继续进行可见交易,或转到(9)退出交易。
E.0xD104(交易失败),USBKEY弹出对话框“交易失败”;上位机返回(5)继续进行可见交易,或转到(9)退出交易。(9)上位机发送关闭卡通道命令(cdb[1]=0xF3,CDB[2]=NAD,CDB[3]=ChannelNo,No Data)。
在网络银行的私人转账交易中,如果交易数据包含的数据项以及数据项的取值和属性如表6所示
表6 网络银行私人转帐的交易数据结构则针对表6的数据结构,数据模板的定义如表7所示
表7 网络银行私人转帐的交易数据模板根据表7定义的数据模板,USBKEY接收和显示的交易数据的典型实例如表8所示
表8 网络银行私人转帐的交易数据实例以上对本发明所提供的数字签名设备与其对端设备实现数据交互的方法进行了详细的说明。对本领域的一般技术人员而言,在不背离本发明实质精神的前提下对它所做的任何显而易见的改动,都将构成对本发明专利权的侵犯,将承担相应的法律责任。
权利要求
1.一种数字签名设备与其对端设备实现数据交互的方法,其特征在于包括以下步骤步骤1在数字签名设备和对端设备之间建立数据通道,分配通道标识号,用于命令或数据的传输;步骤2所述数字签名设备接收来自所述对端设备的签名命令和需要签名的数据,所述数字签名设备对数据进行确认和数字签名运算;步骤3所述数字签名设备根据所述对端设备的命令,向所述对端设备提供步骤2的执行结果;步骤4关闭所述数据通道。
2.如权利要求1所述的数据交互方法,其特征在于在所述步骤1中,在建立数据通道时,由所述数字签名设备返回建立通道成功的状态字和通道标记号,之后,所有的命令都需要指定所述通道标识号。
3.如权利要求1所述的数据交互方法,其特征在于在所述步骤2中,所述数字签名设备根据所述数据的属性,判断是否需要得到用户对该数据的确认。
4.如权利要求1所述的数据交互方法,其特征在于在所述步骤3中,根据所述对端设备的命令,数字签名设备通过所述接口向对端设备发送数字签名设备的当前执行状态,报告数字签名设备对数据进行确认或签名的状态。
5.如权利要求4所述的数据交互方法,其特征在于在报告数字签名设备对数据进行确认或签名的状态的时候,数字签名设备发送表示所述状态的状态字,所述状态字至少包括表示等待用户确认所述数据的状态字以及表示用户已确认数据并且正在进行签名运算的状态字。
6.如权利要求1所述的数据交互方法,其特征在于在所述步骤2中,所述对端设备向所述数字签名设备指定数据格式,所述数字签名设备通过判断所述数据是否符合指定的所述数据格式,而判定出异常数据。
7.如权利要求6所述的数据交互方法,其特征在于在所述步骤2中,所述对端设备向所述数字签名设备指定的所述数据格式中,还包括数据项属性,所述数字签名设备根据所述数据项属性判断是否需要确认所述数据并且得到用户的确认。
8.如权利要求6所述的数据交互方法,其特征在于在所述步骤2中,所述对端设备向所述数字签名设备指定的所述数据格式中,包括数据模板标识号,用于根据数据模板标识确定交易数据遵循的数据格式;数据模板长度,用于表示后续部分总长度;标识号和交易数据项。
9.一种数字签名设备与其对端设备实现数据交互的方法,其特征在于包括以下步骤步骤A所述对端设备向所述数字签名设备发送命令,建立数据通道;步骤B在建立数据通道成功之后,所述对端设备向所述数字签名设备发送数据,并且发送表示所述数据的属性的数据项部分,命令所述数字签名设备进行数字签名运算;步骤C所述数字签名设备获得所述数据和所述数据项部分,根据所述数据项部分判断是否需要用户确认所述数据,如果需要确认,则所述数字签名设备在得到用户的确认后进行数字签名运算或者取消操作;如果不需要确认,则直接进行数字签名运算;然后,向所述对端设备返回结果;步骤D关闭所述数据通道。
10.如权利要求9所述的数据交互方法,其特征在于在所述步骤B和步骤C中,所述数据项部分包括至少表示三种情况的属性无需确认、需要确认但无选择、需要确认且有选择。
11.如权利要求9所述的数据交互方法,其特征在于所述数据项包含在所述对端设备的关于数据格式的命令中。
12.如权利要求9所述的数据交互方法,其特征在于所述用户的确认是通过所述数字签名设备的用户确认组件而确认的,所述用户确认组件为按键或者显示屏或者生物认证装置或者其任意组合。
全文摘要
本发明提供了一种数字签名设备与其对端设备实现数据交互的方法。该数据交互方法是在数字签名设备和对端设备之间建立数据通道,分配通道标识号,用于命令或数据的传输;步骤2所述数字签名设备接收来自所述对端设备的签名命令和需要签名的数据,并对数据进行确认和数字签名运算;步骤3所述数字签名设备完成签名后,向所述对端设备提供步骤2的执行结果;步骤4关闭所述数据通道。本发明不仅可以确保签名密钥和运算过程的安全性,签名的数据确实是用户真实想要签名的数据,而不会错误地签署了已遭受篡改的数据。
文档编号H04L9/32GK1968092SQ200610113569
公开日2007年5月23日 申请日期2006年9月30日 优先权日2006年9月30日
发明者雷继业, 高翔, 陈益峰 申请人:北京握奇数据系统有限公司