收藏 分享(赏)

CPU卡的设定与读写操作.ppt

上传人:精品资料 文档编号:10539655 上传时间:2019-11-27 格式:PPT 页数:178 大小:2.50MB
下载 相关 举报
CPU卡的设定与读写操作.ppt_第1页
第1页 / 共178页
CPU卡的设定与读写操作.ppt_第2页
第2页 / 共178页
CPU卡的设定与读写操作.ppt_第3页
第3页 / 共178页
CPU卡的设定与读写操作.ppt_第4页
第4页 / 共178页
CPU卡的设定与读写操作.ppt_第5页
第5页 / 共178页
点击查看更多>>
资源描述

1、第4章 智能(CPU)卡技术,4.1 实训6:CPU卡的设定与读写操作 4.2 CPU卡概述 4.3 典型智能卡芯片 4.4 卡操作系统COS 4.5 智能卡安全技术 4.6 CPU卡的应用系统 思考题,4.1 实训6:CPU卡的设定与读写操作,1实训目的(1) 了解CPU卡的基本组成及功能。(2) 通过最简应用系统实例了解CPU卡系统的基本工作过程。(3) 学会通过读卡器对CPU卡进行发卡、存款、扣款等基本操作。,2实训设备与器件实训设备:个人计算机、接触式IC卡读写器。实训器材:标准CPU卡。 3实训步骤及要求1) RD系列接触式IC卡读写器及CPUDEMO软件的安装(1) 按系统提示安装

2、RD系列接触式IC卡读写器及CPUDEMO软件。(2) 按标志连接RD系列接触式IC卡读写器的电源线及串口线,注意,电源+5 V与地不可接反。,2) 使用CPUDEMO软件访问SLE44C20卡(或其他的CPU卡) (1) 按使用手册的说明操作演示软件,对RD系列接触式IC卡读写器进行建立连接操作。正确连接后,在操作窗体下面的消息提示中会显示“联机”。 (2) 将SLE44C20卡插入读写器卡座,进入卡操作界面。 (3) 对SLE44C20卡进行读、写、擦除、建立文件操作,记录操作结果及操作条件,熟悉CPU卡的操作命令。 3) 使用CPUDEMO软件发放CPU卡,发卡程序如下,相关命令解释参见

3、4.6节。 send 80 0E 00 00 08 FF FF FF FF FF FF FF FF;删除MF send 80 E0 00 00 18 FF FF FF FF FF FF FF FF 0F 01 31 50 41 59 2E 53 59 53 2E 44 44 46 3031 ;建立 MF 00 A4 00 00 02 3F00 ;选择 MF send 80 E0 02 00 07 00 01 02 0F 0F 01 1E ;建立DIR文件 send 00 E2 00 08 13 61 11 4F 09 A0 00 00 00 03 86 98 07 01 50 04 50 42

4、 4F 43 ;写DIR文件:中国银行 send 00 E2 00 08 13 61 11 4F 09 D1 56 00 00 05 00 00 00 01 50 04 50 42 4F 43 ;写DIR 文件:建设银行 send 80 E0 01 00 0D 2F 01 0F 00 A0 00 00 00 03 86 98 07 01 ;建立 ADF send 80 E0 02 00 07 6F 02 05 0F 00 0A 00 ;建立DF下密钥文件 send 80 D4 00 00 0A 01 01 00 0B 0F 01 1F 33 12 34 ;安装个人密码PIN1234 send

5、80 D4 00 00 18 01 01 00 08 0F 02 2F 33 11223344556677881122334455667788,;安装外部认证密钥(DEAK):11223344556677881122334455667788 send 80 D4 00 00 18 02 01 00 00 0F 00 F0 33 11223344556677881122334455667788 ;安装消费密钥DPK send 80 D4 00 00 18 01 01 00 01 0F 00 F0 FF 11223344556677881122334455667788 ;安装圈存密钥DLK sen

6、d 80 D4 00 00 18 01 01 00 03 0F 00 F0 FF 11223344556677881122334455667788 ;安装圈提密钥DULK send 80 D4 00 00 18 01 01 00 02 0F 00 F0 FF 11223344556677881122334455667788,;安装TAC的密钥DTK send 80 D4 00 00 18 01 01 00 05 0F 00 F0 FF 11223344556677881122334455667788 ;安装应用维护密钥DAMK send 80 D4 00 00 18 01 01 00 06 0

7、F 00 F0 FF 11223344556677881122334455667788 ;安装PIN解锁密钥DPUK send 80 D4 00 00 18 01 01 00 07 0F 00 F0 FF 11223344556677881122334455667788 ;安装PIN重装密钥DRPK send 80 D4 00 00 18 01 01 00 04 0F 00 F0 FF 11223344556677881122334455667788,;安装修改透支限额密钥DUK send 80 E0 02 00 07 00 15 00 0F 0F 00 1E ;建立公共应用基本文件 send

8、 00 D6 95 00 1E A0 00 00 00 03 00 00 01 03 01 00 00 19 98 08 15 00 00 00 01 20 00 10 01 20 02 12 31 55 66 ;写公共应用基本数据文件 send 80 E0 02 00 07 00 16 00 0F 0F 00 27 ;建立持卡者基本数据文件 send 00 D6 96 00 27 00 00 53 41 4D 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 31 31 30 31 30 38 37 30 30 33 31 37 31 38

9、 39 00 00 ;写卡持有者基本数据文件 send 80 E0 02 00 07 00 18 03 0F F0 0A 17 ;建立交易明细文件 send 80 E0 02 00 07 00 01 06 00 00 00 00 ;建立电子钱包EP文件 send 80 E0 02 00 07 00 02 07 00 00 00 00 ;建立电子存折ED文件 send 80 E0 01 01 02 2F 01 ;结束建立应用(DF) send 80 E0 01 00 0D 2F 02 0f 00 D1 56 00 00 05 00 00 00 01,;建立ADF 建设银行应用 send 80 E

10、0 02 00 07 6F 02 05 0F 00 0A 00 ;建立DF下密钥文件 send 80 D4 00 00 0A 01 01 00 0B 0F 01 1F 33 12 34 ;安装个人密码PIN send 80 D4 00 00 18 02 01 00 08 0F 03 2F 33 11223344556677881122334455667788 ;安装外部认证密钥(DEAK):11223344556677881122334455667788 send 80 D4 00 00 18 02 01 00 00 0F 00 F0 33 12345678123456781234567812

11、345678 ;安装消费密钥DPK:12345678123456781234567812345678 send 80 D4 00 00 18 01 01 00 01 0F 00 F0 FF 12345678123456781234567812345678 ;安装圈存密钥DLK send 80 D4 00 00 18 01 01 00 03 0F 00 F0 FF 12345678123456781234567812345678,;安装圈提密钥DULK send 80 D4 00 00 18 01 01 00 02 0F 00 F0 FF 1234567812345678123456781234

12、5678 ;安装TAC的密钥DTK send 80 D4 00 00 18 01 01 00 05 0F 00 F0 FF 12345678123456781234567812345678 ;安装应用维护密钥DAMK send 80 D4 00 00 18 01 01 00 06 0F 00 F0 FF 12345678123456781234567812345678 ;安装PIN解锁密钥DPUK send 80 D4 00 00 18 01 01 00 07 0F 00 F0 FF 12345678123456781234567812345678 ;安装PIN重装密钥DRPK send 80

13、 D4 00 00 18 01 01 00 04 0F 00 F0 FF 12345678123456781234567812345678,;安装修改透支限额密钥DUK send 80 E0 02 00 07 00 15 00 0F 0F 00 1E ;建立公共应用基本文件 send 00 D6 95 00 1E A0 00 00 00 03 00 00 02 03 01 00 00 19 98 08 15 00 00 00 02 20 02 05 01 20 02 12 31 55 66 ;写公共应用基本数据文件 send 80 E0 02 00 07 00 16 00 0F 0F 00 2

14、7 ;建立持卡者基本数据文件 send 00 D6 96 00 27 00 00 53 41 4D 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 31 31 30 31 30 38 37 30 30 33 31 37 31 38 39 00 00 ;写卡持有者基本数据文件 send 80 E0 02 00 07 00 18 03 0F F0 0A 17 ;建立交易明细文件 send 80 E0 02 00 07 00 01 06 00 00 00 00 ;建立电子钱包EP文件 send 80 E0 02 00 07 00 02 07 00

15、 00 00 00 ;建立电子存折ED文件 send 80 E0 01 01 02 2F 02 ;结束建立应用DF send 80 E0 00 01 02 3F 00 ;结束建立MF,4) 使用CPUDEMO软件对CPU卡中的金额进行圈存操作,表4.1 CPU卡标准文件结构,这里假设:圈存密钥为11223344556677888877665544332211;个人密码PIN为1234。操作流程如下:(1) 选择应用。命令:00 A4 00 00 02(命令头)XX XX(ADF标识符)(2) 校验个人密码。命令:00 20 00 00 02(命令头)12 34(PIN)(3) 圈存初始化。命令

16、:80 50 00 01 0B(命令头)01 (圈存密钥标识)00 00 10 00(交易金额)00 00 00 00 00 01(终端机编号)返回:00 00 00 00(旧余额)00 00(联机交易序号)01(密钥版本号)00(算法标识)72 d5 a0 89(随机数)82 dc 98 07(MAC1),(4) 圈存。 计算过程密钥SessionKey。 SessionKey = DES/3DES(KEY,Data1) KEY = 11223344556677888877665544332211Data1 = 72d5a089(随机数)0000(2字节的联机交易序号)8000(补充值)计算

17、结果:SessionKey=c40123a4297d7dba, 计算MAC2。MAC2 = MAC(DES/3DES(SessionKey,Data2,InitialData)Data2 = 00001000 (4字节的交易金额) 01 (交易类型) 000000000001 (6字节的终端编号) 20010910(4字节的交易日期)130222(3字节的交易时间) InitialData = 0000000000000000计算结果:MAC2= 4e8b20d4 向卡片发送圈存指令。805200000B(命令头) 20010910 (4字节的交易日期) 130222 (3字节的交易时间)4e

18、8b20d4 (MAC2),5) 使用CPUDEMO软件对CPU卡中的金额进行消费操作消费交易命令的执行必须在ADF下进行,且此ADF下必须包含表4.1所示的文件和密钥。这里假设:消费密钥为11223344556677888877665544332211;个人密码PIN为1234。操作流程如下:(1) 选择应用。命令:00 A4 00 00 02(命令头)XX XX(ADF标识符)(2) 校验个人密码。命令:00 20 00 00 02(命令头)12 34(PIN),(3) 消费初始化。命令:80 50 01 01 0B(命令头)01 (消费密钥标识)00 00 00 10(交易金额)00 0

19、0 00 00 00 01(终端机编号)返回:00 00 10 00(旧余额)00 00(脱机交易序号)00 00 00 (透支限额)01(密钥版本号)00(算法标识)e3 98 ed 60(随机数),(4) 消费。 计算过程密钥SessionKey。SessionKey = DES/3DES(KEY,Data1)KEY = 11223344556677888877665544332211Data1 = e398ed60(随机数) 0000(2字节的脱机交易序号) 0001(终端交易序号的后2个字节)计算结果:SessionKey = e6874578af758168, 计算MAC1。MAC1

20、 = MAC(DES/3DES(Session Key,Data2,InitialData)Data2 = 00000010(交易金额)05(交易类型)000000000001(终端编号)20010910(交易日期)130222(交易时间)InitialData = 0000000000000000计算结果:MAC1= c7d12550 向卡片发送消费指令。805400000F(命令头)00000001 (终端交易序号) 20010910 (4字节的交易日期)130222(3字节的交易时间)c7d12550(MAC1),4. 实训分析与总结,图4.1 CPU卡操作界面,从界面上可分为三大部分:

21、命令输入界面、管理界面、消息界面。命令输入界面是根据ISO/IEC 7816-4标准定义的命令结构设计的输入窗口,使用时只需要在空格内填入适当的内容即可。管理界面分为文件结构和操作向导两部分,从文件结构中可以看出操作的CPU卡内部的文件结构,操作向导是操作命令的结构分解,例如在操作界面选择新建文件,在命令界面就出现新建文件的命令结构供使用者填入数据。消息界面是各种命令和操作执行的结果显示,从中可以看出命令是否正确执行。 命令应用数据单元包含两部分:固定的4个字节命令头和长度可变的命令体,其内容如表4.2所示。,表4.2 命令数据单元结构表,CLA字节指出命令的类型。INS字节表示命令编码,P1

22、和P2为具体命令参数。LC字节表示数据的长度,只用一个字节表示,取值范围为1110。如果LC为0,则表示没有数据域。LE表示期望卡返回的数据长度,由单字节表示,取值范围为1110。响应应用数据单元也包括两部分:可能存在的响应数据体(应答体)和两个状态字节(应答尾部),如表4.3所示。,表4.3 响应数据单元结构表,5实训思考与练习(1) 根据书中的命令集,设计圈提的流程图和具体程序。(2) 分析命令结构的四种情况。(3) 比较CPU卡的读写与存储卡的读写的差异,并说明CPU卡的安全性。,4.2 CPU 卡 概 述,4.2.1 CPU卡的概念在具体的应用系统中,要求智能卡内部不仅能存储信息数据,

23、还能对数据进行复杂的运算。例如,对数据进行加密运算,与智能卡读卡器、智能卡使用者等多方进行安全认证等。随着微电子技术的发展,在IC卡中嵌入中央处理器(CPU)已成为可能,配合卡中的ROM(用于存储指令代码)、RAM(随机存储器)、EEPROM(作为用户数据存储器),一张IC卡即构成了一台便携、微型、抗损的计算机。这样,整个卡系统的安全性有了质的飞跃,可以有效地防止伪造,完全能满足储蓄/信用卡和其他对安全性要求较高的应用场合的要求。由于卡中嵌入了带有CPU的微芯片,因此这种IC卡被称为智能卡或微处理器卡(CPU卡)。,4.2.2 CPU卡的硬件构成,图4.2 CPU卡的结构示意图,CPU一般为兼

24、容于8位字节长单片机(如MC68HC05、Intel8051等)的微处理器,其计算能力与最早的IBM/PC相当,它在COS(片内操作系统,Chip Operating System)的控制下,实现卡与外界的信息传输、加密/解密和判别处理等。EEPROM是用户访问的存储区,用于保存卡的各种信息、密码、密钥、应用文件等,一般大小为116 KB。,ROM用于存放CPU卡上的操作系统(COS),系统启动时从中读取数据,加载操作系统,管理整个卡上的计算机,一般大小为316 KB。RAM用于存放系统的中间处理结果及充当卡与读写器间信息交换的中间缓存器,一般大小为128 B1 KB。CPU卡通常采取DES、

25、RSA等加密/解密算法提高系统的安全性能,而这些安全算法要进行大量的数学运算,8位CPU将难以承担复杂的数学运算,因此许多CPU卡中设置了专门用于加密/解密运算的协处理器CAU。图4.3为CPU卡的存储区分配示意图。,图4.3 CPU卡的存储区分配示意图,图中制造区、发行区存放制造和发行商代码、卡的序列号等;ROM代码区存放COS;保密字区存放与文件操作权限相关的各种密码、密钥及相应的描述信息;文件区存放应用数据(文件);文件分配表则存储与文件对应的描述信息,如文件起始地址、长度、权限等。由于工艺技术要求苛刻等因素,目前世界上仅有少数几家著名半导体芯片制造商能设计生产CPU卡芯片,如美国的Mo

26、torola、Atmel等,韩国的三星,德国的Siemens,荷兰的Philips和STMicroelectronics等。表4.4描述了Siemens公司的SLE44系列CPU卡的性能特征。,表4.4 几种CPU卡芯片的主要特性参数表,表4.4 几种CPU卡芯片的主要特性参数表,4.2.3 CPU卡软件CPU卡软件建立在CPU卡应用系统的硬件基础上,由主机软件和卡软件两部分构成。其中主机软件是在与智能卡相连的计算机上运行的软件,卡软件是在智能卡自身运行的软件。1主机软件主机软件用于个人计算机和工作站服务器,访问连接的智能卡,对智能卡进行控制操作,并把卡融入到具体的应用系统中。主机软件包括终端

27、用户应用软件、支持将智能卡读写器连接到主机平台的系统软件、用户应用系统软件等。主机软件通常用高级语言编写,如C、 C+、JAVA、BASIC、COBAL、PASCAL或FORTRAN等,这些高级编程语言也是工作站和个人计算机上通常采用的语言。,2卡软件卡软件是在CPU卡内部运行的软件,通常包括操作系统、实用软件和应用软件。这种软件由嵌入到智能卡上的微处理器芯片中的汇编语言编写,或者由高级语言编写后经汇编而成。应用软件在使用智能卡的计算和数据存储功能时,觉察不到智能卡的数据完整性和数据安全性特征;而系统软件则控制和实现智能卡的数据完整性和数据安全性特征。,4.2.4 CPU卡的操作系统(COS)

28、随着IC卡从简单的同步卡发展到异步卡,从简单的EEPROM卡发展到内带微处理器的智能卡(又称CPU卡),人们对IC卡的各种要求越来越高,而卡本身所需要的各种管理工作也越来越复杂,因此就迫切地需要有一种工具来解决这一矛盾。内部带有微处理器的智能卡的出现,使得这种工具的实现变成了现实。人们利用它内部的微处理器芯片,开发了应用于智能卡内部的各种各样的操作系统,也就是将要论述的COS系统。COS的出现不仅大大地改善了智能卡的交互界面,使智能卡的管理变得容易,而且更为重要的是,使智能卡本身向着个人计算机化的方向迈出了一大步,为智能卡的发展开拓了极为广阔的道路。,COS的全称是Chip Operating

29、 System(片内操作系统),它一般是紧紧围绕着它所服务的智能卡的特点而开发的。由于不可避免地受到了智能卡内微处理器芯片的性能及内存容量的影响,因此,COS在很大程度上不同于我们通常所能见到的微机上的操作系统(例如DOS、UNIX等)。首先,COS是一个专用系统而不是通用系统,一种COS一般都只能应用于特定的某种(或者是某些)智能卡中,不同卡内的COS一般是不相同的。这是因为COS一般都是根据某种智能卡的特点及其应用范围而特定设计开发的,尽管它们在所实际完成的功能上可能大部分都遵循着同一个国际标准。其次,与那些常见的微机上的操作系统相比较而言,COS在本质上更加接近于监控程序,而不是一个真正

30、意义上的操作系统,这一点至少在目前看来仍是如此。这是因为在当前阶段,COS所需要解决的主要还是对外部的命令如何进行处理、响应的问题,这其中一般并不涉及到共享、并发的管理及处理。,COS在设计时一般都是紧密结合智能卡内存储器分区的情况,按照国际标准(ISO/IEC 7816系列标准)中所规定的一些功能进行设计、开发的。但是由于目前智能卡的发展速度很快,而国际标准的制定周期相对比较长一些,因而造成了当前智能卡的国际标准还不太完善的情况,据此,许多厂家又各自都对自己开发的COS作了一些扩充。就目前而言,还没有任何一家公司的COS产品能形成一种工业标准。因此本章将主要结合现有的国际标准,重点讲述COS

31、的基本原理以及基本功能,并适当地列举它们在某些产品中的实现方式。,COS的主要功能是控制智能卡和外界的信息交换,管理智能卡内的存储器并在卡内部完成各种命令的处理。其中,与外界进行信息交换是COS最基本的要求。在交换过程中,COS所遵循的信息交换协议目前包括两类:异步字符传输的T=0协议以及异步分组传输的T=1协议。这两种信息交换协议的具体内容和实现机制在ISO/IEC 7816-3和ISO/IEC 7816-3A3标准中作了规定;而COS所应完成的管理和控制的基本功能则是在ISO/IEC 7816-4标准中作出规定的。在该国际标准中,还对智能卡的数据结构以及COS的基本命令集作出了较为详细的说

32、明。,4.2.5 CPU卡的特点CPU卡在智能卡家族中出现的时间最晚,但最具生命力。与前述的存储器卡和逻辑加密卡相比,CPU卡具有以下显著的优势:(1) 提高数据安全性:CPU卡可以采用多种方法提高安全性,因为它可以对存储在卡中的信息的存取作出限制,可以保护软件。(2) 应用灵活性:CPU卡可以同时用于几种不同的应用。卡与系统的互相操作是受存放在卡中和系统中的软件控制的。可以对卡中的部分软件进行修改,其方法是对卡中的非易失性存储器的一部分重新编程。,(3) 应用与交易的合法性证实:当卡连到合法的系统以实现某项应用时,通过来自用户的数据(如生物特征或PIN数据)或系统的数据(如加密/解密密钥),

33、可在任何时候对持卡人或系统进行验证。(4) 价格通过有效性予以补偿:CPU卡的价格比磁卡贵,但其原始价格可通过以下因素予以补偿: 发行后,CPU卡的重构能力强,并具有同时存储几种不同应用数据的能力。 减少发行收入的损失(即由欺诈性的使用和欺诈性的仿制造成的损失)。 独立方式实现功能的能力强,因此可减少依赖于系统的花费。而且CPU卡读卡器的价格也比基于投硬币的读卡器的价格便宜。,(5) 多应用能力:因为CPU卡中有一个智能微处理器,所以可实现一种以上的应用,即一卡多用,从而可比使用多张卡节省费用。(6) 脱机能力:因为CPU卡可完全合法性检查,能存储交易的详细数据,所以不必为每一笔交易与中央计算

34、机/数据库进行通信,提高了交易速度,降低了处理费用。由此可见,CPU卡非常适合于对数据安全性及可靠性要求十分敏感的应用。目前,金融领域的信用卡、电信领域的SIM卡(移动电话身份识别卡)等已成为CPU卡应用的几个最大领域。此外,由CPU卡支持并代表的一卡多用(多功能卡)概念越来越受到人们的重视。在我国,随着金卡工程等一系列卡基应用工程的快速实施,CPU卡必将在其中扮演极为重要的角色。展望未来,CPU卡的发展及应用必将深入社会生活的各个领域,人们必将不断感悟并享受到CPU卡带来的便利、安全、快捷的一系列优质服务。,4.3 典型智能卡芯片,4.3.1 MC68HC05SC系列芯片剖析,表4.5 MC

35、68HC05SC系列芯片的概况,1芯片的组成及逻辑图,图4.4 MC68HC05SC21的逻辑图,图4.5 MC68HC05SC21的CPU寄存器组成,累加器A(8位)用于保持操作数或运算结果。变址寄存器X(8位)用于变址寻址方式,也可用作暂存寄存器。堆栈指针SP(13位)的高7位为0000011,堆栈用于保存子程序调用时的返回地址和中断处理时的机器状态,其寻址范围为00FFH00C0H,在RAM中。程序计数器(13位)指出下一条将执行的指令地址。条件码寄存器CC(5位)指出刚执行的指令的结果,对其各位说明如下:半进位位(H):执行ADD或ADC指令时,从第3位到第4位的进位;,中断屏蔽位(I

36、):当I位为1时,所有中断均被禁止;负(N):当N为1时,指出最后一次算术运算、逻辑运算或数据处理的结果为负(或第7位为逻辑1);零(Z):当Z为1时,表示最后一次算术运算、逻辑运算或数据处理的结果为零; 进位/借位(C):当C=1时,表示最后一次算术运算产生进位或借位。,图4.6 MC68HC05SC的压焊块,图4.7 存储器和寄存器的地址分配,图4.6为芯片的压焊块。用于智能卡时有6个引出端,符合标准的规定。其中VPF用于烧断熔丝,PA0为I/O端,其他4个引出端不再解释。图4.6中还有4个压焊块PB0、PB1、PB2和PB3。与PA0一起共为5个输入/输出线(见图4.4),每根线可通过编

37、程分别设定为输入线或输出线,但用于智能卡时,PB0PB3不起作用。存储器地址有13位,从0000H1FFFH,其地址分配如图4.7所示。访问ROM-0页还是ROM-1页由ROMPG位来控制,当ROMPG=1时,访问ROM-1页。但ROM-1页仅有2304 B,其余仍按ROM-0页处理。执行擦除EEPROM操作后,被擦除的EEPROM的内容为“0”;写操作只允许字节写“1”。在EEPROM中有n个字节被称为安全字节,允许在测试方式对它进行编程,而在用户方式只能读出。,芯片有两种工作方式:测试方式和工作方式。芯片出厂前处于测试方式,对它进行测试、编程和分析都比较容易。器件出厂时,被置于用户方式,由

38、于外界访问MCU受到限制,因此当器件出问题时,要对它的运行情况进行测试和分析特别困难,需要运用软件知识以及依靠制造厂和用户之间的紧密合作才能进行分析,而且一旦设置成用户方式后就不能再回到测试方式。,2MC68HC05SC的指令系统MC68HC05SC的指令系统共有59条指令,6种寻址方式,指令长度可变(13字节),数据字长度为8位。1) 寻址方式(1) 固有的(或隐含的)寻址方式:一字节指令,操作数地址隐含在指令码中,如TAX指令,其功能是将变址寄存器(X)内容传送到累加器(A),指令码为97。(2) 立即数寻址方式:二字节指令,第一字节为操作码,第二字节为8位立即数,如 “LDA # $ B

39、5”指令,其功能是将立即数B5送到累加器中。其中,#表示立即数;$表示其随后的数,用十六进制表示。这条指令的指令码为A6B5,即A6为操作码,B5为立即数,这两个字节在存储器中是相邻存放的。,(3) 直接寻址方式: 二字节指令,第一字节为操作码,第二字节为存储器地址。因为地址只有8位,所以寻址的地址范围限于00HFFH。这两个字节在存储器中是相邻存放的。(4) 扩展寻址方式:三字节指令,第一字节为操作码,第二字节和第三字节为地址码。因为地址有16位,所以可对整个存储器进行寻址。这三个字节在存储器中是相邻存放的。(5) 变址寻址方式:二字节或三字节指令(指令中分别包含一字节或二字节偏移值),访问

40、存储器的地址=变址寄存器的内容(X)+偏移值。(6) 相对寻址方式:二字节指令,通常应用于转移指令中,转移地址=(PC)+偏移值。,2) 指令系统,表4.6 MC68HC05SC的指令集,续表,续表,续表,4.3.2 芯片安全的实现为了保证智能卡的安全应用,芯片制造商与卡的发行商要明确各自的职责。芯片制造商在设计芯片时要考虑制造安全;卡的发行商要保证应用安全。1. 芯片安全的设计实现MCU包含有CPU、RAM、ROM和EEPROM等,ROM中存放操作系统及固定数据;EEPROM中存放密码和数据,有时还存放部分与应用有关的程序;RAM中仅存放一些中间结果。外界对卡发布的命令需要通过操作系统才能对

41、CPU起作用,而操作系统在ROM中,是不可能改变的,因此为安全应用提供了可靠的基础。,(1) 将RAM、ROM和EEPROM分成若干个存储区,根据安全需要可对各分区进行读保护,即在一定条件下,某些分区不允许读出,或虽允许从存储器中读出,但不能送到卡的触点上,以防被不正当窃取。对EEPROM的各个分区还可分别进行写入/擦除保护。(2) 对程序的失控采取预防性保护措施,设置多重“非正常运行状态”监视手段,以使该装置在非正常情况下停机(或采取其他保护措施)。例如,MC68HC05SC27和MC68HC05SC28设置“Watchdog”监视程序是否“逃逸(runaway)”,并强迫它回到正确的程序流

42、中。,(3) 在每个芯片的存储器中写入各不相同的序列号(跟踪数据)和密码;软件能对卡、持卡人、读写设备进行相互鉴别,使得任一方都不能进行伪造,甚至包括每一笔交易数据在内。此外还应不断探索新方法,以便应对潜在的盗用者。,2芯片安全的制造环节同样,出自安全考虑,制造商也采取了种种严密的措施。(1) 封闭的制造环境和流程,不准无关人员进入制造地区,各个工序之间严格保持独立,对产品(每个模片)进行严格的跟踪管理:或者发送给客户,或者在内部安全地销毁。其目的是防止伪造和丢失。(2) 限制接触载有客户的软件和保密规范的计算机系统和软件。每个装置可设置单独的密码。,(3) 将测试合格的芯片制成器件(模块或卡

43、)后,可运送给发行商。为保证运送过程的安全,发行商可将其自定义的密钥及算法告诉制造商,制造商按算法运算后,将结果作为“运输密钥”写入EEPROM中;发行商收到卡后,按照同一算法进行验证,通过后,才允许卡进一步工作,否则卡将自锁。在此将运输密钥介绍如下:Transport Key=TK =f (TD,CP,MP) 其中,TD是跟踪数据,CP是发行商的PIN,MP是制造商的PIN。,(1) 在制造商处生成TK,并将TK、TD写EEPROM,经过最后的测试后,断开熔丝,将器件运送给发行商,其过程如图4.8所示。,图4.8 运输密钥的生成(在制造商处),(2) 器件送到发行商处以后,在第一次加电时,从

44、器件中读出TD,送给读卡器(Reader)。根据同一算法,在读卡器中得到TK,并将TK送到器件,在器件内将器件的TK和读卡器的TK进行比较,如相等,则表示通过,其过程如图4.9所示。仅当验证通过后,才允许对卡进行进一步的操作。,图4.9 运输密钥的验证(在发行商处),3芯片的应用安全智能卡用户应对他们所控制的那部分系统(如固化在芯片上的软件以及系统的软件和硬件)采取适当的保密措施。软件保密战略包括从非常简单的到极为复杂的密码算法演算和鉴别过程,这些程序中有许多是个别用户的应用产品所独享和专用的,但也有一些简单的、普遍适用的、体现保密意识的软件开发手段。(1) 考虑软件运行到关键部分时电源(意外

45、和人为)中断后造成的后果。(2) 在软件设计中加上计数功能,限制输入错误密码的次数。(3) 在软件中加入一些程序,以保证在系统被重新设置后的特定时间里,某些特别敏感的事情(如向EEPROM写入新的数据或指令)不会不受限制地发生。,(4) 降低软件的可读性。(5) 采用以时间为基准的子程序。(6) 通过防止从EEPROM执行程序的方法,限制应用程序自我修改的能力。(7) 在软件中加入“测试”命令,以便在无需输出任何软件内容的条件下对出现的问题进行调查。(8) 控制在开发过程之中和之后了解软件和硬件的任何细节的途径。,4.4 卡操作系统COS,4.4.1 COS的体系结构 依赖于上一节中所描述的智

46、能卡的硬件环境,可以设计出各种各样的COS。但是,所有的COS都必须能够解决至少三个问题,即文件操作、鉴别与核实、安全机制。事实上,鉴别与核实和安全机制都属于智能卡安全体系的范畴,所以,智能卡的COS中最重要的两方面就是文件与安全。但再具体地分析一下,则我们实际上可以把从读写设备(即接口设备IFD)发出命令到卡给出响应的一个完整过程划分为四个阶段,也可以说是四个功能模块:传送管理器(TM)、安全管理器(SM)、应用管理器(AM)和文件管理器(FM)。其中,传送管理器用于检查信息是否被正确地传送。这一部分主要和智能卡所采用的通信协议有关;安全管理器主要是对所传送的信息进行安全性检查或处理,防止非

47、法的窃听或侵入;,应用管理器则用于判断所接收的命令执行的可能性;文件管理器通过核实命令的操作权限,最终完成对命令的处理。对于一个具体的COS命令而言,这四个阶段并不一定都是必须具备的,有些阶段可以省略,或者是并入另一阶段中;但一般来说,具备这四个阶段的COS是比较常见的。以下我们将按照这四个阶段对COS进行较为详细的论述。,在这里需要注意的是,智能卡中的“文件”概念与我们通常所说的“文件”是有区别的。尽管智能卡中的文件内存储的也是数据单元或记录,但它们都是与智能卡的具体应用直接相关的。一般而言,一个具体的应用必然要对应于智能卡中的一个文件,因此,智能卡中的文件不存在通常所谓的文件共享的情况。而

48、且,这种文件不仅在逻辑上必须是完整的,在物理组织上也都是连续的。此外,智能卡中的文件尽管也可以拥有文件名(File Name),但对文件的标识依靠的是与卡中文件一一对应的文件标识符(File Identifier),而不是文件名。智能卡中的文件名是允许重复的,它在本质上只是文件的一种助记符,并不能完全代表某个文件。,4.4.2 COS的功能模块归纳起来,CPU卡操作系统至少应具备四种基本功能:硬件资源管理功能;通信传输管理功能;应用控制管理功能;安全控制管理功能。其中每一种功能又由若干子功能组成。如按ISO的OSI参考模型分类,硬件资源管理功能属于物理层;通信传输管理功能属于数据链路层;应用控

49、制管理功能和安全控制管理功能则属于应用层。,1硬件资源管理功能,表4.7 CPU卡硬件功能表,硬件资源管理的目的就是由它统一组织、协调、指挥这些硬件的运行,为高层应用提供相应的程序接口, 使高层应用编程更容易,实现更简单、可靠。它类似于PC机上的BIOS(基本输入输出接口)功能,但比它的管理层次更高。下面重点介绍用户存储器的组织管理。1) 用户存储器的数据结构按ISO/IEC 7816标准,用户存储器的数据结构有线性固定结构(Linear Fixed)、线性可变结构(Linear Variable)、环型结构(Cyclic)、透明结构(Transparent)四种。用户可以根据应用数据的特点、

50、更新速率等因素,决定选用哪种数据结构。,(1) 线性固定结构:典型结构如定长度记录,其中每一记录的存储位置均由一个惟一的记录号标识,可以随机读写。按有关ISO/IEC标准,记录号的范围为1253。 (2) 线性可变结构:如可变长度记录,其中每一记录的存储位置均由一个惟一的记录号标识,可以随机读写。按有关ISO/IEC标准,记录号的范围为1254。(3) 环型结构:这种结构类似首尾连起来的定长度记录,不允许随机写。其中记录以某一固定顺序存放,因为记录数量有限,若超过限制数量,则新写入的数据将覆盖掉旧的数据。(4) 透明结构:二进制数据使用这种数据结构时,一般由用户寻址、管理该数据,操作系统只负责存储空间的分配。透明数据结构适用于声音、图像等超文本(Hyper Text)信息的存储。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报