1 / 67

接触式逻辑加密卡技术

接触式逻辑加密卡技术. 电子与信息工程学院. 提 纲. 接触式逻辑加密卡存储结构与安全技术 典型卡型剖析: SLE4406 卡 SLE4442 卡 AT88SC1608 卡 接触式逻辑加密卡的读写控制 典型卡型剖析: SLE4442 卡 时序分析与读、写、密码校验程序. 接触式逻辑加密卡组成. Security Memory Card. 逻辑加密卡特性. 组成:非易失性存储器 + 硬件加密逻辑; 芯片:专门为 IC 卡设计的芯片( ASIC ); 安全性:具有安全控制逻辑,安全性能较好;

knoton
Download Presentation

接触式逻辑加密卡技术

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 接触式逻辑加密卡技术 电子与信息工程学院

  2. 提 纲 • 接触式逻辑加密卡存储结构与安全技术 典型卡型剖析:SLE4406卡 SLE4442卡 AT88SC1608卡 • 接触式逻辑加密卡的读写控制 典型卡型剖析:SLE4442卡 时序分析与读、写、密码校验程序

  3. 接触式逻辑加密卡组成 Security Memory Card

  4. 逻辑加密卡特性 • 组成:非易失性存储器+硬件加密逻辑; • 芯片:专门为IC卡设计的芯片(ASIC); • 安全性:具有安全控制逻辑,安全性能较好; • 多种安全措施:PIN、EC、FUSE、TC、多存储器(ROM、PROM、EEPROM并存)、多分区存储结构。 • 通信协议:支持ISO7816国际标准。 • 适用场合:有一定安全要求的场合,如IC卡电话、网吧卡、加油卡、保险卡、驾驶卡、借书卡、小额电子钱包等。

  5. 典型逻辑加密卡—SLE4406 • 一次性使用,带加密逻辑,按位操作 • 计数卡(Token Memory Card),以一次性的计数方式,从写满的计数器中减“1”,直至存储单元全减为“0”为止 • 104位容量 ,最大可提供20 480计数单位 • 3字节传输密码,1位发行标志保护 • 常用于具有定额定价的消费系统中,如公用电话卡、预付费加油卡、停车计费卡、游乐园消费卡等

  6. SLE4406存储分布图和计数规则 • 计数规则 发行后,用户区进入计数状态,为5位8进制计数器,但第5位计数器只有4位可用,因此最大计数值为20480。 说明: 计数区按位写0,按字节 借位擦除,如: 11111111 00000000 擦成: 11111110 11111111

  7. SLE4406操作方式 • 检查发行标志位是否为1,是则可以校验传输密码 • 先将密码计数器-1,然后比较密码,校验正确则密码计数器恢复,允许写入发行商代码,将控制位写为0(发行)。允许初始化计数器(擦除第2-5字节并重新写入),此操作将撕毁传输密码并不可恢复。 • 一旦控制位为0,表示已发行,将不能再更改发行商代码。第2-5字节成为5位计数器,只能写0及借位擦除。

  8. SLE4406保密特性

  9. 典型逻辑加密卡—SLE4442 • 按字节操作,可反复应用 • 多存储器结构 • 256 *8位 EEPROM型主存储器。 • 32 *1位 PROM型保护存储器。 • 4 * 8位 EEPROM型加密存储器 • 安全性:用户密码(3字节)+密码错误计数(3次)+PROM保护 • 2线串行连接协议,满足 ISO7816同步传送协议

  10. SLE4442存储结构

  11. SLE4442存储器分配(一) • 主存储器(main memory):EEPROM型,256B 按字节操作,字节地址0~255(00H~FFH), 所有单元可任意读取。 • 主存储器可分为两个数据区: • 保护数据区:00H-1FH,用户密码+熔丝保护(擦除、写 当校验用户密码正确且熔丝未熔断时允许进行擦除和写入操作,否则不允许 熔丝:保护存储器中第n位(n=0~31)对应主存储器中第n个字节,1——未熔断,0——熔断。 • 应用数据区 :20H-FFH。用户密码保护(擦除、写)

  12. SLE4442存储器分配(二) • 保护存储器(protection memory):PROM型,32bits 按位操作,位地址0~31 每位相当于主存储器保护数据区对应字节单元的控制熔丝(FUSE),相应位为1时该字节可擦写,为0时不可 • 保护存储器可任意读出,但需校验密码正确方能写入,一经写入(从1变为0)不可再擦除,可理解为FUSE一经熔断不可再恢复。

  13. SLE4442存储器分配(三) • 加密存储器(security memory): EEPROM型,4B • 按字节操作,字节地址0~3 • 字节0:EC(Erroe Counter),低3位有效, 可任意读、写, 用户密码校验成功方可擦除。 • 字节1,2,3:3字节 PSC(可编程加密代码) PSC校验成功前不可读,只能进行比较操作; 密码“比较”成功后才可以进行读出、写入和擦除。

  14. 典型逻辑加密卡—AT88SC1608 • 按字节操作,可反复应用 • 存储容量:16Kbits • 安全性:三重密码+熔丝+读写控制位 • 单存储器、多存储分区结构 • 标志数据区:制造商、发行商代码。 • 控制数据区:SC(2字节)、EC、Erase key。 • 应用数据区:4个、各自独立 • 2线串行连接协议,满足 ISO7816同步传送协议

  15. SC1 一区密码

  16. AT88SC1608存储器分配(一) 标志数据区:验证卡片真伪的重要标识 • 制造商代码区FZ (Fabrication Zone ),2B 记录卡芯片生产商的特定信息(例如:生产批号、日期、特别制定的特征代码) FUSE1熔断前,可读,可更改 FUSE1熔断后,只读,不可更改 • 发行商代码区IZ (Issuer Zone),8B 用于记录卡片发行商的特定信息(例如:发行批号、日期、地区范围编号、特定用户编号等特征代码) FUSE2熔断前,可读,可更改 FUSE2熔断后,只读,不可更改

  17. AT88SC1608存储器分配(二) 控制数据区:三重密码+密码错误计数 • 用户密码SC(Security Code),2B 用户密码错误计数SCAC(Security Code Attempts Counter ),1B(8次) • 应用区密码 SC1~ SC4,2B 应用区密码错误计数SCAC1~ SCAC4,8次 • 应用区擦除密码EZ1~4(Erase key ),2B 应用区擦除密码错误计数EnAC(Erase key Attempts Counter ,n=1,2,3,4), 8次

  18. AT88SC1608存储器分配(三) 应用数据区:1~4,各自独立,特性相同 • 存储用户的相关数据记录 。 • 第1位为写保护位(P1) ;第2位为读保护位(R1),均为1有效(可读/写)

  19. 实训3接触式逻辑加密卡读写操作 准备: • 确认电源正、负极,按标志正确连接接触式IC卡读写器的电源线及串口线,注意电源+5V与地不可接反。 • 打开接触式IC卡读写器读写操作软件DEMO,确认通信正常。 • 将实验白卡插入接触式IC卡读写器插卡槽,自动测卡进入卡操作界面。 • SLE4442卡密码:FFFFFFH AT88SC1608卡密码:F0F0H或A5A5H

  20. SLE4442读写操作 • 读卡:记录卡密码、卡错误计数值,主存储器存储结构(各区域名称、地址范围、字节数)、存储内容和读出条件。 • 写卡:对主存储器各区域进行写入/擦除操作,记录操作结果,总结各区域写入/擦除条件。 • 密码操作: (1)修改密码:在未通过和已通过密码校验二种情况下分别修改密码,记录操作结果,总结修改密码的条件。 (2)恶意猜测密码:在未通过密码校验的情况下输入错误密码,记录此时的读卡、写卡结果。 注意: 修改密码后必须及时还原密码为FFFFFFH。 猜测密码错误次数不得超过2次!以免锁卡!

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

  22. 任 务 • 设计IC卡网吧收费机 • 基本要求: 1、判断是否SLE4442卡 2、读卡,根据读出的发行商标志判断是否本网吧的卡。读出卡中余额,判断是否允许上网。 3、校验密码,密码正确为合法卡。 4、写卡,扣款后允许上网,时间到则继续扣款,直至停止上网或余额不足。 • 进阶要求 实现网吧收费机与PC机的通信

  23. 硬件设计——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: (NC) C8: (NC)

  24. SLE4442接口电路

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

  26. 复位和复位响应(Reset and Answer-to-Reset):SLE4442上电后,读写器首先应给出复位(Reset)命令并等待接收来自卡的复位响应ATR(Answer-To-Reset)。

  27. 复位和复位响应(Reset and Answer-to-Reset) • 复位响应:符合ISO7816-3标准的ATR • 当RST为高时,送第一个时钟脉冲(脉冲0)使地址计数器清0(复位)。 • 当RST线从高状态(H状态)置到低状态(L状态)时,第一个数据位(主存储器字节0的LSB)的内容被送到I/O上。若连续输人32个时钟脉冲(脉冲1~32),主存储器中的前4个字节(4 * 8位= 32位)地址单元中的内容被读出(复位响应)。 • 在第33个时钟脉冲(脉冲32)的下降沿,I/O线被置成高阻状态(状态Z)而关闭(复位和复位响应过程结束)

  28. ;*************复位子程序* ************** 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 如何读出复位应答呢

  29. ;4442 串行输出一个字节子程序,即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

  30. 命令(Command) • 复位响应以后,芯片等待着命令。 • 命令=开始+(控制字+地址字+数据字)+附加脉冲+停止。 • 开始:在CLK为高状态(H)期间,I/O的下降沿为开始状态。 • 停止:在CLK为高状态(H)期间,I/O的上升沿为停止状态。

  31. SLE4442操作命令

  32. ;************命令子程序*************** ;该子程序送出三字节的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 怎样向卡中写入一个字节?

  33. ; 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

  34. 操作模式 (Mode) • 接收了一个命令之后,卡芯片处于 两种可能的模式: (1)读数据:输出数据模式; (2)写入、擦除、校验密码:处理模式。

  35. 输出数据(OUTGOING)模式 • 将IC卡芯片中的数据传送给读写器 • 在第一个CLK脉冲的下降沿之后,I/O线上的第一位数据变为有效。随后每增加一个时序脉冲,芯片内部的一位数据被送到I/O线上,低位(LSB)在前。当所需要的最后一个数据送出之后,需要再附加一个时钟脉冲来把I/O线置成高阻状态(状态Z)。

  36. 处理数据(PROCESSING)模式 • 对IC卡芯片作内部处理(写/擦除/校验密码) • 芯片在第一个时钟脉冲的下降沿,将I/O线从高状态(H状态)拉到低状态(L状态)并开始处理。此后芯片在内部连续计时计数,直到第n个时钟脉冲之后的附加一个时钟脉冲的下降沿I/O线被再次置高,完成芯片的处理过程。在整个处理过程中I/O线被锁定成低状态。

  37. ;sle4442处理模式子程序 PROCESS: MOV R7,#254D CLR CLK CLR IO LCALL DELAY PRO1:SETB CLK LCALL DELAY CLR CLK LCALL DELAY DJNZ R7,PRO1 SETB IO LCALL DELAY SETB CLK LCALL DELAY CLR CLK RET

  38. 读主存储器Read Main Memory • 命令格式:30H +字节地址+ ** • 模式:OUTGOING • 功能:读出从给定的字节地址(N)开始,直到整个存储器末尾的主存储器内容。 • 说明:在该命令输入以后,接口设备IFD必须提供足够的时钟脉冲,起始地址为N时所需要的时钟脉冲数为 M=(256-N)* 8+1 (N=0~255) 例如:地址为7EH(N=254),M=17

  39. ;**********读主存储器子程序************** 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 ;未读完继续

  40. SETB CLK ;发送一个附加脉冲 LCALL DELAY CLR CLK LCALL DELAY SETB IO ;置位数据线 LCALL DELAY RET

  41. 读保护存储器Read Protection Memory • 命令格式:34H +** + ** • 模式:OUTGOING • 功能:读出保护存储器各位(共32位)的内容。 • 说明:在该命令输入以后,接口设备IFD必须提供32个时钟脉冲,最后通过一个附加时钟脉冲将I/O线置为高状态(H状态) ,即M=33

  42. 读加密存储器Read Security Memory • 命令格式:3lH +** + ** • 模式:OUTGOING • 功能:类似于读保护存储器,可以读出4个字节的加密存储器的内容。M=33 • 说明:密码比较失败时只能读出错误计数器(字节0)的内容,字节1、2、3的内容将为000000(即不能读出密码)

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

More Related