卡技术在应用系统开发中的运用

来源:互联网 发布:mac twisted 编辑:程序博客网 时间:2024/05/17 03:53

摘要 主要介绍IC卡技术的特点,及其如何运用到实际应用系统

关键字 IC卡,动态库,密码

IC卡技术已经广泛应用于金融、保险、社会保障、身份识别等领域。她以她存储容量大,安全性能好,携带方便等特点,得到广大行业的普遍认同。

  IC卡应用从技术角度来讲分三个层次:硬件层、技术层和应用层。

硬件层分两个方面:

1)         IC卡芯片及卡的制作。IC卡芯片目前主要有国外爱尔梅特、西门子等几家公司生产。IC卡片的制作是把IC芯片封装成为一张张各式各样的卡片,这样的公司国内很多.

2)         另一方面为IC卡读写器.IC卡读写器粪通用与专用两种:通用读写器为一台单独的装置,可以用来读取不同型号的IC卡.专用读写器通常嵌入专用仪器中,例如:IC卡电话机,IC卡电表等,一般只能读取某种特定IC卡.对于上述行业中,IC卡读写器一般采用通用读写器,生产这种IC卡读写器公司,国内已经有一些,比如深圳的明华粤汉公司.但传统的通用读写器一般是把一张IC卡插入读写器中,IC卡上的密码和对于数据读取都由读写器以外的应用程序来完成,这样在一定程度上用户的信息就暴露给了应用程序的开发与维护人员.未了解决用户信息的安全过分依赖于应用程序的问题,现在已经研制出一种双卡座IC卡读写器,这种读写在原来读写器基础上增加了一个SAM卡座,用来插智能存储卡(CPU卡),SAM卡上带有加密解密程序,SAM能对用户的密钥进行加密与解密存取,核对卡上密码,加密解密存取卡中数据.这样在一定程度上隔离了IC卡的安全系统与应用程序系统之间的关系,保证了IC卡的用户独立性.

接口层

应用系统要通过IC卡读写起来读写IC卡中的数据,这就需要IC卡读写器向应用系统提供一个读写接口,现在IC卡读写器的接口一般有普通串口,USB接口,以及无线接口,因此IC卡读写器的开发人员就的为应用系统开发人员提供一套接口程序,目前在WINDOWS平台上普遍采用提供一组动态连接库(dll)给应用系统开发人员.应用系统开发人员就调用动态连接库中函数来完成对IC卡的操作.采用普通串口读写器动态库主要完成是串口通讯的功能。

IC_DLL动态库大体设计思路如下:

IC_DLL动态库主要用来与IC卡读写器之间进行通讯,可以通过串口或并口,具体通讯方式是:IC_DLL动态库向串口或并口发送与读写器协调一致的通讯信号,而读写器则从串口接收这些通讯信号,然后根据这些通讯信号来对IC卡进行具体操作,真正直接操作IC卡是读写器,而IC_DLL动态库是利用串口或并口来操作读写器的函数库。

IC_DLL动态库大体设计方法如下:

(1)与串口的底层接口:

利用WINDOWS对硬件设备的抽象:在WINDOWS 环境下,WINDOWS对硬件设备的管理采用设备文件方式。在IC_DLL动态库中建立一个与串口或并口相关联的通讯设备文件gFile,通过读写设备文件来实现对串口或并口数据的接收与发送。

另外,利用WINDOWS的底层通讯结构COMMTIMEOUTS,DCB,COMSTAT来对通讯设备的属性进行访问与设置。

(2)IC_DLL动态库内部函数的处理机制

利用c语言丰富而强大的对内存管理和对字节的处理功能,另外还利用c语言丰富的数据类型,很方便的实现对IC卡上的存储地址的计算和数据的移位操作;利用移位操作和位操作可以实现数据在二进制位上的加密和校验,IC_DLL动态库内部对发送到串口或并口上的数据都在二进位上进行了加密,以防在串口或并口上窃取数据。

(3)IC_DLL动态库与高层接口

    IC_DLL动态库采用传递参数和调用函数返回值来与高层通讯,并对高层传递过来的参数有一个合法性检查,对底层返回错误有错误处理机制和错误提示信息,对与高层使用者来说,底层与本层的处理和错误是透明的,高层使用者只须通过调用函数的返回值来判定此次操作成功与否。

应用层

各种行业的应用系统中是如何利用IC卡来存储与操作用户向关数据?这就要事先对IC卡上的存储空间根据用户数据进行规划,下面举一个在医疗保险系统中对1604卡的使用与规划情况:

二、IC卡的应用实例:加密存储卡1604卡在医保信息系统中的应用

1  1604卡的特点:

—      逻辑加密存储芯片

—      属于单存储器多逻辑分区结构。主存储器划分了特定的标志数据区和控制数据区之外,还将应用数据区分成四个完全隔离的子区,并在每个子区中配备了各自的读、写控制标志和写入/擦除密码以及密码输入错误计数器等逻辑控制。

—      芯片为串行传输方式,并满足ISO7816-3同步传送协议。采用低功耗的CMOS工艺制造,每字节的读取时间为2us,写周期为5ms。

—      内部设计有电压提升电路,保证使用单+5V电源电压能够完成对芯片的读写和擦除等各类编程操作。

芯片的存储单元具有至少10000次的擦除/改写循环次数,数据保存期为10年。

芯片的存储分区及其定义[1]

3  IC卡的密码系统

1)  使用SC作为用户密码

2)  应用SCn、EZn为应用系统的密码控制,同时也可用来作为卡片防伪控制

3)  设置Pn=0、Rn=0,这样使得,要读数据必须在本应用系统才可读数,要进行修改数据操作必须还要核对EZn才可。

4)  各个应用系统分别有自己的两个密码(SCn、EZn),使得应用系统之间数据具有安全性。

注意:由于所有卡片的SCn、EZn都完全相同,那么系统对于这两个密码的保护就相当重要,它称为系统安全性的唯一保证,可以采取其它密码保护措施。

4  IC卡的个人化操作

         1)个人化流程,如图1所示。

图 1

2)密码控制

用户密码只有一个,但不同的应用系统分别对这个用户密码使用DES算法将会产生不同的结果,这样可以保证不同的应用系统,不可对其它应用系统的数据进行修改。但这带来的一个问题是,用户修改密码必须在总发行机构,必须同时对所有应用系统使用DES算法重新计算一次。

个人化之前:
   (1)只有总密码,总密码可读,四个分区密码无效(即核对无效),但可以设置密码
   (2)制造商代码区不能修改,其它所有区域均可读写擦,只由总密码控制
  个人化之后:
   (1)总密码不可读,四个分区密码有效,所有密码均不可读
   (2)发行区、个人代码区不可修改,但可读
   (3)一区密码有错误计数器,其它分区密码没有错误计数器。

         (4) 错误计数达到8次,则IC卡锁死。

4)用户数据存储规划:

用户数分四个部分:

a.版本信息:应用一区的前两个字节.

b.用户基本信息: 应用一区的前512各字节.

c.用户就诊结算数据: 应用一区的剩下字节.

d.用户身份识别数据:应用二区

5IC卡的使用方法:如图2所示

原创粉丝点击