背景技术
智能卡也可以被称为“集成电路卡”或“IC卡”,由于采用了当今最先进的半导体制造技术和信息安全技术,所以相对于其它种类的卡具有很多优点。目前,作为信息化社会的标志之一,智能卡技术已经形成涉及全球众多著名电子巨头的新兴技术产业,并且日益普及到现代经济和日常生活的各个方面。
智能卡按嵌入的芯片种类可以分为接触式卡和非接触式卡,并且必须遵循相应的标准。其中,ISO7816是接触式智能卡必须遵循的最重要的一套标准,它规定了智能卡的诸如温差范围和弹性等之类的物理特性、电子触点的位置、以及内置芯片和外界进行信息交换的电信号和传输协议等,其中,智能卡经由标准的8触点ISO7816-3接口(即,ISO7816-3触点盘)与外界(例如,读卡器)进行连接和通信。其中,8个触点的定义如下表所示。
触点 |
定义 |
C1 |
Vcc,供电电压 |
C2 |
Reset(RST),重置信号 |
C3 |
Clock(CLK),时钟信号 |
C4 |
保留 |
C5 |
Ground(GND),接地 |
C6 |
Vpp,编程电压 |
C7 |
I/O,数据输入/输出 |
C8 |
保留 |
智能卡的核心是卡操作系统(COS),它存储在智能卡的CPU(也可以称之为智能卡控制器)中,主要功能是控制智能卡和外界的信息交换,管理智能卡内的存储器并在卡内部完成各种命令的处理。不同卡内的COS一般是不相同的,一般是根据智能卡的特点及其应用范围而特定设计开发的。COS可以分为单片式COS(Monolithic COS)和开放式COS(Open COS)。其中,单片式COS是为某一个具体应用而设计的,是不可扩展的;而在开放式COS中,可以同时安装有多个应用程序,外界通过向智能卡控制器的ISO 7816-3接口发送形如“select应用标识符”的消息来选择让操作系统加载哪个应用程序,并且可以开发和下载应用程序到智能卡中以便支持新的应用。
目前市场上比较常见的开放式COS包括MULTOS和基于Java平台的Java Card COS。有关MULTOS的更多细节,可参见例如http://www. multos.com/。有关Java Card技术的更多内容,可参见例如http://java.sun. com/products/javacard/。
目前,随着智能卡应用范围的日益扩大,将诸如指纹传感器、显示器、小键盘等之类的各种外设集成到智能卡中,以便进一步增强智能卡的功能和安全性成为可能。例如,某些最新的智能卡具有集成的显示器和小键盘,并且当按压下小键盘时,可以显示一次性的密码(或口令),或者尝试将指纹传感器集成到智能卡上,使智能卡的持有者只有在通过了指纹验证之后才能正常地使用该卡,从而确保卡的安全性。
基本上来说,在现有技术中,通常使用下列两种方法之一来将各种外设集成到智能卡中。
第一种方法是所谓的单处理器方法(也可以称之为单芯片方法)。在该种方法中,诸如指纹传感器、显示器或小键盘之类的外设直接连接到智能卡控制器,并且在智能卡控制器中运行的卡操作系统(COS)需要被修改,以便向其中添加用于使用这些外设的驱动程序及应用逻辑。例如,单芯片解决方案的一个例子是Fidelica公司所开发的集成有指纹识别功能的智能卡方案,有关它的更多信息可参考http://www.fidelica.com/ solutions/index.php。
该种方法有两个基本问题。第一,大部分智能卡控制器一般都不具有足够多的输入输出(IO)引脚来连接外设。另一方面,具有足够多IO引脚的那些常规嵌入式控制器一般不像智能卡控制器那样具有内置的防篡改功能,即,包含用于检测对智能卡的常见攻击的光/频率/电压传感器。因此,出于安全性的考虑,它们通常不能被用作智能卡控制器。第二,这种方法要求对传统的卡操作系统进行实质性修改,而这需要花费相当长的时间并且需要付出很多努力。由于COS需要被烧录到智能卡控制器的ROM中,所以只要在该种方法中修改了COS,COS厂商就不得不制造新的ROM掩模,并触发对于修改后的COS的安全级别一致性证书的新周期。另外,几乎所有的COS厂商都不允许他人任意存取和修改他们的源代码。所以,对于想要开发出增强型智能卡产品但不具有他们自己的COS的公司而言,带来了相当大的障碍。
第二种方法是所谓的双处理器方法(也可以称之为双芯片方法)。在该种方法中,除了通常的智能卡控制器之外,在智能卡中还添加了一个具有多个IO引脚的处理器(在下文中被称为IO处理器)。IO处理器与各种外设相连,并运行必要的驱动程序和软件以支持所连接的外设。图1示出了一种典型的双处理器智能卡100的简化框图。如图1所示,IO处理器经由诸如串行端口SPI、I2C等之类的互连端口与智能卡控制器相连接。但是,该种方法也具有某些功能问题。首先,许多遵循该方法的设计在IO处理器中存储某些敏感性数据/代码(例如,卡所有者的已注册的指纹模式信息等)。为了防止这种数据/代码变得易受黑客攻击,IO处理器必须是与智能卡控制器相类似地具有防篡改功能,限制了对IO处理器的选择。其次,智能卡控制器上运行的COS仍然需要加以修改,以增加对IO处理器的连接接口的支持。基于与单芯片方案中同样的理由,开放式COS由于不支持除了ISO7816以外的接口,所以,在该方法中即使使用了开放式COS,也仍然不能解决需要修改COS的问题。第三,智能卡控制器和IO处理器之间的连接变成了潜在的安全性突破口。例如,在如图1所示的智能卡中,由IO处理器对用户的指纹进行验证,并在验证成功时经由串行端口等连接发送消息以激活智能卡控制器。此时,黑客可以很容易地找到该连接并窥探到该消息,通过将该消息中继到智能卡控制器从而完全地绕过指纹验证过程,因此无法可靠保证智能卡的高安全性。
因此,迫切地需要提供一种增强型的智能卡,其能够克服现有方案中存在的上述缺陷,可以非常方便地在无需修改智能卡操作系统的情况下向智能卡中集成更多的各种外设,以增强智能卡的功能。
发明内容
在下文中给出了关于本发明的简要概述,以便提供关于本发明的某些方面的基本理解。但是,应当理解,这个概述并不是关于本发明的穷举性概述。它并不是意图用来确定本发明的关键性部分或重要部分,也不是意图用来限定本发明的范围。其目的仅仅是以简化的形式给出关于本发明的某些概念,以此作为稍后给出的更详细描述的前序。
针对现有技术中存在的上述问题,本发明的一个目的是提供一种增强型智能卡,其能够在不修改已有智能卡处理器芯片和卡操作系统的情况下在智能卡中集成更多的各种外设。
本发明的另一个目的是提供一种集成了指纹识别功能的增强型智能卡,其能够在不修改已有智能卡处理器芯片和卡操作系统的情况下实现卡上指纹注册和卡上指纹验证,并且只有在用户通过了指纹验证之后才能正常使用该智能卡,从而确保了卡安全性。
本发明还有的另一个目的是提供一种用于实现上述增强型智能卡的方法,以及一种使用上述增强型智能卡实现指纹识别功能的方法。
为了实现上述目的,根据本发明的一个方面,提供了一种增强型智能卡,它包括:标准触点盘;用作智能卡控制器的第一处理器;第二处理器,与要集成在智能卡中的外设相连,用于与外设进行交互并对其进行控制;以及选通开关,连接在标准触点盘与第一处理器和第二处理器之间,用于根据开关控制信号而选择将第一处理器与第二处理器相连或是与标准触点盘相连,其中,第一处理器和第二处理器之间进行通信时所使用的连接接口和消息格式与第一处理器和标准触点盘之间进行通信时所使用的接口和消息格式相同,以及其中,第一处理器上运行开放式卡操作系统。
根据本发明的另一个方面,还提供了一种用于实现增强型智能卡的方法,该增强型智能卡包括标准触点盘和用作智能卡控制器的第一处理器,该方法包括:向所述智能卡中添加第二处理器,该第二处理器与要集成在智能卡中的外设相连,用于与外设进行交互并对其进行控制;以及在标准触点盘与第一处理器和第二处理器之间连接一个选通开关,并根据开关控制信号选择将第一处理器与第二处理器相连或是与标准触点盘相连,其中,第一处理器和第二处理器之间进行通信时所使用的连接接口和消息格式与第一处理器和标准触点盘之间进行通信时所使用的接口和消息格式相同,以及其中,第一处理器上运行开放式卡操作系统。
根据本发明的另一个方面,还提供了一种利用上述增强型智能卡实现指纹识别功能的方法,它包括:向智能卡中添加指纹传感器,该指纹传感器与第二处理器相连,用于采集用户的指纹图像;对所采集的用户指纹图像进行指纹特征提取,以提取出用户的指纹模式信息;将所提取的用户指纹模式信息与先前存储在智能卡中的卡所有者的注册指纹模式信息进行比对,以确定两者是否相匹配;根据比对结果,设置指纹验证成功标志,以表明用户是否通过了指纹验证过程;以及卡上应用程序根据指纹验证成功标志的值,确定其是否正常运行。
本发明的优点包括:
I.允许开发者开发新的Java cardlet(Java卡小应用程序)并将其下载(或加载)到智能卡控制器中,以便在智能卡控制器上进行必要的软件修改,从而避免了与修改COS有关的问题;
II.对于IO处理器可以有更多的选择,并有助于降低智能卡成本;
III.不会像传统的双处理器方法那样在IO处理器和智能卡控制器之间存在潜在的安全漏洞;
IV.为想要开发增强型智能卡产品但是不具有他们自己的COS的厂商提供了便利。
通过以下结合附图对本发明的最佳实施例的详细说明,本发明的这些以及其他优点将更加明显。
具体实施方式
在下文中将结合附图对本发明的示范性实施例进行描述。为了清楚和简明起见,在说明书中并未描述实际实施方式的所有特征。然而,应该了解,在开发任何这种实际实施例的过程中必须做出很多特定于实施方式的决定,以便实现开发人员的具体目标。
在此,还需要说明的一点是,为了避免因不必要的细节而模糊了本发明,在附图中仅仅示出了与根据本发明的方案密切相关的装置结构和/或处理步骤,而省略了与本发明关系不大的其他细节。
下面以集成了指纹传感器、显示器、小键盘并且支持卡上指纹注册和卡上指纹验证的智能卡设计为例,对根据本发明实施例的增强型智能卡的结构和有关处理过程进行说明。
图2示出了根据本发明一个实施例的增强型智能卡200的方框图。智能卡200只有在其中集成的指纹传感器上进行了有效的指纹按压(即,通过了指纹验证)之后,才能被用于正常的后续处理,例如,插入读卡器中进行交易等。
如图2所示,智能卡200通过ISO7816标准所定义的ISO7816-3触点盘210(其具有8个触点),利用ISO7816所定义的常规APDU命令和响应协议与外界(例如,读卡器)进行通信。在智能卡200中,包括两个处理器,即,智能卡控制器230和IO处理器240,并且要集成在智能卡中的诸如小键盘250、指纹传感器260、显示器270和电池280等外设与IO处理器240直接连接并由IO处理器进行控制。其中,电池280用于向智能卡200内集成的各个部件供电,指纹传感器260用于检测用户(即,持卡者)的指纹图像信息。
在此需要说明的是,虽然图2中示出了作为外设的小键盘250、指纹传感器260、显示器270和电池280,但是本发明的方案显然并不局限于此,完全可以根据实际需要在智能卡200中集成上述外设中的一个或多个,或者是集成图2中未示出的其他一个或多个外设。
在图2所示的智能卡200中,在ISO7816-3触点盘210、智能卡控制器230和IO处理器240之间连接有一个选通开关220。IO处理器240具有ISO7816-3主接口,其通过选通开关220与智能卡控制器的ISO7816-3从接口相连。IO处理器240经由ISO7816所定义的常规APDU命令和响应协议与智能卡控制器交换消息。从智能卡控制器230的角度来看,IO处理器240就像是ISO7816-3接口上的常规读卡器那样进行操作,换句话说,IO处理器可以被认为是一个片上读卡器。
由于利用选通开关220实现了智能卡控制器230经由它唯一的ISO7816-3接口与触点盘210和IO处理器240的连接,所以在智能卡控制器230中可以运行开放式智能卡操作系统,例如Java Card COS;以及,将包括卡所有者的注册指纹模式信息在内的敏感性数据存储在智能卡控制器230中,由智能卡控制器230而不是IO处理器240执行指纹验证,即,由智能卡控制器230将来自指纹传感器的指纹模式信息与预先存储的指纹模式信息进行比对,以便确定持卡者是否为卡所有者。
图3示出了选通开关220的逻辑示意图,其中以带有箭头的连线表示了ISO7816-3触点盘210、智能卡控制器230和IO处理器240之间的信号传输关系。
如图3所示,用来自ISO7816-3触点之一的Vcc引脚的信号作为开关控制信号。当智能卡200未被插入在读卡器中时,ISO7816-3触点盘210的Vcc引脚上的Vcc信号为低,即,开关控制信号为低,使得智能卡控制器230的ISO7816-3接口和IO处理器240的ISO 7816-3接口相连,而断开ISO7816-3触点盘210与智能卡控制器230之间的连接。当卡200被插入在读卡器中时,读卡器会向触点盘210的Vcc引脚供电,使得Vcc引脚上的Vcc信号为高,即,开关控制信号为高,从而使得智能卡控制器230的ISO7816-3接口与触点盘210相连,而断开智能卡控制器230与IO处理器240之间的连接。
本领域技术人员应当明白,显然可以根据需要将选通开关220的开关控制信号设计为其它机制。例如,也可以利用ISO7816-3触点盘210的CLK引脚上的时钟信号作为开关控制信号,因为在智能卡200放入读卡器中后,读卡器也会在这个引脚上提供时钟信号。另外,甚至可以在智能卡上设置其他的传感器来对选通开关220进行开关控制,只要这个传感器能区分出智能卡200目前是否放置在读卡器中即可。
再次返回参见图2。正如上文中所提到的,由于智能卡控制器230可以运行开放式COS,所以,为使用通过IO处理器240添加的诸如指纹传感器、小键盘等各个外设的功能,从软件角度不需要修改已有的卡操作系统,而只需要编写和加载相应的可在开放式卡操作系统上运行以驱动相应外设的应用程序即可。
为了进一步具体说明图2所示的智能卡200如何利用所添加的各种外设,下面以指纹识别功能为例结合图4和57所示的流程图来说明智能卡200在进行卡上指纹注册和卡上指纹验证时所执行的处理过程。其中,图4所示的流程图示出了根据本发明的实施例图2所示的智能卡200在进行卡上指纹注册时(此时智能卡放在用户手中)所执行的示意性处理过程400,图5所示的流程图示出了根据本发明的实施例智能卡200在进行卡上指纹验证时(此时智能卡放在读卡器中)所执行的示意性处理过程500。
如图4所示,处理过程400在步骤S410中开始,然后在步骤S420中,由IO处理器240在显示器270上显示一个指纹注册的用户界面,用于提示智能卡用户(卡所有者)进行指纹注册。在此,可以使用现有技术中已知的任何一种方法来编写和显示指纹注册用户界面,因此就不再赘述了。
在步骤S430中,在用户响应于显示器270上所显示的提示而将其手指放在指纹传感器之上时,经由指纹传感器260采集用户的指纹图像,并将其提供给IO处理器240。
IO处理器240在接收到用户指纹图像后,在步骤S440中,进行指纹特征提取处理,以便提取出用户的指纹模式信息。在此,IO处理器240可以使用现有技术中已知的任何一种特征提取算法来提取用户指纹模式,并且其算法与本发明关系不大,因此,为了说明书的简洁起见,就不再对特征提取的具体算法和过程进行详述了。
随后,图4所示的处理过程进行到步骤S450,IO处理器240经由ISO7816-3接口,通过向智能卡控制器230发送形如“select应用标识符”的SELECT FILE命令消息,来选择智能卡控制器230上的用于实现卡上指纹注册和验证的相应应用程序(为了使下面的描述更为方便,在此将其称为XCManager),从而请求智能卡控制器230加载该应用程序,即XCManager;然后,IO处理器240还经由ISO7816-3接口利用某些预定消息向XCManager发送在步骤S440中所提取到的指纹模式信息,并请求XCManager将其保存为卡所有者的注册指纹模式信息。在此,XCmanager仅仅是基于本发明来开发集成了指纹识别功能的智能卡应用时用Java语言编写的一个Java小应用程序的具体例子,并不用来对本发明构成限制,它所实现的功能将在下文中结合流程图进一步加以说明。
然后,在步骤S460中,XCmanager将接收到的所述指纹模式信息存储在智能卡控制器230的内部存储设备(图2中未示出)中,并向IO处理器240返回“注册成功”响应消息。
接下来,在步骤S470中,IO处理器240响应于所述“注册成功”响应消息,指示显示器270更新其上显示的用户界面,以便通知用户指纹注册已完成。随后,处理过程400在步骤S480中结束,这样就完成了用户(即,卡所有者)的卡上指纹注册过程。
当用户需要使用智能卡200进行后续处理,例如完成一次交易时,他首先要在卡上完成指纹识别并成功后(此时,卡放在手上),即通过了图5所示的卡上指纹验证过程后,才能将卡放入读卡器中进行相应的后续操作,否则将无法对卡进行正常使用。
进行卡上指纹验证的处理过程500的处理流程如图5所示,其在步骤S510中开始。在图5所示的步骤S520~S540中,除了在步骤S540中IO处理器240请求智能卡控制器进行指纹验证而不是进行指纹存储之外,其余处理与图4所示的步骤S430~S450中的处理类似,因此,为了简明起见在此就不再赘述了。
接下来,在步骤S550,XCManager将步骤S530中提取的用户指纹模式信息与先前存储在智能卡控制器230中的注册指纹模式信息进行比对,以确定二者是否匹配。
如果在步骤S550中确定上述指纹模式信息相互匹配,则处理进行到步骤S560,由XCManager设置指纹验证成功标志,否则,处理进行到步骤S570。
然后,在步骤S570,IO处理器240指示显示器270向用户显示指纹验证是否成功。此后,卡上指纹验证的过程在步骤S580中结束。
为了确保只有在通过指纹验证后才能正常使用智能卡,智能卡控制器230上的常规应用程序需要利用上述指纹验证成功标志的值,只有当指纹验证成功标志被设置时,智能卡控制器230上的每个应用程序才能继续正常运行,以便与外部读卡器进行交互,例如,通过读卡器进行交易等。此外,还要保证在一次指纹识别和验证后只能进行一次交易等后续操作。
在用户通过了卡上指纹验证之后,用户将卡200放入读卡器(例如,银行终端POS机)中,这时如上所述,图2所示的选通开关220的开关控制信号(例如,图3所示的ISO7816-3触点盘210的Vcc引脚上的信号)的电平为高,因此使得智能卡控制器230与读卡器连接而断开了与IO处理器240的连接。此后,读卡器根据需要通过发送命令来选择智能卡控制器中期望的应用程序,例如为进行交易而需要使用的应用程序,如VISA信用卡的应用程序等。
虽然以上为了便于说明而以Java语言为例对XCManager的功能和实现方式进行了说明,但是它也可以用Open COS所支持的除Java外的其他各种语言编写,只要能够实现类似的功能即可。
为了实现更强的安全性,还可以以ISO7816-6标准中所定义的方式对读卡器和IO处理器这两个处理器之间经由ISO7816接口进行交换的消息进行加密。关于加密的具体算法与本发明的关系不大,因此就不再赘述了。
此外,还需要说明的是,以上结合图4和5所示的流程图所描述的智能卡200的操作过程仅仅是示例性的,可以根据需要对其中某些步骤中的处理进行修改。例如,虽然以上描述了在IO处理器中执行指纹特征提取处理,以便减轻智能卡控制器的负荷,但是这并不是绝对的,指纹特征提取等处理也可以在智能卡控制器中执行,只是会导致对智能卡控制器的性能要求增加。
本领域技术人员应当明白,在上文中虽然以集成了指纹识别功能的智能卡的卡上指纹注册和卡上指纹验证过程为例对智能卡的结构和操作过程进行了描述,但是,根据实际需要,可以向智能卡中集成各种外设,并且向智能卡控制器中运行的开放式COS中下载和加载所需的相应应用程序,从而扩展智能卡的功能。
另外,虽然以上描述了利用选通开关在标准触点盘、智能卡控制器和IO处理器之间遵循现行的ISO7816标准进行连接和交互,但是显然本发明的原理也可以适用于未来提出或发展的其他标准,例如从ISO7816标准演化而来的标准等,只要三者之间的连接和交互遵循同样的可以支持开放式COS的标准即可。
此外,还需要说明的是,虽然在上文中以接触式智能卡为例进行了说明,但是本发明的原理也可以适用于某些非接触式智能卡或者所谓的组合卡(也可以被称为双接口卡,其中同时具有接触式和非接触式的用于与外界进行通信的接口)。例如,本发明可以适用于在Wolfgang Rankl和Wolfgang Effing所著的、由WILEY出版的“Smart Card Handbook(3rdEdition)”(ISBN号为:0-470-85668-8)的第2.3.3节中所介绍的非接触式智能卡或者组合卡中,该卡通过在普通的接触式智能卡中增加一个射频(RF)模块来以非接触的方式实现与外界的通信,其中该RF模块与标准的触点盘相连。
如上所述,在根据本发明的智能卡中,在智能卡的ISO7816-3接口上添加了一个选通开关,使得标准触点盘、智能卡控制器和IO处理器之间遵循现行的ISO7816标准进行连接和交互。因此,与已有智能卡相比,节省了智能卡控制器的数目有限的端口之一,并且可以在智能卡控制器上运行开放式COS,从而使得可以在不修改COS的情况下利用IO处理器添加更多的外设。也就是说,即使向智能卡中添加了新的外设,也根本不需要修改COS,完全可以通过开发和加载相应的应用程序来支持所添加的外设。例如,在Java Card操作系统中,可以在Java小应用程序级别上对智能卡控制器中的软件进行必要的修改。因此,不需要因要修改COS而制造新的ROM掩膜,也就不需要为COS重新提供证书,所以可以缩短智能卡的开发周期,降低成本,并且使得不具有自己的COS的智能卡厂商构造功能得到大幅度增强的智能卡成为可能。
而且,在根据本发明的智能卡中,包括卡所有者的注册指纹模式信息在内的各种敏感性数据都存储在智能卡控制器中,并且由智能卡控制器而不是IO处理器进行诸如指纹验证之类的关键性处理,因此,可以消除现有智能卡中可能存在的智能卡控制器和IO处理器间的互连上的安全隐患,并且降低了对IO处理器的防篡改功能的要求,或者是根本不要求IO处理器具备防篡改功能,从而放宽了IO处理器的选用条件,有助于进一步降低智能卡的成本,同时也保证了高安全性。
以上虽然结合附图详细描述了本发明的实施例,但是应当明白,上面所描述的实施方式只是用于说明本发明,而并不构成对本发明的限制。对于本领域的技术人员来说,可以对上述实施方式做出各种修改和变更而没有背离本发明的实质和范围。因此,本发明的范围仅由所附的权利要求及其等效含义来限定。