接触式逻辑加密卡技术_第1页
接触式逻辑加密卡技术_第2页
接触式逻辑加密卡技术_第3页
接触式逻辑加密卡技术_第4页
接触式逻辑加密卡技术_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、接触式逻辑加密卡技术,电子与信息工程学院,提 纲,接触式逻辑加密卡存储结构与安全技术 典型卡型剖析:SLE4406卡 SLE4442卡 AT88SC1608卡 接触式逻辑加密卡的读写控制 典型卡型剖析:SLE4442卡 时序分析与读、写、密码校验程序,接触式逻辑加密卡组成,Security Memory Card,逻辑加密卡特性,组成:非易失性存储器+硬件加密逻辑; 芯片:专门为IC卡设计的芯片(ASIC); 安全性:具有安全控制逻辑,安全性能较好; 多种安全措施:PIN、EC、FUSE、TC、多存储器(ROM、PROM、EEPROM并存)、多分区存储结构。 通信协议:支持ISO7816国际标

2、准。 适用场合:有一定安全要求的场合,如IC卡电话、网吧卡、加油卡、保险卡、驾驶卡、借书卡、小额电子钱包等。,典型逻辑加密卡SLE4406,一次性使用,带加密逻辑,按位操作 计数卡(Token Memory Card),以一次性的计数方式,从写满的计数器中减“1”,直至存储单元全减为“0”为止 104位容量 ,最大可提供20 480计数单位 3字节传输密码,1位发行标志保护 常用于具有定额定价的消费系统中,如公用电话卡、预付费加油卡、停车计费卡、游乐园消费卡等,SLE4406存储分布图和计数规则,计数规则 发行后,用户区进入计数状态,为5位8进制计数器,但第5位计数器只有4位可用,因此最大计数

3、值为20480。 说明: 计数区按位写0,按字节 借位擦除,如: 11111111 00000000 擦成: 11111110 11111111,SLE4406操作方式,检查发行标志位是否为1,是则可以校验传输密码 先将密码计数器-1,然后比较密码,校验正确则密码计数器恢复,允许写入发行商代码,将控制位写为0(发行)。允许初始化计数器(擦除第2-5字节并重新写入),此操作将撕毁传输密码并不可恢复。 一旦控制位为0,表示已发行,将不能再更改发行商代码。第2-5字节成为5位计数器,只能写0及借位擦除。,SLE4406保密特性,典型逻辑加密卡SLE4442,按字节操作,可反复应用 多存储器结构 *位

4、 型主存储器。 *1位 型保护存储器。 * 位 型加密存储器 安全性:用户密码(3字节)+密码错误计数(3次)+PROM保护 线串行连接协议,满足 ISO7816同步传送协议,SLE4442存储结构,SLE4442存储器分配(一),主存储器(main memory):EEPROM型,256B 按字节操作,字节地址0255(00HFFH), 所有单元可任意读取。 主存储器可分为两个数据区: 保护数据区:00H-1FH,用户密码+熔丝保护(擦除、写 当校验用户密码正确且熔丝未熔断时允许进行擦除和写入操作,否则不允许 熔丝:保护存储器中第n位(n=031)对应主存储器中第n个字节,1未熔断,0熔断。

5、 应用数据区 :20H-FFH。用户密码保护(擦除、写),SLE4442存储器分配(二),保护存储器(protection memory):PROM型,32bits 按位操作,位地址031 每位相当于主存储器保护数据区对应字节单元的控制熔丝(FUSE),相应位为1时该字节可擦写,为0时不可 保护存储器可任意读出,但需校验密码正确方能写入,一经写入(从1变为0)不可再擦除,可理解为FUSE一经熔断不可再恢复。,SLE4442存储器分配(三),加密存储器(security memory): EEPROM型,4B 按字节操作,字节地址03 字节0:(Error Counter),低3位有效, 可任意

6、读、写, 用户密码校验成功方可擦除。 字节1,2,3:3字节 PSC(可编程加密代码) PSC校验成功前不可读,只能进行比较操作; 密码“比较”成功后才可以进行读出、写入和擦除。,典型逻辑加密卡AT88SC1608,按字节操作,可反复应用 存储容量:16Kbits 安全性:三重密码+熔丝+读写控制位 单存储器、多存储分区结构 标志数据区:制造商、发行商代码。 控制数据区:SC(2字节)、EC、Erase key。 应用数据区:4个、各自独立 线串行连接协议,满足 ISO7816同步传送协议,SC1 一区密码,AT88SC1608存储器分配(一),标志数据区:验证卡片真伪的重要标识 制造商代码区

7、FZ (Fabrication Zone ),2B 记录卡芯片生产商的特定信息(例如:生产批号、日期、特别制定的特征代码) FUSE1熔断前,可读,可更改 FUSE1熔断后,只读,不可更改 发行商代码区IZ (Issuer Zone ),8B 用于记录卡片发行商的特定信息(例如:发行批号、日期、地区范围编号、特定用户编号等特征代码) FUSE2熔断前,可读,可更改 FUSE2熔断后,只读,不可更改,AT88SC1608存储器分配(二),控制数据区:三重密码+密码错误计数 用户密码SC(Security Code),2B 用户密码错误计数SCAC(Security Code Attempts C

8、ounter ),1B (8次) 应用区密码 SC1 SC4,2B 应用区密码错误计数SCAC1 SCAC4,8次 应用区擦除密码EZ14(Erase key ),2B 应用区擦除密码错误计数EnAC (Erase key Attempts Counter ,=1,2,3,4), 8次,AT88SC1608存储器分配(三),应用数据区:14,各自独立,特性相同 存储用户的相关数据记录 。 第1位为写保护位(P1) ;第2位为读保护位(R1),均为1有效(可读/写),实训3 接触式逻辑加密卡读写操作,准备: 确认电源正、负极,按标志正确连接接触式IC卡读写器的电源线及串口线,注意电源+5V与地不

9、可接反。 打开接触式IC卡读写器读写操作软件DEMO,确认通信正常。 将实验白卡插入接触式IC卡读写器插卡槽,自动测卡进入卡操作界面。 SLE4442卡密码:FFFFFFH AT88SC1608卡密码:F0F0H或A5A5H,SLE4442读写操作,读卡:记录卡密码、卡错误计数值,主存储器存储结构(各区域名称、地址范围、字节数)、存储内容和读出条件。 写卡:对主存储器各区域进行写入/擦除操作,记录操作结果,总结各区域写入/擦除条件。 密码操作: (1)修改密码:在未通过和已通过密码校验二种情况下分别修改密码,记录操作结果,总结修改密码的条件。 (2)恶意猜测密码:在未通过密码校验的情况下输入错

10、误密码,记录此时的读卡、写卡结果。 注意: 修改密码后必须及时还原密码为FFFFFFH。 猜测密码错误次数不得超过2次!以免锁卡!,AT88SC1608读写操作,读卡:在未通过和已通过密码校验二种情况下记录存储器存储结构(各区域名称、地址范围、字节数)、存储内容和读出条件。 写卡:在未通过和已通过密码校验二种情况下对存储器各区域进行写入/擦除操作,记录操作结果,总结各区域写入/擦除条件。 熔丝操作:模拟熔断,对存储器各区域进行写入/擦除操作,记录操作结果,总结熔断操作对各区域的保护作用。 注意: 修改密码后必须及时还原密码。 猜测密码错误次数不得超过8次!以免锁卡! 只允许模拟熔断,不可熔断,

11、否则将无法恢复。,任 务,设计IC卡网吧收费机 基本要求: 1、判断是否SLE4442卡 2、读卡,根据读出的发行商标志判断是否本网吧的卡。读出卡中余额,判断是否允许上网。 3、校验密码,密码正确为合法卡。 4、写卡,扣款后允许上网,时间到则继续扣款,直至停止上网或余额不足。 进阶要求 实现网吧收费机与PC机的通信,硬件设计SLE4442引脚分配,C1:Vcc(Supply Voltage) C2: RST(Reset) C3:CLK(Serial Clock) C4: (NC) C5:GND C6:I/O(Bidirectional serial data ,open drain) C7:

12、(NC) C8: (NC),SLE4442接口电路,软件设计SLE4442操作时序,通信协议:2线连接协议,满足ISO7816同步传送协议 数据传输:CLK信号下降沿有效。 复位和复位响应(Reset and Answer-to-Reset): 上电后启动芯片,符合7816 命令(Command): 命令=开始+(控制字+地址字+数据字)+附加脉冲+停止 操作模式(Mode): 读数据:输出数据模式(OUTGOING DATA MODE): 写入、擦除、校验:处理模式(PROCESSING MODE),复位和复位响应(Reset and Answer-to-Reset):SLE4442上电后,

13、读写器首先应给出复位(Reset)命令并等待接收来自卡的复位响应ATR(Answer-To-Reset)。,复位和复位响应 (Reset and Answer-to-Reset),复位响应:符合 ISO78163标准的ATR 当RST为高时,送第一个时钟脉冲(脉冲0)使地址计数器清0(复位)。 当RST线从高状态(H状态)置到低状态(L状态)时,第一个数据位(主存储器字节0的LSB)的内容被送到I/O上。若连续输人32个时钟脉冲(脉冲132),主存储器中的前4个字节(4 * 8位= 32位)地址单元中的内容被读出(复位响应)。 在第 33个时钟脉冲(脉冲32)的下降沿,IO线被置成高阻状态(状

14、态Z)而关闭(复位和复位响应过程结束),;*复位子程序* * RESET: CLR RST CLR CLK CLR IO LCALL DELAY_12 LCALL DELAY_12 SETB RST LCALL DELAY_12 SETB CLK LCALL DELAY_12 CLR CLK LCALL DELAY_12 CLR RST LCALL DELAY_12,MOV B,#20H RESET0:SETB CLK LCALL DELAY_12 CLR CLK LCALL DELAY_12 DJNZ B,RESET0 SETB IO RET,如何读出复位应答呢,;4442 串行输出一个字节

15、子程序,即MCU读入一个字节 SHIN: CLR CLK PUSH B MOV B,#08H X43: LCALL DELAY SETB CLK MOV C,IO RRC A LCALL DELAY CLR CLK DJNZ B,X43 POP B RET,将RESET程序中的32个脉冲换为 调用SHIN子程序4次,读入4个字节的ATR,命令(Command),复位响应以后,芯片等待着命令。 命令=开始+(控制字+地址字+数据字)+附加脉冲+停止 。 开始:在CLK为高状态(H)期间,I/O的下降沿为开始状态。 停止:在CLK为高状态(H)期间,I/O的上升沿为停止状态。,SLE4442操作命

16、令,;*命令子程序* ;该子程序送出三字节的SLE4442命令 ;入口参数:COM为控制字,ADDR为地址字,DAT为数据字 COMMAND:SETB CLK LCALL DELAY_12 CLR IO ;开始 LCALL DELAY CLR CLK LCALL DELAY MOV A,COM ;送命令字 LCALL SHOUT MOV A,ADDR ;送地址字 LCALL SHOUT MOV A,DAT ;送数据 LCALL SHOUT LCALL DELAY CLR IO LCALL DELAY SETB CLK ;附加脉冲 LCALL DELAY SETB IO ;停止 RET,怎样向卡

17、中写入一个字节?,; sle4442 串行输入一个字节函数, 即MCU向卡写入一字节 SHOUT: PUSH B MOV B,#08H X42: RRC A MOV IO,C NOP SETB CLK LCALL DELAY CLR CLK LCALL DELAY DJNZ B,X42 POP B RET,操作模式 (Mode),接收了一个命令之后,卡芯片处于 两种可能的模式: (1)读数据:输出数据模式; (2)写入、擦除、校验密码:处理模式。,输出数据(OUTGOING)模式,将IC卡芯片中的数据传送给读写器 在第一个CLK脉冲的下降沿之后,I/O线上的第一位数据变为有效。随后每增加一个时

18、序脉冲,芯片内部的一位数据被送到I/O线上,低位(LSB)在前。当所需要的最后一个数据送出之后,需要再附加一个时钟脉冲来把I/O线置成高阻状态(状态Z)。,处理数据(PROCESSING)模式,对IC卡芯片作内部处理(写/擦除/校验密码) 芯片在第一个时钟脉冲的下降沿,将IO线从高状态(H状态)拉到低状态(L状态)并开始处理。此后芯片在内部连续计时计数,直到第n个时钟脉冲之后的附加一个时钟脉冲的下降沿IO线被再次置高,完成芯片的处理过程。在整个处理过程中IO线被锁定成低状态。,;sle4442处理模式子程序 PROCESS: MOV R7,#254D CLR CLK CLR IO LCALL

19、DELAY PRO1:SETB CLK LCALL DELAY CLR CLK LCALL DELAY DJNZ R7,PRO1 SETB IO LCALL DELAY SETB CLK LCALL DELAY CLR CLK RET,读主存储器 Read Main Memory,命令格式:30H +字节地址+ * 模式:OUTGOING 功能:读出从给定的字节地址(N)开始,直到整个存储器末尾的主存储器内容。 说明:在该命令输入以后,接口设备IFD必须提供足够的时钟脉冲,起始地址为N时所需要的时钟脉冲数为 M=(256-N)* 81 (N=0255) 例如:地址为7EH(N=254),M=1

20、7,;*读主存储器子程序* READ: MOV COM,#30H ;设置读主存储器控制字 MOV ADDR,#R_ADDR ;取读主存储器首地址 MOV DAT,#00H ;设置读主存储器数据字(任意) MOV R4,NUM ;数据个数 LCALL COMMAND ;送命令给卡 READ0:LCALL SHIN ;读数据(输出数据模式) MOV R0,A ;送数据入数据缓冲区 INC R0 DJNZ R4,READ0 ;未读完继续,SETB CLK ;发送一个附加脉冲 LCALL DELAY CLR CLK LCALL DELAY SETB IO ;置位数据线 LCALL DELAY RET,

21、读保护存储器 Read Protection Memory,命令格式:34H +* + * 模式:OUTGOING 功能:读出保护存储器各位(共32位)的内容。 说明:在该命令输入以后,接口设备IFD必须提供32个时钟脉冲,最后通过一个附加时钟脉冲将I/O线置为高状态(H状态) ,即M=33,读加密存储器 Read Security Memory,命令格式:3lH +* + * 模式:OUTGOING 功能:类似于读保护存储器,可以读出4个字节的加密存储器的内容。M=33 说明:密码比较失败时只能读出错误计数器(字节0)的内容,字节1、2、3的内容将为000000(即不能读出密码),修改主存储

22、器 Updata Main Memory,命令格式:38H +字节地址+ 数据 模式:PROCESSING 功能:用所给出的数据修改主存储器指定字节地址(N)的内容 说明:通常,要改变一个数据需要先进行擦除,再进行写入两项操作。如果在被寻址的字节里位中没有一个字位需要从变到,则可以不进行擦除处理。反之亦然,在被寻址的字节中,如果没有一个字位需要从变到,则可以不作写入处理,写人或擦除操作一次至少要耗费.时间 。因此,在处理模式期间,可能发生下列几种情况之一: 擦除和写入(5ms): 相应于M256个时钟脉冲 只写入不擦除(2.5ms): 相应于 M= 124个时钟脉冲 只擦除不写入(2.5ms)

23、: 相应于M124个时钟脉冲。,;*修改主存储器子程序* WRITE: MOV R4,NUM ;取要写的字节数 MOV COM,#38H ;设置修改主存储器控制字 WRITE0: MOV ADDR,#W_ADDR ;取修改主存储器首地址 MOV A,R0 MOV DAT,A ;取修改主存储器数据字 LCALL COMMAND ;送修改主存储器命令给卡 LCALL PROCESS ;处理模式 INC W_ADDR ;地址字指向主存储器下一个单元 INC R0 ;指向下一个数据 DJNZ R4,WRITE0 ;未写完继续 RET,修改加密存储器 Updata Security Memory,命令格

24、式:39H +字节地址+ 数据 模式:PROCESSING 功能:用所给出的数据修改加密存储器指定字节地址的内容(即修改错误计数器或修改密码) 说明:该命令只能在PSC比较成功之后才能进行。该命令的执行时间和所需要的时钟脉冲与修改主存储器的情况相同,写保护存储器 Write Protection Memory,命令格式:3CH +字节地址(00H1FH)+ 输入的数据 模式:PROCESSING 功能:这一命令的执行过程包含一个把被输入的数据与在EEPROM中对应数据进行比较的过程。在确认一致的情况下,保护字位被写0,从而使得主存储器中的信息不可更改。如果数据比较结果不一致,则保护字位的写操作

25、将被禁止执行。 说明:该命令所要求的时钟脉冲和执行时间与修改主存储器命令的情况相同。,比较校验数据 Compare Varification Data,命令格式:33H +字节地址+ 数据 模式:PROCESSING 功能:把输入的“用户密码”的各个字节与相对应的PSC(存放在加密存储器中)进行比较 说明:字节地址为01H03H,数据为用户密码,读EC,写EC的一位为0,EC=000?,校验三字节的密码,擦除EC,读EC,EC=111?,Y,Y,N,N,校验通过,校验不成功 EC中1的个数= 允许重试的次数,卡被锁死,PSC校验流程,PSC校验的过程并不是仅由比较校验数据命令来完成的,而是由多

26、个命令构成的一个流程来共同完成, 流程一:用一个修改加密存储器命令将密码错误计数器中的一位写0。 流程二:连续用三条比较校验数据命令比较输入的用户密码与加密存储器中存储的密码。比较从字节1开始。 流程三:校验密码成功与否是用能否擦除密码错误计数器来证实的。如果校验成功,则擦除操作执行有效;如果校验不成功,擦除操作执行无效,密码错误计数器将不会恢复为“111”。但只要EC不全为0,就允许读写器对芯片进行重试。,;*PSC校验子程序* COMP: MOV COM,#31H ;设置读加密存储器命令控制字 MOV ADDR,#00H ;设置读加密存储器命令地址字(00H为错误计数器) MOV DAT,

27、#00H ;设置读加密存储器命令数据字(任意) LCALL COMMAND ;送读加密存储器命令 LCALL SHIN ;读错误计数器 MOV 23H,A ;错误计数器值暂存(23H)单元 LCALL SHIN ;继续读入加密存储器后3个字节 MOV 24H,A LCALL SHIN MOV 25H,A LCALL SHIN MOV 26H,A MOV A,23H SETB IO ;附加一个脉冲,置数据线为高 LCALL DELAY SETB CLK LCALL DELAY CLR CLK,JB ACC.0,NEXT0 ;判断错误计数器中是否还有“1” ;JB ACC.1,NEXT1 ;如有“

28、1”则减去一个“1”, ;JB ACC.0,NEXT2 LJMP EXIT1 ;错误计数器为全“0”退出 NEXT0:MOV DAT,#06H AJMP COMP0 NEXT1:MOV DAT,#04H AJMP COMP0 NEXT2:MOV DAT,#00H COMP0:MOV COM,#39H ;设置修改加密存储器命令控制字 MOV ADDR,#00H ;设置修改加密存储器命令地址字(错误计数器) LCALL COMMAND ;送修改加密存储器命令(错误计数器减一个1) LCALL PROCESS ;处理模式,MOV COM,#33H ;设置PSC校验命令控制字 MOV ADDR,#01

29、H ;设置PSC校验命令地址字 MOV DAT,#PSC1 ;取PSC第一个字节 LCALL COMMAND ;送PSC校验命令给卡 LCALL PROCESS ;处理模式 MOV COM,#33H ;设置PSC校验命令控制字 MOV ADDR,#02H ;设置PSC校验命令地址字 MOV DAT,#PSC2 ;取PSC第二个字节 LCALL COMMAND ;送PSC校验命令给卡 LCALL PROCESS ;处理模式 MOV COM,#33H ;设置PSC校验命令控制字 MOV ADDR,#03H ;设置PSC校验命令地址字 MOV DAT,#PSC3 ;取PSC第三个字节 LCALL C

30、OMMAND ;送PSC校验命令给卡 LCALL PROCESS ;处理模式,MOV COM,#39H ;设置修改加密存储器命令控制字 MOV ADDR,#00H ;设置修改加密存储器命令地址字(错误计数器) MOV DAT,#07H ;取修改加密存储器命令数据字(擦除错误计数器) LCALL COMMAND ;送修改加密存储器(擦除错误计数器)命令给卡 LCALL PROCESS ;处理模式 MOV COM,#31H ;设置读加密存储器命令控制字 MOV ADDR,#00H ;设置读加密存储器命令地址字(错误计数器) MOV DAT,#00H ;设置读加密存储器命令数据字(任意) LCALL COMMAND ;送读加密存储器命令给卡 LCALL SHIN ;读加密存储器的错误计数器 MOV 23H,A,LCALL SHIN ;读加密存储器的后三个字节 MOV 24H,A LCALL SHI

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论