身份证阅读机具中的安全加密单元及其应用方法与流程

文档序号:12182819阅读:550来源:国知局
身份证阅读机具中的安全加密单元及其应用方法与流程

本发明属于电子信息技术和应用领域,具体涉及一种用于身份证阅读机具中的硬件安全加密单元的技术、器件及其应用方法。



背景技术:

近十多年,使用射频识别(RFID)芯片技术制作的我国第二代居民身份证得到了普遍发行和广泛应用。对于射频芯片内的身份证机读信息的阅读和查验,一般要求使用专用的身份证阅读机具完成;而在专用的身份证阅读机具中,要求使用专用的安全模块实现认证和解密功能。这种安全模块在GA 467‐2004标准中称之为“验证安全控制模块”(Secure Access and control Module for Validation,SAM_V)模块,释义是“内嵌于验证机具中,具有对居民身份证证件内信息控制读取、安全验证、输出功能的部件”;在GA 467‐2013修订标准中将SAM_V改称为SAM_A(Secure Access Module for Authentication,SAM_A)。

SAM_A外部接口主要有业务终端接口(UART串口或USB接口)和射频模块接口(并口或类似I2C的串行接口),业务终端接口接上位机或微处理器(MCU),射频模块接口接射频模块。GA 467‐2013标准给出的SAM_A的接口方式是一端通过业务终端接口连接业务终端,另一端通过射频模块接口连接射频模块。然而,常见的身份证阅读机具,为了适应不同类型和射频芯片,也为了增加操作射频模块的方便性,一般使用MCU分别连接SAM_A业务终端接口和射频模块接口,再使用MCU另外的接口连接射频芯片,此时SAM_A的射频模块接口成为一种虚拟的射频接口。

常规身份证阅读机具读取身份证机读信息的过程是:业务终端或上位机通过业务终端接口向SAM_A发送“读机读文字信息和照片信息”命令(0x300x01),或者“读机读文字信息、照片信息和指纹信息”命令(0x300x10),SAM_A通过射频模块接口输出身份证读卡操作命令,包括选择文件、读二进制、内部认证、取随机数和外部认证命令,射频模块操作身份证射频芯片执行上述命令后将命令应答返回给SAM_A。正确执行上述命令完毕后,SAM_A通过业务终端接口返回解密后的身份证机读信息。

为描述方便,本发明将所述的身份证机读信息简称为ID_Data,包含了身份证机读文本信息和相片信息,近年发行的身份证还有指纹信息,上位机或后台系统软件解析ID_Data后得到身份证机读文字、相片和指纹信息。

以上身份证阅读机具读取身份证机读信息的过程,从数据安全角度来看,更适合在业务终端本地阅读身份证机读信息的应用场合,不太适合网络系统后台读取和验证身份证机读信息的应用需求。例如在移动通讯公司网络实名系统中,很多不受控的第三方代销点使用客户端读取身份证机读信息,存在客户端软件假冒身份证机读信息的安全隐患。

具体来说,由于ID_Data有确定的数据结构可供分析解读,对于特定的身份证又是固定不变的,没有动态加密或签名之类的数据安全保护措施,客户端软件拼凑、篡改和假冒ID_Data上传后台系统,后台系统仍能正常解析,没有可靠的技术手段验证ID_Data信息的数据真伪。而且,在网络通道上传输真实的ID_Data数据也存在被非法截获的安全隐患。

概括来说,当前基于SAM_A的身份证阅读机具,仅有基于SAM_A管理方(公安部门)的本地读卡安全认证手段,除此之外,并没有针对网络系统用户,例如银行或电信公司网络系统的安全措施,不太适合在网络系统客户端使用身份证阅读机具读取身份证机读信息,再上传给网络系统后台的应用领域,特别是客户端不受控制的应用场合。



技术实现要素:

鉴于此,本发明提出使用一种安全加密单元(Secure Encrypt Element,SCE),嵌入在身份证阅读机具中,使用非对称算法对GA 467‐2013标准SAM_A输出的身份证机读信息ID_Data加密或签名,生成身份证机读信息密文(简称En_ID_Data)或ID_Data的签名(简称ID_Data_DS),供网络后台系统解密或验证。

SCE使用其一个或多个接口与身份证阅读机具中的主控MCU、SAM_A或其他器件连接,其主要功能包括但不限于:

(1)接收来自主控MCU的业务命令;

(2)解析、执行和应答命令;

(3)创建、生成、存储、读写或使用与密码算法或应用相关的文件;

(4)必要时转发MCU命令或自行发送命令给SAM_A;

(5)接收来自MCU或SAM_A的身份证机读信息ID_Data,根据命令参数选择使用相应的密钥对ID_Data进行加密或签名算法,生成身份证机读信息密文En_ID_Data或者签名ID_Data_DS,返回给主控MCU。

以上列出的SCE功能可以在一个独立的安全芯片中实现,也可以作为一个安全芯片或安全模块的一部分功能单元。考虑不同的可能性和适应性,我们给出如下三种可选的SCE实施方案:

第一种方案是在身份证阅读机具中的主控MCU之外,单独配置SCE安全芯片。SCE的一种接口方式是只与MCU连接,接收来自MCU的ID_Data,返回En_ID_Data或ID_Data_DS给MCU;SCE的另一种接口方式是在SAM_A和MCU之间分别与SAM_A和MCU连接,接收来自MCU的业务命令,处理新增业务命令,转发SAM_A业务命令给SAM_A,接收来自SAM_A的ID_Data,生成En_ID_Data或ID_Data_DS返回给MCU。SCE的这种实施方案容易嵌入在当前常规的身份证阅读机具中,特别是其中的第二种接口方式,基本不需要修改当前常规身份证阅读机具的软硬件设计,只需要新增少量业务命令,即可实现对ID_Data的加密或签名功能。本方案所述主控MCU使用常规MCU即可,不需要在MCU中实现SCE功能,本方案也可以使用安全主控MCU实现身份证阅读机具的基本功能。

第二种方案是使用安全芯片作为身份证阅读机具的安全主控MCU,在实现身份证阅读功能的同时,实现SCE功能。以数据加密方法为例,安全主控MCU遵照GA 467‐2013标准,通过业务终端接口向SAM_A发送“读机读文字信息和相片信息命令”(0x300x01)或“读机读文字信息、相片信息和指纹信息命令”(0x300x10),接收SAM_A业务终端接口返回的ID_Data,SCE使用系统公钥对ID_Data加密,输出ID_Data的密文En_ID_Data,或者使用SCE私钥对身份证机读信息签名生成ID_Data_DS。读卡和数据加密或签名过程既可以在安全主控MCU收到客户端读卡命令后启动,也可以由安全主控MCU预先自动完成寻卡、选卡和读卡,在收到客户端命令后直接返回En_ID_Data或ID_Data_DS给客户端。这种实施方案要求身份证阅读机具厂商使用安全主控MCU取代常规MCU做为主控芯片,需要重新做身份证阅读机具的软硬件设计,不同的身份证阅读机具厂商如不遵循统一的技术规范,客户端及后台系统的软件兼容有一定困难。

第三种方案是在SAM_A内部实现,使用SAM_A模块现有的安全软硬件实现SCE功能,或者在SAM_A模块内部增加安全芯片实现SCE功能。新增与数据加密或签名相关的业务命令,由SAM_A的业务终端接口输出身份证机读信息ID_Data的密文En_ID_Data或者ID_Data及其签名ID_Data_DS。同时,可以继续兼容当前SAM_A的业务终端接口命令输出ID_Data的功能。这种实现方案安全性和便利性好,最方便身份证阅读机具厂商使用,但需要修订GA 467‐2013标准或制订新的标准,涉及面多,难度大。

第一种方案和第二种方案尽管都能够有效防止客户端软件伪造ID_Data,但不能有效防止“非法”硬件假冒SAM_A提供伪造的ID_Data给“合法”的SCE生成“非法”的En_ID_Data或ID_Data_DS。为此,我们可以设计SCE具有锁定和解锁功能,网络后台系统一旦发现可疑客户端,可以在下发动态公钥密文中附加有关“锁定”、“解锁”和“正常”的标识类信息,SCE解密后根据相关信息执行锁定、解锁或正常操作。

对于数据加密方法,SCE需要使用后台系统公钥对ID_Data进行加密,得到En_ID_Data上传后台系统,由后台系统使用系统私钥对En_ID_Data进行解密获得ID_Data;对于数据签名的方法,SCE使用SCE私钥对ID_Data做签名,得到ID_Data_DS,将ID_Data与ID_Data一起上传后台系统,后台系统使用SCE公钥验证ID_Data_DS得到ID_Data。

无论使用数据加密方法还是数据签名方法,既可以在一定时间段内使用固定的密钥对,又可以在每次读取身份证机读信息ID_Data时临时生成密钥对,其中用于数据加密和解密的密钥对由后台系统产生,后台系统需要安全下发系统公钥给SCE;用于数据签名和验证的密钥对由SCE产生,SCE需要安全上传SCE公钥给后台系统。

为了保证接收方收到的公钥来自真实的发送方,可以在SCE中建立证书类应用文件(可以参照X.509标准证书),由后台系统发行或更新SCE应用文件,后台系统可以读取SCE应用文件,在验证其签名和有效性后获取其公钥。SCE上传公钥给后台系统,或者后台系统下发公钥给SCE,都可以使用对方的公钥对拟发送的公钥进行加密,由接收方使用自身私钥解密后,获取对方的公钥。

使用数据加密方法的好处是加密公钥来自后台系统,客户端不能假冒,缺点是客户端不能解密和解析En_ID_Data数据,可能需要后台系统解密后再下发ID_Data给客户端;使用数据签名方法的好处是由后台系统验证ID_Data_DS,客户端可以直接使用ID_Data,缺点是需要保证数字签名确实是SCE做的。

使用SCE对ID_Data进行加密或签名的两种方法各有利弊,如果侧重考虑后台系统的安全控制能力,建议优选使用数据加密的方法,次选使用数据签名的方法,当然SCE可以同时支持数据加密和数据签名两种数据安全方法,由网络后台系统根据需要选择其一使用。

我们建议在SCE中使用非对称算法,例如国密SM2非对称算法,当然也可以使用其他非对称算法,例如RSA或ECC算法;理论上也可以使用对称密钥算法,但为了密钥安全管理方便起见,且ID_Data本身数据长度不大,非对称加密效率足够,不建议使用对称密钥算法。

SCE和后台系统之间除了交互密钥相关的安全信息之外,后台系统可以下发随机或动态信息给SCE,由SCE与ID_Data信息组合之后再进行加密或签名,进一步保证En_ID_Data或ID_Data_DS具有不可复用的时效性。

SCE通过新增命令实现对ID_Data加密或签名的,原有的SAM_A业务终端接口命令可以继续使用,和现有的应用产品和应用系统兼容。

当前身份证阅读机具基于SAM_A仅能保证本地认证读卡数据安全的局限性,通过使用SCE开放网络系统数据安全控制手段给网络系统用户(例如移动通信公司),满足网络系统后台对不受控制的客户端进行认证读卡的数据安全控制;支持升级SAM_A标准集成SCE功能与一体,由公安部门先对SCE做初始化发行,由系统用户后对SCE做个性化发行;为了节省资源和提高效率,将来集成SCE功能的SAM_A模块,建议将业务功能都通过其业务终端接口实现,取消其无益于提高数据安全的射频模块接口。

以芯片、模块、COB电路板等多种形态存在的SCE,可以在各种身份证阅读机具中使用,既包括台式桌面设备,也包括手持设备、独立式设备及其其他通用或全用身份证阅读设备。

附图说明:

图1、SCE的几种实施方案

图2、用CCM3310S芯片实现的SCE示例方案框图

图3、身份证机读信息加密的应用流程举例

具体实施方式:

下面结合附图对于SCE的具体实施及其应用方法做详细说明。图1是SCE的几种实施方案的示意图,该图侧重考虑SCE的功能性及其与MCU和SAM_A的接口连接关系。在方案1a和方案1b,SCE都是一个独立的硬件安全单元,在方案2和方案3中,SCE是安全主控MCU片和SAM_A的一部分安全功能单元。

在图1的方案1a中,SCE可以使用多种接口方式和MCU通讯,例如SPI、I2C、UART等串行接口。SCE的这种接口方式决定其工作在被动方式,接收来自常规主控MCU的操作命令,应答命令执行结果,包括接收来自MCU的身份证机读信息ID_Data,由SCE加密或签名后返回给MCU。

在图1的方案1b中,SCE分别与MCU和SAM_A通讯接口连接。考虑SAM_A的一个业务终端接口是UART,为了和现有的身份证阅读机具有更好的软硬件兼容性,SCE可以使用其两个UART接口分别连接常规主控MCU以及SAM_A的UART接口。这样MCU可以向原来操作SAM_A一样操作SCE,而SCE可以直接将来自MCU的业务命令转发给SCE,同样把SAM_A发回的应答转回给MCU。对于SAM_A业务命令而言,增加SCE对于原有身份证阅读机具的软硬件功能感觉不出什么差别,包括可以继续按照本地认证的方式读取身份证机读信息。当然了,在MCU和SAM_A之间增加SCE的目的是支持MCU的新增业务命令,实现有关身份证机读信息加密或签名相关的功能。特别之处在于,SCE对于SAM_A的业务终端接口而言,是命令主动发送方,在SCE接收MCU加密读卡之类的新增命令后,SCE通过向SAM_A发送其原有的“读机读文字信息和相片信息命令”(0x300x01)或“读机读文字信息、相片信息和指纹信息命令”(0x300x10),启动SAM_A的读卡认证过程,读卡结束后接收SAM_A返回的身份证机读信息ID_Data,经过加密或签名后再返回给MCU。

图1的方案2是使用安全主控MCU实现身份证读卡功能的同时实现SCE的功能。近年来安全芯片的资源和功能越来越强大,很容易实现身份证阅读机具中多个接口通讯功能,例如使用SPI接口连接射频芯片,使用UART接口和准I2C接口(或并口)连接SAM_A,使用USB接口连接电脑客户端。同样很容易在安全主控MCU中实现SCE的安全加密功能,包括支持多种对称或非对称算法,以及与算法相关的文件存储和读写功能。这种方案的好处是能够节省单独配置SCE的硬件成本,并能在一定程度上提高通讯效率,

方案1和方案2能够可以有效防止客户端软件伪造ID_Data,但不能有效防止“非法”硬件假冒SAM_A提供伪造的ID_Data给“合法”的SCE生成“非法”的En_ID_Data或ID_Data_DS。为此,我们设计SCE具有锁定和解锁功能,网络后台系统一旦发现可疑客户端,可以在下发动态公钥密文中附加有关“锁定”、“解锁”和“正常”的标识类信息,SCE解密后根据相关信息执行锁定、解锁或正常操作。

图1的方案3将SCE的功能与SAM_A的功能集成为一体,无论在安全性和便利性方面都是最理想的实现方案。目前的SAM_A既有可以接客户端主机(电脑)的业务终端接口,又有射频模块接口,其理想本来是接上射频芯片就是一个完整的身份证阅读机具了。可惜由于射频芯片接口和通讯协议的多样性,以及缺乏必要的辅助控制功能,加上只能使用有限的业务命令操作射频芯片,使得实际应用中都另外使用MCU作为主控芯片,SAM_A沦落成单纯的安全模块的角色。其功能可以简单地概括为:(1)认证身份证卡的合法性(内部认证);(2)身份证认证SAM_A的合法性(外部认证),通过认证后打开身份证芯片文件的读取权限;(3)对于身份证芯片文件进行类似解密的运算,输出身份证机读信息ID_Data

当然,以上认证和解密过程是使用了基于身份证管理文件的分散因子分散得到的临时对称密钥,基于对称密钥算法完成的。然而,SAM_A使用对称密钥算法输出静态身份证机读信息ID_Data,显然已经远远不能满足网络系统的数据安全要求。然而,SAM_A功能和特性是在公安行业标准GA 467‐2013中规定的,其中涉及多方的技术和经济利益,修订和升级肯定有很大的困难。

在此,我们仍然畅想在不远的将来,升级后的SAM_A(可能重新命名)能够支持类似SCE的非对称加密或签名的功能,在硬件层面杜绝方案1和方案2可能在硬件线路上输入伪造ID_Data的可能性。此外,希望SAM_A升级后不必保留其华而不实且与安全无益的射频模块接口,把射频模块交给MCU处理,使用单一接口完成全部与安全相关的功能。

图2所示是用CCM3310S芯片实现的SCE示例方案框图,是对于图1方案1b的一个细化的实施例。其中CCM3310S芯片是天津国芯公司的一款具有国密资质的安全芯片,它支持包括SM2、RSA、ECC在内的非对称算法,也支持DES/3DES、AES、SM1、SSF33等对称算法,还支持SM3、MD5等摘要算法。它还有多种外部接口资源,包括SPI、I2C、UART、USB等常规接口。

图2中使用CCM3310S芯片的两个UART接口(其中一个是使用I2C接口内部切换的),分别连接MCU和SAM_A的UART接口。通过在一个电路板上背靠背焊接的排针和排母,使其可以很方便地嵌入在常规的身份证阅读机具中,在不改变身份证阅读机具硬件电路的基础上,只需增加少量MCU业务命令,即可实现对SAM_A输出的身份证机读信息ID_Data进行加密或签名。同时,还可以完全兼容原有的身份证阅读功能。

图3所示是身份证机读信息加密的应用流程举例,具体描述了身份证阅读机具(主要包括SAM_A、SCE和MCU)、客户端主机(例如电脑或智能手机)以及远端网络后台系统之间的一种典型的业务流程。接口方案参考采用图1方案1b,SCE在SAM_A和MCU之间。实际应用系统业务流程肯定会些许差异,但只要其对身份证机读信息加密的本质相同,就依然属于本发明的权利保护范围。

我们把整个应用流程分成4个过程,其中过程0是准备过程,用于客户端主机读取身份证阅读机具(SCE)中的证书文件,实际应用中不需要频繁读取证书,可以在客户端主机连接身份证阅读机具时读取,当然也可以存储在客户端主机中,更换身份证阅读机具时读取。

过程1是客户端主机在操作身份证阅读机具读卡前向网络后台系统发送安全读卡请求,不要求每次请求都上传SCE证书,一般在登录在线的情况,连续读卡可不用重复上传SCE证书,只需要上传简单安全读卡请求。这个过程请求网络后台系统下发系统公钥,为了保证下发的公钥不被随意使用,可以使用SCE证书中包含的SCE公钥对系统公钥加密后下发。

过程2是客户端主机将系统公钥密文下发给SCE,由SCE使用SCE私钥解密获取系统公钥明文,SCE启动SAM_A读卡,经过MCU操作射频模块完成全部读卡过程后,SAM_A输出ID_Data给SCE,SCE使用系统公钥加密ID_Data得到En_ID_Data发送给客户端主机。

过程3是客户端主机将En_ID_Data上传给网络系统后台,网络系统后台使用系统私钥解密En_ID_Data后获取ID_Data。根据需要可以下发身份证的简略信息(例如遮掩部分身份证号码)给客户端主机。

建议网络系统后台每次应客户端请求都临时生成系统密钥对,临时保留、使用后即可丢弃。网络系统后台也可以下发其他随机或其他动态信息,要求SCE将这些动态信息与ID_Data组合在一起加密后将密文上传给网络后台系统,后台系统解密后可以比对动态信息,使En_ID_Data具有更好的时效性。

除了使用系统公钥对ID_Data进行加密的应用方法,SCE也支持使用SCE私钥对ID_Data进行数据签名的应用方法。其应用流程与图3所示类似,在此不做赘述。使用SCE数据签名的好处是客户端主机可以在本地解析ID_Data,不需要网络后台系统解密后回传。缺点是需要通过二次公钥加密的方法,保证SCE上传的SCE公钥的确是SCE产生的,而不是客户端假冒的。否则客户端软件可能生成密钥对,假冒SCE公钥上传给网络后台系统,使用假冒私钥对假冒ID_Data做数字签名。

在实际的应用系统中,经过SCE与网络后台系统安全交互密钥相关信息,实现对ID_Data做加密或签名的应用过程和方法可以根据需要做必要的调整。例如,客户端主机可以通过MCU向SCE发送SAM_A标准的读取身份证机读信息的命令(例如0x300x01),SCE转发命令给SAM_A,接收SAM_A应答的身份证机读信息ID_Data给MCU,MCU上传给客户端用于本地解析和显示身份证信息;同时SCE将ID_Data做加密和(或)签名,生成En_ID_Data和(或)ID_Data_DS,客户端主机可以通过MCU向SCE下发读取身份证机读信息密文命令,读取En_ID_Data和(或)ID_Data_DS给客户端主机,再由客户端主机上传给网络后台系统。总而言之,只要对于身份证机读信息的加密或签名的过程和方法与本发明相比没有实质性改进,仍然属于本发明的权利范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1