基于OTP的一次性电子钱包RFID卡
文章出处:http://www.singbon.com 作者:刘敬术,刘俊伟,王兼明,龚敏 人气: 发表时间:2011年09月27日
1 引言
电子钱包是顾客在电子商务购物活动中常用的一种支付工具,是在小额购物或购买小商品时常用的新式钱包。电子钱包有两种概念:一种是纯粹的软件,只要用于网上消费、账户管理,这类软件通常与银行账户或银行卡账户连接在一起的;二是小额支付的智能储值卡,持卡人预先在卡中存入一定的金额,交易时直接从卡中扣除交易金额,因为此类卡不像银行卡那样需要大型的系统支持,所以在一些活动的、小额的交易中应用非常广泛,最具代表性时公交卡。
电子钱包智能储值卡一般是基于射频识别技术,并包括芯片、天线和封装三个主要组成部分。电子钱包的芯片存储值可以是数字现金和其他电子货币,可以在相应的装置上消费,并且可以显示有多少钱在用户的电子钱包内,如公共交通卡可以在相应的公共交通读卡机上读出其存储值,在其上进行消费。
随着电子商务和技术的发展,电子钱包的使用已经越来越多,但是现有的智能储值卡都是基于EEPROM(电可擦除可编程只读存储器)工艺,其成本难以下降,阻碍了对电子钱包的利用。利用低成本的0TP(一次可编程)存储器,结合模拟电路和数字电路实现一种一次性电子钱包。这种一次性电子钱包的基本功能是在发卡时将一定的金额存入卡中,然后最终用户在读卡机上以单位值或是单位值的倍数消费,直到金额消费完为止。因为OTP存储器的只能一次编程的特性,使得基于这种存储器的一次性电子钱包与基于EEPROM 的电子钱包在内部操作上有很大的不同。
2 一次性电子钱包的功能
电子钱包一般包括以下几个主要功能:初始化钱包、扣钱包、加钱包和读钱包。初始化钱包是指将一定的金额在发卡商那里存人电子钱包中;扣钱包是支持电子钱包在指定的机具消费,每次消费扣除一定的金额;加钱包是指为电子钱包充值;读钱包则是将电子钱包的余额读出。一次性电子钱包没有加钱包的功能,但其它功能从用户层面来说跟S50等常用的电子钱包卡一样的。
2.1 存储器分配
一次性电子钱包的OTP存储器的大小为8KBits,主要划分为两个功能区:一个是存取面值和密码等信息的操作区,大小为2KBits;另一个则是记录单位值使用情况的减法区,大小为6KBits,减法区中每个Bit代表一个单位值。操作区又分为4个扇区,每个扇区有4块,每块的大小为128 Bits。每个扇区的第4块存储密码,扇区0的第一块由造卡厂商写入UID等数据,扇区0的第二块写入一次性电子钱包面值的数据,其它用户自定义的数据块可以由用户写人任何数据。
2.2 初始化钱包
电子钱包的面值是指发卡商将智能卡发到最终用户手上时的最初金额。基于(OTP存储器的一次电子钱包的面值由两个数表示,分别为如单位值U是(32Bits)和单位值可使用次数是T16(Bits),在一个大小为128Bits 的 Block 中它的分配如图1所示的格式写入数据。面值等于单位值U乘以可使用次数T,如单位值是32’d2,可使用次数是16’d50,则面值就是100。减法区中,每个Bit代表一个单位值,一共有6000个Bit,即可使用次数T可设定的最大值为6000,但也可以是小于6000的任何数。面值块设置一个块指针,这个块被写入后,就编程这个指针为1。块指针设置为1后,就不能对这个块再进行写入操作,且每次执行扣钱包和读钱包操作,都要检查这个块指针是否为1。
图1存储器分配图
图2 面值表示
2.3 扣钱包
一次性电子钱包进行面值的初始化后,就可以执行减法操作了,但不能像S50那样执行加法和再充值等操作。一次性电子钱包减法操作分以下几个步骤:第一步,卡和读卡机之间相互通过身份认证和密码校验;第二步,从减法区的最后一个地址(第6000个)开始,以倒序的方法寻找最高位的被编程比特的地址,记为LBAddr第三步,从读卡机接受减法值S,用S除以面值区中的单位值 ,得到结果商Q和余数R,如果余数R不为0,则表明减法值S不是单位值 的整数倍,操作失败,否则进行下一步;第四步,用LBAddr减去减法区中的第一个比特的地址FBAddr,得到单位值使用次数UT,如果商Q和单位值的使用次数UT的和小于等于面值区中的次数T,则进行下一步,否则中断。第五步,LBAddr 加上商Q得到新的编程地址NBAddr,接到读卡机的编程命令后,编程第 NBAddr 个比特的值为1,并向读卡机返回减法操作成功的信息。
图3 扣钱包流程
扣钱包的操作步骤中,首先以倒序的方式寻找到第一个(以顺序的方法则是最后一个)被编程的Bit的地址,然后根据这个地址以顺序的方式算出该电子钱包中单位值的使用次数(即已消费的金额);如果再次消费的条件成立,则再次用顺序的方式算出这次消费被编程的地址,最后在这个地址上编程为1(所有Bit的初始化值为0)。这样每次做减法,无论减法值s是单位值的多少倍,都只编程一个Bit,本设计所采用的OTP 中,编程一个Bit 的数据大约只要200μs,而基于EEPROM的传统方法则要编程1281个Bit的数据,时间大约需要4ms,大大的缩小了编程时间。整个流程如图3所示。
2.4 读钱包
读钱包是指将余额读出,这是电子钱包中最基本的操作,其分三个步骤完成:第一步,卡和读卡机之间相互通过身份认证和密码校验;第二步,从减法区的最后一个地址开始,以倒序的方法寻找最高位的被编程比特的地址,记为LBAddr;第三步,用LBAddr减去减法区中的第一个比特的地址FBAddr,得到单位值使用次数UT,并用减法区中的可使用次数T减去UT得到电子钱包单位值的未使用次数RT;第四步,将U乘以RT得到余额R,然后返回给读卡机。
2.5 其它
除了具有一次性电子钱包的功能外,本设计还有共10块的存储空间供用户存储其它信息,可以作为一个具有加密功能的存储卡来使用。同时每个扇区对应着一个密码块,每个密码块都对应着一个密码指针。在密码指针为零时,加密校验使用的密码为默认密码,由数字电路自动给出。当用户对密码块进行编程后,就同时对相应的密码指针编程,此后加密校验操作就使用用户写入的密码。
3 电子钱包的实现
一次性电子钱包采用ISO/IEC 14443 TypeA 协议 ,兼容市面上流行的 MifareOne 系列指令 。除了不支持 INCREMENT 和RESTORE 指令外,其它指令格式与S50或其兼容卡一样。包括模拟电路,一次性电子钱包的芯片如图4所示。
图4 芯片总体框图
模拟电路中,整流电路的作用是将读卡机中耦合过来的射频信号交流电压转换成直流电源电压,在整流电路后面加上一级稳压电路,防止直流电压过高;上电复位电路为数字电路产生一个复位信号,在卡片进入卡机的有效磁场范围后时复位数字电路的所有寄存器;解调电路则将载波中的数据信号解调出来作为数字电路的信号输入;调制电路则是根据数字电路返回的信号调制天线,向读卡机返回信号;时钟整形电路则是在载波中整形除13.56M 的时钟信号供给数字电路。
数字电路中,接收模块主要是将以14443 TypeA 协议编码的信号译成二进制码,并为以后的模块提供各种分频时钟;数据处理模块的功能主要是指令译码、0TP 存储器进行读写操作、卡片的状态转移;加密单元采用流密码对数据进行加密,除了14443 TypeA规定的命令外,其它命令的通讯都经过加密;输出模块则以14443 TypeA 协议规定的格式向读卡机返回信号。
存储器方面,采用凯路公司的专利技术XPM存储器。XPM 采取对氧化层击穿的原理,实现一次写入多次读取。相对常规 RFID 中使用EEP—ROM,这种存储器在常规的 CMOS 工艺下就可以实现,其成本要比 EEPROM 工艺低,并且数据保存能力可达5O年以上,而EEPROM 的数据保存能力在10年以下。XPM 的存储机理使得它不像 EEPROM 那样容易受外界干扰(如激光,微波)而造成数据丢失,使得它特别适合在公交卡,电子护照等安全领域内应用。
4 结语
在14443 TypeA 协议中实现了一种一次性电子钱包 RFID卡。该一次性电子钱包基于OTP 存储器,指令和加密方法与市面通用的S50相兼容,可以很方便地应用到现有的读卡机系统中。一次性电子钱包的基本原理是减法区中每一个Bit代表一个单位值的使用,据此给出了一次性电子钱包面值的表示方法,扣钱包的实现步骤和读余额的操作方法。在SMIC 0.18/μm 的工艺条件下实现了该一次性电子钱包,并流片测试成功。
(文/1.四川大学物理科学与技术学院微电子技术四川省重点实验室,2.四川凯路威电子有限公司,1.2刘敬术,1.2刘俊伟,2王兼明,1龚敏)