CPU卡密钥管理系统介绍

2017-06-23 14:30:43 重庆诺塔斯智能科技有限公司

 密钥管理系统 (Key Management System),也简称KMS,是IC卡项目安全的核心。如何进行密钥的安全管理,贯穿着IC 卡应用的整个生命周期。

    我们首先了解下普通逻辑加密存储卡的密钥系统。逻辑加密存储卡是在非加密存储卡的基础上增加了加密逻辑电路,加密逻辑电路通过校验密码方式来保护卡内的数据对于外部访问是否开放,但只是低层次的安全保护,无法防范恶意性的攻击。以NXP的M1卡为例,2008 年 10 月,互联网上公布了破解其密码的方法,自此之后就开始有不法分子利用这种方法可以很低的经济成本对采用该芯片的各类“一卡通”、门禁卡进行非法充值或复制,带来很大的社会安全隐患。因此,在需要较高层次安全保护的应用系统中,不宜使用逻辑加密存储卡。

    逻辑加密存储卡的安全认证依赖于卡内密钥区的校验,从而实现数据区的读写安全控制。逻辑加密存储卡的个人化也比较简单,主要包括数据和密钥的更新,在期间所有敏感数据包括 密钥都是直接以明文的形式更新。因此只能解决卡片对终端的认证,而无法解决终端对卡片的认证,即我们俗称的“伪卡”的风险。

   逻辑加密存储卡的密钥就是一个预先设定的固定密码,无论用什么方法计算密钥,最后就一定要和原先写入的固定密码一致,就可以对被保护的数据进行读写操作。因此无论是一卡一密的系统还是统一密码的系统,经过破解就可以实现对非接触逻辑加密存储卡的解密。很多人认为只要是采用了一卡一密、实时在线系统或逻辑加密存储卡的ID 号就能避免密钥被解密,其实,逻辑加密存储卡被解密就意味着卡本身可以被复制。现在的技术使用FPGA 就可以完全复制。基于这个原理,逻辑加密存储卡做门禁也是不安全的。目前国内多数的门禁产品均是采用卡的原始ID 号去做门禁系统的白名单验证放行条件,根本没有去进行加密认证或开发专用的密钥,很多国内厂家也不太关注卡与机具间的加密认证和密钥体系的设计,因此这些问题的安全隐患涉及面就更大了。

下面介绍CPU卡的密钥管理系统

    CPU 卡的芯片和COS的安全技术为CPU 卡提供了双重的安全保证。自带操作系统的CPU 卡对计算机网络系统要求较低,可实现脱机操作;自带多种加密算法,可实现真正意义上的一卡多应用,每个应用之间相互独立,并受控于各自的密钥管理系统。存储容量大,可提供 1K-64K 字节的数据存储。 CPU卡系统中使用了独立的保密模块,使用相应的实体SAM 卡密钥实现加密、解密以及交易处理,从而完成与用户卡之间的安全认证。

    CPU 卡拥有独立的CPU处理器和芯片操作系统,所以可以更灵活的支持各种不同的应用需求,更安全的设计交易流程。但另一方面,与逻辑加密存储卡系统相比而言,CPU卡的系统显得更为复杂,需要进行更多的系统改造,比如密钥管理、交易流程、PSAM 卡以及卡片个人化等。密钥通常分为充值密钥 (ISAM 卡),减值密钥 (PSAM 卡),身份认证密钥(SAM 卡)

    CPU卡可以通过内外部认证的机制,例如像建设部定义的电子钱包的交易流程,高可靠的满足不同的业务流程对安全和密钥管理的需求。对电子钱包圈存可以使用圈存密钥,消费可以使用消费密钥,清算可以使用 TAC 密钥,更新数据可以使用卡片应用维护密钥,卡片个人化过程中可以使用卡片传输密钥、卡片主控密钥、应用主控密钥等,真正做到一钥一用。

    CPU卡加密算法和随机数发生器与安装在读写设备中的密钥认证卡(SAM 卡)相互发送认证的随机数,可以实现以下功能:

双界面CPU卡读写器

    (1) 通过终端设备上SAM 卡实现对卡的认证。

    (2) CPU卡与CPU卡读写器上的 SAM 卡的相互认证,实现对卡终端的认证。

    (3) 通过 ISAM 卡对CPU卡进行充值操作,实现安全的储值。

    (4) 通过PSAM 卡对CPU卡进行减值操作,实现安全的扣款。

    (5) 在终端设备与CPU卡中传输的数据是加密传输。

    (6) 通过对CPU卡发送给 SAM 卡的随机数 MAC1,SAM卡发送给CPU卡的随机数MAC2 和由CPU卡返回的随机数 TAC,可以实现数据传输验证的计算。而MAC1、MAC2 和 TAC就是同一张CPU卡每次传输的过程中都是不同的,因此无法使用空中接收的办法来破解非接触CPU 卡的密钥。

    CPU卡,可以使用密钥版本的机制,即对于不同批次的用户卡,使用不同版本的密钥在系统中并存使用,达到密钥到期自然淘汰过渡的目的,逐步更替系统中所使用的密钥,防止系统长期使用带来的安全风险。

    CPU卡,还可以使用密钥索引的机制,即对于发行的用户卡,同时支持多组索引的密钥,假如当前使用的密钥被泄漏或存在安全隐患的时候,系统可以紧急激活另一组索引的密钥,而不用回收和更换用户手上的卡片。

    CPU卡系统中,PSAM 卡通常用来计算和校验消费交易过程中出现的 MAC 码,同时在计算的过程中,交易时间、交易金额、交易类型等交易信息也都参与运算,使得交易更安全更可靠。某些情况下,CPU卡系统中的PSAM 卡还可以用来支持安全报文更新数据时 MAC  的计算,以及交易TAC 的验证。因此,与逻辑加密存储卡系统相比,CPU卡系统中的PSAM卡支持更广泛的功能,也更为灵活、安全和复杂。通常CPU卡系统的 PSAM 卡还支持不同的密钥版本。

    而CPU卡的个人化通常可以分为卡片洗卡和卡片个人化两个独立的流程,前者创建卡片文件结构,后者更新个人化数据,并注入相应的密钥。在信息更新和密钥注入的过程中,通常都采用安全报文的方式,保证数据和密钥更新的正确性和安全性。而且密钥注入的次序和相互保护的依存关系,也充分体现了密钥的安全设计,比如卡片主控密钥通常被用来保护导入应用主控密钥,应用主控密钥通常被用来保护导入其他应用密钥,比如消费密钥等。

   CPU 卡的密钥实现方式:

     (1) 硬密钥:即在终端机具中安装SAM 卡座,所有的认证都是由安装在SAM 卡座中的SAM 卡进行运算的,这样在终端机具维修时,只要取出SAM 卡座中的SAM 卡,这台终端机具就是空的了。所以所有的银行设备都采用 SAM 卡的认证模式。

     (2) 软密钥:终端机具中没有SAM 卡座,这个密钥的运算实际上是由终端机具完成的,这样客户的密钥就等于存在终端机具中,厂家拿回终端机具维修时,极易造成密钥流失。

    总结以上所述,逻辑加密存储卡采用的是固定密码,而 CPU卡采用的是动态密码,并且是一用一密即同一张CPU卡,每刷一次卡的认证密码都不相同,这种智能化的认证方式使得系统的安全性得到提高,特别是当交易双方在完成交易之后,收单方有可能擅自修改或伪造交易流水来达到获利目的,为了防止终端伪造交易流水,系统要求卡片能够产生由交易要素生成的交易验证码,在后台清算时来对交易的有效性进行验证。CPU 卡则可以在交易结束时产生个交易验证码 TAC,用来防止伪造交易。逻辑加密存储卡由于不具有运算能力,就不可能产生交易的验证码。所以,从安全性的角度来看,CPU卡是一种当前最安全的选择。