您好, 访客   登录/注册

非接触卡小额电子钱包的可靠扣款流程研究

来源:用户上传      作者: 严天华

  摘要:本文通过对非接触卡基本原理的阐述,对常规写卡失败的原因分析,探寻一种实现电子钱包可靠扣款的算法流程。
  关键词:非接触 电子钱包 算法流程 感应区
  中图分类号:TP391 文献标识码:A 文章编号:1007-9416(2011)12-0101-02
  
  非接触卡,是将一个集成电路芯片镶嵌于塑料基片中,封装成卡的形式,与基站芯片数据交互无需接触。其典型代表是M1卡,是菲利浦下属子公司恩智浦出品的芯片缩写,全称为NXP Mifare1系列,常用的有S50卡。在我国,该卡片广泛用于公交、学校等领域,做小额电子钱包使用。在实际使用过程中,因为是非接触式卡,有时用户刷卡的速度过快,会导致读写机具尚未完成对卡的操作,卡已经离开了天线区域,从而出现不可预知的后果,严重的话会使IC卡里的数据丢失,或者可能出现重复扣钱等异常情况发生给用户造成损失,或者小范围闭环应用出现不平帐的情况发生。
  1、非接触卡的电子钱包功能
  M1S50卡分为16个扇区,每个扇区由4块(块0、块1、块2、块3)组成, 每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取控制. 每个扇区的0-2块都可以进行读、写操作。因此,可以根据需要,把其中的几个字节做为有值金额处理,实现小额电子钱包的功能。
  2、非接触卡的读写卡原理及写卡失败分析
  2.1 非接触卡与基站芯片的数据交互原理
  基站芯片向M1卡发一组固定频率的电磁波,卡片内有一个LC串联谐振电路,其频率与讯写器发射的频率相同,在电磁波的激励下,LC谐振电路产生共振,从而使电容内有了电荷,在这个电容的另一端,接有一个单向导通的电子泵,将电容内的电荷送到另一个电容内储存,当所积累的电荷达到2V时,此电容可做为电源为其它电路提供工作电压,将卡内数据发射出去或接取读写器的数据。
  2.2 场强与能量分布随距离不同,则写卡一定要在一定范围内
  显示了距离是d时场强H的幅值标记的是根据ISO 14443最小场强Hmin=1.5A/m的线,从这个图可以看出,距离天线中心位置越远,则场强越弱。
  2.3 读卡和写卡距离存在差异,导致能读到卡,而不能正常写卡
  经过大量实验,发现非接触卡的读卡和写卡距离有所不同,总是存在差异。
  这个距离差D,随电路元件分散不同而约有不同0.2~2mm不等,与设计电子工程师设计水平也有一定关系。这个差异与场强分布也相吻合。
  2.4 写卡过程分步执行,可能导致写卡失败
  卡进入感应区,执行卡请求,防碰撞,卡认证,读块,写块等过程。其中,卡请求及碰撞,大约需要4ms;卡认证,大约需要2ms;读块,大约需要2.5ms;写块,大约需要6ms。
  影响卡上数据变化的只有写卡过程,而该过程需要分两步执行。
  第1步:向M1卡发送待写的块号信息。(参考文献2)
  第2步:向M1卡发送待写的16字节块数据。
  当卡执行完第1步后,正在执行第2步的瞬间,已经离开感应区,这时,基站芯片就无从知道是否成功将16字节写成功。
  2.5 刷卡太快,及卡非常规运动轨迹导致卡在有效感应区停留时间太短,而出现写卡异常
  当卡片沿感应区的横切面快速划过,如果写卡动作刚好发生在卡离开感应区的瞬间,即写卡动作的第2个步骤的时候,就可能出现卡数据丢失,或者卡是否真的写成功因为基站芯片没有接收到应答信息而成了未知。
  3、解决非接触卡写卡异常的方法及原理
  3.1 非接触卡的电子钱包存储信息规划
  块0:Flag:标识写块1的开始和结束标志。
  块1:DataA:标识电子钱包数据;
  块2:存储的DataB,FlowB是块1的备份信息。
  其中当钱包块1信息丢失时,块2备份信息直接可以恢复块1。设计这样结构,配合后面的算法,才能有效保证算法的有效性。
  3.2 电子钱包扣款流程实现
  数据备份处理:根据写卡成功与否的标志flag来判断当两个块数据不一致的时候,应该怎么更新数据块。
  (1)当两个块相等的时候,无需更新,直接返回。
  (2)当两个块不等的时候,如果flag=1说明上次写块是成功的,直接用块DataA去更新块DataB.如果此时flag=0,说明上次仅仅写DataA区域,但没有完成写标志的动作,此时,直接用用块DataB去更新块DataA,图2。
  3.3 流程分析
  非接触卡在进入和离开感应区的时间是随机的,当其离开感应区的时刻及其对各数据块和标志的影响情况,见表3。
  流程以DataA为基准,对DataA的修改是否有效,由flag来判定。
  参照失败原因及系统写卡流程,做如下几点分析:(1)解决了写卡与读卡距离的差异。因为写数据块前,先起用写标志,这样,写数据块的时间,卡已经处于可写卡的感应区范围内。(2)解决了卡运动轨迹不规范带来的写卡异常。一次写卡命令需要6ms。根据流程,完整写一次卡需要3次写卡命令,2次写标志,1次写数据。前面2次写卡失败都可以在流程中得到自动恢复,只要最后一写标志的时间处于感应区就可以完成正确的写卡动作,有效消耗时间是6ms。这样,无论卡从何种空间位置穿过感应区,都可以有效完成正确的写卡动作。
  4、实验及结论
  按照本算法流程,笔者对M1卡的扣款流程进行了为期1周的实验,对10万条扣款写卡记录进行跟踪结果:(1)没有出现卡数据丢失情况;(2)没有出现重复写数据;(3)没有出现漏写数据的情况。该算法已投入实际使用,性能稳定。
  通过本算法的设计,能解决因设计误差带来的写卡异常, 有效降低电子工程师的设计难度,开启了用软件算法解决硬件缺陷的新思路。
  参考文献
  [1]王爱英.智能IC卡技术[M].北京:清华大学出版社,2001.4.
  [2]王蔷,等.电磁场理论基础[M].北京:清华大学出版社,2001.2.
  [3]Klaus Finkenzeller.射频识别RFID技术[M].北京:电子工业出版社,2001.
  [4]单承赣,柴斌,姚磊.高集成度TYPEA读写器芯片MF RC500及其应用[J].国外电子元器件,2004(8).


转载注明来源:https://www.xzbu.com/8/view-49107.htm