1、智能卡技术与应用介绍(1)2010-08-29 14:40IC卡技术及其应用介绍 IC(Integrated Circuit),中文意思为集成电路。顾名思义,IC 卡也就是在卡上放有集成电路,通常也称 IC卡为智能卡、聪明卡。IC 卡是通过 IC存储数据实现和数据交换。我们知道条码卡是在卡上印刷有条码,通过条码技术实现识别卡的功能。印刷的条码易复制和损坏。磁卡是通过磁条存储信息,在一些环境下,磁条易失去磁性,而且相比 IC卡磁卡易复制。按 IC卡中所镶嵌的集成电路类型的不同可分为:存储器卡、逻辑加密卡、智能卡。按与外界传送数据的形式可分为:接触式 IC卡和非接触式 IC卡(射频卡或感应卡)。对
2、接触式 IC卡必须符合 ISO7816标准,对非接触式 IC卡,国际标准化组织(ISO)与国际电子技术委员会(IEC)增加了 ISO/IEC14443标准。完整的ISO/IEC14443标准尚在制定中,但是对调制/编码方法已有严格的规定,即以PHILIPS公司为主的 A型标准和以 MOTOROLA公司为主的 B型标准。接触式 IC卡是通过触点的连接进行数据传递的,触点通讯是否可靠直接影响数据传递的可靠性。因此接触式 IC卡不适合在潮湿、颤动、烟尘、快速和使用频率高的应用领域使用。非接触式 IC卡的数据传递是通过无线电波的藕合进行的,没有机械触点的摩擦接触,因此在使用环境和耐用度上优于接触式IC
3、卡。这些特性也决定了接触式 IC卡和非接触式 IC卡的应用范围。非接触式 IC卡正在成为发展的主流,而一卡多用则是发展方向。从技术上看,存储器 IC卡正逐步向 CPUIC卡发展。到 1998年底,全国发行的 IC卡90%以上还是存储器 IC,但随着应用要求的提高,电子技术的发展,CPUIC 卡价格的下降,CPUIC 卡的整体需求量呈快速上升的趋势;另一个特点是非接触式IC卡的应用将大幅度增加;在多用途方面,综合了接触和非接触技术的复合卡也已问世,为客户不同的需求提供了灵合的选择余地。IC卡进入我国的时间较晚,在国家“金卡工程”的大力推动下,发展十分迅速。IC 卡的应用由银行卡起步,而非银行卡的
4、应用后来居上,远远超过了银行卡的发展速度和规模。其中,发展最快的是各类行业性 IC卡,如电信领域的公用电话 IC卡和移动通信 SIM卡、石化领域的加油卡、劳动和社会保障部门的社会保障卡、建设部门的城市公用事业卡、工商行政管理部门的工商企业卡、税务部门的税务卡、技术监督部门的组织机构代码卡等。 很多行业性 IC卡的应用已制定了统一的行业标准。另外,由各地方、各单位发行的 IC卡,如校园卡、单位员工管理卡、食堂用餐卡、门禁卡、优惠卡等各种 IC卡的应用发卡数量也相当可观。据不完全统计,仅 2000年一年我国发行使用各类 IC卡约 2.3亿张。其中电话卡占了很大一部分,特别是公用电话 IC卡达到 1
5、.2亿张,SIM卡达到 4200万张,其他各类 IC卡约有 6000多万张。非接触 IC卡是国外今后 IC卡技术的发展趋势,载波频率为:125KHz,13.56MHz, 915MHz 和 2.45GHz等,433MHz 频段也已开放给民品。基于我公司技术特点,我公司现在定位于非接触式 IC卡技术的应用服务和产品的提供商。预计未来将替代条码的电子标签技术实质也是 IC卡技术。只是用感应卡做商品识别用。我国的第二代身份证,用非接触式 IC卡的 TYPE B标准。一:IC 卡的种类和特性 随着我国市场经济的发展和金融现代化,现金和各种证件正逐渐被各种卡片所取代。其中 IC卡是卡片家庭中出现最晚,但却
6、是最有前途的一种,最终它将取代现在广泛使用的光电卡、条码卡、磁卡的地位而成为主流。我们知道:IC卡又叫智能卡,它是将大规模集成电路(IC)封装在卡片中,卡片上印有说明文字和图像。由于其内部具有现代高科技产品集成电路,因此,不但可以存储大量信息,具有极强的保密性能,并且抗干扰、无磨损、寿命长。因此在广泛的领域中得到应用。根据 IC卡的应用领域,可以分为金融卡和非金融卡两大类。金融卡又可以分为信用卡和现金卡两种。金融卡是我国大力建设的金卡工程的主要媒体。其中,信用卡由银行发行和管理,持卡人必须在银行有帐号、有存款。持卡人可以用信用卡作为消费时的支付工具,可以使用存款,必要时也允许透支限额内的资金。
7、由于 IC卡上记录了持卡人主要信息,故不一定要求消费场所与银行联网。比起磁卡等仅记录少量数据的卡型,具有极大的灵活性和可靠性。而现金卡是持卡人以现金购买的电子货币。可以多次使用,自动计费。使用方便,但不允许透支。如水电费的交费卡、煤气费卡、就餐卡、医疗卡等。在卡上金额少于一定限额时,要重新交费才可继续使用。IC 卡在此领域应用,主要是由于其优良的保密性,可以防止伪造和窃用。非金融卡主要是作为电子证件,用来记录持卡人的各方面信息,作为身份识别。如 IC卡身份证、进门证、考勤卡、医疗证、住宿证等。由于 IC卡可以记录大量信息,并且可以分区存款,因此可以做到一卡多用,简化验证的手续。从 IC卡的读写
8、方法上来分类:有接触型和非接触型两种。两种卡的集成电路均密封在塑料卡基片内部,可防水,防尘,防磁。但接触型 IC卡的表面可以看到一个方型镀金接口,共有八个或六个镀金触点,用于与读写器接触,通过电流信号完成读写。持卡人刷卡时,须将 IC卡手稿读写器,读写完毕,读写器可自动弹出,或由持卡人抽出卡片。因此这种IC卡刷卡慢,但可靠性高,多用于存储信息量大,读写操作复杂的场合。非接触型 IC卡卡上设有射频信号接收器或红外线收发器,在一定距离内即可收发读写器的信号,实现非接触读写。这种 IC卡常用于身份验证,电子门禁等场合。卡上记录信息简单,读写要求不高,卡型变化也较大,可以作成徽章等形式。根据 IC卡内
9、部结构可以分为以下三类:1. 存储卡: 这种 IC 卡内封装的集成电路一般为电可擦除的可编程只读存储器 EEPROM.这种器件的特点是:存储数据量大,容量为几 KB到几十 KB.信息可以长期保存,也可以在读写器中擦除和改写.读写速度快,操作简单.卡上数据的保护主要依赖于读写器中的软件口令以及向卡上加密写入信息,软件读出时破译.因此这种 IC卡安全性稍差.但这种 IC卡结构简单,使用方便,成本低,与磁卡相比又有存储容量大, 信息在卡上存储,不需读写器联网的特点,因此也得到广泛的应用. 主要用于安全性要求不高的场合,如电话卡,水电费卡,医疗卡等.2.逻辑加密卡:这种 IC卡中除了封装了上述 EEP
10、ROM存储器外,还专设有逻辑加密电路,提供了硬件加密手段.因此不但存储量大,而且安全性强,不但可保证卡上存储数据读写安全, 而且能进行用户身份的认证. 由于密码不是在读写器软件中而是存储于 IC卡上,所以几乎没有破密的可能性.例如:美国 ATMEL1604逻辑加密卡, 卡上设有三级保密功能.总密码用于身份的认证,非法用户三次密码核对错误即可使卡报废. 四个数据存储区可分别存储不同信息,又各和独立的读写密码.可以做到一卡多用, 在不同读写器件中核实相应密码进行某一业务操作,不会影响其它存储区.卡上信息不能随意改写,改写前需先擦除,而擦除需核对擦除需要核对擦除密码. 这样即使是持卡人自己也不能随意
11、更改卡上数据.因此这种逻辑加密卡保密性极强,能自动识别读写器,持卡人和控制操作类型,常用于安全性要求高的场合.3.CPU卡:这是真正的卡上单片机系统,IC 卡片内集成了中央处理器 CPU, 程序存储器 ROM, 数据存储器 EEPROM 和 RAM, 一般 ROM 中还配有卡上操作系统软件 COS(Chip operating system).IC卡上的微处理器可以执行 COS监控程序,接收从读写器送来的命令和数据, 分析命令后控制对存储器的访问.由于这种卡具有智能,读写器对卡的操作要经过卡上 COS,所以保密性更强.而且微处理器具有数据加工和处理的能力,可以对读写数据进行逻辑和算术运算,能力
12、很强.这种 IC卡存储的数据对外相当于一个-黑盒子-, 保密性极强.目前 IC卡上用的微处理器一般为 8位 CPU,存储容量几十 KB上下. 此种智能卡常用于重要场合,作为证件和信用卡.二:典型的 IC卡应用系统IC卡由于其高存储量和高保密性,应用领域十分广泛,除覆盖了传统磁卡的全部功能外,还拓展到许多磁卡不能胜任的领域.那么,一个典型的 IC 卡应用系统是怎样组成和工作的呢?一张 IC卡从制造到销毁的整个过程为 IC卡的生命周期.IC 卡的生命周期可以分为四个阶段.1) 制造阶段:由 IC卡生产企业完成,包括制造集成电路芯片, 将芯片封装到塑料卡基中,装上引出脚.卡片外可印刷图案和说明文字,
13、 对于证件卡还可以负责制持卡人照片.IC 卡出厂前还需在芯片中写入生产厂商代码,以便标识不同厂家. 对于远程定货的发行商客户,IC 卡中还可写入运输密码,在发行商收到后,核实解密才可使用.此举可防止其他人非法截取空白卡,给发行商造成损失.2)个人化阶段:所谓个人化是指 IC卡发行商在卡上写入信息,然后发给持卡人的过程.写入的信息包括:具体应用系统中使用的数据,如银行卡上的帐号和存储余额;证件卡上持卡人基本情况等.此外为数据安全所需,还要写入行商代码,以便与其它应用系统区别,防止持卡人自行修改卡上数据.还需写入持卡人的个人用户密码, 此密码由持卡人保留,每次 IC卡读写时由用户核实.从而 IC卡
14、即使丢失, 也不会给使用者造成损失.3)使用阶段:IC 卡个人化后,持卡人可在整个应用系统中的各个终端读写器对 IC卡进行读写,即交费和花费卡上存款.使用时需进行身分核实,即键入用户密码.同时, 应用系统还自动核实 IC卡上的发行商代码和系统擦除和写入密码. 这些密码保存在系统数据库中,只有核实正确才能对 IC卡进行读写操作.4)销毁阶段:对于卡片损坏,过期,持卡人变动等情况,应收回,销毁或另发新卡.持卡人若丢失 IC卡,也需补发.以上情况都需核实和修改系统数据库内数据.根据以上分析,一个 IC卡应用系统的组织结构大致分为以下步骤:发卡终端(机构)-数据库-读卡终端(脱机或联机)如上所示,IC
15、 卡生产企业成批提供空白卡,并且根据发行者的要求写入发行商代码.作为 IC卡应用系统的开发者相当于发行商的角色,需向生产企业订购适用型号的 IC卡和读写器.为此应向生产商提供 IC卡规格,印刷文字格式,图案和照片,由生产企业按要求制作.目前国内有几十家 IC卡生产厂商,年产量达上亿张,IC 卡型号也有几十种,包括存储卡,逻辑加密卡和 CPU卡等.各种卡结构相差很大,性能和用途各异,开发者一定要根据应用目标仔细选择和定货.开发者需要设计并建立 IC卡应用系统的中心数据库, 库中保存系统数据及各持卡人的专用数据,这是任一卡基本应用系统必备的.发卡收费站负责发行新卡, 包括按规定格式,对新卡作初始化
16、,分区及写入分区密码,写入原始数据.此站也常用于旧卡添加数据和收费.发卡收费站与中心数据库联结,写卡时同时更新中心数据库. 结算和挂失工作站则用于对日常业务进行结算.同时可以处理 IC卡挂失,重失和销毁报废工作.显然也必须与中心库连接,对库中数据进行更新.系统中最多的是联机工作站和脱机工作站,也就是 IC卡用户经常使用的 IC 卡读写器,例如在银行的金融服务系统中的 ATM机(自动柜员机), 在商业信用卡系统中的 POS机(售货收款机).IC 卡与磁卡不同, 工作站既可以采用联机方式也可以采用脱机方式工作,这就大大扩大 IC卡的应用范围.联机工作站与中心数据库联网到少需要一台微机,用户刷卡时,
17、可随时与中心交换数据.脱机工作站则是简单的读卡机,可以独立工作,刷卡时把数据记录在 IC卡上.读写器上也可以记录必要数据,用专用 IC 卡收集后,再通过联机工作站输入数据库. 根据 IC卡应用系统的这种典型结构,开发者的主要工作包括:(1) 设计和构造应用系统中心数据库,对应用 IC卡管理的数据进行分类存储和管理.由于数据库一般建立在小型机或微机网络服务器上,一般在相应环境中开发设计.(2)对 IC 卡上数据的存储格式,读写方式,加密和安全保护方式进行规划和设计.这些可借助 IC 卡读写器和微机的开发系统来完成.(3)构造 IC卡应用环境,建立网络和读写工作站.作为 IC卡系统中的发卡站和结算
18、站,可以采用带联机读写器的小型机或微机.系统设计环境可以是WINDOWS下的 VB,FOXPOR,ACCESS等软件,一般利用读写器厂家提供的接口函数与数据库软件接口.用户刷卡使用的工作站可以采用 PC机加联机读写器组成,需进行用户界面设计,能够提供较友好的用户界面.也可以使用便携式的脱机工作站, 一般由单片机系统组成,带有液晶显示器和小型键盘.这种读写器的用户接口软件, 也需在专用的单片机系统中开发.因此,一个 IC卡应用系统的设计工作除了包括各站点的硬件配置,系统联网, 系统数据库构建和管理软件编程,各工作站用户接口软件的编程,以及 IC卡上数据规划与初始分区和数据写入.下一讲我们将讨论常
19、见的 IC卡开发环境的组成和使用方法.三:IC 卡开发和制作环境IC卡是携带应用信息和数据的媒体,空白 IC卡是不能立即使用的,必须对IC卡应用系统进行个人化,写入系统 IC卡和个人密码,个人专用信息和应用数据.这就要在银行登记购买金融卡,输入个人密码,姓名等标识,交费并记帐.在 IC卡使用过程中也需要核对密码,多次读出和修改卡上数据.如在商场交费时刷卡结帐,在 ATM自动取款机取现金等.这些操作都需要一个使用环境,需要专用的 IC卡读写器等硬件, 也需要应用系统开发的软件.一.IC 卡读写设备IC卡读写设备大致可分为两大类:一类为专用读写设备或称脱机读写器.其特点是:充分利用 IC卡存储量大
20、,可以独立存储和工作, 不需要和主机相联就可完成数据读写的优点,可与应用设备结合或单独工作.例如:IC 卡电表,水表,ATM机, 商场收款机.另一类为通用读写设备,或称联机读写器,是带有单片机和存储器的设备,通过并行或串行口与 PC机或应用系统网络相连接. 在运行不同软件时可以读写不同种类的 IC卡,组成不同的应用系统.如果配备开发系统软件,可对 IC卡作初始规划,数据加密和初始写入,从而构成 IC卡应用开发制作环境.在本讲中, 我们重点讨论这种通用开发系统的原理和使用方法.IC卡读写设备由 IC卡卡座,单片机,数据存储器 RAM,程序存储器 EEPROM,接口电路和外围设备等组成.接口包括与
21、 IC卡的通讯接口和与主机的通讯接口.读写器各部分结构与功能如下:1.IC卡卡座IC卡卡座是连接 IC卡与读写器的.其功能包括对 IC卡供电,提供读写信号和伟送数据.要求提供方便的插拔方式和可靠的接触,并带有带电插拔,过流保护,插卡检测等能力.IC 卡和插座的结构尺寸必须符合国际标准化组织(ISO)7816 的标准. 对触点数目,位置,信号名称和功能都有明确规定,以保证兼容性.其中:C1(VCC)为电源;C2(RST)复位信号;C3(CLK)时钟脉冲;C4(RFU) 待用; C5(GND)接地端;C6(VPP)编程电压,用于对 EPROM编程;C7( I/O) 数据输入输出端; C8(RFU)
22、待用.有些系统中 IC卡的 C4和 C8未用,可见卡上仅有六个触点.由于 IC卡与我们常见的磁卡,条码卡的动态扫描方式(俗称-刷卡-)不同,是通过卡座触点与 IC卡上引脚接触,用电信号静态读写的,因此插拔方式应保证插拔迅速,接触可靠,磨损小.目前 IC 卡插拔一般有下述几种形式.(1)推入-拉出机构:卡的插拔均为手动,因此结构简单.(2)推入-推入弹出机构:插入为手动,读写后再向内推卡,卡自动弹出.(3)推入-弹出机构:手动推入,卡由机构锁定,操作后,系统自动释放,将卡弹出.(4)电动式出入卡机构:卡轻轻插入,卡由机构自动引入,读写后自动送出.在开发一个 IC卡应用系统时,应该根据应用特点来选
23、择卡座类型.如公交售票系统中.要求以快速挺拔,而金融卡则更重视可靠性和寿命.2.单片机和存储器读写器中配备单片机和 ROM,RAM存储器,构成微机系统,单片机运行 ROM中固化的软件,执行与 IC卡和上位 PC机的通迅规程.控制对 IC卡的读写,完成 IC 卡与主机间数据的格式转换.如果卡上数据加密加密存储,读写时要执行解密操作.密码,密钥和处理中间结果等参数保存在 RAM中.对数据全部加密时,为减轻单片机负担,提高读写速度,常配有硬件密文转换和单元.3.接口电路和外围设备专用型和通用型读写器的接口和外围设备有所不同.由于专用读写器脱机工作, 一般直接配备小型外围设备. 如 LCD 液晶显示器
24、或 LED发光二极管显示器,用于系统状态监测和输入输出数据显示.配小型 16键或 24 键键盘,用于数据和密码输入.有些带打印机接口,可外接微型或小型打印机.例如收款机,ATM 机可自动打印发货票和清单.由于用于不同领域,专用机外型,体积,功能和操作方式相差很大,对外接口也多为专用接口.通用读写器一般与 PC机或网络联机工作, 常用标准并行或串行口与上位机连接和通讯.常用的是带有 25芯或 9芯插口的 RS232- C 型串行接口, 可直接接到 PC 机的 COM1或 COM2上.此时,可利用主机的显示器作监视器,主机键盘作控制和输入,利用主机打印机输出.此时主机与读写器组成了 IC卡应用与开
25、发系统,操作与一般微机相仿,但用户界面将随所配软件而有很大不同.二.IC 卡开发软件及其使用PC机配备通用读卡器后,可以对多种 IC 卡进行开发和使用. 至于系统功能则要由 PC机中运行的软件决定.运行已开发好的应用软件,就组成相应的 IC卡开发系统. 在这一环境中,既可以对应用系统中的 IC卡进行规划设计,完成卡的个人化进程, 也可用于开发应用管理程序,如医疗数据库系统.下面以一种常见的 IC卡开发系统明华 IC卡读写系统为例,说明开发软件的功能和使用方法.该软件由深圳明华公司随读写器一起提供.主要包括一个菜单式 IC 卡读写程序, 以及一组可由高级语言调用的 IC卡读写函数.软件安装方法如
26、下:将系统软盘插入驱动器 A:或 B:中,键入 INSTALL X:然后回车(X:为软件安装的目标路径,一般为 C:).此时安装软件运行,并自动在 X:盘根目录下建立MWICDEMO 子目录,运行 DEMO.EXE文件即可进入 IC卡开发系统主菜单窗口,DEMO程序运行中会自动识别与读写器连接的串行口,自动识别读写器中的 IC 卡型号,相应参数显示在屏幕上.然后程序检测 IC卡,若卡参数正常,则光亮条定于读卡操作项上,回车即可读卡.各行菜单列出了读写器软件基本功能,用鼠标加以选择, 单击即可产生下拉菜单或直接执行相应功能.主要功能解释如下:卡型选择:通用读写器适于多种卡型.选中此功能产生下拉菜
27、单, 可执行自动检测卡型,IC 卡自动弹出及手动选择卡型三个子功能.本读写器适用于美国ATMEL 公司的 AT系列和德国西门子公司的 SEL系列各种 IC卡读写.选通迅口:根据选择的卡型,可将 IC卡上可读数据读出, 并以十六进制形式显示在屏幕上. 多存储区的卡上, 不同区内容以不同颜色显示. 加密区密码和数据显示 FFH,表示不能读出.擦除操作:在改写卡上数据时,需先将待写区域内容擦除. 选中此功能可以输入擦除密码,核对正确,即可擦除指定存储区数据.写卡操作:选中此功能,移动插入点到写入位置,键入写入数据后,按 F5键, 即可写入.对写保护数据,用空格键切换,决定是否写入写保护位. 键可退出
28、写入操作.核对密码:对加有密码保护的 IC卡,输入密码后,屏幕中显示错误计数的当前值,右下方显示输入密码是否正确.密码输入出错一次,次数减 1, 计数值为零则此卡作废.熔断操作:用于熔断带熔丝的 IC卡上的熔丝.熔断前表示该卡未个人化, 卡上发行商密码可读,可改写,即可用于不同系统.熔断后密码不可改写,不可读出, 表示已个人化.利用上述功能,我们可以对多种类型的 IC存储卡,逻辑加密卡, 多分区卡进行分区,数据规划,加密,可读出,写入,修改卡上数据了.当然, 这时仅举一种开发软件及读写器实例.其它读写器和软件功能虽有差异,但基本功能和操作方法是大同小异的.可参考相应使用手册.除此之外,在一个实
29、际的 IC卡应用系统中,上述功能应包含在应用软件中. 即软件程序员应该能在应用程序中使用高级语言对 IC卡进行上述操作. 实现方法是: 在 IC卡开发系统中提供了适于不同语言的调用函数, 用户可以在用户程序中通过函数调用来实现对 IC卡操作的各种功能. 常见的函数有适于 FOXPRO FOR DOS, FOXPROFOR WINDOWS,适用于 VB和 VC的等.在 IC卡应用系统中,IC 卡上数据常需与管理系统中的数据库进行数据交换.用 IC卡上数据更新数据库内容,或以数据库内容修改卡上数据.因此开发一个IC卡应用系统,除了要对 IC卡作规划,进行初始数据写入,还需设计应用系统的程序和数据库
30、,即要构造上述一些高级语言程序开发环境.综上所述,开发一个 IC卡应用系统所需要的软硬件环境包括:PC 机或局域网络工作站,连接通用 IC卡读写器;与读写器配套的 IC卡读写控制软件, 设计应用程序的高级程序开发环境.有了这些条件,下一讲我们将讨论 IC卡数据存储结构和对 IC卡编程使用的方法四:IC 卡的编程和使用IC卡与其它卡片的区别主要是:IC 卡能在卡上存储器中安全可靠地存储大量有用信息,并且可以对数据提供多级安全保密措施.因此,为设计一个好的 IC 卡应用系统,必须了解 IC卡的数据结构特点.掌握 IC卡的编程和读写方法.从使用角度来看,不管是普通存储卡,逻辑加密卡,或智能 CPU卡
31、,卡上必定有:用于与其它应用系统相区别的发行商代码, 用于与本系统中其他用户相区别的个人代码,用于控制对卡上数据修改的擦除密码,以及用于存放数据的存储区.由于 IC 卡平时不与电源相接,要保证卡上存储的数据不会丢失,只能使用只读存储器即 ROM 型存储器.因此卡上数据可以长期保存,一般数据可存放 100年.又由于 IC卡上数据在使用中要经常修改,故一般应该使用电可擦除可编程只读存储器,即 EEPROM.一般 IC 卡数据改写次数大于 100000次.目前的各种 IC卡应用系统中使用的 IC卡主要是逻辑加密型卡. 这种卡带有多级密码保护,比普通存储卡安全性能强得多;同时又比智能 CPU卡结构简单
32、,不需要复杂的密码计算过程,而且结构简单,编程使用方便.本讲中以美国 ATMEL公司的逻辑加密卡 AT88SC1604为例,来说明对 IC卡应用系统中的 IC 卡发行软件和用户应用软件的编程方法,以及 IC卡写入过程.一.逻辑存储卡的数据结构和编程特性AT88SC1604卡具有一个公用区和四个应用数据区.其数据结构如附表所示.公用区内有厂商代码,发行商代码,总密码,密码计数器等等.我们可以规划和利用这些数据区对全卡基本特性进行控制.应用区共四个,第个分区有自己的分区密码, 擦除密码,密码计数器和读写控制位,用于对本区内数据的写入,读出和修改进行控制.应用区其余部分是存储数据的存储单元.1604
33、 卡的第一分区存储容量为 9K位,其它三个分区数据存储容量为 2K位.连同公用区总存储量为 16K位.厂商代码又叫制造商代码,是由 IC卡制造商在卡出厂时写入.一般对某一发行商提供的一批卡提供同一代码,以便与其它厂商的卡相区别. 写入时将相应保护熔丝 1熔断,此时 IC卡开发者可以读出厂商代码,判断其生产厂商,但不能修改它.发行商代码:用于 IC卡个人化,发卡时由系统软件写入, 用来表明此卡属于哪一应用系统.例如:工商行发行的金融 IC卡写入的发行商代码,表明了所属的金融系统.此卡使用时,ATM 机会自动核实这一代码.如果不正确,说明这不是本系统的卡,不能使用.发行商代码受熔丝 2控制,熔断前
34、,此密码可修改,熔断熔丝后.此密码可读出, 可核实,但不能修改.IC卡上的熔丝是 IC卡个人化标记.除控制发行商代码外,也控制整个卡上数据的读写.熔丝熔断前,卡上数据读写受总密码 SC和读写控制位控制, 各分区密码不起作用,此时可用 IC卡读写器对卡进行初始数据的规划和写入.熔丝熔断后,卡发给用户个人,此时各分区数据操作不但受总密码 SC控制,而且受各分区密码和擦除密码和控制.总密码 SC一般用作用户密码,应通过 IC卡发行软件中提供的用户环境,由用户自己设置并且写到卡上.此密码一旦写入,不可读出也不保留在系统中,只能核对.用户在以后使用 IC卡时,可能通过由应用程序提供的密码核对功能界面,由
35、用户本人键入加以核对.密码输入正确,说明是合法用户,可以对卡上数据进行读写.密码输入错误时,密码计数器 SCAC减 1.此外,在熔丝熔断之前,总密码还控制各分区密码的读写.密码计数器 SCAC用于统计用户密码核对次数.输入正确密码时,计数器清零( 即 8位全置-1-).每输错一次,计数器一位变为-0-,若八次输入错误,计数器各位全变为-0-时,则此卡已作废.擦除密码控制对存储器中已写数据的擦除.由于 EEPROM 在写入数据时只能写入到空白区(即各位为-1-),对已写有数据的存储区只能先探险,后写入.每次要擦除一行信息.擦除密码在卡发行时写入,由应用系统控制,只能核实,不能读出以防止非法破坏卡
36、上已有的数据.各分区有自己的分区密码,以便实现一卡多用.分区密码和分区擦除密码控制本区数据的读,写,擦操作.例如用一个 1604卡兼工作证,医疗证,工资卡和就餐卡.在不同场合使用此卡时读写器分别核实各分区密码,仅操作本区数据,而不影响其它分区.二.IC 卡编程和使用流程对 IC卡的读写操作主要在发卡时和用户持卡交费及持卡消费时时行. 发卡是卡片发行者根据用户要求对空白卡的个人化过程. 这一过程由发卡单位的微机上运行的发卡程序执行,如银行,工厂,机关等部.这一发卡程序也需 IC卡开发人员根据上述经构特点进行开发设计.用户持卡消费则在商店 POS机或银行 ATM机上进行,持卡交费也需要在银行或交费
37、处进行.这一过程是读出或修改卡上数据的过程,由 IC卡用户应用程序在用户终端上完成.此时用户需与终端进行交互式处理.这种用户应用程序也是 IC卡开发人员进行设计的.下面,综合上一节讨论的 IC卡存储结构特点, 说明在这两种软件中的操作过程.1.IC卡个人化操作流程如前所述,此流程嵌在 IC卡发卡软件中执行,可完成 IC卡的人人化即初始数据录入过程.首先系统核对 IC卡的厂商代码和卡型,正确时,在空白卡上写入发行商代码,确定此卡为本系统有效卡.然后软件应提供交互式用户界面, 让用户从键盘输入自己的用户密码(SC).此密码不应由发行者保留和处理,而应该通过调用密码写入函数而直接写入卡上. 多分区中
38、的分区密码也可以通过给用户提供的界面由用户直接输入.为了简化密码记忆要求,也可以采用根据统一用户密码经一定算法来分别产生分区密码并写入卡上. 擦除密码则是在个人化时由发行商也就是系统来产生并且入卡上的,供系统使用.在上述密码写入后, 软件还应提供用户对密码核实和再次修改的机会.在确认无误后,软件发出熔断命令,熔断熔丝 2,完成 IC卡的个人化进程.随后系统可对 IC卡数据区需写入的数据作初始写入.2.IC卡用户应用软件流程如前所述,此流程嵌于各 IC卡读写终端的用户软件中.每次涉及对 IC卡操作时执行此流程.一旦 IC卡插入读写器,用户软件首先应核对厂商代码,发行商代码,以确认此卡的合法性.在
39、确定是本系统中的有效卡后,进入用户密码核对流程, 如果是无效卡,应报警.接着在用户密码核对界面中对持卡人的合法性进行鉴别. 要求持卡人键入用户密码,与卡上密码核对,无误后可开始对卡读写. 如有分区密码也要求用户键入核实.如果需对卡上已有数据进行修改,则应与系统中保留的探险密码进行核对. 正确时可先读出卡上数据进行修改运算,再擦除相应存储区,最后将修改后数据写回该存储区.根据以上叙述,我们知道 IC卡的合法性, 持卡人合法性和系统的合法性要相互确认.这些确认和对 IC卡的读写操作均需调用随 IC 卡读写器提供的函数库中的函数来完成.三.IC 卡应用程序编程中使用的函数如上所述:开发 IC卡应用系
40、统的要点就是在一个数据库管理软件中,合理地嵌入和调用 IC卡操作函数,来完成诸如合法性验证和 IC卡读出,擦除和写入等操作.为此,我们需要了解由读写器驱动程序包中提供的 IC止操作函数库.这些函数可分为两大类:在 WINDOWS应用环境中,提供了一组动态链接库函数(.DLL 文件)供各种程序调用. 在 DOS 环境中, 则针对不同语言提供了各自的函数库. 这时限于篇幅仅举 FOXPROFOR DOS中使用的部分函数加以说明.详细资料可查看相应手册.在 FOXPRO程序执行前,执行命令:.SET LIBRARY TO MWIC.LIB则 FOXPRO会自动登录-MWIC.LIB-中的 IC卡函数
41、,以后可以像使用 FOXPRO内部函数一样在程序使用中使用其中的接口函数.而在编译用户程序为.EXE文件时,又要将-MWIC.LIB-链入即可执行.MWIC.LIB中的接口函数可分两类:通用函数:用于各种卡型的基本操作.1.MW-INITCOM() 初始化串行通迅口.2.MW-SETTYPE() 设置卡型.3.MW-READ() 读卡上的数据.4.MW-WRITE() 向卡上写入数据.5.MW-ERASE() 擦除指定区域.AT88SC1604卡专用函数:仅用于这种卡型,因为不同卡型中密码的结构和位置不同.1.MW-PASS16() 检验总密码和擦除密码2.MW-CPASS16() 改变总密码
42、和擦除密码3.MW-RDECU16() 读错误计数值4.MW-FUSE16() 烧断熔丝五:IC 卡的数据安全和加密IC卡上记录有大量重要信息,可以用于个人证件,也可以代替现金和支票进行交易购物,因此难免有不法分子实施对 IC卡及其应用系统的各种各样的攻击手段.其目的包括获取非法利益,或破坏应用系统.因此,作为 IC卡应用系统开发者必须为 IC 卡系统提供合理有效的安全措施,以保证 IC卡及其应用系统的数据安全.这些技术有: 身份鉴别和 IC卡合法性确认,报文鉴别技术,数据加密通讯技术等. 这些技术采用可以保证 IC卡的数据在存储和交易过程中的完整性,有效性和真实性,从而有效地防止对 IC卡进
43、行非法读写和修改.影响 IC卡及应用系统安全的主要方式有以下几种:1.使用用户丢失或被窃的 IC卡,冒充合法用户进入应用系统,获得非法利益.2.用伪造的或空白卡非法复制数据,进入应用系统.3.使用系统外的 IC卡读写设备,对合法卡上的数据进行修改.如增加存款数额, 改变操作级别等.4.在 IC卡交易过程中,用正常卡完成身份认证后,中途变换 IC卡, 从而使卡上存储的数据与系统中不一致.5.在 IC卡读写操作中,对接口设备与 IC卡通信时所作交换的信息流进行截听,修改,甚至插入非法信息,以获取非法利益,或破坏系统.针对以上种种不安全因素,开发者需要在几个方面来采取防护措施,以保证数据安全.IC卡
44、安全防护的首要任务是防止对 IC卡本身的攻击,这种防范措施在 IC 卡制造和个人化过程中就已经开始了.在 IC 卡制作和卡片表面印过程中都采用了十分复杂的防伪技术,以增加非法伪造者的难度.对厂商代码有严格保密方法,对 IC 芯片加特殊保护层,可防止对存储内容用电磁技术直接分析.在 IC卡发行和个人化过程中, 发行商密码,擦除密码应由系统产生,而不能为操作人员所握,防止系统内部人员犯罪.在 IC卡使用过程中,要防止被非法持有人冒用.故在 IC卡读写前要验证持卡人身份,即进行个人身份鉴别.IC 卡上提供了用户密码(总密码),在个人化时由用户输入,系统中不保存.在使用时,要求用户自己键入,以确认用户身份. 如果连续几次输入有误,IC 卡将自行锁定,不能再使用. 这一措施可有效地防止非法持卡人用多次试探方法破译密码.在一些新型 IC卡上还采用了生物鉴别技术,如使用持卡人指纹识别, 视网膜识别等.即使用户密码泄露,其他人也无法使用