为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

IC卡C#事例

2011-08-22 30页 doc 621KB 33阅读

用户头像

is_915519

暂无简介

举报
IC卡C#事例IC卡技术讲座之二:典型的IC卡应用系统 IC卡由于其高存储量和高保密性,应用领域十分广泛,除覆盖了传统磁卡的全部功能外,还拓展到许多磁卡不能胜任的领域.那么,一个典型的IC 卡应用系统是怎样组成和工作的呢?      一张IC卡从制造到销毁的整个过程为IC卡的生命周期.IC 卡的生命周期可以分为四个阶段.      制造阶段:由IC卡生产企业完成,包括制造集成电路芯片, 将芯片封装到塑料卡基中,装上引出脚.卡片外可印刷图案和说明文字, 对于证件卡还可以负责制持卡人照片.IC卡出厂前还需在芯片中写入生产厂商代码,以便标识不同厂...
IC卡C#事例
IC卡技术讲座之二:典型的IC卡应用系统 IC卡由于其高存储量和高保密性,应用领域十分广泛,除覆盖了传统磁卡的全部功能外,还拓展到许多磁卡不能胜任的领域.那么,一个典型的IC 卡应用系统是怎样组成和工作的呢?      一张IC卡从制造到销毁的整个过程为IC卡的生命周期.IC 卡的生命周期可以分为四个阶段.      制造阶段:由IC卡生产企业完成,包括制造集成电路芯片, 将芯片封装到塑料卡基中,装上引出脚.卡片外可印刷图案和说明文字, 对于证件卡还可以负责制持卡人照片.IC卡出厂前还需在芯片中写入生产厂商代码,以便标识不同厂家. 对于远程定货的发行商客户,IC卡中还可写入运输密码,在发行商收到后,核实解密才可使用.此举可防止其他人非法截取空白卡,给发行商造成损失.      个人化阶段:所谓个人化是指IC卡发行商在卡上写入信息,然后发给持卡人的过程.写入的信息包括:具体应用系统中使用的数据,如银行卡上的帐号和存储余额;证件卡上持卡人基本情况等.此外为数据安全所需,还要写入行商代码, 以便与其它应用系统区别,防止持卡人自行修改卡上数据.还需写入持卡人的个人用户密码, 此密码由持卡人保留,每次IC卡读写时由用户核实.从而IC卡即使丢失, 也不会给使用者造成损失.      使用阶段:IC卡个人化后,持卡人可在整个应用系统中的各个终端读写器对IC卡进行读写,即交费和花费卡上存款.使用时需进行身分核实,即键入用户密码.同时, 应用系统还自动核实IC卡上的发行商代码和系统擦除和写入密码. 这些密码保存在系统数据库中,只有核实正确才能对IC卡进行读写操作.      销毁阶段:对于卡片损坏,过期,持卡人变动等情况,应收回,销毁或另发新卡.持卡人若丢失IC卡,也需补发.以上情况都需核实和修改系统数据库内数据. 根据以上分析,一个IC卡应用系统的组织结构大致如图所示.      发卡终端(机构)--数据库--读卡终端(脱机或联机)      如图所示,IC卡生产企业成批提供空白卡,并且根据发行者的要求写入发行商代码.作为IC卡应用系统的开发者相当于发行商的角色,需向生产企业订购适用型号的IC卡和读写器.为此应向生产商提供IC卡规格,印刷文字格式,图案和照片,由生产企业按要求制作.目前国内有几十家IC卡生产厂商,年产量达上亿张,IC 卡型号也有几十种,包括存储卡,逻辑加密卡和CPU卡等.各种卡结构相差很大,性能和用途各异,开发者一定要根据应用目标仔细选择和定货.      开发者需要并建立IC卡应用系统的中心数据库, 库中保存系统数据及各持卡人的专用数据,这是任一卡基本应用系统必备的.发卡收费站负责发行新卡, 包括按规定格式,对新卡作初始化,分区及写入分区密码,写入原始数据.此站也常用于旧卡添加数据和收费.发卡收费站与中心数据库联结,写卡时同时更新中心数据库. 结算和挂失工作站则用于对日常业务进行结算.同时可以处理IC卡挂失,重失和销毁报废工作.显然也必须与中心库连接,对库中数据进行更新.      系统中最多的是联机工作站和脱机工作站,也就是IC卡用户经常使用的IC 卡读写器,例如在银行的金融服务系统中的ATM机(自动柜员机), 在商业信用卡系统中的POS机(售货收款机).IC卡与磁卡不同, 工作站既可以采用联机方式也可以采用脱机方式工作,这就大大扩大IC卡的应用范围.联机工作站与中心数据库联网到少需要一台微机,用户刷卡时,可随时与中心交换数据.脱机工作站则是简单的读卡机,可以独立工作,刷卡时把数据记录在IC卡上.读写器上也可以记录必要数据,用专用IC 卡收集后,再通过联机工作站输入数据库.      根据IC卡应用系统的这种典型结构,开发者的主要工作包括:(1) 设计和构造应用系统中心数据库,对应用IC卡管理的数据进行分类存储和管理.由于数据库一般建立在小型机或微机网络服务器上,一般在相应环境中开发设计.(2)对IC 卡上数据的存储格式,读写方式,加密和安全保护方式进行规划和设计.这些可借助IC 卡读写器和微机的开发系统来完成.(3)构造IC卡应用环境,建立网络和读写工作站.作为IC卡系统中的发卡站和结算站,可以采用带联机读写器的小型机或微机.系统设计环境可以是WINDOWS下的VB,FOXPOR,ACCESS等软件,一般利用读写器厂家提供的接口函数与数据库软件接口.用户刷卡使用的工作站可以采用PC机加联机读写器组成,需进行用户界面设计,能够提供较友好的用户界面.也可以使用便携式的脱机工作站, 一般由单片机系统组成,带有液晶显示器和小型键盘.这种读写器的用户接口软件, 也需在专用的单片机系统中开发.      因此,一个IC卡应用系统的设计工作除了包括各站点的硬件配置,系统联网, 系统数据库构建和管理软件编程,各工作站用户接口软件的编程,以及IC卡上数据规划与初始分区和数据写入.下一讲我们将讨论常见的IC卡开发环境的组成和使用方法. IC卡技术讲座之三:IC卡开发和制作环境 IC卡是携带应用信息和数据的媒体,空白IC卡是不能立即使用的,必须对IC卡应用系统进行个人化,写入系统IC卡和个人密码,个人专用信息和应用数据. 这就要在银行登记购买金融卡,输入个人密码,姓名等标识,交费并记帐.在IC卡使用过程中也需要核对密码,多次读出和修改卡上数据.如在商场交费时刷卡结帐,在ATM自动取款机取现金等.这些操作都需要一个使用环境,需要专用的IC卡读写器等硬件, 也需要应用系统开发的软件.      一.IC卡读写设备      IC卡读写设备大致可分为两大类:一类为专用读写设备或称脱机读写器.其特点是:充分利用IC卡存储量大,可以独立存储和工作, 不需要和主机相联就可完成数据读写的优点,可与应用设备结合或单独工作.例如:IC卡电表,水表,ATM机, 商场收款机.另一类为通用读写设备,或称联机读写器,是带有单片机和存储器的设备,通过并行或串行口与PC机或应用系统网络相连接. 在运行不同软件时可以读写不同种类的IC卡,组成不同的应用系统.如果配备开发系统软件,可对IC卡作初始规划,数据加密和初始写入,从而构成IC卡应用开发制作环境.在本讲中, 我们重点讨论这种通用开发系统的原理和使用方法.      IC卡读写设备由IC卡卡座,单片机,数据存储器RAM,程序存储器EEPROM,接口电路和外围设备等组成.接口包括与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)待用.      有些系统中IC卡的C4和C8未用,可见卡上仅有六个触点.由于IC卡与我们常见的磁卡,条码卡的动态扫描方式(俗称-刷卡-)不同,是通过卡座触点与IC卡上引脚接触,用电信号静态读写的,因此插拔方式应保证插拔迅速,接触可靠,磨损小.目前IC 卡插拔一般有下述几种形式.      (1)推入-拉出机构:卡的插拔均为手动,因此结构简单.      (2)推入-推入弹出机构:插入为手动,读写后再向内推卡,卡自动弹出.      (3)推入-弹出机构:手动推入,卡由机构锁定,操作后,系统自动释放,将卡弹出.      (4)电动式出入卡机构:卡轻轻插入,卡由机构自动引入,读写后自动送出.      在开发一个IC卡应用系统时,应该根据应用特点来选择卡座类型.如公交售票系统中.要求以快速挺拔,而金融卡则更重视可靠性和寿命.      2.单片机和存储器      读写器中配备单片机和ROM,RAM存储器,构成微机系统,单片机运行ROM中固化的软件,执行与IC卡和上位PC机的通迅规程.控制对IC卡的读写,完成IC 卡与主机间数据的格式转换.如果卡上数据加密加密存储,读写时要执行解密操作.密码,密钥和处理中间结果等参数保存在RAM中.对数据全部加密时,为减轻单片机负担,提高读写速度,常配有硬件密文转换和单元.      3.接口电路和外围设备      专用型和通用型读写器的接口和外围设备有所不同.      由于专用读写器脱机工作, 一般直接配备小型外围设备. 如LCD 液晶显示器或LED发光二极管显示器,用于系统状态监测和输入输出数据显示.配小型16键或24 键键盘,用于数据和密码输入.有些带打印机接口,可外接微型或小型打印机.例如收款机,ATM机可自动打印发货票和清单.由于用于不同领域,专用机外型,体积,功能和操作方式相差很大,对外接口也多为专用接口.      通用读写器一般与PC机或网络联机工作, 常用标准并行或串行口与上位机连接和通讯.常用的是带有25芯或9芯插口的RS232- C 型串行接口, 可直接接到PC 机的COM1或COM2上.此时,可利用主机的显示器作监视器,主机键盘作控制和输入,利用主机打印机输出.此时主机与读写器组成了IC卡应用与开发系统,操作与一般微机相仿,但用户界面将随所配软件而有很大不同.      二.IC卡开发软件及其使用      PC机配备通用读卡器后,可以对多种IC 卡进行开发和使用. 至于系统功能则要由PC机中运行的软件决定.运行已开发好的应用软件,就组成相应的IC卡开发系统. 在这一环境中,既可以对应用系统中的IC卡进行规划设计,完成卡的个人化进程, 也可用于开发应用管理程序,如医疗数据库系统.下面以一种常见的IC卡开发系统──明华IC卡读写系统为例,说明开发软件的功能和使用方法.该软件由深圳明华公司随读写器一起提供.主要包括一个菜单式IC 卡读写程序, 以及一组可由高级语言调用的IC卡读写函数.      软件安装方法如下:      将系统软盘插入驱动器A:或B:中,键入INSTALL X:然后回车(X:为软件安装的目标路径,一般为C:).此时安装软件运行,并自动在X:盘根目录下建立MWIC\DEMO 子目录,运行DEMO.EXE文件即可进入IC卡开发系统主菜单窗口,DEMO程序运行中会自动识别与读写器连接的串行口,自动识别读写器中的IC 卡型号,相应参数显示在屏幕上.然后程序检测IC卡,若卡参数正常,则光亮条定于读卡操作项上,回车即可读卡.      各行菜单列出了读写器软件基本功能,用鼠标加以选择, 单击即可产生下拉菜单或直接执行相应功能.主要功能解释如下: 卡型选择:通用读写器适于多种卡型.选中此功能产生下拉菜单, 可执行自动检测卡型,IC卡自动弹出及手动选择卡型三个子功能.本读写器适用于美国ATMEL 公司的AT系列和德国西门子公司的SEL系列各种IC卡读写.      选通迅口:根据选择的卡型,可将IC卡上可读数据读出, 并以十六进制形式显示在屏幕上. 多存储区的卡上, 不同区内容以不同颜色显示. 加密区密码和数据显示FFH,表示不能读出.      擦除操作:在改写卡上数据时,需先将待写区域内容擦除. 选中此功能可以输入擦除密码,核对正确,即可擦除指定存储区数据. 写卡操作:选中此功能,移动插入点到写入位置,键入写入数据后,按F5键, 即可写入.对写保护数据,用空格键切换,决定是否写入写保护位. 键可退出写入操作.      核对密码:对加有密码保护的IC卡,输入密码后,屏幕中显示错误计数的当前值,右下方显示输入密码是否正确.密码输入出错一次,次数减1, 计数值为零则此卡作废.      熔断操作:用于熔断带熔丝的IC卡上的熔丝.熔断前表示该卡未个人化, 卡上发行商密码可读,可改写,即可用于不同系统.熔断后密码不可改写,不可读出, 表示已个人化.      利用上述功能,我们可以对多种类型的IC存储卡,逻辑加密卡, 多分区卡进行分区,数据规划,加密,可读出,写入,修改卡上数据了.当然, 这时仅举一种开发软件及读写器实例.其它读写器和软件功能虽有差异,但基本功能和操作方法是大同小异的.可参考相应使用手册.      除此之外,在一个实际的IC卡应用系统中,上述功能应包含在应用软件中. 即软件程序员应该能在应用程序中使用高级语言对IC卡进行上述操作. 实现方法是: 在IC卡开发系统中提供了适于不同语言的调用函数, 用户可以在用户程序中通过函数调用来实现对IC卡操作的各种功能. 常见的函数有适于FOXPRO FOR DOS, FOXPROFOR WINDOWS,适用于VB和VC的等.      在IC卡应用系统中,IC 卡上数据常需与管理系统中的数据库进行数据交换. 用IC卡上数据更新数据库内容,或以数据库内容修改卡上数据.因此开发一个IC卡应用系统,除了要对IC卡作规划,进行初始数据写入,还需设计应用系统的程序和数据库,即要构造上述一些高级语言程序开发环境.      综上所述,开发一个IC卡应用系统所需要的软硬件环境包括:PC机或局域网络工作站,连接通用IC卡读写器;与读写器配套的IC卡读写控制软件, 设计应用程序的高级程序开发环境.有了这些条件,下一讲我们将讨论IC卡数据存储结构和对IC卡编程使用的方法. IC卡技术讲座之四:IC卡的编程和使用 IC卡与其它卡片的区别主要是:IC 卡能在卡上存储器中安全可靠地存储大量有用信息,并且可以对数据提供多级安全保密措施.因此,为设计一个好的IC 卡应用系统,必须了解IC卡的数据结构特点.掌握IC卡的编程和读写方法.      从使用角度来看,不管是普通存储卡,逻辑加密卡,或智能CPU卡,卡上必定有:用于与其它应用系统相区别的发行商代码, 用于与本系统中其他用户相区别的个人代码,用于控制对卡上数据修改的擦除密码,以及用于存放数据的存储区.由于IC 卡平时不与电源相接,要保证卡上存储的数据不会丢失,只能使用只读存储器即ROM 型存储器.因此卡上数据可以长期保存,一般数据可存放100年.又由于IC卡上数据在使用中要经常修改,故一般应该使用电可擦除可编程只读存储器,即EEPROM.一般IC 卡数据改写次数大于100000次.      目前的各种IC卡应用系统中使用的IC卡主要是逻辑加密型卡. 这种卡带有多级密码保护,比普通存储卡安全性能强得多;同时又比智能CPU卡结构简单,不需要复杂的密码计算过程,而且结构简单,编程使用方便.本讲中以美国ATMEL公司的逻辑加密卡AT88SC1604为例,来说明对IC卡应用系统中的IC 卡发行软件和用户应用软件的编程方法,以及IC卡写入过程.      一.逻辑存储卡的数据结构和编程特性      AT88SC1604卡具有一个公用区和四个应用数据区.其数据结构如附表所示.公用区内有厂商代码,发行商代码,总密码,密码计数器等等.我们可以规划和利用这些数据区对全卡基本特性进行控制.应用区共四个,第个分区有自己的分区密码, 擦除密码,密码计数器和读写控制位,用于对本区内数据的写入,读出和修改进行控制.应用区其余部分是存储数据的存储单元.1604卡的第一分区存储容量为9K位,其它三个分区数据存储容量为2K位.连同公用区总存储量为16K位.      厂商代码又叫制造商代码,是由IC卡制造商在卡出厂时写入.一般对某一发行商提供的一批卡提供同一代码,以便与其它厂商的卡相区别. 写入时将相应保护熔丝1熔断,此时IC卡开发者可以读出厂商代码,判断其生产厂商,但不能修改它.      发行商代码:用于IC卡个人化,发卡时由系统软件写入, 用来表明此卡属于哪一应用系统.例如:工商行发行的金融IC卡写入的发行商代码,表明了所属的金融系统.此卡使用时,ATM机会自动核实这一代码.如果不正确,说明这不是本系统的卡,不能使用.发行商代码受熔丝2控制,熔断前,此密码可修改,熔断熔丝后.此密码可读出, 可核实,但不能修改.      IC卡上的熔丝是IC卡个人化标记.除控制发行商代码外,也控制整个卡上数据的读写.熔丝熔断前,卡上数据读写受总密码SC和读写控制位控制, 各分区密码不起作用,此时可用IC卡读写器对卡进行初始数据的规划和写入.熔丝熔断后, 卡发给用户个人,此时各分区数据操作不但受总密码SC控制,而且受各分区密码和擦除密码和控制.      总密码SC一般用作用户密码,应通过IC卡发行软件中提供的用户环境,由用户自己设置并且写到卡上.此密码一旦写入,不可读出也不保留在系统中,只能核对.用户在以后使用IC卡时,可能通过由应用程序提供的密码核对功能界面,由用户本人键入加以核对.密码输入正确,说明是合法用户,可以对卡上数据进行读写.密码输入错误时,密码计数器SCAC减1.此外,在熔丝熔断之前,总密码还控制各分区密码的读写.      密码计数器SCAC用于统计用户密码核对次数.输入正确密码时,计数器清零( 即8位全置-1-).每输错一次,计数器一位变为-0-,若八次输入错误,计数器各位全变为-0-时,则此卡已作废.      擦除密码控制对存储器中已写数据的擦除.由于EEPROM 在写入数据时只能写入到空白区(即各位为-1-),对已写有数据的存储区只能先探险,后写入.每次要擦除一行信息.擦除密码在卡发行时写入,由应用系统控制,只能核实,不能读出以防止非法破坏卡上已有的数据.      各分区有自己的分区密码,以便实现一卡多用.分区密码和分区擦除密码控制本区数据的读,写,擦操作.例如用一个1604卡兼工作证,医疗证,工资卡和就餐卡.在不同场合使用此卡时读写器分别核实各分区密码,仅操作本区数据,而不影响其它分区.   存储分区 位地址 位数 字节地址 字节数 FZ 厂方代码区 0-15 16 0-1 2 IZ 发行商代码 16-79 64 2-9 8 SC 总密码 80-95 16 10-11 2 SCAC 总密码错误计数器 96-103 8 12 1 CPZ 代码保护区 104-167 64 13-20 8 SC1 一区密码 168-183 16 21-22 2 S1AC 一区密码错误计数器 184-191 8 23 1 EZ1 一区擦除密码 192-207 16 24-25 2 E1AC 一区擦除密码错误计数器 208-215 8 26 1 AZ1 应用区一 216-9775 9650 27-1221 1195 SC2 二区密码 9776-9791 16 1222-1223 2 EZ2 二区擦除密码 9792-9807 16 1224-1225 2 E2AC 二区擦除密码错误计数器 9808-9815 8 1226 1 AZ2 应用区二 9816-11863 2048 1227-1482 256 SC3 三区密码 11864-11879 16 1483-1484 2 EZ3 三区擦除密码 11880-11895 16 1485-1486 2 E3AC 三区擦除密码错误计数器 11896-11903 8 1487 1 AZ3 应用区三 11904-13951 2048 1488-1743 256 SC4 四区密码 13952-13967 16 1744-1745 2 EZ4 四区擦除密码 13968-13983 16 1746-1747 2 E4AC 四区擦除密码错误计数器 13984-13991 8 1748 1 AZ4 应用区四 13992-16039 2048 1749-2004 256   测试区 16040-16055 16 2005-2006 2   合计   16056   2007      二.IC卡编程和使用流程      对IC卡的读写操作主要在发卡时和用户持卡交费及持卡消费时时行. 发卡是卡片发行者根据用户要求对空白卡的个人化过程. 这一过程由发卡单位的微机上运行的发卡程序执行,如银行,工厂,机关等部.这一发卡程序也需IC卡开发人员根据上述经构特点进行开发设计.用户持卡消费则在商店POS机或银行ATM机上进行,持卡交费也需要在银行或交费处进行.这一过程是读出或修改卡上数据的过程,由IC卡用户应用程序在用户终端上完成.此时用户需与终端进行交互式处理.这种用户应用程序也是IC卡开发人员进行设计的.下面,综合上一节讨论的IC卡存储结构特点, 说明在这两种软件中的操作过程.      1.IC卡个人化操作流程      如前所述,此流程嵌在IC卡发卡软件中执行,可完成IC卡的人人化即初始数据录入过程.首先系统核对IC卡的厂商代码和卡型,正确时,在空白卡上写入发行商代码,确定此卡为本系统有效卡.然后软件应提供交互式用户界面, 让用户从键盘输入自己的用户密码(SC).此密码不应由发行者保留和处理,而应该通过调用密码写入函数而直接写入卡上. 多分区中的分区密码也可以通过给用户提供的界面由用户直接输入.为了简化密码记忆要求,也可以采用根据统一用户密码经一定算法来分别产生分区密码并写入卡上. 擦除密码则是在个人化时由发行商也就是系统来产生并且入卡上的,供系统使用.在上述密码写入后, 软件还应提供用户对密码核实和再次修改的机会.在确认无误后,软件发出熔断命令,熔断熔丝2,完成IC卡的个人化进程.随后系统可对IC卡数据区需写入的数据作初始写入.      2.IC卡用户应用软件流程      如前所述,此流程嵌于各IC卡读写终端的用户软件中.每次涉及对IC卡操作时执行此流程.一旦IC卡插入读写器,用户软件首先应核对厂商代码,发行商代码,以确认此卡的合法性.在确定是本系统中的有效卡后,进入用户密码核对流程, 如果是无效卡,应报警.接着在用户密码核对界面中对持卡人的合法性进行鉴别. 要求持卡人键入用户密码,与卡上密码核对,无误后可开始对卡读写. 如有分区密码也要求用户键入核实.如果需对卡上已有数据进行修改,则应与系统中保留的探险密码进行核对. 正确时可先读出卡上数据进行修改运算,再擦除相应存储区,最后将修改后数据写回该存储区.根据以上叙述,我们知道IC卡的合法性, 持卡人合法性和系统的合法性要相互确认.这些确认和对IC卡的读写操作均需调用随IC 卡读写器提供的函数库中的函数来完成.      三.IC卡应用程序编程中使用的函数      如上所述:开发IC卡应用系统的要点就是在一个数据库管理软件中,合理地嵌入和调用IC卡操作函数,来完成诸如合法性验证和IC卡读出,擦除和写入等操作.为此,我们需要了解由读写器驱动程序包中提供的IC止操作函数库.这些函数可分为两大类:在WINDOWS应用环境中,提供了一组动态链接库函数(.DLL文件)供各种程序调用. 在DOS 环境中, 则针对不同语言提供了各自的函数库. 这时限于篇幅仅举FOXPROFOR DOS中使用的部分函数加以说明.详细资料可查看相应手册.      在FOXPRO程序执行前,执行命令:.SET LIBRARY TO MWIC.LIB      则FOXPRO会自动登录-MWIC.LIB-中的IC卡函数,以后可以像使用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() 改变总密码和擦除密码 3.MW-RDECU16() 读错误计数值 4.MW-FUSE16() 烧断熔丝 IC卡技术讲座之五:IC卡的数据安全和加密 IC卡上记录有大量重要信息,可以用于个人证件,也可以代替现金和支票进行交易购物,因此难免有不法分子实施对IC卡及其应用系统的各种各样的攻击手段.其目的包括获取非法利益,或破坏应用系统.因此,作为IC卡应用系统开发者必须为IC 卡系统提供合理有效的安全措施,以保证IC卡及其应用系统的数据安全.这些技术有: 身份鉴别和IC卡合法性确认,报文鉴别技术,数据加密通讯技术等. 这些技术采用可以保证IC卡的数据在存储和交易过程中的完整性,有效性和真实性,从而有效地防止对IC卡进行非法读写和修改.      影响IC卡及应用系统安全的主要方式有以下几种:      1.使用用户丢失或被窃的IC卡,冒充合法用户进入应用系统,获得非法利益.      2.用伪造的或空白卡非法复制数据,进入应用系统.      3.使用系统外的IC卡读写设备,对合法卡上的数据进行修改.如增加存款数额, 改变操作级别等.      4.在IC卡交易过程中,用正常卡完成身份认证后,中途变换IC卡, 从而使卡上存储的数据与系统中不一致.      5.在IC卡读写操作中,对接口设备与IC卡通信时所作交换的信息流进行截听,修改,甚至插入非法信息,以获取非法利益,或破坏系统. 针对以上种种不安全因素,开发者需要在几个方面来采取防护措施,以保证数据安全.      IC卡安全防护的首要任务是防止对IC卡本身的攻击,这种防范措施在IC 卡制造和个人化过程中就已经开始了.在IC 卡制作和卡片表面印过程中都采用了十分复杂的防伪技术,以增加非法伪造者的难度.对厂商代码有严格保密方法,对IC 芯片加特殊保护层,可防止对存储内容用电磁技术直接分析.在IC卡发行和个人化过程中, 发行商密码,擦除密码应由系统产生,而不能为操作人员所握,防止系统内部人员犯罪.      在IC卡使用过程中,要防止被非法持有人冒用.故在IC卡读写前要验证持卡人身份,即进行个人身份鉴别.IC卡上提供了用户密码(总密码),在个人化时由用户输入,系统中不保存.在使用时,要求用户自己键入,以确认用户身份. 如果连续几次输入有误,IC卡将自行锁定,不能再使用. 这一措施可有效地防止非法持卡人用多次试探方法破译密码.在一些新型IC卡上还采用了生物鉴别技术,如使用持卡人指纹识别, 视网膜识别等.即使用户密码泄露,其他人也无法使用本人的IC卡.      对于丢失后挂失的IC卡和因特殊原因作废的IC卡, 应在系统数据库中设立所谓的-黑名单-,记录下这些卡的发行号.在有人重新使用时,系统将报警,并将卡收回. IC卡使用中,也要对读写器的合法性进行鉴别.这可以通过分区密码式擦除来实现,如果系统不能提供正确密码,IC卡内容不能读出和修改. 防止了使用非法读写设备来窃取卡上数据.      对于IC卡内部存储的数据可以采用区域保护技术,即将IC卡分为若干个存储区,每区设定不同的访问条件,如果访问符合本区条件,才充许访问,否则锁定. 例如自由访问区内允许随意读,写和修改,保护数据区内的读,擦,写受密码保护; 而保密区内存放的密码则根本不允许读,写和修改.对此区进行此类操作被视为非法入侵, 即锁定系统.这种方法可以有效地防止非法入侵者用读写器逐一探查存储器内容.      对IC卡数据安全威胁最大的不在数据静态存储时,而在对IC 卡正常的读写过程中.因为用户密码,系统密码在核实时都必须通过读写器接口送入IC卡. 因此用各种技术手段,在读写过程中窃取通信数据,从而了解存储分区情况和系统密码就十分可能.便如:在一个合法IC卡输入读写器完成用户证后,读写过程中则换上其它IC卡,从而回避了验证过程,非法读出或写入数据.这种情况可在读写器上加专门机构加以解决.即每当换卡后,都要求重新核实用户身份.而对于采用仪器窃听通信内容,包括核实密码过程的入侵方式,则只有通过对输入输出信息采用加密技术才能有效保护.这可以利用智能IC卡(即CPU卡)的数据处理能力,运行加密,解密算法程序,从而实现传输来解决.      对读写器与IC卡传输信息的保护有两种方式.      1.认证传输方式      将在读写器与IC卡之间传送的信息加上相应加密算法及加密密钥将传送信息──其中包括信息头(传输控制信息)和信息主体部分──进行加密, 得到的密文附加在明文信息尾部传输给接收端,称为认证信息.接收端则对收到的信息按规定算法进行认证,认证通过则进行正常读写,否则报警. 这种方式可有效防止非法插入或删除传送数据.虽然传送以明文进行,也不会已修改而不被发现.而认证信息则是加密的,要由密码算法产生和处理.如果设计合理,附加的认证信息除了具有认证功能外,还可以具有查错甚至纠功能.      2.加密传输方式      这种方式就是要对所有传送信息进行加密后再进行传送, 使信息本身具有保密性,不易破译.因此,即使入侵系统后取得信息,也无法利用.      通常把一个加密系统所采用的基本工作方式叫作密码体制. 一个密码体制由两个要素组成:即加密算法和密钥.加密算法是一些公式或法则, 一般由存放在计算机中的程序来执行,密钥则可以看作密码算法执行中的可选参数,没有密钥, 了解算法也无法解密.因此,密码算一般是公开的,如由IBM公司开发并被普遍采用的DES算法,它将64位明文经过密钥处理成为64位密文.还有属于非对称密钥系统的DSA算法,这种算法中加密密钥为公开密钥,解密密钥与加密密钥不同,可有多个, 这种方法更适应于开放式应用环境.现在市场上有执行相应加密算法的专用芯片问世,在IC卡系统中可以方便地选用.采用加密传输方式,可以大提高IC卡应用系统的安全性能, 当然也受一定的限制,在简单的存储卡上难以采用,主要用在智能CPU卡系统中.      总之,卡片应用系统是一种用量大,使用人数多,涉及领域广的应用系统,因此对安全性要求很高.作为开发者在设计系统时,必须对信息安全加以周密考虑, 并且采取有效错施.好在IC卡具有巨大存储容量和智能处理能力,实现各种安全措施十分方便,有效,安全性能大大优于磁卡,光电卡,这也正是IC卡应用系统的主要优势. IC卡技术讲座之六:智能IC卡操作系统及其应用 目前,IC卡家族中档次最高的智能IC卡,又称CPU卡.顾名思义, 这种卡片上不但有存储数据的存储器和对外联络的通讯接口,还带有具备数据处理能力的微处理器,实际上是一台卡上的单片微机系统.为了管理这一系统中的硬件和软件资源, 卡上存储有进行数据读写和安全管理的程序,以及管理这些程序的卡上操作系统,即COS(Chip Operating system).COS与我们在PC机上常见的DOS和WINDOWS 等操作系统有很大不同,它是根据IC卡特点而开发的专用操作系统.COS受IC 卡存储容量和微处理器性能的限制,主要功能是:控制IC卡与外界的信息交换;管理IC卡上各种存储器;在IC卡内执行读写器的各种操作命令.有了CPU与COS,IC卡就有了智能.因此智能IC 卡具有超强的存储性能,提供很高的信息安全性和可靠性.      下面介绍一下智能IC卡COS 在几个方面的基本功能,即资源管理,通讯管理,安全管理和应用管理.      1.COS的资源管理      作为操作系统,管理IC卡的硬件资源和数据资源是其基本任务.IC卡上的硬件资源包括CPU,ROM,EEPROM和RAM及通讯接口,这些都由IC卡上操作系统统一管理, 使外部不能直接控制这些资源,使IC卡对外表现为一个"黑匣子",从而加强了系统的保密性能.      IC卡上的数据也以文件形式存在,但与PC机磁盘文件的形式不同,IC卡文件直接存放在卡上存储器中,可以随机读写或执行.      在IC卡存储区中,文件以层次结构来组织,不能越层存取. 卡上存在一个唯一的主文件,也就是文件系统的根,其中包含系统文件控制信息及可分配内存空间的信息.其下一层是对应于IC卡各种不同应用的专有文件,专有文件中含有各应用程序的控制信息和空间分配数据.不同应用由各专有文件执行,各自独立. 专有文件由若干元文件组成,包括:用于存储应用数据的工作元文件,提供安全加密,解密功能的管理元文件,控制程序运行的控制元文件等.      2.COS的通讯管理      智能卡通讯管理主要功能是执行智躀C卡的信息传送协议, 接收读写器发出的指令,并对指令传递是否正确进行判断.一般可采用奇偶检,CRC校验等方式判断传输错误.对于采用分组传输协议的系统, 还可以通过分组长度变化来检出错误. 此外,IC卡能自动产生对指令的应答并发回读写器.也能为送回读写数据及应答信息自动添加传输协议所规定的附加信息.      3.COS的安全管理      智能卡操作系统最重要的功能之一就是数据安全管理. 这可以具体地分为用户与IC卡的鉴别,核实功能以及对传输数据的加密与解密操作.      "鉴别"是指对IC卡本身的合法性进行验证,判定一张IC卡是不是伪造的.如在前两讲中谈到的多采用多种卡上设置的读,写,擦除密码作为防伪的基本手段.而COS由于可以通过内部软件运行来完成密码转换,因此智能IC 卡上实际写入的密码无法被读写器直接读取,安全性能更强.而"核实"是指对IC卡持有人的合法性验证. 由于用户只能通过用户口令来进行核实,为防止在口令传输中被人窃听,常常利用COS 的功能对传送口令进行加密和解密运算.      "鉴别"与"核实"可以有效地防止非法用户入侵和非法IC卡的使用. 而对传输与存储数据的保密,则是通过COS对数据进行加密与解密的功能来实现的. 关于加密算法我们在上一讲已作了简单绍.这些算法由COS调用相应算法程序在读写IC卡时自动完成.因此智能卡读写时,通讯线上传输的不是存储数据而是其密文. 这就有效地保证了数据通讯的安全性.      4.COS的应用管理      智能IC卡COS的应用管理功能是对读写器发来的命令进行判断,译码和处理. 智能卡的各种应用以专有文件形式存在卡上,各专有文件则是由IC 卡的指令系统中指令排列所组成的.      COS的基本指集具有国际标准,即ISO/IEC7816-4国际标准.标准中给出了基本命令集.但是由于IC卡操作系统还处于发展初期,所以并不要求各生产厂家严格执行这一标准.因此目前常见的几种IC卡操作系统的命令各不相同,而且它们之间大多数互不兼容.但所提供的指令类型大致可分为以下几种:      数据管理类:如文件创建,读出,写入,删除,关闭等.      通讯控制类:信息管理,协议实现,响应获取等.      安全控制类:如内部认证,外部认证,数据校验,加密,解密命令等.      例如:德国G&D公司的STARCOS智能IC 卡具有28 条指令. 美国MOTOROLA 公司的MC68HC05SC系列智能卡,指令集中有指令50多条. 由于有了CPU和卡上操作系统,智能卡进行具体处理时,读写器与IC 卡之间通过"命令-响应对"方式进行控制.即读写器发出操作命令,智能卡接收命令,COS 对信念加以解释,完成命令的解密与校验.然后调用相应程序来进行数据处理, 产生应答信息,加密后送给读写器.在这里,COS除了负责命令的解释执行之外, 还负责各应用文件的安全管理.      综上所述:智能卡上配备CPU与COS后,具有了独立的资源管理,通讯管理,安全管理和应用管理能力.成为一台完整的单片机系统.因此它不但能存储数据, 保障数据安全,而且有极强的应用灵活性和可靠性,并且具备了脱机工作能力. 这使得智能卡成为IC卡中的姣姣者,成为IC卡的发展方向.目前智能卡的主要缺点是成本高. 但随着微电子技术的发展,这一缺点将将会很快克服,智能卡的普及将指日可待. IC卡技术讲座之七:智能IC卡操作系统及其应用 前几讲我们讨论了IC卡的基本原理、结构、IC的开发环境和开发基本步骤。但是把IC卡技术应用于现代管理中,组成一个IC卡应用环境并不是太容易的事。需要综合运用上面讨论过的IC卡知识和有关数据库的知识,来创建面向具体应用对象的应用环境。本讲中以北方工业大学校医院IC管理系统为背景,讨论在IC卡应用系统设计中所涉及的实际问和处理。 一、IC卡应用系统设计目标      北方工业大学校医院是一所为近万名学生、教职员工及家庭成员提供日常医疗、体检等服务的小型综合性医院。医院有十几个门诊科室,还有化验室、药房、挂号室、收费室等科室。按传统就诊流程,病人需要在挂号室挂号,查找病历,分到指定诊室看病;医生根据检查症状及病历,开出化验单,病人到化验室化验。医生最后根据化验结果作出诊断,开出处方。病人还需拿处方到药房划价,收费处交费,再到药房取药。整个过程繁琐复杂,使病人往返奔波,不堪其苦。医院诊疗效率不高。      IC卡医疗管理系统开发目标是:充分发挥IC卡这一存贮量大、可靠性高的新型信息媒体的技术特点,将医疗证、收费和挂号凭证、病历、化验单和处方集于一身,与医院各科室联网数据库相结合,实现挂号、收费、就诊、化验、处方、划价、收费、取药全过程的电子化操作。减少环节,提高效率,增强医院的管理现代化水平。 二、系统总体设计      IC卡医疗管理系统总体设计如图1所示。 1.硬件环境      各科室微机联网组成局域网络。医务科作为服务器建立病历数据库,药房建立药品数据库,两数据库由各联网站点共享。各诊室、挂号室、化验室微机挂接IC卡读写器可以读写IC卡。个别诊室,如急诊室、专科诊室也可不联网,仅靠读写器即可工作。系统中除两个文件服务器要求硬件配置较高,其余工作站只需最小配置,加接明华Ⅱ型IC卡读写器即可工作。 2.软件结构      医务科服务器上设有病历数据库,用于保存患者历年病历数据,医生诊断时,可联网调阅参考,并填写新病历。药房服务器上设有药品数据库。库中保存各种药品化学名、商品名、服法、用量、价格、库存数量等信息,供医师处方参考。发药时系统根据处方和药品库自动完成划价和收费,减少了原来繁琐的操作。      IC卡上保存有病人基本健康信息:姓名、年龄、性别、血压、肺博等,并保存上次就诊记录,以备医诊断参考。必要时医师可调用病历库查找以前病历;调用药品库,以了解药品库存,作处方参考。新病历和处方均为电子介面,直接转入计算机系统,并写入IC卡上. 挂号室读IC卡确认病人身份,完成挂号和分诊工作。收费站执行收取现金向IC卡上添加金额以及发行新卡,挂失和注销旧卡工作。      医生开出化验单直接写到卡上,化验室从卡上了解化验项目,化验后直接填入数据返回,不需纸单据。 三、管理软件结构和功能      IC卡医疗管理系统可以分为IC卡发行管理子系统、挂号收费子系统、就诊号子系统、药品管理子系统和维护子系统共五个模块。在WIN95操作系统环境下,采用VB5.0编程,调用明华公司投供的IC卡读写函数对IC卡进行读写。软件为医生、药剂师、挂号和化验人员及病人分别提供了不同用户介面。各子系统分别运行于不同科室,共享IC卡上和数据库中资源。用户窗口采用鼠标驱动,基本数据如症状、诊断、药品均有提示词典,减少汉字输入,方便快捷。下面分别介绍几个模块的功能和工作原理。 l,IC卡发行管理子系统      这是IC卡应用系统中的核心模块。包括对IC卡初始规划发行,卡上数据查询和修改,卡片的挂失、解挂和解约(撤销)等功能。      本系统选用美国ATMEL公司1604逻辑加密卡。这个卡的存贮器分为四个分区,基本结构在前面已讨论过。开发中需对存储区先作出详细规划。本系统中利用其主分区存放病人上一次病历和处方,以便复诊时参考。第二分区存放病人基本信息,包括:持卡人姓名、性别、职务、年龄、医疗证号码、单位、地址、电话、用户口令等自然情况,以及血型、血压、脉搏、视力、常见慢性病等基本身体状况。第三区为记帐区,存储病人预交费用、挂号费、诊疗费、住院费、化验费等费用开销及透支情况,以及卡的有效期,是否挂失等标志信息、第四区用来保存一些系统特征值,即密码、密钥和一些加密算法参数。      对IC卡读写是通过VB程序中调用ATMEL公司提供的函数库来进行的。要为系统用户——医务人员和患者提供各种IC卡操作介面,包括:读出、擦除、写入、口令验证等操作。应注意用户口令由用户设置,医务人员不能看到,用于核实用户身份。而写入 IC卡的密码则应由系统软件保存的特征值与用户口令运算处理而成,写入IC卡上,用于确定系统的合法性。因此以合法用户口令也不能在其他IC卡读写系统中对本系统IC卡进行读写。      输入正确用户口令可查看病人基本信息,了解卡上各项收费情况和余额,但不能修改。操作人员输入管理员口令,并经用户确认,才能添加和修改数据。      IC卡丢失可以挂失,如卡暂停使用,找到后可解挂失。找不到可申领新卡,旧卡作废。根据学校学生流动性大的特点,设有IC卡解约、收回功能,以节省卡的费用。 2.挂号收费子系统      挂号功能包括:核实病人身份,判断持卡人与病人是否相符。这通过IC卡上照片或系统中照片与本人核对,以及输入用户口令等手段来核实。挂号时,系统自动核实卡上余额,如果不足最低金额,则要求病人交费、添卡。根据病人要求及已挂号记录,系统自动分诊到相应诊室,并自动调出病人病历。在诊疗、化验、取药中则不需进行划价、收费,因为系统会自动从卡上扣除名项费用。但用户可以在收费处核对各项收费情况和卡上余额。由于使用IC卡只需一次挂号,节省了多次划价、收费,可大大节省患者时间,提高诊疗效率。 3.就诊子系统      就诊系统提供医生工作窗口,运用两大数据库,即 病历库和药品库来辅助医生进行诊断。其中包括:诊 断、化验、处方等模块。      病人将IC卡插入就诊系统的读写器,医生即可从 卡上读取病人基本信息,健康状况,上次诊断结果与处方。如果需要,还可根据医疗卡号从病历库中提取以前的病历,以助诊断。必要时医生可调用化验模块,开出化验单。化验单可存贮在卡上,病人将IC卡插入化验室读写器,化验人员就可了解化验要求,化验结果也可写到IC卡上带回。这样病人无法看到化验结果,有助于诊疗。      医生根据检查和化验开出处方时,可调用药品数据库,根据诊断和库存药品开出处方。不会出现缺药现象。处方保证在IC卡上,病人持IC卡到药房取药,药房自动划价、收费,自动从IC卡上扣除。系统中各医生有自己的口令和安全级别,对药品和病历库读写权限不同,以便保密,处方上应有医生的电子签名,以分清医疗责任。 4.药房管理子系统      药房日常管理包括:药品入库、查询盘点、按处方发药和过期药品的核销报废。病人取药时在药房读写器中插入 IC卡,工作人员可读取药方。发药后,双方确认,系统自动从药品库出货,并根据 IC卡持卡人的类型计算折扣,扣除费用。      药房模块还完成药品入库时登录,并能自动发现过期药品,通知工作人员报废。此数据库中还保存有库存药品的字典。即药品的化学名、标准代号、商品名称、出产厂家和出厂日期等信息。可以多种方式进行查询,可在医生开处方时提供参考,以清单方式供选用,不需输入汉字。 5.系统维护模块      IC卡管理系统维护模块是必备的。功能是提供对后台数据库和IC卡本身数据结构上的个性和更新介面。如改变卡的数据存贮结构,修改数据库结构;增删字段,以及对用户界面的修改等。同时对病历库还需根据学生毕业入学进行大规模更新,数据转贮。维护模块由系统管理人员操作,用户一般不能选用,以确保数据库的安全。      到此为止,我们完成了IC卡应用技术讲座全部七讲的讨论。由于篇幅有限,只能对IC卡应用系统开发中的主要问题作最简略的叙述。希望能为读者进入IC卡开发的领域有所帮助。因作者水平所限,IC卡技术也在飞速发展,文中不当之处难免,欢迎专家批评指正。 深圳科力德科技公司IC卡结构介绍 M1卡为8K位的非接触式IC卡。分为16个扇区,每个扇区4块(块0~3),共64块,按块号编址为0~63。第0扇区的块0(即绝对地址0块)用于存放厂商代码,已经固化,不可更改。其他各扇区的块0、块1、块2为数据块,用于存贮数据;块3为控制块,存放密码A、存取控制、密码B。每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取控制。在存取控制中,指定了KEYA、KEYB对本扇区四个数据块的的各自读写权限。      M1卡结构特点及技术参数:      1、容量为8K位EEPROM。      2、分为16个扇区,每个扇区为4块,每块16个字节,以块为存取单位。      3、每个扇区有独立的一组密码及访问控制。      4、每张卡有唯一序列号,为32位。      5、具有防冲突机制,支持多卡操作。      6、无电源,自带天线,内含加密控制逻辑和通讯逻辑电路。      7、工作温度:-20℃~50℃。      8、工作频率:13.56MHZ。      9、通信速率:106KBPS。      10、数据保存期为10年,可改写10万次,读不限次。      发卡动态库所封装的是科力德公司的非接触IC卡一卡通系统卡片操作函数。如系统卡、用户卡的生成等。动态库是配合科力德公司的发卡器(或其他能兼容的发卡器)一起使用。底层是一个发卡器的通讯协议。该协议兼容市面上多家公司协议,是面向串口的字符同步协议。该协议是单机通讯协议,波特率固定19200。所以对卡片操作前,先打开发卡器所用的串口。发卡器默认232通讯,可以设置为485通讯。      科力德公司的发卡动态库是为集成科力德公司硬件产品(IC卡考勤机、售饭机)开发一卡通应用系统的软件开发人员提供的。使用人员可先参考附件的《科力德公司卡结构》。系统软件首先调用生成系统卡函数,获取用户密码生成系统卡,同时生成系统授权文件。该授权文件包括系统用户卡的密钥信息,和用户输入的密码。对其他发卡函数操作时,要求验证输入用户密码是否和授权文件中的用户密码一致。这种密钥体系可以保证不同的系统有不同的密钥。同一系统,不同用户卡有不同密钥。注意,系统授权文件要保存好,否则,该系统不能正常运行。系统卡用于注册硬件,传递卡片密钥信息,和系统管理员的身份识别。系统管理员出示系统卡可以通过硬件键盘更改硬件时种、工作模式等参数。注意:系统卡必须用系统白卡制作,系统白卡由科力德公司或其经销商提供。如果经销商在制作系统白卡时加入了锁卡信息,那么只有用该经销商锁过的卡才可以生成用户卡、操作员卡。      科力德公司的设备对卡片操作时只操作用户卡的一个扇区,该扇区由系统卡指定。每张系统卡对应一个系统的用户卡一个扇区的应用。系统授权文件中可以规定一个用户卡有最多15种独立的应用,对应用户卡的1—15扇区。Make_Syscard函数生成授权文件时默认用系统使用用户卡1扇区,同时在系统管理卡中指明设备注册后只认1扇区。系统确实需要一卡多用时,可以通过Copy_Syscard函数生成对应其他应用扇区的系统卡。      注意:通过科力德公司提供的卡片操作工具可以回收系统卡为系统白卡,但需确保对应的用户卡已回收和设备初始化为出厂状态。
/
本文档为【IC卡C#事例】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索