智能卡表的安全性分析
随着“一户一表”工程的实施,利用IC卡作为传输介质,采用预付费的收费方式对公用事业仪表进行抄表收费管理的模式得到了迅速的发展,并且逐渐从物业小区管理方式发展到行业或城市管理方式。由于用户的结算信息和公用仪表的计量信息都是通过用户手中的IC卡进行传输的,用户的分布又是一个十分复杂、分散的群体,因此如何保证用户卡中传递信息的安全性已经变成一个十分重要的问题。这个问题解决的好坏,将直接影响IC卡表以及预付费管理系统的推广使用。
一、智能卡表的安全性内容
在智能卡表和预付费管理系统之间,信息的传递是通过IC卡作为传输介质进行的,安全性的主要内容是如何保证IC卡中信息的安全性,与此相关,还要保证不能用非法的手段获得或者修改智能卡表中的数据信息。
对IC卡和智能卡表中的信息安全性保护主要体现在对数据信息进行非法攻击的防护上,常用的攻击行为有以下几种:
1、截取信道中的信息:通过非法设备以及相关技术手段读取IC卡中存储的数据信息以及在IC卡与智能卡表进行操作时截取数据交换信息。见下图所示:
左图所示为非法设备直接从IC卡读取数据信息,右图所示为非法设备在IC卡与合法设备在进行数据交换时对数据信息进行截获。这两种攻击方式是不可控制的,并且也是最常用的攻击方式。
2、破译IC卡中的信息:攻击者在采用上述两种方式截获数据信息后,根据IC卡中数据信息的变化情况以及数据交换过程中数据流的变化,对数据进行分析,从而确认IC卡中所有数据的含义以及数据流的变化规则,完成对IC卡以及智能卡表中数据信息的破译,进而达到非法改变数据信息的目的。
3、复现IC卡中的数据信息:攻击者在截获数据信息后,并不对数据进行分析破译,而是记录在特定操作中数据流的变化情况,在需要时,将记录的数据流直接复制发送到IC卡或智能卡表,从而达到非法改变数据信息的目的。这种情况经常发生在当IC卡与智能卡表之间进行数据交换采用加密处理的时候。
在上述所描述的攻击方法中,第一种方式是手段,由于IC卡和智能卡表全部由用户掌握和使用,管理方无法做到实现实时跟踪,因此在现实中是无法阻止攻击者进行这种尝试的。第二、三种方式是数据分析处理,是攻击的目的所在。如果对IC卡与智能卡表之间的数据进行安全保护处理或者采用较为简单的安全保护,攻击是非常容易达到效果的。为此在设计智能卡表及其相关管理系统时,必须对数据的安全性给予高度的重视,从某种角度来说,一个智能卡表及系统设计是否成功,关键在于其对数据安全性的处理。
二、智能卡表及系统数据存储的安全性分析
由于在智能卡表及系统中,IC卡是数据存储和传递的载体,因此IC卡的数据存储安全性是需要着重予以考虑的。
在智能卡表及系统中所使用的都是集成电路卡(IC卡),(从数据容量和安全性的角度以及读写设备的成本考虑,没有使用磁条卡作为信息载体的,因此磁卡表的名称是不准确的。)集成电路卡的核心是采用集成电路芯片来进行数据的存储。目前广泛使用的IC卡使用的是电可擦除数据存储芯片(EEPROM),这种芯片读写速度快,掉电后数据可以长期保存,并且数据可以反复进行擦写。应该说,正是由于EEPROM芯片的出现才带来了IC卡技术的广泛应用。
IC卡根据对EEPROM读写处理方式的不同,可以分为存储卡、逻辑加密卡以及智能卡(CPU卡)三大类,它们具有不同的数据保护安全级别。
1、存储卡:存储卡是直接将EEPROM芯片封装在卡片上,外部设备可以直接访问到EEPROM中的任何一个单元,如下图所示:
由于存储卡中只有EEPROM一个芯片,因此IC卡的对外接口实际上就是EEPROM的对外接口,这样外部读写设备就可以十分方便地对EEPROM进行数据读写操作,作为IC卡而言,无法对合法或非法的读写设备进行判断和识别,非常容易进行攻击。存储卡只是用来对数据进行存储,而无法对数据进行安全性保护,因此存储卡不具备数据安全性保护措施,数据安全级别很低。
2、逻辑加密卡:逻辑加密卡是在将EEPROM芯片封装在卡片上的同时,将一组硬件逻辑电路也封装在卡片上,外部读写设备必须通过硬件逻辑电路的判断后才能访问到EEPROM中的任何一个单元,如下图所示:
由于在IC卡中存在一组硬件逻辑加密电路,EEPROM芯片的接口并不直接对外,在初始状态IC卡芯片中的数据开关处于断开状态。外部读写设备在访问IC卡芯片中的EEPROM单元之前,必须首先发一组数据给硬件逻辑电路,硬件逻辑电路在判断数据的合法性后(即密码校验),才决定是否将IC卡内的开关闭合。只有密码校验正确后,硬件逻辑电路才能将开关闭合,这时外部读写设备才能对EEPROM中的数据进行读写操作,这样逻辑加密卡就可以对外部合法和非法的读写设备进行识别判断。通过这种方式,逻辑加密卡对内部EEPROM中的数据进行了安全性保护,因此逻辑加密卡具备数据安全性保护措施。
但逻辑加密卡的安全性级别并不是很高,有两种攻击方式可以对其进行攻击测试,一种是当合法读写设备在发送数据进行密码校验时,非法设备可以跟踪到校验密码,这样今后非法设备通过重放也可以通过密码校验,从而对逻辑加密卡进行数据攻击;另一种方法是非法设备在跟踪到合法设备已经通过逻辑加密卡的密码校验,IC卡内部开关闭合后,再通过数据线对逻辑加密卡中EEPROM的数据进行攻击破坏。因此逻辑加密卡虽然具备一定的数据安全性保护,但它的安全级别依然较低,具备一定的手段仍然是可以攻破的。
造成这种情况出现的原因是因为逻辑加密卡中的安全性是依赖一组硬件逻辑电路,这种电路只有判断能力,但不具备分析处理能力,因此不能及时发现和处理变化的环境。
3、智能卡(CPU卡):智能卡是在将EEPROM芯片封装在卡片上的同时,将微处理器芯片(CPU)也封装在卡片上,外部读写设备只能通过CPU与IC卡内的EEPROM进行数据交换,在任何情况下都不能再访问到EEPROM中的任何一个单元,如下图所示:
由于在智能卡中封装了微处理器芯片(CPU),这样EEPROM的数据接口在任何情况下都不会与IC卡的对外数据线相连接。外部读写设备在与智能卡进行数据交换时,首先必须发指令给CPU,由CPU根据其内部ROM中存储的卡片操作系统(COS)对指令进行解释,并进行分析判断,在确认读写设备的合法性后,允许外部读写设备与智能卡建立连接。之后的数据操作仍然要由外部读写设备发出相应的指令,并且CPU对指令进行正确解释后,允许外部读写设备和智能卡中的数据存储区(RAM)进行数据交换,数据交换成功后,在CPU的控制下,利用智能卡中的内部数据总线,再将内部RAM中的数据与EEPROM中的数据进行交换。可以看到,在数据处理过程中,外部读写设备只是和CPU打交道,同时数据交换也只能和数据缓存区RAM进行,根本无法实现对智能卡中EEPROM数据的直接访问。这样就实现了对智能卡EEPROM中数据的安全保护,因此智能卡也具备数据安全性保护措施。
与逻辑加密卡相比,由于智能卡内部具有CPU芯片,在具有数据判断能力的同时,也具备了数据分析处理能力,因此智能卡可以随时区别合法和非法读写设备,并且由于有了CPU芯片,具备数据运算能力,还可以对数据进行加密解密处理,因此具备非常高的安全性,其安全级别很高。
从对攻击方式的分析可以看到,保证IC卡内数据的安全性是最基本的要求,如果非法设备可以容易地与IC卡进行数据信息交换,进而进行分析处理,智能卡表及系统就不再具备任何安全性。因此提高IC卡的安全性是设计好的智能卡表及系统的关键。
根据上面的分析,如果智能卡表及系统对数据的安全性非常重视,应该选用安全级别高的IC卡,从发展趋势看,应尽量选用智能卡作为智能卡表信息传递的介质。
在设计实际的智能卡表系统时,安全性的指标也是相对而言的。如果设计的是单机版的物业小区管理系统,对安全性的要求不高,为简化设计和降低成本,可以选用逻辑加密卡或存储卡;但如果是行业管理部门或在大中城市推广智能卡管理系统,数据的安全性将是一个非常重要的指标,这时应该首先选择智能卡做为管理系统的数据信息载体。
三、智能卡表及系统数据交换的安全性分析
根据上面的分析,在智能卡表及系统中选择使用智能卡可以有效保证数据存储的安全性,但即使这样也只是阻止了非法读写设备直接对IC卡中数据的操作,并不能保证在IC卡与智能卡表或合法读写器之间进行数据交换时不被非法设备跟踪破译,要解决这种类型的非法攻击,还需要采用安全认证以及对数据在传输时进行线路保护处理。
1、安全认证:安全认证用来在读写设备(包括智能卡表)与IC卡进行数据交换之前,首先进行必要的安全认证,用来确认双方身份的合法性。只有双方身份确认后,才能建立相互之间联系的通道进行必要的数据交换。如果双方不能确认身份的合法性,则不能建立进行数据交换的通道。
安全认证有两种方式可以实现,一是通过密码进行安全认证;一是通过密钥进行安全认证。
密码认证的过程如下所示:
①读写设备发送密码到IC卡
——————————→
②IC卡进行密码比较
③IC卡将比较结果返回读写设备
←————————————
IC卡在进行密码比较时,如果读写设备发来的密码与IC卡中存储的密码相同,IC卡向读写设备返回密码认证通过的结果,并打开IC卡数据与外部进行交换的权限。如果密码不同,则返回错误结果,IC卡数据与外部进行交换的权限被关闭。
在逻辑加密卡中使用的就是这种认证方式,同时智能卡中的口令密钥认证也是采用这种方式进行的。密码认证的方式比较简单实用,是一种常用的安全认证手段。其最大的缺陷在于进行认证的密码在线路上进行了传输,如果非法设备跟踪到密码认证的第一步,就比较容易破译整个密码认证过程,这样非法设备也能够正确地与IC卡进行密码认证,从而能够非法与IC卡进行数据交换,而这个过程是无法阻止的。
密钥认证的过程如下所示:
①读写设备向IC卡发取随机数指令
—————————————→
②IC卡向读写设备返回随机数
←———————————
③读写设备用存储的密钥对随机数进行加密运算,生成加密结果即密码
④读写设备发送密码到IC卡
——————————→
⑤IC卡用存储的密钥和随机数进行加密运算,并将生成的密码和收到的密码进行比较
⑥IC卡将比较结果返回读写设备
←————————————
与密码认证过程相比,密钥认证增加了两个内容,一是引入了密钥的概念,增加了加密运算过程;二是增加了产生随机数的过程,有了这两个过程,就可以有效地保证密钥认证过程被非法跟踪后,仍然能够保证认证过程的安全性。
密钥是事先设置到读写设备和IC卡中的,它在认证过程中只参与运算,但不在线路中进行传输,这样非法跟踪是不可能截获到密钥的;由于有随机数的概念,这样每次进行密钥认证虽然使用的是相同的密钥,但经过加密运算产生的密码也是随机的,无规律可循的,这样非法跟踪截获到的密码无法在下次进行认证时使用,只要不知道密钥,非法设备就无法再向密码认证那样模拟安全认证的过程,也就不能非法与IC卡进行数据交换。
在这里值得特别指出的是加密运算过程也是保证密钥认证安全性的一个非常重要的环节,加密运算的算法必须满足下面的条件:
已知加密因子和密钥可以计算出加密结果,即数据加密运算;
已知加密结果和密钥可以推出加密因子,即数据解密运算;
已知加密因子和加密结果不可以推出密钥;
加密算法应该是公开的算法。
这样的加密算法就可以有效地保证密钥的安全性。同时需要特别指出的是在智能卡表及系统中采用的算法一定应该是国际上公认的具备上述特征的算法,只有采用这样的算法,才能够有效保证安全性,同时也能使智能卡表及系统具有兼容性和互换性。目前有些厂家采用自己编制的算法进行密钥安全认证存在两大隐患:一是算法未经过权威部门认证,算法的安全级别实际上很低,其安全性完全取决于算法不公开,但即使不公开的算法也很容易被非法攻击攻破,因为厂家的技术人员往往只是表具设计专家,而不是密码安全算法专家,而进行非法攻击的人员却往往是密码算法专家;二是由于安全原因算法不公开,系统的安全性就永远和厂家的人员有关,而真正关心系统运行安全的行业管理部门却不能掌握核心安全,同时也无法实现在系统中使用多家的智能卡表,从而对产品招标选型带来不方便,在某种程度上,不安全的算法可能反而保护了产品性能并不高的厂家,因为即使发现智能卡表产品有性能缺陷,使用者却由于安全算法的原因不能更换更好厂家的产品。
目前国际上公认的加密算法主要分为两大类型:一种是对称加密算法,这种算法的加密密钥和解密密钥是相同的,代表性的算法有DES算法和3�DES算法;另一种算法是非对称算法,这种算法的加密密钥和解密密钥是不相同的,代表性的算法有RSA算法。从安全性的角度来讲,不对称算法的安全性更高,但计算过程也更复杂,一般都应用在需要对身份进行合法性认证,防伪认证等场合;对称性算法也具有很高的安全性,算法相对比较简单使用,目前金融应用,公用事业应用基本上都采用对称算法。
在智能卡表应用中,如果是非金融的单机系统,采用DES算法比较适宜;如果考虑今后和金融系统联网收费,则应满足银行规范使用3�DES算法。
2、数据的线路保护:线路保护是指读写设备和IC卡通过安全认证后进行数据交换传输时,要保证数据在线路上被非法设备截获后不能进行破译、窜改和重放复现。数据的线路保护分为两个层面:一是数据的机密性保护;一是数据的完整性保护。
数据的机密性保护是指对要传输的数据用密钥进行加密处理后再进行传输。这样在线路中传输的数据为密文数据,非法设备截获后无法进行数据破译和分析,接收方收到密文数据后再用解密密钥进行解密重新得到明文数据。
数据的完整性保护是指在要传输的数据后面附加校验码字节,发送方将发送数据与线路保护密钥以及随机数进行运算,生成校验码后进行数据传输,接收方接收到数据后用相同的密钥对接收到的数据重新计算校验码并与接收到的校验码进行比较,相同则接收数据有效,否则数据无效。由于密钥不在线路上传输,这样非法设备截获数据后如果对数据进行窜改,必然会导致校验码不正确,接收方就能够拒绝接受错误数据。
由于校验码在运算过程中也有随机数参与运算,因此即使采用相同的密钥,将相同的数据进行多次传输,每次形成的校验码也是各不相同的,这样非法设备即使截获了某一次的合理数据,也不能在进行二次传输,这就有效避免了非法设备对数据进行重放复现。
综合运用上述两种方法,就可以有效地保证数据在传输过程中的安全性,也就最终实现了在公开的传输介质或信道上,采用公开的加密算法进行数据传输,数据能够是有效的,正确的,安全的。与此相对应,数据传输的安全性不是依靠传输信道的封闭性,加密算法的不公开性来保证的。
综合上面所讨论的内容,在智能卡表及系统中要具备高的数据安全性,一是要采用安全级别高的IC卡即智能卡(CPU卡)作为传输介质,二是利用密钥和相应的加密算法进行数据的安全认证和有效传输。
四、智能卡表中实现安全性的工具�嵌入式安全模块(ESAM模块)
根据上面的论述,智能卡表在广义上也是一种IC卡读写设备,要保证智能卡表以及所使用IC卡中数据的安全性,除了使用智能卡外,必须能够实现智能卡表和智能卡之间能够进行数据的安全认证和线路保护处理,也就是要求智能卡表必须具有存储密钥以及进行加密运算的能力。
普通卡表的逻辑组成如下所示:
卡表中的核心器件是微处理器(CPU),通过编制合理的程序,CPU可以对计量数据进行计算、存储、显示、与IC卡进行数据交换以及对相关数据进行分析判断控制执行机构。因此CPU的主要作用是完成卡表的数据处理流程以及实现设计好的功能。
从安全性的角度来讲,智能卡表除了要完成上述内容以外,还要完成密钥存储和加密运算功能,这样就产生了一个不可调和的矛盾。
由于CPU中的程序是需要生产厂家(或第三方)的设计人员进行设计的,这部分程序的功能和处理流程可以是由智能卡表使用方提出需求而委托设计的,需求本身也是公开的。但如果要在CPU的控制下存储密钥和进行加密运算,出于安全性的考虑,密钥值应该是不公开的,因此这部分程序编制是不能委托开发设计的,必须掌握在智能卡表使用方手里。换言之,智能卡表的功能、数据操作流程和数据的安全性是两个不同的概念,应该由不同的功能模块去完成。解决这个问题最好的方案就是在智能卡表中增加嵌入式安全模块(ESAM模块)。
增加了ESAM安全模块的智能卡表的逻辑组成如下所示:
与普通卡表相比,只是将数据存储模块换成ESAM模块,这样智能卡表中的CPU还是完成原来普通卡表的功能,程序也完全可以由生产厂家(或第三方)根据用户需求进行灵活编制,当需要进行数据交换时,由CPU启动ESAM模块与智能卡完成安全认证以及数据保护工作,密钥和智能卡表数据都保存在ESAM模块中。ESAM模块可以由智能卡表的使用方发行,安装在智能卡表中即可,这样密钥和算法的安全性和CPU程序就可以完全分开,整个智能卡表及系统的安全性就全部由使用方掌握。同时使用方没有由于安全的原因限制生产方灵活设计不同功能的智能卡表,厂家可以随时对智能卡表中的程序进行修改和升级而不影响使用方的数据安全性。
从技术发展的角度来看,由于半导体芯片技术的发展,CPU芯片升级速度很快,新的CPU芯片不断出现,芯片的价格也在不断调整,生产厂家必然要使用性能价格比最高的芯片,如果将数据安全性的实现和CPU芯片联系在一起,一旦一个系统使用后,即使有更好的芯片出现,出于安全性的考虑,也无法再对CPU以及程序进行调整,也不利于新技术的推广使用。如果使用ESAM安全模块,这个问题也可以得到解决。
使用ESAM安全模块还有一个优势,由于加密算法都有一定的安全等级,用汇编语言来编制加密算法要占用CPU较大的程序空间,这样生产厂家就必须选用容量较大的CPU芯片,这样也会造成智能卡表成本的增加。目前大量使用的智能卡表都是针对居民的,属于民用产品,对价格的要求应该是比较严格的。
综合上面的因素,在智能卡表中使用ESAM模块技术可以实现智能卡表数据流程和数据安全的分离,便于实现产品的兼容和升级,可以不断推动技术进步,是规范智能卡表技术发展的有效技术手段。