Mifare1 S50 开发资料
- 格式:pdf
- 大小:28.68 KB
- 文档页数:7
Mifare1卡及其读写器ASIC模块之“密码操作”研究与其应用程序开发关键字:非接触式智能卡 ASIC模块1、序言非接触式智能卡已经广泛地应用于各类门禁控制系统,公共交通支付系统,e-purse系统,高速公路不停车收费系统,IBMS(智能大楼管理系统),海关过境身份识别,以及医疗保险系统等等。
非接触式智能卡以其高度安全保密性,通信高速性,使用方便性,成本日渐低廉等而受到广泛使用,给我们的生活质量带来了很大的提高。
因此,如何认识、理解智能卡,特别是带有非常神秘色彩的非接触式智能卡,已引起很多智能卡的使用者,包括智能卡专业研发的IT科研人员的极大的兴趣和爱好。
笔者在此很愿意将自己多年来在智能卡(接触式智能卡及非接触式智能卡)方面的研究及其软硬件应用开发的经验与大家一同交流和分享,以取得我国金卡工程事业的更进一步的发展。
在此,笔者将以符合ISO/IEC14443TYPEA标准的Mifare1S50系列非接触式智能卡及其读写设备专用IC(ASIC)RC150/170模块为对象,与大家一起就“关于非接触式智能卡及其读写器ASIC模块之‘密码操作’”作一些研究与探讨,并将用标准的Intel-51系列微处理器汇编语言进行实际的应用程序的开发。
在笔者曾设计和开发的众多智能卡项目中,本文所给出的应用程序都有着良好的运行效果。
2、非接触式智能卡及其读写器ASIC模块RC150/170Mifare1S50非接触式智能卡片有着16个Sector(扇区);每个Sector包含4个Block(块);每个Block具有16个byte的存储容量。
Sector被定义为Sector0至Sector15;Block被分为Block0至Block3;整个Mifare1S50非接触式智能卡共有64个Block。
Sector0中的Block0记录了该张智能卡的序列号(SerialNumber)以及生产厂商的标志信息等,这些信息已在卡片出厂时固化,不能更改。
Mifare1系列射频卡读卡器的开发本文内容简介:Mifare1系列射频卡具有高度安全、高可靠性及分区存储结构等特点,其应用范围越来越广.文中提出了一种基于AT89S52和MF RC500实现的Mifare1射频卡读卡器的设计方法.先介绍了系统的组成及工作原理,然后给出了系统的硬件设计,最后给出了软件设计流程和相应程序.近几年来,由于非接触式IC智能射频卡的高度安全保密性,使之在IC智能卡领域中异军突起,成为当今IC智能卡中的流行宠物,应用前景十分广阔.非接触式智能卡读写系统是射频技术中的重要组成部分,其实现原理为:由读写器向Mifare1卡,也就是射频卡发射特定频率的无线电磁波,当射频卡靠近读写器时,受读写器发射的电磁波激励,卡片内的IC谐振电路产生共振并且接收电磁波能量.当射频卡接收到足够的能量时,就将卡内存储的识别资料以及其他数据以无线电波的方式传输到读写器并且接受读写器对卡内数据的进一步操作。
文中提出了一种Mifare1射频卡读卡器系统的设计,此系统是针对煤矿考勤而研制,目前已投人使用.该系统采用AT89S52单片机实现对射频芯片MF RC500的控制,完成对Mifare1卡卡号的读取以及数据的无线交换.下面首先给出系统的总体结构以及工作原理,然后从硬件和软件设计2个方面对系统进行详细讨论和说明.1 系统总体结构及工作原理该读卡器由AT89S52单片机、MF RC500芯片和外围电路组成,与Mifare1卡的数据交换都是通过2者之间的射频场来完成.系统结构如图1所示.系统的工作原理主要是由AT89S52对MF RC500进行控制与通信,MF RC500驱动外同电路对Mifare1卡进行读写操作.具体说来,AT89S52通过串行口接收PC机的指令,完成对卡的操作和整个读写器的管理.MF RCS00负责信号的编码、解码,信号的调制、解调;匹配电路建立读写器同射频卡之间的联系,此部分的设计直接影响到射频功率的大小以及系统的抗干扰能力;Mifare1卡是系统的应用终端.接收读写器的指令并返回指令执行结果。
科技成就梦想 火眼科技S50非接触式IC卡性能简介(M1)一、 主要指标容量为8K位EEPROM分为16个扇区,每个扇区为4块,每块16个字节,以块为存取单位每个扇区有独立的一组密码及访问控制每张卡有唯一序列号,为32位具有防冲突机制,支持多卡操作无电源,自带天线,内含加密控制逻辑和通讯逻辑电路数据保存期为10年,可改写10万次,读无限次工作温度:-20℃~50℃(湿度为90%)工作频率:13.56MHZ通信速率:106 KBPS读写距离:10 cm以内(与读写器有关)二、 存储结构1、M1卡分为16个扇区,每个扇区由4块(块0、块1、块2、块3)组成,(我们也将16个扇区的64个块按绝对地址编号为0~63,存贮结构如下图所示:块0 数据块0扇区0 块1 数据块 1块2 数据块 2块3 密码A 存取控制密码B 控制块 3块0 数据块 4扇区1 块1 数据块 5块2 数据块 6块3 密码A 存取控制密码B 控制块7∶∶∶0 数据块60扇区15 1 数据块612 数据块623 密码A 存取控制密码B控制块632、第0扇区的块0(即绝对地址0块),它用于存放厂商代码,已经固化,不可更改。
3、每个扇区的块0、块1、块2为数据块,可用于存贮数据。
数据块可作两种应用:★ 用作一般的数据保存,可以进行读、写操作。
★ 用作数据值,可以进行初始化值、加值、减值、读值操作。
4、每个扇区的块3为控制块,包括了密码A、存取控制、密码B。
具体结构如下:密码A(6字节)存取控制(4字节)密码B(6字节)5、每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取控制。
存取控制为4个字节,共32位,扇区中的每个块(包括数据块和控制块)的存取条件是由密码和存取控制共同决定的,在存取控制中每个块都有相应的三个控制位,定义如下:块0: C10 C20 C30块1: C11 C21 C31块2: C12 C22 C32块3: C13 C23 C33三个控制位以正和反两种形式存在于存取控制字节中,决定了该块的访问权限(如进行减值操作必须验证KEY A,进行加值操作必须验证KEY B,等等)。
MiFare one卡介绍一、Mifare one IC S50 主要指标●容量为8K位EEPROM● 分为16个扇区,每个扇区为4块,每块16个字节,以块为存取单位●每个扇区有独立的一组密码及访问控制●每张卡有唯一序列号,为32位●具有防冲突机制,支持多卡操作●无电源,自带天线,内含加密控制逻辑和通讯逻辑电路●数据保存期为10年,可改写10万次,读无限次●工作温度:-20℃~50℃(湿度为90%)●工作频率:13.56MHZ●通信速率:106 KBPS●读写距离:10 cm以内(与读写器有关)二、Mifare one IC S70 主要指标●容量为32K位EEPROM●分为40个扇区,其中32个扇区中每个扇区存储容量为64个字节,分为4块,每块16个字节;8个扇区中每个扇区存储容量为256个字节,分为16块,每块16个字节;以块为存取单位●每个扇区有独立的一组密码及访问控制●每张卡有唯一序列号,为32位●具有防冲突机制,支持多卡操作●无电源,自带天线,内含加密控制逻辑和通讯逻辑电路●数据保存期为10年,可改写10万次,读无限次●工作温度:-20℃~50℃(湿度为90%)●工作频率:13.56MHZ●通信速率:106 KBPS●读写距离:10 cm以内(与读写器有关)三、M1射频卡与读写器的通讯见下图示:四、工作原理卡片的电气部分只由一个天线和ASIC组成。
天线:卡片的天线是只有几组绕线的线圈,很适于封装到IS0卡片中。
ASIC:卡片的ASIC由一个高速(106KB波特率)的RF接口,一个控制单元和一个8K位EEPROM组成。
工作原理:读写器向M1卡发一组固定频率的电磁波,卡片内有一个LC串联谐振电路,其频率与讯写器发射的频率相同,在电磁波的激励下,LC谐振电路产生共振,从而使电容内有了电荷,在这个电容的另一端,接有一个单向导通的电子泵,将电容内的电荷送到另一个电容内储存,当所积累的电荷达到2V时,此电容可做为电源为其它电路提供工作电压,将卡内数据发射出去或接取读写器的数据。
科技成就梦想 火眼科技S50非接触式IC 卡性能简介(M1)一、 主要指标容量为8K 位EEPROM分为16个扇区,每个扇区为4块,每块16个字节,以块为存取单位 每个扇区有独立的一组密码及访问控制 每张卡有唯一序列号,为32位 具有防冲突机制,支持多卡操作无电源,自带天线,内含加密控制逻辑和通讯逻辑电路 数据保存期为10年,可改写10万次,读无限次 工作温度:-20℃~50℃(湿度为90%) 工作频率:13.56MHZ 通信速率:106 KBPS读写距离:10 cm 以内(与读写器有关)二、 存储结构1、M1卡分为16个扇区,每个扇区由4块(块0、块1、块2、块3)组成,(我们也将16个扇区的64个块按绝对地址编号为0~63,存贮结构如下图所示:块0 数据块 0 扇区0 块1数据块 1 块2数据块 2 块3 密码A 存取控制 密码B 控制块 3 块0 数据块 4 扇区1 块1 数据块 5 块2数据块 6 块3 密码A 存取控制 密码B 控制块 7∶ ∶ ∶0 数据块 60 扇区15 1数据块 61 2数据块 623密码A 存取控制 密码B控制块632、第0扇区的块0(即绝对地址0块),它用于存放厂商代码,已经固化,不可更改。
3、每个扇区的块0、块1、块2为数据块,可用于存贮数据。
Edited by Foxit ReaderCopyright(C) by Foxit Software Company,2005-2008For Evaluation Only.数据块可作两种应用:★ 用作一般的数据保存,可以进行读、写操作。
★ 用作数据值,可以进行初始化值、加值、减值、读值操作。
4、每个扇区的块3为控制块,包括了密码A、存取控制、密码B。
具体结构如下:密码A(6字节)存取控制(4字节)密码B(6字节)5、每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取控制。
存取控制为4个字节,共32位,扇区中的每个块(包括数据块和控制块)的存取条件是由密码和存取控制共同决定的,在存取控制中每个块都有相应的三个控制位,定义如下:块0: C10 C20 C30块1: C11 C21 C31块2: C12 C22 C32块3: C13 C23 C33三个控制位以正和反两种形式存在于存取控制字节中,决定了该块的访问权限(如进行减值操作必须验证KEY A,进行加值操作必须验证KEY B,等等)。
科技成就梦想 火眼科技S50非接触式IC卡性能简介(M1)一、 主要指标容量为8K位EEPROM分为16个扇区,每个扇区为4块,每块16个字节,以块为存取单位每个扇区有独立的一组密码及访问控制每张卡有唯一序列号,为32位具有防冲突机制,支持多卡操作无电源,自带天线,内含加密控制逻辑和通讯逻辑电路数据保存期为10年,可改写10万次,读无限次工作温度:-20℃~50℃(湿度为90%)工作频率:13.56MHZ通信速率:106 KBPS读写距离:10 cm以内(与读写器有关)二、 存储结构1、M1卡分为16个扇区,每个扇区由4块(块0、块1、块2、块3)组成,(我们也将16个扇区的64个块按绝对地址编号为0~63,存贮结构如下图所示:块0 数据块0扇区0 块1 数据块 1块2 数据块 2块3 密码A 存取控制密码B 控制块 3块0 数据块 4扇区1 块1 数据块 5块2 数据块 6块3 密码A 存取控制密码B 控制块7∶∶∶0 数据块60扇区15 1 数据块612 数据块623 密码A 存取控制密码B控制块632、第0扇区的块0(即绝对地址0块),它用于存放厂商代码,已经固化,不可更改。
3、每个扇区的块0、块1、块2为数据块,可用于存贮数据。
数据块可作两种应用:★ 用作一般的数据保存,可以进行读、写操作。
★ 用作数据值,可以进行初始化值、加值、减值、读值操作。
4、每个扇区的块3为控制块,包括了密码A、存取控制、密码B。
具体结构如下:密码A(6字节)存取控制(4字节)密码B(6字节)5、每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取控制。
存取控制为4个字节,共32位,扇区中的每个块(包括数据块和控制块)的存取条件是由密码和存取控制共同决定的,在存取控制中每个块都有相应的三个控制位,定义如下:块0: C10 C20 C30块1: C11 C21 C31块2: C12 C22 C32块3: C13 C23 C33三个控制位以正和反两种形式存在于存取控制字节中,决定了该块的访问权限(如进行减值操作必须验证KEY A,进行加值操作必须验证KEY B,等等)。
文军维修 Mifare1卡及其读写器ASIC 模块之“密码操作”研究与其应用程序开发作者: 张敏2001-8-4关键字: 非接触式智能卡 ASIC 模块1、序言 非接触式智能卡已经广泛地应用于各类门禁控制系统,公共交通支付系统,e -purse 系统,高速公路不停车收费系统,IBMS (智能大楼管理系统),海关过境身份识别,以及医疗保险系统等等。
非接触式智能卡以其高度安全保密性,通信高速性,使用方便性,成本日渐低廉等而受到广泛使用,给我们的生活质量带来了很大的提高。
因此,如何认识、理解智能卡,特别是带有非常神秘色彩的非接触式智能卡,已引起很多智能卡的使用者,包括智能卡专业研发的IT 科研人员的极大的兴趣和爱好。
笔者在此很愿意将自己多年来在智能卡(接触式智能卡及非接触式智能卡)方面的研究及其软硬件应用开发的经验与大家一同交流和分享,以取得我国金卡工程事业的更进一步的发展。
在此,笔者将以符合ISO/IEC14443TYPEA 标准的Mifare1S50系列非接触式智能卡及其读写设备专用IC (ASIC )RC150/170模块为对象,与大家一起就“关于非接触式智能卡及其读写器ASIC 模块之‘密码操作’”作一些研究与探讨,并将用标准的Intel -51系列微处理器汇编语言进行实际的应用程序的开发。
在笔者曾设计和开发的众多智能卡项目中,本文所给出的应用程序都有着良好的运行效果。
2、非接触式智能卡及其读写器ASIC 模块RC150/170 Mifare1S50非接触式智能卡片有着16个Sector(扇区);每个Sector 包含4个Block (块);每个Block 具有16个byte 的存储容量。
Sector 被定义为Sector0至Sector15;Block 被分为Block0至Block3;整个Mifare1S50非接触式智能卡共有64个Block 。
Sector0中的Block0记录了该张智能卡的序列号(SerialNumber )以及生产厂商的标志信息等,这些信息已在卡片出厂时固化,不能更改。
因此该Block 不能再复用为应用数据块。
每个Sector 中的Block3被特别用来存放对该Sector 中应用块Block0,1,2及其本身Block3进行数据存取的密码及存取权限。
整个Mifare1S50非接触式智能卡共有16个Block3。
根据绝对地址编址,他们可被编为Block3(在Sector0中),Block7(在Sector1中),Block11(在Sector2中),以及Block63(在Sector15中)等等。
对于某一Sector 中的Block3的绝对地址编址可以由下列公式计算得到: Block X=(N +1)*4-1 其中:X :绝对地址编址的Block 块号 N :Sector 扇号,0至15 通常每个扇区的Block0,1,2都存放着非常保密的数据,例如坐公交车/出租车前在公交公司指定地点已购买的车资钱款,智能大厦/智能小区进出时所需的控制信息,股票交易时持有股票交易智能卡片者必须对已存放在智能卡中的交易密码数据(例如帐户、存款信息、已买进股票数量/品种等等)进行确认,才能得以股票交易,等等。
由于每个Bl k3中包含了该扇区的密码字节以及对该扇区中其余Bl k012进行数据处文军维修 由于每一个Block3中包含了该扇区的密码字节以及对该扇区中其余Block0,1,2进行数据处理的存取控制权限字节,因此如何操作处理Block3将是很重要的内容。
以下将展开对每个扇区的Block3进行研究。
Block3有16个byte组成。
前6个字节是密码A(KEYA),KEYA的缺省值可能为“A0A1A2A3A4A5”;最后6个字节是密码B(KEYB),KEYB的缺省值可能为“B0B1B2B3B4B5”;中间4个字节是控制字节,缺省值可能为“FFH07H80H69H”;利用KEYA或KEYB并遵守早已定义在4个控制字节中的存取条件,我们便能对该密码(KEYA或KEYB)所对应的Sector内的应用块Block0,1,2进行数据读/写/更新等操作。
由于非接触式智能卡的操作,包括数据流的传递等都是以“非接触”方式来完成的,因此在MCU与非接触式智能卡之间必须有一个传递密码(或数据流)的中间媒体,即ASIC模块。
RC150/170就是这样一种ASIC模块。
它担负着非接触式智能卡与MCU(微处理机)之间所有的密码/数据相互传递的重要任务。
对非接触式智能卡进行密码操作,变成对RC150/170ASIC模块进行密码操作。
RC150/170ASIC模块与非接触式智能卡之间的信息传递(包括密码等)对用户来说是透明的,会自动传递并完成。
因此如何对非接触式智能卡进行“密码操作”(对Block3的操作)变成如何对RC150/170ASIC模块进行密码操作。
Philips公司的MCM200模块,MCM500模块或SB201,SB601(Uni-VisionEngineeringLtd.的产品)模块中都包含有RC150/170ASIC模块,因此本文所讨论的内容,包括下面设计的程序等,也适用于这些模块。
RC170是RC150的新一代ASIC模块,速度较快。
现在我们广泛使用的非接触式智能卡读写设备中大都包含有以上所列的ASIC模块之一。
图1显示了在用户(MCU)与非接触式智能卡之间基本的密码传输关系,并请特别注意ASIC 模块RC150/170的作用等等。
图1ASIC模块密码传输关系图 在研究ASIC模块RC150/170的时候,我们必须关注所有与“密码操作”有关的寄存器/存储器的情况。
●密码数据寄存器KeyDataRegister(寄存器地址:0x0A); ●密码地址寄存器KeyAddressRegister(寄存器地址:0x0C); ●密码状态/控制寄存器KeyStatus&ControlRegister(KEYSTACON)(寄存器地址:0x0B); ●其他相关寄存器。
所有这些与“密码操作”相关的寄存器都是“只可写不可读”的,即WOM(Write-Only-Memory)。
因此不要试图去读取这些寄存器的内容。
3、“密码操作”的研究及其应用程序开发通常对非接触式智能卡的“密码操作”有两个主要步骤每个主要步骤又有若干个小文军维修 通常,对非接触式智能卡的“密码操作”有两个主要步骤。
每一个主要步骤又有若干个小的步骤有序并且必须是连续地完成。
“密码操作”的两个主要步骤是: ●“LOAD_KEY ”密码存取 ●“AUTHENTICATION ”密码认证3.1“LOAD_KEY ”密码存取 “LOAD_KEY ”密码存取必须由以下步骤有序并连续地完成: ●设置新的密码值 ●设置密码状态/控制寄存器KeyStatus &ControlRegister(KEYSTACON) ●设置密码地址寄存器KeyAddressRegister (寄存器地址:0x0C ) ●设置密码数据寄存器KeyDataRegister (寄存器地址:0x0A ) ●校验STACON 寄存器,以确定这次的“LOAD_KEY ”密码存取是否有效 以下将按照上述的次序进行具体的程序设计,所有的程序都使用标准的Intel -51MCU 指令,以利于读者在LOW -LEVEL 级上移植到其相应的应用项目中。
3.1.1设置新的密码值 新的密码值为6个bytes ,在如下的程序设计中被依次存放在MCU 内部RAM 的72H ~77H 的6个单元中;程序员亦可自定义其他的存储单元作为新的密码值存放的缓冲区;R1寄存器为新密码缓存首地址指针。
如下所设置新的密码值为:“AAAAAAAAAAAA ” SETUP_NEW_KEY_VALUE: ;MOV R7,#06H;密码长度为6bytes MOV R1,#72H;R1为新密码缓存首地址指针 MOV @R1,#0AAH ;设置新密码值 MOV 73H,#0AAH MOV 74H,#0AAH MOV 75H,#0AAH MOV 76H,#0AAH MOV 77H,#0AAH 良好的经验告诉我们,为了确保整个智能卡系统的高度安全保密,我们有必要在程序设计中,在完成了“密码操作”之后,立即清除存放新的密码值的缓冲区,简单的方法如下: CLEAR_NEW_KEY_BUFFER: MOV R7,#06H;密码长度为6bytes MOV R1,#72H;R1为新密码缓存首地址指针CLEAR_LOOP: MOV @R1,#00H ;清除新密码值所在缓冲区 INC R1 DJNZ R7,CLEAR_LOOP3.1.2设置密码状态/控制寄存器KeyStatus &ControlRegister(KEYSTACON) KEYSTACON 寄存器是一个只可读不可写的寄存器(存储器),它指示出“密码操作”时所处的状态和要控制的ASIC 内部“密码存储器RAM ”的选择。
这里所指的“状态”是指本次“密码操作”两个主要步骤中的一个。
KEYSTACON 寄存器是一个8-bit 的存储器,其中有用的位(bit )只有3位。
其具体内容为:文军维修寄存器是个的存储器,其中有用的位)只有位其具体内容为 其中,MSB (“A/L ”位)若被设置为“0”,则意味着当前“密码操作”的“状态”是“LOAD_KEY(密码存取)”;若被设置为“1”,则当前“密码操作”的“状态”是“AUTHENTICATION(密码认证)”。
最后 2个bit :KS0KS1是密码集keyset 的选择。
在ASIC 中共有3套密码集(keyset )和一个传输密码(TransportKey )可被选择。
设置KS0、KS1的值实际上是在选择(寻址)ASIC 模块内部存放密码的不同的存储器单元(密码箱)。
如果“LOAD_KEY ”(密码存取)时使用了keyset0,则“AUTHENTICATION ”(密码认证)时只能使用keyset0,而不能使用keyset1或keyset2或其他,因为在ASIC 模块内,keyset0指定的密码存储器地址单元与keyset1或keyset2所指定的密码存储器地址单元是不同的单元。
这就好比去超级市场购物,入超市前您把您的包裹寄存在超市门前包裹箱A 中,并得到打印有开起包裹箱A 的(开箱)密码纸条;当您欲取回包裹时,拿着包裹箱A 的(开箱)密码纸条而去开包裹箱B 或C 的箱门,当然不能打开,因为您的地址(箱号)不对,当然您的包裹也不能拿到。
这是密码的认证出错。
在ASIC 中有相同之处。
如果“LOAD_KEY ”(密码存取)时使用了keyset0,并存放上密码,而在“AUTHENTICATION ”(密码认证)时却使用keyset1或keyset2或其他而来验证刚才存放的密码,当然会得到ASIC 模块返回的认证出错(“AE=1”)。