大学毕业设计一种安全可靠的IC卡读写器系统的设计.docx
《大学毕业设计一种安全可靠的IC卡读写器系统的设计.docx》由会员分享,可在线阅读,更多相关《大学毕业设计一种安全可靠的IC卡读写器系统的设计.docx(40页珍藏版)》请在冰点文库上搜索。
大学毕业设计一种安全可靠的IC卡读写器系统的设计
一种安全可靠的IC卡读写器系统的设计
摘要
随着现在生活的发展,IC卡在人们的生活中起到了越来越重要的作用,这对IC卡行业是一次挑战,也是一个很好的发展机遇。
本文在对IC卡熟悉的基础上,以8051单片机为核心并选用X76F100卡设计了一种安全可靠的IC卡读写器。
本论文采用软硬件结合的方法,硬件设计通过对单片机、IC卡的选型,并设计了相应的监控电路、键盘电路和显示电路。
论文还对IC卡的内部结构,工作原理,编程和加密进行了详细的研究。
软件设计的实现是在硬件系统设计的基础上来编写的,用汇编语言对单片机进行了编程,实现读写卡、控制和显示等功能。
本文还对IC卡的安全性进行了研究和讨论,指出了IC卡应用中的漏洞并提出防范的方案。
本文设计的IC卡读写器以硬件设计为主,并对IC卡的读写和显示等进行了相关的程序设计。
关键词IC卡读写器;X76F100卡;单片机;汇编语言
Abstract
Withthedevelopmentofourlives,theICcardplaysmoreandmorevitalroleinpeople’slife,whichisachallengetotheICcardprofessionandalsoisaverygooddevelopmentopportunity.
ThisarticlecarriesacquaintwiththeICcardonfoundation,takes8051signalchipandselectstheX76F100cardasthecoretodesignonekindofsecurityreliableICcardreader-writer.Thepaperusesthemethodofthesoftwareandhardwareunified,thehardwarehasbeendesignedinthecorrespondingmonitoringcircuit,thekeyboardcircuitandthedisplaycircuitthroughtheshapingofthesignalchipandtheICcard.ThepaperhasbeenstudiedinthedetailedtotheICcardinternalstructure,theprincipleofwork,theprogrammingandtheencryption.ThedesignofthesoftwarehasbeencarriedoninthefoundationofthedesignofthehardwaresystemandprogrammedtosignalchipwiththeassemblylanguageandrealizedthefunctionoftheresearchedanddiscussedtotheICcardsecurityandpointedouttheloopholeintheICcardapplicationandproposedtheguardmethod.
ThisarticledesignstheICcardreader-writerbythehardwaredesignprimarily,andread-writeandthedemonstrationandsoonhasbeencarriedontherelatedprogrammingtotheICcard.
KeywordsICcardreader-writer;X76F100card;SignalChip;assemblylanguage
第1章绪论
读写器是IC卡系统中不可缺少的重要组成部分,它是各类IC卡与其相应的应用系统连接的工具,起到了信息识别、传送、处理任务的功能。
随着IC卡的广泛应用,各类读写器的设计也有了长足的发展。
1.1IC卡读写器的研究背景和目的
IC卡是集成电路卡(IntegratedCircuitCard)的英文简称,在有些国家也称之为智能卡、智慧卡、微芯片卡等,将一个装用的集成电路芯片镶嵌于符合ISO7816标准的PVC(或ABS等)塑料基片中。
由于它保存的信息比较可靠安全,可以高达几万次的读写,所以大量应用于公交车票、信用卡、电话卡等收费系统。
1969年12月,日本的有村国孝先生首先提出一种制造安全可靠的信用卡方法。
1974年,法国的罗兰德—穆瑞拉(RolandMoreno)发明了带集成电路芯片的塑料卡片,并获得了专利,这就是早期的IC卡,但一时尚未实用化。
1976年法国布尔(Bull)公司研制出世界第一枚IC卡。
1984年法国PTT(Posts,TelegraphsandTelephones)将IC卡用于电话卡,由于IC卡良好的安全性和可靠性,获得了意想不到的成功。
随后,国际标准化组织(ISO,InternationalStandardizationOrganization)与国际电子委员会(IEC,InternationElectortechnicalCommmission)的联合技术委员会为之制定了一系列的国际标准、规范,极大推动了IC卡的研究发展。
本论文根据X76F100卡研制了一种安全可靠的读写器系统。
该读写器能够识别与控制IC卡、提供稳定的电源和时钟、能使应用系统与卡进行数据交换、并通过该读写器的键盘和LED显示对卡进行相应的操作和处理。
1.1.1IC卡的分类及其特点
1.IC卡的分类
IC卡根据卡中所用嵌粘的集成电路的功能的不同,可分为接触式IC卡和非接触式IC卡两大类。
在实际使用中,以接触式IC卡应用较多。
本文采用的是接触式IC卡。
接触式IC卡,具有标准形状的铜皮触点,通过和卡座的接触点相连实现外部信息和系统设备的信息交换。
它又分为以下三类:
(1)存储卡:
具有存储记忆的功能,不带加密逻辑,这类卡适用于其内部信息不用加密的应用系统。
(2)加密存储卡:
卡中具有若干个密码口令,只有在密码输入正确后,才能对相应区域的信息内容进行读出或写入。
(3)智能卡:
卡中还带有信息处理器(CPU),该类卡是一个带有操作系统的单片机系统,严格防范非法用户访问卡中的信息。
2.IC卡的特点
IC卡较之以往的识别卡,具有以下特点:
一是可靠性高;IC卡具有防磁、防静电、防机械损坏和防化学破坏等能力,信息保存期在100年以上,读写次数在10万次以上,至少可用10年;二是安全性好;三是存储容量大;四是类型多。
1.1.2IC卡读写器介绍
无论哪种IC卡,IC卡本身不带电源,而存贮容量非常有限,所以IC卡本身不能单独使用,必须与相关设备(如:
读写器)组合使用,才能共同构成一个符合人们某种需求的应用系统。
1.非接触式IC卡读写器
非接触式IC卡与读卡器之间通过无线电波来完成读写操作。
非接触式卡没有电源,工作时,IC卡进入读写区(又称感应区),读写器向IC卡发一组固定频率的电磁波,卡片内有一个LC串联谐振电路,其频率与读写器发射的频率相同,这样在电磁波激励下,LC谐振电路产生共振,共振产生的电能通过一个单向导通的电子泵送到电容内存储,当所积累的电荷达到2V时,卡内的其他集成电路开始工作。
由于非接触式IC卡本身是不带电源的,当读写器对卡进行读写操作时,终端发出的信号就由两部分叠加组成,一部分是电源信号,该信号由卡接收后,与卡片的LC串联谐振电路共振产生的能量来供给卡内芯片工作。
另一部分是指令和数据信号,指挥卡内芯片完成数据的读取、修改、存储等,并返回信号给予终端。
读写器一般由单片机、存储器、专用智能RF模块和天线组成,并配有与PC机通讯的接口、打印口、I/O口等。
2.接触式IC卡读写器
接触式IC卡卡片上有8个触点,工作时,读写器通过这些触点对IC卡提供电源(VCC)、定时脉冲(CLK)和数据交换(I/O)。
IC卡读写器不仅是卡与外界通信的桥梁和传输介质,而且通常是IC卡的能量来源。
读写器借助自身的机械卡座、射频(RF)或红外(IR)无线信道,以接触或非接触方式来实现对IC卡的读写操作。
因此,我们在设计IC卡读写器时,应保证IC卡读写器具有如下几个主要功能:
(1)当IC卡进入/退出读写区时,对IC卡的识别和控制。
(2)为带触点的IC卡提供稳定的电源和时钟;向非接触的IC卡发射射频信号,并通过它提供IC卡工作所需的能量。
非接触IC卡接收到射频信号后,通过卡内整流稳压电路整流稳压后向提供卡内其它集成电路提供所需的工作电压。
(3)实现读写器与卡之间的数据交换,并提供相应的控制信号。
(4)对加密数据提供相应的加/解密处理及密码管理机制。
(5)提供相应的外部控制信息,与其他设备进行信息交换。
1.2IC卡在我国的发展
2005年至今后的5年,是我国IC卡应用向纵深发展的时期。
我国IC卡市场格局必将由无序走向有序,市场竞争必将由有限走向无限,IC卡市场将逐步走向成熟,进入微利时代[1]。
在这种形势下单纯的发卡量和新产品数量并不能衡量IC卡产业与市场的发展水平,市场发展的程度最终取决于IC卡的应用水平极其带来的社会效益。
从可持续的发展角度讲,加强行业规范,推动IC卡企业由产品和技术型转向应用和服务型转变,将成为我国IC卡市场发展的重要趋势[2]。
1.3本文的主要组织结构
本文是以单片机8051为核心采用XICOR公司的X76F100IC卡片设计的一种安全可靠的IC卡读写器。
本论文包括四个部分。
第一章首先介绍了IC卡的种类、功能和IC卡目前在我国发展的状况。
第二章是本文的重点,从硬件方面详细介绍了单片机选型、IC卡选型、键盘电路、显示电路的设计方案。
第三章是在实现了硬件的基础上对本文设计的IC卡读写器进行了编程。
第四章着重论述了现在人们对IC卡行业关心的IC卡安全性问题,并提出了相应的解决方案。
第2章IC卡读写器硬件电路设计
本设计采用XICOR公司的X76F100作串行E2PROM,设计以8051单片机为核心的IC卡读写器系统。
2.1读写器电路设计
图2.1IC卡读写器的硬件电路图
图2.1为IC卡读写器的硬件电路图。
此读写器电路图由单片机、键盘、显示、监控电路等部分组成。
2.2单片机选型
单片机体积小、重量轻,具有很强的灵活性而且价格不高,得到越来越广泛的应用[3]。
8051是我的首选机型。
2.2.18051部分管脚功能
8051共有4个I/O端口,分别为P0、P1、P2、P3。
4个I/O口都是双向的,且每个口都具有锁存器[4]。
每个端口有8条线,共计32条I/O线。
P0.0~P0.7,P1.0~P1.7,P2.0~P2.7,P3.0~P3.7。
1.P0口有三个功能:
外部扩充存储器时,作数据总线(D0~D7);外部扩充存储器时,作地址总线(A0~A7);不扩充时,作一般I/O使用,内部无上拉电阻,作为输出/输入使用时应加上拉电阻。
2.P1口只作I/O口使用,有内部上拉电阻。
3.P2口有两个功能:
(1)扩充外部存储器时,作地址总线(A8~A15)使用。
(2)作一般I/O口使用,有内部上拉电阻。
4.P3口有两个功能:
除作为I/O口(有内部上拉电阻)外,还有一些特殊功能。
由特殊功能寄存器来设置端口的引脚特殊功能。
P10(8052)—T2TIMER2的外部输入引脚(8052)。
P11(8052)—/T2EX(TIMER2的捕捉(Capture)/重新加载(Reload)的触发)。
P30—RXD(串行输入口)。
P31—TXD(串行输出口)。
P32—/INT0(外部中断0)。
P33—/INT1(外部中断1)。
P34—T0(TMER0的外部输入脚)。
P35—T1(TMER1的外部输入脚)。
P36—/WR(外部数据存储器的写入控制信号)。
P37—/RD(外部数据存储器的读取控制信号)。
端口1,2,3有内部上拉电阻,作为输入时,其电位被拉高,若输入为低电平可提供电流源;作为输出时可驱动4个TTL。
而端口0作输出缓冲器可驱动8个TTL(需外加上拉电阻)。
2.2.2ALE/PROG地址使能信号端
有三种功能:
(1)8051外接RAM/ROM时,ALE接地址器(8282)的STB脚,(74373)的EN脚,当CPU对外部存储器进行存取时,用以锁住地址的低位地址。
(2)8051未外接RAM/ROM时,ALE脚会有1/6晶体振荡频率,可作为外部时钟。
(3)在烧写EPROM时,ALE作为烧写时钟的输入端。
2.2.3PSEN程序储存使能端
(1)内部程序存储器读取,不动作。
(2)外部程序存储器读取(ROM),在每个机器周期会动作两次。
(3)外部数据存储器读取(RAM),两个/PSEN脉冲被跳过不会输出。
(4)外接ROM时,与ROM的/OE脚连接。
2.2.4EA/VPP
(1)接高电平时:
CPU读取内部程序存储器(ROM)。
扩充外部ROM,当读取内部程序存储器超过0FFFH(8051)、1FFFH(8052)时,自动读取外部ROM。
(2)接低电平时:
CPU读取外部程序存储器(ROM)。
(3)8051烧写内部EPROM时,利用此脚21V的烧写电压。
2.2.5XTAL1、XTAL2接晶体振荡器引脚
机器周期=晶体×12。
2.3X76F100卡座以及卡的介绍
2.3.1X76F100卡座
图2.2X76F100Y引脚
X76F100为128×8位的保密串行FLASHE2PROM,其中读密码和写密码分别为64位[5]。
图2.2为其智能卡封装的引脚图。
把芯片封装在一个卡片上,将卡片插入IC卡读写器的卡座中,读写器就可以对它进行读写。
IC卡卡座有8个引脚,当X76F100Y插入时,正好同这几个引脚相连[5]。
另外还有两个固定端,其中一个固定端同卡座上一个弹簧片相连,两个触点和簧片就相当于一个常闭开关。
2.3.2X76F100卡
1.X76F100卡的性能
XICOR公司的产品X76F100 是一种可用于密码访问安全监控、加密存储器卡的闪烁存储器芯片。
X76F100 芯片的主要技术性能如下:
①有两种密码,即用于读出芯片数据的密码和用于将数据写入芯片的密码,每种密码字长8字节(64 位) ,这些密码保护存储器阵列的读写操作。
②具有可编程功能读、写密码,多阵列访问编程,重试计数器编程,即允许8 次试验然后阵列清零。
③高可靠性:
每字节可重复擦写10 万次,数据保持100 年,所有引脚具有2 000 V 的ESD 保护能力。
④符合ISO 标准的32 位对复位的响应(RST输入)。
⑤每次8 字节扇区的写入与读出。
⑥4 个1K(128 ×8)存储器阵列。
2.卡引脚配置及功能
X76F100卡引脚功能如下:
/ CS 端:
片选,该端为低电平时选中芯片。
SCL 端:
串行时钟输入端。
SDA 端:
串行数据输入/输出线。
VCC 端:
电源正端,电压为5 V 或3~3 . 6 V。
VSS 端:
GND。
NC 端:
不连接脚。
RST 端:
当该端为高电平,/ CS 为低电平时,器件进入RESET状态,X76F100 将输出固定的确认为标准的“复位同步响应”的32 位数据,该数据符合对RESET 同步响应的ISO 标准。
在RESET期间,/ CS 端应为低电平且器件不处于写周期。
在RESET 响应时,若/ CS 端变为高电平,则RESET响应终止,器件将回到等待状态。
3.工作原理
X76F100内部电路框图如图2.3所示,该器件是CMOS 闪烁存储器。
X76F100 有两种基本的工作:
保密读和保密写,对此要遵守如下的约定:
①重试计数器。
X76F100 内部包含一重试计数器,该重试计数器允许8 次无效访问而不发生动作,如果访问超过8 次,内部数据将会清零。
②器件的协议:
X76F100 支持与双向总线有关的协议。
③时钟和数据的约定:
在SDA 线上数据的状态只有在SCL 为低电平时才能改变;当SCL是高电平时,SDA 的变动用作表示“开始”和“停止”条件。
④开始条件:
所有命令都由开始条件前导,即当SCL 为高电平时,SDA 由高电平跳变到低电平。
⑤停止条件:
所有命令都必须由停止条件来终止,即当SCL 为高电平时,SDA 由低电平跳变到高电平。
⑥应答:
应答是一个用来表示数据传送成功的软件约定。
图2.3X76F100内部电路框图
4.编程操作
①页写:
重写方式需要发出8 位命令其后跟随密码。
写命令字节包括所要写入的页地址。
数据从页的第一个地址开始写入并且必须传送8个字节。
在最后字节传送以后发出一个停止条件。
这个条件启动非易失性写周期,如果传送少于或多于8 个字节,则页中的数据将保持不变。
②读操作(含页面读):
页面读时,用读命令提供一个页面地址。
一旦密码被响应,数据即可从页面中读出。
每8 位数据的传送必须跟随一次应答。
一次读操作总是从页面中的第一个字节开始,但可以在任何时候停止。
对阵列的随机访问是不可能的。
阵列的连续读将从后续的页面中取数据。
在读到阵列中的最后一页时,地址将自动地设置到阵列中的第一页,而数据可继续地读出。
在最后一位被读之后,不需要先送应答就可产生停止条件。
③密码:
密码可以在正常的页面写操作过程中通过送一个“改变读密码”或“改变写密码”命令来改变。
必须传送一个全部为8 字节的新的密码,随后是发送当前的密码和一个有效的密码应答响应。
用户可以用一个重复的应答来询问命令从而检查新的密码是否正确地写入。
一个应答表示新的密码已有效。
5.加密原理
软件加密原理:
已知明文数组内有26 个字母,密文数组内也有26 个字母,将字符串明文按4 个字母分成若干组,最后一组不足4 个的用虚码补足,接着再将字符串明文经过如下的加密算法后变成对应的密文,如表2-1 所示。
X1, X2, X3, X4为一组明文,Y1,Y2,Y3,Y4为加密后的密文A为加密矩阵,B为解密矩阵(B·A)MOD26=E。
表2-1将字符串明文经加密算法后变成对应的密文
2.4监控电路设计
2.4.1X25045介绍及其引脚功能
X25045是美国XICOR公司的生产的标准化8脚集成电路,它将EEPROM、看门狗定时器、电压监控三种功能组合在单个芯片之内。
X25045的引脚图如图2.4所示。
图2.4X25045引脚图
其引脚功能如下:
CS:
片选择输入。
SO:
串行输出,数据由此引脚逐位输出。
SI:
串行输入,数据或命令由此引脚逐位写入X25045。
SCK:
串行时钟输入,其上升沿将数据或命令写入,下降沿将数据输出。
WP:
写保护输入,当它低电平时,写操作被禁止。
VSS:
地。
VCC:
电源电压。
RESET:
复位输出。
X25045在读写操作之前,需要先向它发出指令,指令名及指令格式如表2-2所示。
表2-2X25045指令及其含义
指命令
指令格式
操作
WREN
00000110
设置写使能锁存器(允许写操作)
WRDI
00000100
复位写使能锁存器(禁止写操作)
RDSR
00000101
读状态寄存器
WRSR
00000001
写状态寄存器
READ
0000A8011
把开始与所选地址的存储器中的数据读出
WRITE
0000A8010
把数据写开始与所选地址的存储器
2.4.2X25045看门狗电路设计及编程
X25045看门狗电路硬件连接图如图2.5所示。
X25045芯片内包含有一个看门狗定时器,可通过软件预置系统的监控时间。
在看门狗定时器预置的时间内若没有总线活动,则X25045将从RESET输出一个高电平信号,经过微分电路输出一个正脉冲,使CPU复位。
图2.5X25045看门狗电路硬件连接图
看门狗定时器的预置时间是通过X25045的状态寄存器的相应位来设定的。
如表2-3所示,X25045状态寄存器共有6位有含义,其中WD1、WD0和看门狗电路有关,其余位和EEPROM的工作设置有关。
表2-3X25045状态寄存器
D7
D6
D5
D4
D3
D2
D1
D0
X
X
WD1
WD0
BL1
BL0
WEL
WIP
WD1=0,WD0=0,预置时间为1.4s。
WD1=0,WD0=1,预置时间为0.6s。
WD1=1,WD0=0,预置时间为0.2s。
WD1=1,WD0=1,禁止看门狗工作。
看门狗电路的定时时间长短可由具体应用程序的循环周期决定,通常比系统正常工作时最大循环周期的时间略长一些。
编程时,可在软件的合适地方加一条喂狗指令,使看门狗的定时时间永远达不到预置时间,系统就不会复位而正常工作。
当系统跑飞,用软件陷阱等别的方法无法捕捉回程序时,则看门狗定时时间很快增长到预置时间,迫使系统复位。
只需这样一块芯片,外加晶振和复位电路就可以组成单片机的应用系统。
2.5键盘接口电路设计
键盘扫描只是CPU的工作内容之一,CPU在忙于各项工作时,如何处理键盘的输入取决于键盘的工作方式,键盘工作方式的选择应根据应用系统中CPU工作的忙、闲情况而定[6]。
通常键盘工作方式有三种:
编程扫描、定时扫描和中断扫描。
在编程扫描中,CPU反复地扫描键盘,等待用户的输入命令,而执行键入命令或处理输入数据时,CPU不再响应输入要求,直到CPU返回重新扫描键盘为止。
定时扫描工作方式利用单片机内部定时器产生定时中断,CPU响应定时器中断后对键盘进行扫描,在有键按下时识别出该键并执行相应功能程序。
使用中断方式时,在没有键按下时,不占用CPU处理时间,只有当有键按下时产生键盘中断,由中断程序识别键并执行功能程序。
键盘接口电路如图2.6所示。
图2.6键盘接口电路
2.6显示电路设计
显示部份采用LED显示器,也用I/O口实现。
用于显示系统状态、输入的密码或出错信息等。
2.6.1LED数码管的显示
现在显示器主要使用的就是LED或LCD。
LCD具有薄、轻、文字显示效果好等优势。
LED属于固体冷光源,具有更小、更轻、更坚固,而且寿命长、抗震效果好、光谱几乎全部集中于可见光频段显示清晰、电路简单使成本大大降低,使用它可以达到理想效果。
LED数码管是由8段发光二极管构成,因此也称为8段数码显示器,其中八个管脚分别是对七个发光二极管和小数点的驱动,另外两个管脚是对字段驱动。
它的8个发光二极管具有两种接法:
一种是把8个发光二极管的阳极连在一起构成了一个公共的阳极,称为共阳极接法,另一种是共阴极接法。
而我们所采用的就是共阴极接法的数码管。
2.6.2数码管驱动芯片的选择及其应用分析
常用的专用数码管显示电路选用MAX7219,它连线简单,不占用数据存储器空间。
MAX7219是八位串行共阴极LED数码管动态扫描驱动电路的驱动芯片,其峰值段电流可达40mA;仅使用单片机3个I/O口即可完成对六位LED数码管的显示控制和驱动,外围电路仅需一个电阻设定峰值段电流。
还可以通过级联,完成对多于八位的数码管的控制显示。
因此我们选择了后者MAX7219作为数码管的驱动芯片。
但级联时会有些不方便,电路有时也不稳定。
MAX72