Mifare1卡及其读写器ASIC模块之“密码操作”研究与其应用程序开发
作者:智荟科技
日期:2008-06-18 16:05:56
摘要:非接触式智能卡已经广泛地应用于各类门禁控制系统,公共交通支付系统,e-purse系统,高速公路不停车收费系统,IBMS(智能大楼管理系统),海关过境身份识别,以及医疗保险系统等等。
关键词:RFID
关键字: 非接触式智能卡 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
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模块RC150/170的时候,我们必须关注所有与“密码操作”有关的寄存器/存储器的情况。
●密码数据寄存器KeyDataRegister(寄存器地址:0x0A);
●密码地址寄存器KeyAddressRegister(寄存器地址:0x0C);
●密码状态/控制寄存器KeyStatus&ControlRegister(KEYSTACON)(寄存器地址:0x0B);
●其他相关寄存器。
所有这些与“密码操作”相关的寄存器都是“只可写不可读”的,即WOM(Write-Only-Memory)。因此不要试图去读取这些寄存器的内容。
3、“密码操作”的研究及其应用程序开发
3.1“LOAD_KEY”密码存取
3.1.1设置新的密码值
3.1.4设置密码数据寄存器KeyDataRegister(寄存器地址:0x0A)
3.2“AUTHENTICATION”(密码认证)
“AUTHENTICATION”(密码认证)操作必须按照如下的几个步骤进行:
●设置ASIC模块中的TOC/BCNTS寄存器等
●设置密码状态/控制寄存器KeyStatus&ControlRegister(KEYSTACON)
●设置密码地址寄存器KeyAddressRegister(寄存器地址:0x0C)
●设置AUTHENTICATION指令码
●密码地址变换
●校验STACON寄存器,以确定这次的“AUTHENTICATION”密码认证是否有效
●关闭TOC及一些其它操作等
由于“AUTHENTICATION”(密码认证)操作同“LOAD_KEY”(密码存取)操作相互类似,在此不再重复。
只有在完全完成了上述的两个主要的密码操作步骤,并且得当了ASIC模块“OK”的响应,非接触式智能卡上相对应与刚才进行过密码操作的某一扇区Sectorm内的Block0,1,2才能被MCU进行访问,包括进行读/写等数据操作。一旦要求对另一扇区Sectorn内的Block进行数据读写时,则必须重新开始对扇区Sectorn进行密码操作,包括“LOAD_KEY”(密码存取)操作和“AUTHENTICATION”(密码认证)操作等。
4、结束语
非接触式智能卡技术虽然至今只有4~5年的成熟发展期,但是由于它的高度保密性,以及使用的方便性,得到了很快的普及。这种普及又加速了非接触式智能卡技术的飞跃发展。它同银行用接触式CPU卡相互融合,产生了新的双界面智能卡(Contact&ContactlessInterface),在e-purse电子钱包系统等方面取得到了很大的成功。世界上一些著名的大公司,如SONY公司等,也介入了非接触式智能卡技术领域,并且SONY的非接触式智能卡技术又有着非常独到之处。根据笔者对SONY非接触式智能卡技术的使用、研究和了解,相对MIFARE而言,其在读卡的速度、稳定性、误码率等性能上都有很大的提高,这也是其溶入了新的技术所致。
非接触式智能卡已经广泛地应用于各类门禁控制系统,公共交通支付系统,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
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模块RC150/170的时候,我们必须关注所有与“密码操作”有关的寄存器/存储器的情况。
●密码数据寄存器KeyDataRegister(寄存器地址:0x0A);
●密码地址寄存器KeyAddressRegister(寄存器地址:0x0C);
●密码状态/控制寄存器KeyStatus&ControlRegister(KEYSTACON)(寄存器地址:0x0B);
●其他相关寄存器。
所有这些与“密码操作”相关的寄存器都是“只可写不可读”的,即WOM(Write-Only-Memory)。因此不要试图去读取这些寄存器的内容。
3、“密码操作”的研究及其应用程序开发
3.1“LOAD_KEY”密码存取
3.1.1设置新的密码值
3.1.4设置密码数据寄存器KeyDataRegister(寄存器地址:0x0A)
3.2“AUTHENTICATION”(密码认证)
“AUTHENTICATION”(密码认证)操作必须按照如下的几个步骤进行:
●设置ASIC模块中的TOC/BCNTS寄存器等
●设置密码状态/控制寄存器KeyStatus&ControlRegister(KEYSTACON)
●设置密码地址寄存器KeyAddressRegister(寄存器地址:0x0C)
●设置AUTHENTICATION指令码
●密码地址变换
●校验STACON寄存器,以确定这次的“AUTHENTICATION”密码认证是否有效
●关闭TOC及一些其它操作等
由于“AUTHENTICATION”(密码认证)操作同“LOAD_KEY”(密码存取)操作相互类似,在此不再重复。
只有在完全完成了上述的两个主要的密码操作步骤,并且得当了ASIC模块“OK”的响应,非接触式智能卡上相对应与刚才进行过密码操作的某一扇区Sectorm内的Block0,1,2才能被MCU进行访问,包括进行读/写等数据操作。一旦要求对另一扇区Sectorn内的Block进行数据读写时,则必须重新开始对扇区Sectorn进行密码操作,包括“LOAD_KEY”(密码存取)操作和“AUTHENTICATION”(密码认证)操作等。
4、结束语
非接触式智能卡技术虽然至今只有4~5年的成熟发展期,但是由于它的高度保密性,以及使用的方便性,得到了很快的普及。这种普及又加速了非接触式智能卡技术的飞跃发展。它同银行用接触式CPU卡相互融合,产生了新的双界面智能卡(Contact&ContactlessInterface),在e-purse电子钱包系统等方面取得到了很大的成功。世界上一些著名的大公司,如SONY公司等,也介入了非接触式智能卡技术领域,并且SONY的非接触式智能卡技术又有着非常独到之处。根据笔者对SONY非接触式智能卡技术的使用、研究和了解,相对MIFARE而言,其在读卡的速度、稳定性、误码率等性能上都有很大的提高,这也是其溶入了新的技术所致。
未完,更多的资讯请点击www.233633.com查看,RFID技术资料下载请登陆http://bbs/233633.com.或您可通过以下方式进行咨询:
联系人:廖先生、袁小姐
电话(TEL):086-020-87511987
邮箱服务:zhihui@233633.com
网站:http://www.233633.com
产品技术QQ:445119338
系统方案QQ:350704625
在线咨询QQ:243313899
智能识别,荟萃百家之长!
作者:智荟科技
来源:智荟RFID科技网
版权所有,欢迎大家转摘,转摘请注明作者和出处!