发明内容
本发明要解决的技术问题是提供一种可实现机卡安全认证的智能卡及终端,可用来实现与各类终端的相互安全认证,避免了在现有机卡认证专用卡上加入贴片等中间介质即能破解认证的缺陷。
为了解决上述问题,本发明提供了一种可实现机卡安全认证的智能卡,包括用于和终端交互的第一交互模块;还包括:认证密钥获取模块、算法封装模块、卡与终端交互认证模块、数据包处理模块和卡片锁定模块;
所述认证密钥获取模块用于在每次开机后对比终端通过所述第一交互模块发来的终端的标识与正式存储的终端的标识,当一致时,指示卡与终端交互认证模块进行机卡认证;不一致时,临时保存收到的终端的标识,生成发送给服务器的密钥更新请求报文的内容并发送给数据包处理模块封装,其中携带本智能卡的标识和所收到的终端的标识;以及当收到解密后的密钥更新报文的内容时获取其中的认证密钥,使用该认证密钥更新卡与终端交互认证模块中保存的认证密钥数据,并用临时存储的终端的标识更新卡内正式存储的终端的标识,更新成功后通过所述第一交互模块指示终端重启;
所述算法封装模块用于封装传输算法和认证算法;
所述卡与终端交互认证模块用于按卡与终端双方定义的交互流程及协议,使用保存的认证密钥并调用所述算法封装模块中的认证算法进行与终端之间的认证;当认证不通过时调用所述卡片锁定模块锁死本卡的相应功能;
所述数据包处理模块用于将封装后的密钥更新请求报文通过所述第一交互模块发送给所述终端;还用于当收到所述第一交互模块返回的服务器下发的密钥更新报文时,调用所述算法封装模块中的传输算法并使用所保存的传输密钥进行该报文的解密。
进一步地,所述算法封装模块中封装的所述传输算法和认证算法为相同或不同的算法;当传输算法和认证算法为不同算法时,所述算法封装模块包括用于封装传输算法的传输算法封装子模块,以及用于封装认证算法的认证算法封装子模块。
进一步地,所述认证密钥获取模块具体包括:
终端标识判断及存储子模块、密钥更新必要性判断处理子模块和密钥更新处理子模块;
所述终端标识判断及存储子模块用于获取终端通过所述第一交互模块发来的终端的标识,并将收到的终端的标识与正式存储的终端的标识比对,如一致,则指示卡与终端交互认证模块进行机卡认证;如不一致则保存收到的终端的标识,并指示所述密钥更新必要性判断处理子模块进行处理;
所述密钥更新必要性判断处理子模块用于判断智能卡当前是否未达到预定的上发密钥更新请求次数限制和鉴权临时许可次数限制,如已达到或超过上述任一个次数限制,则调用卡片锁定模块锁死本卡的相应功能;未达到或超过上述任一个次数限制则指示密钥更新处理子模块处理;
所述密钥更新处理子模块用于获取本卡的卡序列号和所收到的终端的标识,生成密钥更新请求报文的内容,并调用所述数据包处理模块封装为发送给服务器的密钥更新请求报文;以及当收到所述数据包处理模块解密后的密钥更新报文时,获取其中的认证密钥,使用该认证密钥进行卡与终端交互认证模块中认证密钥数据的更新,;更新成功则将密钥更新必要性判断处理子模块中的上发密钥更新请求次数加1,用临时存储的终端的标识更新卡内正式存储的终端的标识,并通过所述第一交互模块指示终端重启。
进一步地,所述认证密钥获取模块获取所述解密后的密钥更新报文中的认证密钥具体是指:
直接获取所述解密后的密钥更新报文中的明文认证密钥;
或是先获取所述解密后的密钥更新报文中的卡密文认证密钥,然后采用预存的卡密文密钥,调用所述算法封装模块中的卡密文算法解密所述卡密文认证密钥,得到明文认证密钥。
进一步地,所述认证密钥获取模块还用于获取所述解密后的密钥更新报文中的终端密文认证密钥,或是携带所述认证密钥的终端密文报文,并通过所述第一交互模块转发给终端。
进一步地,所述智能卡还包括:
认证请求处理模块;
所述卡与终端交互认证模块还用于记录与终端认证通过的次数,当该次数达到或超过预定的次数阈值时,指示所述认证请求处理模块处理;
所述认证请求处理模块用于判断当前未收到认证结果消息的次数是否达到或超过预定的未收到次数阀值,如达到或超过预定的未收到次数阀值,则调用所述卡片锁定模块160锁死卡片鉴权等功能,如未达到,则获取本卡的卡序列号和正式存储的终端的标识,生成发送给服务器的认证请求报文的内容,并调用数据包处理模块进行报文封装,同时将未收到认证结果消息的次数加1;当收到数据包处理模块解密后的认证结果报文时,将所述未收到认证结果消息的次数减1,并获取、判断其中的认证结果,如认证结果为不合法或所述未收到认证结果消息的次数超过预定次数,则调用所述卡片锁定模块锁死本卡的相应功能;如果为合法则智能卡继续正常工作,指示所述卡与终端交互认证模块130将卡与终端认证通过的次数清零,重新开始记录;
所述数据包处理模块还用于将封装后的认证请求报文通过所述第一交互模块发送给所述终端,以及当收到所述第一交互模块转发的服务器返回的认证结果报文时,调用所述算法封装模块中的传输算法并使用所保存的传输密钥进行该报文的解密。
为配合上述智能卡的使用,本发明还提供了一种可实现机卡安全认证的终端,包括用于实现终端和服务器交互的无线通信模块、用于和卡进行交互的第二交互模块;还包括安全认证模块;
所述安全认证模块包括:终端与卡交互认证子模块、终端锁定子模块、认证算法封装子模块和认证密钥发行与读取子模块;
所述第二交互模块用于将卡端发来的密钥更新请求报文通过所述无线通信模块发给服务器,以及通过所述无线通信模块接收服务器下发的密钥更新报文并转发给卡端;
所述认证算法封装子模块用于封装认证算法;
所述认证密钥发行与读取子模块用于保存认证密钥;
所述终端与卡交互认证子模块用于在每次开机后将终端的标识通过所述第二交互模块发给智能卡,其后按卡与终端双方定义的交互流将程及协议,通过第二交互模块与智能卡进行交互认证;认证中需要认证加密或解密时,调用认证密钥发行与读取子模块和认证算法封装子模块进行加密、解密;当认证不通过时调用所述终端锁定模块锁死本终端的相应功能。
进一步地,所述安全认证模块还包括:
用于封装终端密文算法的终端密文算法封装模块;
所述终端与卡交互认证子模块还用于通过第二交互模块从智能卡获取服务器下发的终端密文,调用终端密文算法封装模块中的终端密文算法,使用存储的终端密钥解密出明文认证密钥,并存储在所述认证密钥发行与读取子模块中。
进一步地,所述终端密文为对明文认证密钥加密得到的密文认证密钥,或是加密后的携带明文认证密钥的报文;
当终端密文为对明文认证密钥加密得到的密文认证密钥时,所述终端与卡交互认证子模块解密终端密文后直接得到明文认证密钥;
当终端密文为加密后的携带明文认证密钥的报文时,所述终端与卡交互认证子模块解密终端密文后得到携带明文认证密钥的报文,从该报文中获取明文认证密钥。
进一步地,所述安全认证模块放入终端的方式包括:
(1)集成在安全认证硬件模块中嵌入终端,通过串口、USB口、或7816接口与终端进行通讯;
(2)集成在表贴在终端的无线通信模块中的安全芯片里;
(3)集成在另一个安全认证智能卡中放入终端里未被要认证的智能卡占用的空闲卡槽中,通过7816接口与终端通讯;
(4)通过软件模块方式放在终端软件中。
本发明所提供的智能卡和终端能够采用新的认证流程、方法进行认证,卡片的认证密钥不预置,在使用时从第三方动态下载,终端与智能卡间的认证密钥和第三方与智能卡间的传输密钥可为两组不同的密钥,终端可统一进行终端认证密钥发行预置,智能卡可统一进行传输密钥发行预置,所有密钥均为只能使用,无法读出,终端使用安全模块封装算法,这样终端提供商接触不到机卡认证密钥,不知道机卡认证算法,卡商也不知道机卡认证密钥,可较好防止密钥泄露,解决了只要在机卡两端间加入中间介质即能破解的问题,能较好满足智能卡与终端间的安全认证要求,可很安全地支持终端的多渠道销售及机卡分开销售,安全性不需依靠营业厅人员的自觉性,为实现专用智能卡配合专用手机或无线公话等终端的低资费、差异化业务服务提供了技术支撑,有利于移动运营商推广各类型的需机卡绑定的差异化业务服务;如果采用一部终端一个(或一组)认证密钥、一个智能卡一个(或一组)传输密钥和一个(或一组)认证密钥的方式,不同的智能卡密钥都各不相同,不同的终端密钥也都各不相同,充分保证安全性,即使一张卡或终端被破解,也无法实现贴片的批量复制,极大提高了破解难度与成本。
本发明关于智能卡的一个优化方案中,智能卡与终端之间相互认证过程加解密和传输密钥过程加解密使用不同的加解密算法(当然使用相同加解密算法也可,但安全性相对低),可使用高安全性、高成熟度的AES(AdvancedEncryption Standard,高级加密标准)、国密办SCB2等对称安全算法或RSA非对称算法,由于AES算法可通过可选参数控制产生不同结果,因此破解难度很大;而RSA非对称算法采用公钥、私钥非对称加解密机制,破解难度也较大;认证算法可采用对称算法也可采用非对称算法,传输算法可采用对称算法也可采用非对称算法,在实际应用中,可根据安全需求,灵活选择组合,因此能较好满足智能卡与终端间进行安全认证的需求,有利于运营商推广各类差异化的业务服务。本发明关于智能卡的另一优化方案中,智能卡具有智能自锁定功能,当智能卡达到密钥更新请求次数限制或鉴权临时许可次数限制时,为防止通过非法更换终端序列号来多次非法使用,智能卡自行锁定,出现该情况智能卡将无法继续使用,除非到营业厅等处解锁,这样方便定位非法使用的问题卡片;另外,智能卡也支持根据密钥管理服务器下发数据进行智能卡锁死功能,以使智能卡被非法破解后无法使用。本发明关于智能卡的又一个优化方案为对智能卡与终端认证通过次数计数,在认证交互通过次数达到或超过预定的次数时,智能卡需要请求作为第三方的密钥管理服务器的认证确认,可通过服务器使被破解的卡片无法继续使用,能够进一步提高安全性。另外,还可以选择性地对发给智能卡的报文中的认证密钥本身再进行加密,进一步提高认证的安全性。
本发明关于终端的一个优化方案中公开了几种在终端中安装安全认证模块的方式,可以进一步通过安装方式提高认证的安全性。本发明关于终端的另一个优化方案中选择不将认证密钥预存在终端里,而是由服务器生成认证加密后下发,这样终端里只保存解密用的密钥和算法,认证密钥则动态获得,这样可以不必事先进行终端认证密钥的预置发行,增强方案实际应用时的可操作性。其中生成的认证密钥根据终端与卡进行机卡认证采用的算法是对称算法或非对称算法,采用对应的对称算法密钥或非对称算法的公私密钥对。
具体实施方式
下面将结合附图及实施例对本发明的技术方案进行更详细的说明。
本发明既适用于2G网络的SIM、UIM(User Identity Model,用户识别模块)卡与3G网络的USIM(Universal Subscriber Identity Module,通用用户识别模块)、EVDO UIM卡,也适用于其他支持短信、GPRS(General PacketRadio Service,通用分组无线服务技术)或HSDPA(High Speed DownlinkPacket Access,高速下行分组接入技术)等高速数据传输的安全芯片或芯片封装模块。
实施例一,一种可实现机卡安全认证的专用智能卡,如图1所示,除包括支持2G或3G鉴权、短信或GPRS BIP等基础智能卡COS及功能模块(这些未画在图1中)外,有用于与终端交互的第一交互模块110;为支持机卡安全认证,增加了认证密钥获取模块120、卡与终端交互认证模块130、算法封装模块140、数据包处理模块150、卡片锁定模块160等新功能模块。
所述第一交互模块110是卡中其它模块与终端进行数据交互的主要通道,可采用短信交互方式或GPRS BIP等方式通过终端与服务器交互数据,还用于通过STK或其它卡与终端约定的指令实现卡中其它模块与终端的交互;卡与终端进行交互认证时也可以调用所述第一交互模块110的相关指令。本实施例中,所述第一交互模块110可以但不限于为一STK指令解析处理模块。
所述认证密钥获取模块120用于在每次开机后对比终端通过所述第一交互模块110发来的终端的标识与正式存储的终端的标识,当一致时,指示卡与终端交互认证模块130进行机卡认证;不一致时,临时存储收到的终端的标识但不更新正式存储的终端的标识,生成发送给服务器的密钥更新请求报文的内容并发送给数据包处理模块150封装,其中携带本智能卡的标识和所收到的终端的标识;当收到数据包处理模块150解密后的密钥更新报文的内容,获取其中的认证密钥,使用该认证密钥更新卡与终端交互认证模块130中保存的认证密钥数据,并用临时存储的终端的标识更新卡内正式存储的终端的标识,更新成功后通过所述第一交互模块110指示终端重启;该认证密钥可以为一个或一组对称算法密钥,也可以为一对非对称算法的公私钥,可以卡片存私钥终端存公钥,也可以卡片存公钥终端存私钥。
所述算法封装模块140用于封装传输算法和认证算法;为保证算法安全性,将算法进行封装。
本实施例中,所述传输算法和认证算法可以为相同的算法或不同的算法,为不同算法时安全性较高;当传输算法和认证算法为不同算法时,所述算法封装模块140可具体包括传输算法封装子模块141和认证算法封装子模块142。
所述传输算法封装子模块141用于封装传输算法;供所述数据包处理模块150加密、解密时使用。
所述认证算法封装子模块142用于封装认证算法;供所述卡与终端交互认证模块130对机卡认证数据进行加密、解密时使用。
所述卡与终端交互认证模块130用于按卡与终端双方定义的交互流程及协议,使用保存的认证密钥并调用所述算法封装模块140中的认证算法进行与终端之间的认证;如认证不通过,调用所述卡片锁定模块160使卡片不能进行正常的登网鉴权和/或不允许使用约定的相应功能;如认证通过,则无需调用所述卡片锁定模块160,卡片可进行正常的登网鉴权使用和/或允许使用约定的相应功能。实际应用时,所述认证密钥也可以保存在卡内其他模块中,由所述卡与终端交互认证模块130在使用时进行读取。
所述卡片锁定模块160可根据其他业务模块调用时传来的参数进行相应的卡片鉴权功能、卡片业务功能方面的锁定,使智能卡无法使用相应功能;用户需要到营业厅等处解锁才能恢复智能卡的正常使用。
所述数据包处理模块150用于进行上行数据包报文封装(卡发给服务器)和下行数据包解封装(服务器发给卡),组包和解包时按卡与服务器定义的传输协议进行处理,判断下行数据包的命令类型并传给对应的业务处理模块处理;将封装后的密钥更新请求报文通过所述第一交互模块110发送给所述终端并通过所述终端发给服务器,以及当收到所述第一交互模块110转发的服务器返回的密钥更新报文时,调用所述算法封装模块140中的传输算法并使用所保存的传输密钥进行该报文的解密,还可以选择性地调用所述算法封装模块140中的传输算法,并使用所保存的传输密钥进行密钥更新请求报文加密;另外还可以进一步选择进行报文计数器处理和MAC数据校验。实际应用时,所述传输密钥也可以保存在卡内其他模块中,由所述数据包处理模块150在使用时进行读取。
这里的服务器指的是智能卡和终端以外的第三方,实际应用时可以合成在已有的服务器中,也可以单独建立一个服务器。
本实施例中,所述智能卡的标识可以是智能卡序列号,也可以是其它能够唯一确定一个智能卡的信息;所述终端的标识可以是终端序列号,也可以是其它能够唯一确定一个终端的信息。
本实施例中,所述认证密钥获取模块120还可以用于:根据更新卡与终端交互认证模块130中保存的认证密钥数据的结果,按卡与服务器的协议生成密钥更新结果报文的内容,并调用所述数据包处理模块150封装成密钥更新结果报文,通过所述第一交互模块110经由终端传给服务器。
本实施例的一种实施方式中,所述认证密钥获取模块120具体可以包括:
终端标识判断及存储子模块121、密钥更新必要性判断处理子模块122和密钥更新处理子模块123;
所述终端标识判断及存储子模块121用于在每次开机后获取、分析处理所述第一交互模块110发来的终端的标识,并将收到的终端的标识与正式存储的终端的标识比对,如一致,则指示卡与终端交互认证模块130进行机卡认证;如不一致(包括原先卡内未正式存储终端的标识的情况),则临时存储收到的终端的标识(不更新原先正式存储的终端的标识),并指示密钥更新必要性判断处理子模块122进行处理;实际应用时,所述终端的标识也可以保存在卡内其他模块中,由所述终端标识判断及存储子模块121在使用时进行读取。
所述密钥更新必要性判断处理子模块122用于判断智能卡当前是否未达到预定的上发密钥更新请求次数限制和鉴权临时许可次数限制,如已达到或超过上述任一个次数限制,则调用卡片锁定模块160锁死卡片鉴权等功能;如未达到或超过上述任一个次数限制,则指示密钥更新处理子模块123进行处理;实际应用时,所述上发密钥更新请求次数、鉴权临时许可次数、上发密钥更新请求次数限制和鉴权临时许可次数限制中的一个或几个可以保存在所述密钥更新必要性判断处理子模块122中,也可以保存在卡内该子模块之外的其他模块中,由所述密钥更新必要性判断处理子模块122在使用时进行读取。
所述密钥更新处理子模块123用于获取本卡的卡序列号和所收到的终端的标识等相关参数,按卡与服务器协议生成密钥更新请求报文的内容,并调用所述数据包处理模块150封装为发送给服务器的密钥更新请求报文,通过所述第一交互模块110经由终端传给服务器。当收到所述数据包处理模块150解密后的密钥更新报文时,按与服务器之间的协议获取其中的认证密钥,使用该认证密钥进行卡与终端交互认证模块130中认证密钥数据的更新;更新成功则将密钥更新必要性判断处理子模块122中的上发密钥更新请求次数加1,用临时存储的终端的标识更新所述终端标识判断及存储子模块121中原先正式存储的终端的标识,并通过所述第一交互模块110指示终端重启;如更新不成功,则不用临时存储的终端的标识更新卡内正式存储的终端的标识,并可以根据需要选择终止流程或向服务器返回失败信息。在指示终端重启前还可以进一步按卡与服务器的协议生成密钥更新结果报文的内容,并调用所述数据包处理模块150封装成密钥更新结果报文,通过所述第一交互模块110经由终端传给服务器。
本实施例的一种实施方式中,所述认证密钥获取模块120中的密钥更新处理子模块123获取所述解密后的密钥更新报文中的认证密钥具体可以是指:
直接获取所述解密后的密钥更新报文中的明文认证密钥;
先获取所述解密后的密钥更新报文中的卡密文认证密钥,然后采用预存的卡密钥,调用所述算法封装模块140中的卡密文算法解密所述卡密文认证密钥,得到明文认证密钥。
此时,所述算法封装模块140还可以包括一卡密文算法封装子模块143;当然该卡密文算法和认证算法或传输算法可以相同,相同时则可以不用独立封装。
所述卡密钥可以为一个或一组对称算法密钥,也可以为一对非对称算法公私钥中的私钥,公钥则放在服务器中,供服务器对认证密钥进行加密得到所述卡密文认证密钥时用。
本实施例的一种实施方式中,所述认证密钥获取模块120中的密钥更新处理子模块123还进一步获取所述解密后的密钥更新报文中的终端密文认证密钥,或是携带所述认证密钥的终端密文报文,并通过所述第一交互模块110转发给终端。
如果本实施方式中还采用对上发密钥更新请求次数进行限制的方案,则所述认证密钥获取模块当更新所述卡与终端交互认证模块中的认证密钥数据成功,并且接收到终端返回的更新认证密钥成功的消息后,将上发密钥更新请求次数加1;另外该情况下,在接受到所述终端返回的更新认证密钥成功的消息后,卡才能跟终端开始进行交互认证。
本实施例的一种实施方式中,所述智能卡还可以进一步包括认证请求处理模块170;
该实施方式中,所述卡与终端交互认证模块130还用于记录卡与终端认证通过的次数,当该次数达到或超过预定的次数阈值时,指示所述认证请求处理模块170处理。
所述认证请求处理模块170用于判断当前未收到认证结果消息的次数是否达到或超过预定的未收到次数阀值,如达到或超过预定的未收到次数阀值,则调用所述卡片锁定模块160锁死卡片鉴权等功能,如未达到,则获取本卡的卡序列号和正式存储的终端的标识等相关参数,并按卡与服务器协议生成认证请求报文的内容,并调用数据包处理模块150进行封装为发送给服务器的认证请求报文,通过第一交互模块110经由终端传给服务器,同时将未收到认证结果消息的次数加1。当收到数据包处理模块150解密后的认证结果报文时,将所述未收到认证结果消息的次数减1,并按协议获取、判断其中的认证结果,如认证结果为合法,则不调用所述卡片锁定模块160,智能卡继续正常工作,指示所述卡与终端交互认证模块130将卡与终端认证通过的次数清零,重新开始记录。如认证结果为不合法,则调用所述卡片锁定模块160锁死卡片鉴权等功能(此时卡与终端认证通过的次数不清零)。
该实施方式中,所述数据包处理模块150还用于将封装后的认证请求报文通过所述第一交互模块110发送给所述终端,以及当收到所述第一交互模块110转发的服务器返回的认证结果报文时,调用所述算法封装模块140中的传输算法并使用所保存的传输密钥进行该报文的解密。
下面用一个具体的例子来描述本实施例中的智能卡和终端认证的过程,本例中所述第一交互模块为STK指令解析处理模块;算法封装模块包括传输算法封装子模块和认证算法封装子模块;终端的标识为终端序列号。
如图2所示,所述认证过程包括:
步骤S210,开机,智能卡上电复位后,终端通过APDU(应用协议数据单元)命令发送Terminal Profile指令给智能卡,智能卡通过STK指令解析处理模块获取终端发来的指令,并调用终端标识判断及存储子模块121通过GetInput指令向终端传送信息表明需获取终端序列号,终端通过TerminalResponse指令将终端序列号返回给智能卡中的STK指令解析处理模块,由STK指令解析处理模块转发给终端标识判断及存储子模块121。
步骤S220,终端标识判断及存储子模块121解析处理终端将收到的终端序列号与正式存储的终端序列号进行对比,如一致,则进行步骤S230;如不一致,则进行步骤S240。
步骤S230,终端标识判断及存储子模块121指示卡与终端交互认证模块130进行机卡认证,卡与终端交互认证模块130按卡与终端双方定义的交互流程及协议,使用卡与终端间的认证密钥并调用认证算法封装子模块141进行相互认证,如认证通过,卡片可进行正常的登网鉴权使用和/或允许使用约定的相应功能,流程结束;如认证不通过,调用卡片锁定模块160使卡片不能进行正常的登网鉴权和/或不允许使用约定的相应功能,流程结束。
步骤240,临时存储收到的终端序列号但不更新卡内正式存储的终端序列号,并将收到的终端序列号交给密钥更新必要性判断处理子模块122进行处理;密钥更新必要性判断处理子模块122判断本智能卡当前是否未达到预定的上发密钥更新请求次数限制和鉴权临时许可次数限制,如已达到或超过上述任一个次数限制,则调用卡片锁定模块160锁死卡片鉴权等功能,流程结束。如未达到上述任一个次数限制,则将收到的终端序列号交给密钥更新处理子模块123处理,进行步骤250。
步骤250,密钥更新处理子模块123读取本智能卡的卡序列号和收到的终端序列号等相关参数,并调用数据包处理模块150进行报文封装,组成密钥更新请求报文,通过STK指令解析处理模块传给终端上发服务器,并将密钥更新必要性判断处理子模块122中记录的鉴权临时许可次数加1。
步骤S260,STK指令解析处理模块收到由终端转发的服务器下发的密钥更新报文后,由数据包处理模块150解密后交给密钥更新处理子模块123按协议获取其中的明文认证密钥或对密文认证密钥用卡片密钥和对应算法解密后得到明文认证密钥,使用该明文认证密钥进行卡与终端交互认证模块130中认证密钥数据的更新。
步骤S270,更新成功则密钥更新处理子模块123将密钥更新必要性判断处理模块中的上发密钥更新请求次数加1,用临时存储的终端序列号更新终端标识判断及存储子模块121正式存储的终端序列号,并按卡与服务器协议返回密钥更新结果报文内容,调用数据包处理模块150进行报文封装,组成密钥更新结果报文,通过STK指令解析处理模块经由终端传给服务器。其后,通知用户重启终端或自动重启终端。重启后又会从步骤S210开始执行,此时步骤S220中所收到的终端序列号和保存的将是一致的,因此会进行步骤S230的认证。如更新不成功,则不用临时存储的终端序列号更新卡内正式存储的终端序列号,并根据需要选择终止流程或向服务器返回失败信息。
实施例二,一种可实现机卡安全认证的终端,如图3所示,除了包括常用的无线通信模块310、用于和卡进行交互的第二交互模块320(比如STK功能处理模块)外,还新增了与机卡认证相关的安全认证模块330。
所述安全认证模块330包括:终端与卡交互认证子模块331、终端锁定子模块332、认证算法封装子模块333和认证密钥发行与读取子模块334。
所述无线通信模块310用于实现终端通过短信、GPRS等无线通信方式与服务器交互数据。
所述第二交互模块320是终端支持与卡片进行STK命令交互功能的处理模块,该模块支持卡通过卡与终端间的交互指令(比如STK指令)实现与终端的交互,用于将卡端发来的密钥更新请求报文通过所述无线通信模块发给服务器,以及通过所述无线通信模块接收服务器下发的密钥更新报文并转发给卡端;在有的实施方式中,还可以用于将卡端发给服务器的其它报文通过所述无线通信模块发给服务器,比如密钥更新结果报文、认证请求报文,相应地也用于将服务器下发给卡端的其它报文转发给卡端,比如认证结果报文。
所述终端锁定子模块332用于对本终端的相应功能进行锁定,使终端无法正常使用。
所述认证算法封装子模块333用于封装认证算法;为保证算法安全性,将认证算法进行封装,以用于终端与卡交互认证子模块331对机卡认证数据进行加密、解密时使用。
所述认证密钥发行与读取子模块334用于保存认证密钥,可以实现认证密钥的初始预置发行或实现使用服务器发来的认证密钥进行更新存储,供终端与卡交互认证子模块331调用进行认证密钥读取。
所述终端与卡交互认证子模块331用于在每次开机后将终端的标识通过所述第二交互模块320发给智能卡,其后按卡与终端双方定义的交互流将程及协议,通过第二交互模块320与智能卡进行交互认证。认证中需要认证加密或解密时,调用认证密钥发行与读取子模块334和认证算法封装子模块333进行加密、解密;如认证不通过,调用所述终端锁定模块332使终端不能进行预定的相应功能;如认证通过,则无需调用所述终端锁定模块332,终端可进行正常使用。
在本实施例的一种实施方式中,所述安全认证模块330还可以进一步包括终端密文算法封装模块335和对应的终端密钥,用于封装终端密文算法;为保证算法安全性,将终端密文算法进行封装,供终端与卡交互认证子模块331调用以解密服务器下发的加密的认证密钥,或是加密后的携带认证密钥的报文。
该模块为可选模块,对于预置认证密钥不需从服务器获取认证密钥的终端,不需要该模块;另外,如果终端密文算法与所述认证算法相同,则也可以没有该模块,需要使用时可直接调用认证算法。
该实施方式中,所述终端与卡交互认证子模块331还用于通过第二交互模块320与智能卡交互获取服务器下发的终端密文(可以是对明文认证密钥加密后的密文认证密钥,也可以是加密后的携带明文认证密钥的报文),调用终端密文算法封装模块335中的终端密文算法,并使用存储的终端密钥解密出明文认证密钥并存储在所述认证密钥发行与读取子模块334中(如果原先有之前获得的认证密钥则更新)。存储完成后所述终端与卡交互认证子模块331还可以通过第二交互模块320发送更新认证密钥成功的消息给卡端。
实际应用时,所述终端密钥可以保存在任一模块中。
所述终端密钥可以为一个或一组对称算法密钥,也可以为一对非对称算法公私钥中的私钥,公钥则放在服务器中,供服务器对认证密钥或携带明文认证密钥的报文进行加密得到所述终端密文时用。
当终端密文为明文认证密钥加密后的密文认证密钥时,所述终端与卡交互认证子模块331调用终端密文算法封装模块335和对应的终端密钥解密终端密文后直接得到明文认证密钥;如果终端密文为加密后的携带明文认证密钥的报文,则所述终端与卡交互认证子模块331调用终端密文算法封装模块335和对应的终端密钥解密终端密文后得到的是携带明文认证密钥的报文,还需要按照与服务器之间约定的协议从报文中获取明文认证密钥。
本实施例中,所述安全认证模块330放入终端的方式包括但不限于以下几种:
(1)集成在安全认证硬件模块中嵌入终端,通过串口、USB口、或7816等接口与终端进行通讯;
(2)集成在安全芯片中,在生产时将安全芯片表贴在终端的无线通信模块(如GSM模块)中;
(3)集成在一个安全认证智能卡中放入终端里未被要认证的智能卡占用的空闲卡槽中,通过7816接口与终端通讯,但这一安全认证智能卡是用于实现终端的认证功能,与同终端进行交互认证的专用智能卡不同,因此该方式终端需要提供双卡槽。
(4)通过软件模块方式放在终端软件中。
下面用一个具体例子来描述终端与卡交互认证的过程,该例子中,终端未预置认证密钥,所述第二交互模块为STK功能模块,终端的标识为终端序列号。
所述认证过程如图4所示,具体步骤为:
步骤S410、开机后,STK功能处理模块通过APDU(应用协议数据单元)命令发送Terminal Profile指令给智能卡,当接收到智能卡发来的表明需获取终端序列号的GetInput指令后,终端与卡交互认证子模块331将终端序列号通过Terminal Response指令经由STK功能处理模块发送给智能卡。
步骤S420、STK功能处理模块将智能卡发来的密钥更新请求报文通过无线通信模块310发送给服务器;其后通过无线通信模块310接收服务器返回的密钥更新报文并转发给卡端。
步骤S430、智能卡从服务器获取终端密文(加密后的认证密钥或是加密后的携带明文认证密钥的报文)并传给终端;终端与卡交互认证子模块331通过STK功能处理模块获取智能卡传来的终端密文,使用终端密钥,调用终端密文算法封装子模块335中的终端密文算法解密获得明文的认证密钥,将该认证密钥存储在所述认证密钥发行与读取子模块334中。终端与卡交互认证子模块331通过STK功能处理模块发送更新认证密钥成功的消息给卡端。
步骤S440、终端与卡交互认证子模块331通过STK功能处理模块与智能卡进行交互认证。认证中需要认证加密或解密时,终端与卡交互认证子模块331使用认证密钥发行与读取子模块中保存的认证密钥,调用认证算法封装子模块333中的认证算法进行加密、解密。
步骤S450、如机卡认证通过,则允许终端各项功能正常使用。如机卡认证不通过,则终端与卡交互认证子模块331调用终端锁定子模块332锁死本终端的相关功能。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明的权利要求的保护范围。