《接触式逻辑加密卡技术课件.ppt》由会员分享,可在线阅读,更多相关《接触式逻辑加密卡技术课件.ppt(67页珍藏版)》请在三一办公上搜索。
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位可用,因此最大计数值为20480
3、。说明:计数区按位写0,按字节 借位擦除,如:11111111 00000000擦成:11111110 11111111,SLE4406操作方式,检查发行标志位是否为1,是则可以校验传输密码先将密码计数器-1,然后比较密码,校验正确则密码计数器恢复,允许写入发行商代码,将控制位写为0(发行)。允许初始化计数器(擦除第2-5字节并重新写入),此操作将撕毁传输密码并不可恢复。一旦控制位为0,表示已发行,将不能再更改发行商代码。第2-5字节成为5位计数器,只能写0及借位擦除。,SLE4406保密特性,典型逻辑加密卡SLE4442,按字节操作,可反复应用多存储器结构*位 型主存储器。*1位 型保护存储
4、器。*位 型加密存储器 安全性:用户密码(3字节)+密码错误计数(3次)+PROM保护 线串行连接协议,满足 ISO7816同步传送协议,SLE4442存储结构,SLE4442存储器分配(一),主存储器(main memory):EEPROM型,256B 按字节操作,字节地址0255(00HFFH),所有单元可任意读取。主存储器可分为两个数据区:保护数据区:00H-1FH,用户密码+熔丝保护(擦除、写 当校验用户密码正确且熔丝未熔断时允许进行擦除和写入操作,否则不允许 熔丝:保护存储器中第n位(n=031)对应主存储器中第n个字节,1未熔断,0熔断。应用数据区:20H-FFH。用户密码保护(擦
5、除、写),SLE4442存储器分配(二),保护存储器(protection memory):PROM型,32bits 按位操作,位地址031 每位相当于主存储器保护数据区对应字节单元的控制熔丝(FUSE),相应位为1时该字节可擦写,为0时不可保护存储器可任意读出,但需校验密码正确方能写入,一经写入(从1变为0)不可再擦除,可理解为FUSE一经熔断不可再恢复。,SLE4442存储器分配(三),加密存储器(security memory):EEPROM型,4B按字节操作,字节地址03字节0:(Erroe Counter),低3位有效,可任意读、写,用户密码校验成功方可擦除。字节1,2,3:3字节
6、PSC(可编程加密代码)PSC校验成功前不可读,只能进行比较操作;密码“比较”成功后才可以进行读出、写入和擦除。,典型逻辑加密卡AT88SC1608,按字节操作,可反复应用存储容量:16Kbits安全性:三重密码+熔丝+读写控制位单存储器、多存储分区结构 标志数据区:制造商、发行商代码。控制数据区:SC(2字节)、EC、Erase key。应用数据区:4个、各自独立线串行连接协议,满足 ISO7816同步传送协议,SC1一区密码,AT88SC1608存储器分配(一),标志数据区:验证卡片真伪的重要标识 制造商代码区FZ(Fabrication Zone),2B 记录卡芯片生产商的特定信息(例如
7、:生产批号、日期、特别制定的特征代码)FUSE1熔断前,可读,可更改 FUSE1熔断后,只读,不可更改 发行商代码区IZ(Issuer Zone),8B 用于记录卡片发行商的特定信息(例如:发行批号、日期、地区范围编号、特定用户编号等特征代码)FUSE2熔断前,可读,可更改 FUSE2熔断后,只读,不可更改,AT88SC1608存储器分配(二),控制数据区:三重密码+密码错误计数用户密码SC(Security Code),2B 用户密码错误计数SCAC(Security Code Attempts Counter),1B(8次)应用区密码 SC1 SC4,2B 应用区密码错误计数SCAC1 S
8、CAC4,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与地不可接反。打开接触式IC卡读写器读写操作软件DEMO,确认通信正常。将实验白卡插入接触式IC卡读写器插卡槽,自动测卡进入卡
9、操作界面。SLE4442卡密码:FFFFFFH AT88SC1608卡密码:F0F0H或A5A5H,SLE4442读写操作,读卡:记录卡密码、卡错误计数值,主存储器存储结构(各区域名称、地址范围、字节数)、存储内容和读出条件。写卡:对主存储器各区域进行写入/擦除操作,记录操作结果,总结各区域写入/擦除条件。密码操作:(1)修改密码:在未通过和已通过密码校验二种情况下分别修改密码,记录操作结果,总结修改密码的条件。(2)恶意猜测密码:在未通过密码校验的情况下输入错误密码,记录此时的读卡、写卡结果。注意:修改密码后必须及时还原密码为FFFFFFH。猜测密码错误次数不得超过2次!以免锁卡!,AT88
10、SC1608读写操作,读卡:在未通过和已通过密码校验二种情况下记录存储器存储结构(各区域名称、地址范围、字节数)、存储内容和读出条件。写卡:在未通过和已通过密码校验二种情况下对存储器各区域进行写入/擦除操作,记录操作结果,总结各区域写入/擦除条件。熔丝操作:模拟熔断,对存储器各区域进行写入/擦除操作,记录操作结果,总结熔断操作对各区域的保护作用。注意:修改密码后必须及时还原密码。猜测密码错误次数不得超过8次!以免锁卡!只允许模拟熔断,不可熔断,否则将无法恢复。,任 务,设计IC卡网吧收费机基本要求:1、判断是否SLE4442卡2、读卡,根据读出的发行商标志判断是否本网吧的卡。读出卡中余额,判断
11、是否允许上网。3、校验密码,密码正确为合法卡。4、写卡,扣款后允许上网,时间到则继续扣款,直至停止上网或余额不足。进阶要求 实现网吧收费机与PC机的通信,硬件设计SLE4442引脚分配,C1:Vcc(Supply Voltage)C2:RST(Reset)C3:CLK(Serial Clock)C4:(NC)C5:GNDC6:I/O(Bidirectional serial data,open drain)C7:(NC)C8:(NC),SLE4442接口电路,软件设计SLE4442操作时序,通信协议:2线连接协议,满足ISO7816同步传送协议数据传输:CLK信号下降沿有效。复位和复位响应(R
12、eset and Answer-to-Reset):上电后启动芯片,符合7816命令(Command):命令=开始+(控制字+地址字+数据字)+附加脉冲+停止 操作模式(Mode):读数据:输出数据模式(OUTGOING DATA MODE):写入、擦除、校验:处理模式(PROCESSING MODE),复位和复位响应(Reset and Answer-to-Reset):SLE4442上电后,读写器首先应给出复位(Reset)命令并等待接收来自卡的复位响应ATR(Answer-To-Reset)。,复位和复位响应(Reset and Answer-to-Reset),复位响应:符合 ISO7
13、8163标准的ATR当RST为高时,送第一个时钟脉冲(脉冲0)使地址计数器清0(复位)。当RST线从高状态(H状态)置到低状态(L状态)时,第一个数据位(主存储器字节0的LSB)的内容被送到I/O上。若连续输人32个时钟脉冲(脉冲132),主存储器中的前4个字节(4*8位=32位)地址单元中的内容被读出(复位响应)。在第 33个时钟脉冲(脉冲32)的下降沿,IO线被置成高阻状态(状态Z)而关闭(复位和复位响应过程结束),;*复位子程序*RESET:CLR RST CLR CLK CLR IO LCALL DELAY_12 LCALL DELAY_12 SETB RST LCALL DELAY_
14、12 SETB CLK LCALL DELAY_12 CLR CLK LCALL DELAY_12 CLR RST LCALL DELAY_12,MOV B,#20HRESET0:SETB CLK LCALL DELAY_12 CLR CLK LCALL DELAY_12 DJNZ B,RESET0 SETB IO RET,如何读出复位应答呢,;4442 串行输出一个字节子程序,即MCU读入一个字节SHIN:CLR CLK PUSH B MOV B,#08HX43:LCALL DELAY SETB CLK MOV C,IO RRC A LCALL DELAY CLR CLK DJNZ B,X4
15、3 POP B RET,将RESET程序中的32个脉冲换为调用SHIN子程序4次,读入4个字节的ATR,命令(Command),复位响应以后,芯片等待着命令。命令=开始+(控制字+地址字+数据字)+附加脉冲+停止。开始:在CLK为高状态(H)期间,I/O的下降沿为开始状态。停止:在CLK为高状态(H)期间,I/O的上升沿为停止状态。,SLE4442操作命令,;*命令子程序*;该子程序送出三字节的SLE4442命令;入口参数:COM为控制字,ADDR为地址字,DAT为数据字COMMAND:SETB CLK LCALL DELAY_12 CLR IO;开始 LCALL DELAY CLR CLK
16、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,怎样向卡中写入一个字节?,;sle4442 串行输入一个字节函数,即MCU向卡写入一字节SHOUT:PUSH B MOV B,#08HX42:RRC A MOV IO,C NOP SETB CLK LCALL DELAY CLR CLK LCALL DELAY DJNZ
17、 B,X42 POP B RET,操作模式(Mode),接收了一个命令之后,卡芯片处于 两种可能的模式:(1)读数据:输出数据模式;(2)写入、擦除、校验密码:处理模式。,输出数据(OUTGOING)模式,将IC卡芯片中的数据传送给读写器在第一个CLK脉冲的下降沿之后,I/O线上的第一位数据变为有效。随后每增加一个时序脉冲,芯片内部的一位数据被送到I/O线上,低位(LSB)在前。当所需要的最后一个数据送出之后,需要再附加一个时钟脉冲来把I/O线置成高阻状态(状态Z)。,处理数据(PROCESSING)模式,对IC卡芯片作内部处理(写/擦除/校验密码)芯片在第一个时钟脉冲的下降沿,将IO线从高状
18、态(H状态)拉到低状态(L状态)并开始处理。此后芯片在内部连续计时计数,直到第n个时钟脉冲之后的附加一个时钟脉冲的下降沿IO线被再次置高,完成芯片的处理过程。在整个处理过程中IO线被锁定成低状态。,;sle4442处理模式子程序 PROCESS:MOV R7,#254D CLR CLK CLR IO LCALL DELAYPRO1: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,命令格式
19、:30H+字节地址+*模式:OUTGOING功能:读出从给定的字节地址(N)开始,直到整个存储器末尾的主存储器内容。说明:在该命令输入以后,接口设备IFD必须提供足够的时钟脉冲,起始地址为N时所需要的时钟脉冲数为 M=(256-N)*81(N=0255)例如:地址为7EH(N=254),M=17,;*读主存储器子程序*READ:MOV COM,#30H;设置读主存储器控制字 MOV ADDR,#R_ADDR;取读主存储器首地址 MOV DAT,#00H;设置读主存储器数据字(任意)MOV R4,NUM;数据个数 LCALL COMMAND;送命令给卡READ0:LCALL SHIN;读数据(输
20、出数据模式)MOV R0,A;送数据入数据缓冲区 INC R0 DJNZ R4,READ0;未读完继续,SETB CLK;发送一个附加脉冲 LCALL DELAY CLR CLK LCALL DELAY SETB IO;置位数据线 LCALL DELAY RET,读保护存储器 Read Protection Memory,命令格式:34H+*+*模式:OUTGOING功能:读出保护存储器各位(共32位)的内容。说明:在该命令输入以后,接口设备IFD必须提供32个时钟脉冲,最后通过一个附加时钟脉冲将I/O线置为高状态(H状态),即M=33,读加密存储器 Read Security Memory,
21、命令格式:3lH+*+*模式:OUTGOING功能:类似于读保护存储器,可以读出4个字节的加密存储器的内容。M=33说明:密码比较失败时只能读出错误计数器(字节0)的内容,字节1、2、3的内容将为000000(即不能读出密码),修改主存储器 Updata Main Memory,命令格式:38H+字节地址+数据模式:PROCESSING功能:用所给出的数据修改主存储器指定字节地址(N)的内容说明:通常,要改变一个数据需要先进行擦除,再进行写入两项操作。如果在被寻址的字节里位中没有一个字位需要从变到,则可以不进行擦除处理。反之亦然,在被寻址的字节中,如果没有一个字位需要从变到,则可以不作写入处理
22、,写人或擦除操作一次至少要耗费.时间。因此,在处理模式期间,可能发生下列几种情况之一:擦除和写入(5ms):相应于M256个时钟脉冲只写入不擦除(2.5ms):相应于 M=124个时钟脉冲只擦除不写入(2.5ms):相应于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_A
23、DDR;地址字指向主存储器下一个单元 INC R0;指向下一个数据 DJNZ R4,WRITE0;未写完继续 RET,修改加密存储器 Updata Security Memory,命令格式:39H+字节地址+数据模式:PROCESSING功能:用所给出的数据修改加密存储器指定字节地址的内容(即修改错误计数器或修改密码)说明:该命令只能在PSC比较成功之后才能进行。该命令的执行时间和所需要的时钟脉冲与修改主存储器的情况相同,写保护存储器 Write Protection Memory,命令格式:3CH+字节地址(00H1FH)+输入的数据模式:PROCESSING功能:这一命令的执行过程包含一个
24、把被输入的数据与在EEPROM中对应数据进行比较的过程。在确认一致的情况下,保护字位被写0,从而使得主存储器中的信息不可更改。如果数据比较结果不一致,则保护字位的写操作将被禁止执行。说明:该命令所要求的时钟脉冲和执行时间与修改主存储器命令的情况相同。,比较校验数据Compare Varification Data,命令格式:33H+字节地址+数据模式:PROCESSING功能:把输入的“用户密码”的各个字节与相对应的PSC(存放在加密存储器中)进行比较 说明:字节地址为01H03H,数据为用户密码,读EC,写EC的一位为0,EC=000?,校验三字节的密码,擦除EC,读EC,EC=111?,Y
25、,Y,N,N,校验通过,校验不成功EC中1的个数=允许重试的次数,卡被锁死,PSC校验流程,PSC校验的过程并不是仅由比较校验数据命令来完成的,而是由多个命令构成的一个流程来共同完成,流程一:用一个修改加密存储器命令将密码错误计数器中的一位写0。流程二:连续用三条比较校验数据命令比较输入的用户密码与加密存储器中存储的密码。比较从字节1开始。流程三:校验密码成功与否是用能否擦除密码错误计数器来证实的。如果校验成功,则擦除操作执行有效;如果校验不成功,擦除操作执行无效,密码错误计数器将不会恢复为“111”。但只要EC不全为0,就允许读写器对芯片进行重试。,;*PSC校验子程序*COMP:MOV C
26、OM,#31H;设置读加密存储器命令控制字 MOV ADDR,#00H;设置读加密存储器命令地址字(00H为错误计数器)MOV DAT,#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
27、 CLR CLK,JB ACC.0,NEXT0;判断错误计数器中是否还有“1”;JB ACC.1,NEXT1;如有“1”则减去一个“1”,;JB ACC.0,NEXT2 LJMP EXIT1;错误计数器为全“0”退出NEXT0:MOV DAT,#06HAJMP COMP0NEXT1:MOV DAT,#04HAJMP COMP0NEXT2:MOV DAT,#00HCOMP0:MOV COM,#39H;设置修改加密存储器命令控制字 MOV ADDR,#00H;设置修改加密存储器命令地址字(错误计数器)LCALL COMMAND;送修改加密存储器命令(错误计数器减一个1)LCALL PROCESS;
28、处理模式,MOV COM,#33H;设置PSC校验命令控制字 MOV ADDR,#01H;设置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校验命令地址字
29、MOV DAT,#PSC3;取PSC第三个字节 LCALL COMMAND;送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;设置读加密
30、存储器命令数据字(任意)LCALL COMMAND;送读加密存储器命令给卡 LCALL SHIN;读加密存储器的错误计数器 MOV 23H,A,LCALL SHIN;读加密存储器的后三个字节 MOV 24H,A LCALL SHIN MOV 25H,A LCALL SHIN MOV 26H,A MOV A,23H;EC值送A SETB IO;附加一个脉冲,置数据线为高 LCALL DELAY SETB CLK LCALL DELAY CLR CLKEXIT1:RET,IO BIT P1.0CLK BIT P1.1RST BIT P1.2ICSW BIT P1.6 PWR BIT P1.7PSC
31、1 EQU 0FFHPSC2 EQU 0FFHPSC3 EQU 0FFHCOM EQU 20HADDR EQU 21HDAT EQU 22H NUM EQU 2FH;*主程序*ORG 0030HMAIN:CLR EA;关中断 MOV SP,#60H;设置堆栈,主程序,LCALL PWRON;上电控制 LCALL RESET;复位 MOV R0,#30H;设置读数据缓冲区1首地址 LCALL READ;读主存储器 NOP;断点 LCALL COMP;PSC校验 XRL A,#07h;断点,检查PSC校验是否正确 JNZ EXIT;PSC校验失败退出 MOV R0,#50H;设置写数据缓冲区首地址
32、 LCALL WRITE;修改主存储器 MOV R0,#40H;设置读数据缓冲区2首地址 LCALL READ;读主存储器EXIT:NOP;断点 LCALL PWROFF;下电控制 SJMP$,实训4 接触式逻辑加密卡读写控制,第一阶段:读卡1、通过复位应答方式读入SLE4442卡主存储器前4个字节的内容。2、通过读主存储器方式读入SLE4442卡主存储器前4个字节的内容。3、读主存储器任意起始地址、任意长度的数据块内容。课前准备:1、在原有AT24C01卡接口电路上增加RST连线及其上拉电阻。2、完成程序的编写、编译。,第二阶段:校验密码、写卡1、校验密码,校验成功则设标志寄存器B为00H,否则设为FFH并退出。2、判断校验密码是否成功,成功则在主存储器任意起始地址、任意长度的数据块中写入数据。否则退出。注意:校验密码错误退出程序后,请用通用读写器重新输入正确密码,以恢复EC的次数,切勿反复出错退出导致卡锁死!,实训报告要求,画出逻辑加密卡接口电路原理图。画出读主存储器、修改主存储器和校验密码的程序流程图。记录上述程序的调试步骤及调试结果。,