一种具有防复制可验证功能的智能卡的验证方法及系统的制作方法

文档序号:10687662阅读:758来源:国知局
一种具有防复制可验证功能的智能卡的验证方法及系统的制作方法
【专利摘要】本发明涉及一种具有防复制可验证功能的智能卡的验证方法及系统,该方法包括:在初始化阶段:对智能卡进行初始化,并将初始化获得的数据写入智能卡中;在验证阶段:利用公钥算法对智能卡的返回值进行验证;若对智能卡的返回值验证通过,获取智能卡的ID号。本发明通过采用原有的标准读卡指令,在不改变原有读卡函数的前提下,仅通过修改读卡函数的内容,并利用读卡器本身可分析验证数据的能力,实现了快速、简单验证智能卡真伪的功能,保证了智能卡的ID号无法复制、伪造,提高了智能卡系统的安全等级。
【专利说明】
一种具有防复制可验证功能的智能卡的验证方法及系统
技术领域
[0001]本发明涉及智能卡的技术领域,更具体地说,涉及一种具有防复制可验证功能的智能卡的验证方法及系统。
【背景技术】
[0002]智能卡目前被社会广泛使用,每张智能卡的ID号都是唯一、不可改变的,目前应用最多的就是利用智能卡的ID号进行智能卡识别。基于智能卡ID号的应用系统会根据每张智能卡的ID号在后台搭建关联数据,授权相应ID号的智能卡具有不同的应用权限和数值。
[0003]随着技术的发展,智能卡的ID号变得可复制而生产出克隆卡的风险越来越大,基于智能卡ID号的应用系统变得越来越不安全。在不改变原有应用系统架构和功能的情况下,如何提高安全等级、防止克隆卡的使用就变得很有必要了。

【发明内容】

[0004]本发明要解决的技术问题在于,针对现有技术的上述基于智能卡ID号的应用系统变得不安全、易被克隆的缺陷,提供一种具有防复制可验证功能的智能卡的验证方法及系统。
[0005]本发明解决其技术问题所采用的技术方案是:构造一种具有防复制可验证功能的智能卡的验证方法,
[0006]在初始化阶段,包括以下步骤:
[0007]对所述智能卡进行初始化,并将初始化获得的数据写入所述智能卡中;
[0008]在验证阶段,包括以下步骤:
[0009]利用公钥算法对所述智能卡的返回值进行验证;
[0010]若所述对所述智能卡的返回值验证通过,获取所述智能卡的ID号。
[0011]优选地,所述对所述智能卡进行初始化,并将初始化获得的数据写入所述智能卡中的步骤包括:
[0012]接收初始化指令,根据所述初始化指令对所述智能卡进行初始化,获取所述智能卡的卡片的唯一 ID和卡片的公钥;
[0013]将所述卡片的唯一ID和所述卡片的公钥进行绑定;
[0014]对所述卡片的唯一ID和所述卡片的公钥的绑定关系进行签名,获取对应的签名值;
[0015]将所述签名值写入所述智能卡中。
[0016]优选地,所述利用公钥算法对所述智能卡的返回值进行验证的步骤包括:
[0017]在读取所述智能卡前先获取所述系统公钥,并在读取所述智能卡时向所述智能卡发出读取所述智能卡的ID号的指令,通过所述指令获取智能卡的返回值;
[0018]所述智能卡接收所述读取所述智能卡的ID号的指令,并根据所述指令回复对应的返回值。
[0019]优选地,所述对应的返回值包括:所述智能卡的卡片私钥对随机数的签名、卡片的唯一 ID、卡片的公钥、签名值。
[0020]优选地,所述利用公钥算法对所述智能卡的返回值进行验证的步骤还包括:
[0021 ]采用所述系统公钥验证所述签名值,若所述签名值验证通过,启动下一步;若所述签名值验证不通过,推出所述智能卡;
[0022]若所述签名值验证通过,采用所述卡片的公钥验证所述卡片私钥对随机数的签名,若所述卡片私钥对随机数的签名验证通过,启动下一步;若所述卡片私钥对随机数的签名验证不通过,推出所述智能卡。
[0023]优选地,所述若所述对所述智能卡的返回值验证通过,获取所述智能卡的ID号的步骤包括:
[0024]若所述采用所述卡片的公钥验证所述卡片私钥对随机数的签名,且所述卡片私钥对随机数的签名验证通过,获取所述智能卡的ID号。
[0025]本发明还提供一种具有防复制可验证功能的智能卡的系统,该系统包括:
[0026]初始化模块,用于对所述智能卡进行初始化,并将初始化获得的数据写入所述智能卡中;
[0027]验证模块,用于利用公钥算法对所述智能卡的返回值进行验证;
[0028]执行模块,用于若所述对所述智能卡的返回值验证通过,获取所述智能卡的ID号。
[0029]实施本发明具有防复制可验证功能的智能卡的验证方法及系统,具有以下有益效果:本发明通过采用原有的标准读卡指令,在不改变原有读卡函数的前提下,仅通过修改读卡函数的内容,并利用读卡器本身可分析验证数据的能力,实现了快速、简单验证智能卡真伪的功能,保证了智能卡的ID号无法复制、伪造,提高了智能卡系统的安全等级。
【附图说明】
[0030]下面将结合附图及实施例对本发明作进一步说明,附图中:
[0031]图1是本发明具有防复制可验证功能的智能卡的验证方法一实施例的方法流程示意图;
[0032]图2是本发明具有防复制可验证功能的智能卡的系统一实施例的结构示意图;
【具体实施方式】
[0033]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图和具体实施例,对本发明进行进一步的详细说明。应当理解地,此处描述的具体实施例仅用于解释本发明,并不用于限定本发明。
[0034]本发明实施例公开了一种具有防复制可验证功能的智能卡的验证方法及系统,该系统包括一张带有SM2密码算法的智能卡、一台可读取智能卡的读卡器和安装在读卡器上用来完成读取智能卡的相关软件。系统通过对智能卡进行初始化,并将初始化所获得的数据写入智能卡中,实现对智能卡的授权,同时读卡器通过获取系统公钥,并通过读卡指令在读取智能卡时获取智能卡的返回值(该返回值是带有验证信息和ID号的数据),利用公钥算法对智能卡回复的返回值进行分析判断,验证智能卡回复的返回值,若验证结果通过,获取智能卡的ID号。即通过对已授权的智能卡采用公钥算法进行分析验证,可快速、简单验证智能卡的真伪。以下分别进行详细说明。
[0035]如图1所示,为本发明一实施例的一种具有防复制可验证功能的智能卡的验证方法的流程示意图,,通过该验证方法可以确认智能卡的合法性,即可以辨别智能卡的真伪,防止克隆卡。该具有防复制可验证功能的智能卡的验证方法包括以下步骤:
[0036]SlOl:对智能卡进行初始化,并将初始化获得的数据写入智能卡中。具体地,该步骤包括:系统接收初始化指令,并根据初始化指令对智能卡进行初始化,获取智能卡的卡片的唯一ID(即CardID)和卡片的公钥(即CardPubkey),在对智能卡的初始化过程中,通过相应的操作指令,在获取智能卡的卡片的唯一ID(即CardID)和卡片的公钥(即CardPubkey)后,将智能卡的CardID和CardPubkey在系统中进行绑定(即CardlD+CardPubkey),同时系统对CardlD+CardPubkey进行签名,获得CardlD+CardPubkey对应的签名值(即InfoSign,可以理解地,该InfoSign是系统对CardID和CardPubkey的绑定关系的签名),并将该签名值写入智能卡中,进而完成对智能卡的初始化,实现对智能卡的授权。可以理解地,这里所说的系统是指具有防复制可验证功能的智能卡的系统,另外,本发明对这里所指的相应的操作指令不作限定。
[0037]S102:利用公钥算法对智能卡的返回值进行验证。
[0038]具体地,在开始对智能卡的返回值进行验证之前,先执行以下步骤:
[0039]在读取智能卡前先获取系统公钥,并在读取智能卡时向智能卡发出读取智能卡的ID号的指令,通过指令获取智能卡的返回值。即在读取智能卡之前,读卡器先通过系统获取系统公钥(即SystemPubkey),并在读取智能卡时向智能卡发出读取智能卡的ID号的指令(即APDU指令),同时通过该APDU指令获取智能卡回复的返回值;可以理解地,该APDU指令可以为:00 85 00 00 08+8个字节的随机数,对于APDU指令中8个字节的随机数,本发明不作限定,可根据实际操作确定。
[0040]智能卡接收读取智能卡的ID号的指令,并根据该APDU指令回复对应的返回值。具体地,智能卡接收系统通过读卡器发送的读取智能卡的ID号的APDU指令,并根据该APDU指令回复对应的返回值。可以理解地,返回值包括:智能卡的卡片私钥对随机数的签名、卡片的唯一 ID、卡片的公钥、签名值。对应的,该返回值可以为:CardSi gn+Card ID+CardPubKey+InfoSign+9000,其中CardSign为智能卡的卡片私钥对随机数的签名,CardID为智能卡的卡片的唯一 ID,CardPubKey为智能卡的卡片的公钥,Inf οSi gn为系统私钥对CardID +CardPubKey的签名。在本发明的具体实施例中,CardSign的长度一般为64字节,CardID的长度一般为32字节,CardPubKey的长度一般为64字节,InfoSign的长度一般为64字节。对于CardSign、CardID、CardPubKey及InfoSign的具体长度可根据实际应用进行选择确定,本发明对此不作限定。
[0041 ]进一步地,利用公钥算法对智能卡的返回值进行验证还包括以下步骤:
[0042]采用所述系统公钥验证签名值,若签名值验证通过,启动下一步;若签名值验证不通过,推出所述智能卡。可以理解地,系统通过系统公钥对智能卡回复的返回值中的签名值即InfoSign进行分析判断,验证智能卡中的CardID与CardPubKey的绑定关系,若系统公钥对Inf oSign验证通过,则可确认CardID与CardPubKey的真实绑定关系,此时就会启动下一步操作;若系统公钥对InfoSign验证不通过,则读卡器将智能卡推出,即该智能卡的身份不合法。
[0043]在上述验证步骤通过的前提下,即签名值验证通过,采用卡片的公钥(SPCardPubkey)验证卡片私钥对随机数的签名(即CardSign),若卡片私钥对随机数的签名验证通过,启动下一步;若卡片私钥对随机数的签名验证不通过,推出智能卡。即该步骤是在InfoSign验证通过的前提下才执行的。可以理解地,当系统公钥对Inf oSign验证通过后,启动下一步,即用智能卡的卡片公钥(即CardPubkey)验证智能卡的卡片私钥对随机数的签名(即CardSign),若CardSign验证通过,可确定该智能卡就是CardPubKey的真实拥有者,此时就会启动下一步操作,若验证不通过时,读卡器就会把智能卡推出,即该智能卡不是CardPubKey的真实拥有者,其身份不合法。
[0044]可以理解地,本发明所指的公钥算法为采用系统公钥(S卩SystemPubkey)和卡片的公钥(即CardPubkey)对经过系统初始化的智能卡进行验证的算法。即用SystemPubkey对已初始化的智能卡的Inf osign进行验证,确认CardID与CardPubkey的真实绑定关系,验证通过后再用CardPubkey验证Cardsign ,Cardsign验证通过后即可确认该智能卡的CardID就是真实的智能卡的ID号,从而解决了智能卡被复制的风险。即采用公钥算法可有效验证智能卡的真实身份,防止被复制。
[0045]S103:若对智能卡的返回值验证通过,获取智能卡的ID号。具体地,系统(这里所指的系统是指具有防复制可验证功能的智能卡的系统)对智能卡回复的返回值进行两次双重验证后,即可确定智能卡的Car d ID的真实身份。即先利用系统公钥(CardPubkey)对签名值(InfoSign)进行验证。若Inf oSign验证通过,读卡器启动下一步操作,即利用CardPubkey对CardSign进行验证,若CardSign验证通过,则可确定智能卡的CardID就是真实的ID号,即该智能卡的身份合法,进而获取该智能卡的ID号。
[0046]进一步地,读卡器采用安装在其内部的软件通过读取智能卡指令,在读取智能卡时获取智能卡回复的返回值后(该返回值是带有验证信息和ID号的数据),读卡器内部的软件经过分析和验证从智能卡返回的智能卡的ID号的真实性,从而判断读取到的智能卡是否是合法的智能卡。具体地,读卡器内部的软件获取到返回值后,利用系统公钥验证智能卡回复的返回值中的InfoSign,InfoSign验证通过后,可以确认CardID与CardPubKey的真实绑定关系,再利用验证通过的CardPubKey验证CardSign,当CardSign验证通过后,确定该智能卡就是CardPubKey的真实拥有者。该验证方法通过两次验证比较,确定了该智能卡的CardID就是真实的智能卡的ID号,从而解决了智能卡被复制的风险。可以理解地,本发明技术方案中的ID号是基于国密SM2算法的签名机制,保证了ID号无法被复制、伪造,国密SM2算法生成的密钥特别短,从而使得公钥、信息签名都可以在一个255字节的APDU指令中实现,因此采用该种算法的签名机制可以保证智能卡的ID号无法被复制和伪造,且简单易行,提高了智能卡的安全性。可以理解地,本发明通过采用现有的标准读卡指令,在不改变原有读卡函数的前提下,仅通过修改读卡函数的内容,并利用读卡器本身可分析验证数据的能力,实现了快速、简单验证智能卡真伪的功能,保证了智能卡的ID号无法复制、伪造,提高了智能卡系统的安全等级。
[0047]如图2所示,图2为本发明具有防复制可验证功能的智能卡的系统一实施例的结构示意图,该系统包括:
[0048]初始化模块201,用于对智能卡进行初始化,并将初始化获得的数据写入智能卡中。
[0049]具体地,该步骤包括:系统接收初始化指令,并根据初始化指令对智能卡进行初始化,获取智能卡的卡片的唯一ID(即CardID)和卡片的公钥(即CardPubkey),在对智能卡的初始化过程中,通过相应的操作指令,在获取智能卡的卡片的唯一ID(S卩CardID)和卡片的公钥(即CardPubkey)后,将智能卡的CardID和CardPubkey在系统中进行绑定(即CardID+CardPubkey),同时系统对CardlD+CardPubkey进行签名,获得CardlD+CardPubkey对应的签名值(即Inf oSign,可以理解地,该Inf oSign是系统对CardID和CardPubkey的绑定关系的签名),并将该签名值写入智能卡中,进而完成对智能卡的初始化,实现对智能卡的授权。可以理解地,这里所说的系统是指具有防复制可验证功能的智能卡的系统,另外,本发明对这里所指的相应的操作指令不作限定。
[0050]验证模块202,用于利用公钥算法对智能卡的返回值进行验证。
[0051]具体地,在开始对智能卡的返回值进行验证之前,先执行以下步骤:
[0052]在读取智能卡前先获取系统公钥,并在读取智能卡时向智能卡发出读取智能卡的ID号的指令,通过指令获取智能卡的返回值。即在读取智能卡之前,读卡器先通过系统获取系统公钥(即SystemPubkey),并在读取智能卡时向智能卡发出读取智能卡的ID号的指令(即APDU指令),同时通过该APDU指令获取智能卡回复的返回值;可以理解地,该APDU指令可以为:00 85 00 00 08+8个字节的随机数,对于APDU指令中8个字节的随机数,本发明不作限定,可根据实际操作确定。
[0053]智能卡接收读取智能卡的ID号的指令,并根据该APDU指令回复对应的返回值。具体地,智能卡接收系统通过读卡器发送的读取智能卡的ID号的APDU指令,并根据该APDU指令回复对应的返回值。可以理解地,返回值包括:智能卡的卡片私钥对随机数的签名、卡片的唯一 ID、卡片的公钥、签名值。对应的,该返回值可以为:Car d S i gn+Car d I D+Car dPubKe y+InfoSign+9000,其中CardSign为智能卡的卡片私钥对随机数的签名,CardID为智能卡的卡片的唯一 ID,Car dPubKey为智能卡的卡片的公钥,I nf ο S i gn为系统私钥对Car d ID +CardPubKey的签名。在本发明的具体实施例中,CardSign的长度一般为64字节,CardID的长度一般为32字节,CardPubKey的长度一般为64字节,InfoSign的长度一般为64字节。对于CardSign、CardID、CardPubKey及Inf oSign的具体长度可根据实际应用进行选择确定,本发明对此不作限定。
[0054]进一步地,利用公钥算法对智能卡的返回值进行验证还包括以下步骤:
[0055]采用所述系统公钥验证签名值,若签名值验证通过,启动下一步;若签名值验证不通过,推出所述智能卡。可以理解地,系统通过系统公钥对智能卡回复的返回值中的签名值即Inf oSign进行分析判断,验证智能卡中的CardID与CardPubKey的绑定关系,若系统公钥对Inf oSign验证通过,则可确认CardID与CardPubKey的真实绑定关系,此时就会启动下一步操作;若系统公钥对InfoSign验证不通过,则读卡器将智能卡推出,即该智能卡的身份不合法。
[0056]在上述验证步骤通过的前提下,即签名值验证通过,采用卡片的公钥(SPCardPubkey)验证卡片私钥对随机数的签名(即CardSign),若卡片私钥对随机数的签名验证通过,启动下一步;若卡片私钥对随机数的签名验证不通过,推出智能卡。即该步骤是在InfoSign验证通过的前提下才执行的。可以理解地,当系统公钥对Inf oSign验证通过后,启动下一步,即用智能卡的卡片公钥(即CardPubkey)验证智能卡的卡片私钥对随机数的签名(即CardSign),若CardSign验证通过,可确定该智能卡就是CardPubKey的真实拥有者,此时就会启动下一步操作,若验证不通过时,读卡器就会把智能卡推出,即该智能卡不是CardPubKey的真实拥有者,其身份不合法。
[0057]可以理解地,本发明所指的公钥算法为采用系统公钥(S卩SystemPubkey)和卡片的公钥(即CardPubkey)对经过系统初始化的智能卡进行验证的算法。即用SystemPubkey对已初始化的智能卡的Inf osign进行验证,确认CardID与CardPubkey的真实绑定关系,验证通过后再用CardPubkey验证Cardsign ,Cardsign验证通过后即可确认该智能卡的CardID就是真实的智能卡的ID号,从而解决了智能卡被复制的风险。即采用公钥算法可有效验证智能卡的真实身份,防止被复制。
[0058]执行模块203,用于若对智能卡的返回值验证通过,获取智能卡的ID号。
[0059]具体地,系统(这里所指的系统是指具有防复制可验证功能的智能卡的系统)对智能卡回复的返回值进行两次双重验证后,即可确定智能卡的CardID的真实身份。即先利用系统公钥(CardPubkey)对签名值(Info Sign)进行验证。若Inf oSign验证通过,读卡器启动下一步操作,即利用CardPubkey对CardSign进行验证,若CardSign验证通过,则可确定智能卡的CardID就是真实的ID号,即该智能卡的身份合法,进而获取该智能卡的ID号。
[0060]进一步地,读卡器采用安装在其内部的软件通过读取智能卡指令,在读取智能卡时获取智能卡回复的返回值后(该返回值是带有验证信息和ID号的数据),读卡器内部的软件经过分析和验证从智能卡返回的智能卡的ID号的真实性,从而判断读取到的智能卡是否是合法的智能卡。具体地,读卡器内部的软件获取到返回值后,利用系统公钥验证智能卡回复的返回值中的InfoSign,InfoSign验证通过后,可以确认CardID与CardPubKey的真实绑定关系,再利用验证通过的CardPubKey验证CardSign,当CardSign验证通过后,确定该智能卡就是CardPubKey的真实拥有者。该验证方法通过两次验证比较,确定了该智能卡的CardID就是真实的智能卡的ID号,从而解决了智能卡被复制的风险。可以理解地,本发明技术方案中的ID号是基于国密SM2算法的签名机制,保证了ID号无法被复制、伪造,国密SM2算法生成的密钥特别短,从而使得公钥、信息签名都可以在一个255字节的APDU指令中实现,因此采用该种算法的签名机制可以保证智能卡的ID号无法被复制和伪造,且简单易行,提高了智能卡的安全性。可以理解地,本发明通过采用现有的标准读卡指令,在不改变原有读卡函数的前提下,仅通过修改读卡函数的内容,并利用读卡器本身可分析验证数据的能力,实现了快速、简单验证智能卡真伪的功能,保证了智能卡的ID号无法复制、伪造,提高了智能卡系统的安全等级。
[0061]可以理解地,本发明的技术方案还可以应用于具有多操作系统的读卡器中,当应用在多操作系统的读卡器中时,为每个操作系统分配一个操作系统号(SystemID),并产生对应各个操作系统的系统公钥(SystemPubkey),当读卡器向智能卡发出APDU指令时,智能卡的卡片返回值就变为:CardSign+CardID+CardPubkey+InfoSign+SystemID+9000。读卡器通过SystemID获得对应的系统的公钥SystemPubkey,进而判断返回值。在这里本发明不再对多操作系统的读卡器与智能卡之间的验证方法进行详细描述。同时,这里所说的操作系统为安装在读卡器中的操作系统。
[0062]以上实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据此实施,并不能限制本发明的保护范围。凡跟本发明权利要求范围所做的均等变化与修饰,均应属于本发明权利要求的涵盖范围。
[0063]应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。
【主权项】
1.一种具有防复制可验证功能的智能卡的验证方法,其特征在于, 在初始化阶段,包括以下步骤:对所述智能卡进行初始化,并将初始化获得的数据写入所述智能卡中; 在验证阶段,包括以下步骤: 利用公钥算法对所述智能卡的返回值进行验证; 若所述对所述智能卡的返回值验证通过,获取所述智能卡的ID号。2.根据权利要求1所述的具有防复制可验证功能的智能卡的验证方法,其特征在于,所述对所述智能卡进行初始化,并将初始化获得的数据写入所述智能卡中的步骤包括: 接收初始化指令,根据所述初始化指令对所述智能卡进行初始化,获取所述智能卡的卡片的唯一 ID和卡片的公钥; 将所述卡片的唯一 ID和所述卡片的公钥进行绑定; 对所述卡片的唯一 ID和所述卡片的公钥的绑定关系进行签名,获取对应的签名值; 将所述签名值写入所述智能卡中。3.根据权利要求2所述的具有防复制可验证功能的智能卡的验证方法,其特征在于,所述利用公钥算法对所述智能卡的返回值进行验证的步骤包括: 在读取所述智能卡前先获取所述系统公钥,并在读取所述智能卡时向所述智能卡发出读取所述智能卡的ID号的指令,通过所述指令获取智能卡的返回值; 所述智能卡接收所述读取所述智能卡的ID号的指令,并根据所述指令回复对应的返回值。4.根据权利要求3所述的具有防复制可验证功能的智能卡的验证方法,其特征在于, 所述对应的返回值包括:所述智能卡的卡片私钥对随机数的签名、卡片的唯一 ID、卡片的公钥、签名值。5.根据权利要求4所述的具有防复制可验证功能的智能卡的验证方法,其特征在于,所述利用公钥算法对所述智能卡的返回值进行验证的步骤还包括: 采用所述系统公钥验证所述签名值,若所述签名值验证通过,启动下一步;若所述签名值验证不通过,推出所述智能卡; 若所述签名值验证通过,采用所述卡片的公钥验证所述卡片私钥对随机数的签名,若所述卡片私钥对随机数的签名验证通过,启动下一步;若所述卡片私钥对随机数的签名验证不通过,推出所述智能卡。6.根据权利要求5所述的具有防复制可验证功能的智能卡的验证方法,其特征在于,所述若所述对所述智能卡的返回值验证通过,获取所述智能卡的ID号的步骤包括: 若所述采用所述卡片的公钥验证所述卡片私钥对随机数的签名,且所述卡片私钥对随机数的签名验证通过,获取所述智能卡的ID号。7.—种具有防复制可验证功能的智能卡的系统,其特征在于,所述系统包括: 初始化模块,用于对所述智能卡进行初始化,并将初始化获得的数据写入所述智能卡中; 验证模块,用于利用公钥算法对所述智能卡的返回值进行验证; 执行模块,用于若所述对所述智能卡的返回值验证通过,获取所述智能卡的ID号。
【文档编号】G06K19/073GK106056192SQ201610392318
【公开日】2016年10月26日
【申请日】2016年6月3日
【发明人】曾广旺, 孙金龙
【申请人】深圳华视微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1