IC卡读写器的编程和使用

2013-10-07 12:59:57 重庆诺塔斯智能科技有限公司 637

      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卡兼工作证,医疗证,工资卡和就餐卡.在不同场合使用此卡时读写器分别核实各分区密码,仅操作本区数据,而不影响其它分区.