基于JavaCard的NFC移动智能应用系统研究与安全设计
0 引言
近几年来,随着移动智能科学技术的不断发展,移动智能终端具有广泛应用于各大行业领域的潜力,移动电子支付通信服务领域也不例外[1]。移动智能电子支付市场没有被完全开拓,主要包括以下几个方面的原因[2]:(1)移动智能电子支付应用效率低,支付流程复杂;(2)电子支付安全性无法保证,其核心技术不成熟;(3)远程移动电子支付服务单一、支付内容不丰富;(4)移动智能电子支付的利益机制尚不完善等。这些都对移动智能电子支付的市场推广产生一定影响,因此,移动智能电子支付在中国的推行受到了诸多限制[3]。
针对上述存在的各种问题,为了进一步改善与提高移动智能终端在移动电子支付通信服务方面的高效性、应用性与安全性,本文在深入分析JavaCard和NFC技术的理论基础上[4],从移动智能电子支付核心技术机制出发,提出了一种以JavaCard智能卡技术原理与NFC移动智能技术的理论知识为前提的移动智能支付应用系统模型框架,提高了移动智能电子支付过程的便携性、应用性;并且针对多标签情况下的碰撞问题设计了一种基于动态二进制防碰撞算法的应用支付安全方案,确保了移动智能电子支付过程中的安全性[5]。
1 JavaCard智能卡技术
JavaCard是Java平台中最小的 subset开发平台,其设定的执行环境为SmartCard上的晶片或是有严格硬体限制的环境[6]。JavaCard的问世,一方面是为了推展Java的应用层次,另一方面是为了将Java平台的特性以及JavaCard的优势带到SmartCard上,这些优势主要有:
(1)Platform-Indep endent:使得JavaCard applets (在JavaCard上执行的程式)能够在不同卡片的JCAE(JavaCard Application Environment)上执行,即通过JavaVM机制来达到跨平台的能力;
(2)Multi-Application Capable:在同一个Java- Card中能够存放多个JavaCard applets,并且也能够通过下载方式来获取必要的applets 而达到一卡多用的目的,使得卡的使用能够更有弹性;
(3)Compatible with Existing Smart Card Standar- ds:JavaCard智能卡能与国际标准ISO7816(SmartCard标准)以及工业界标准如 Europay/Master Card/Visa (EMV)相容。所以,在未来JavaCard不但能够取代SmartCard的功能,更能够发展出多样化的应用,其中移动智能电子支付就是其中之一,甚至能将许多不同的应用程序集合于一张卡上,使得这些随身的软件能够更小更实用。
2 基于JavaCard的NFC移动智能应用系统
2.1 NFC移动智能生态模型的构建
NFC移动智能生态系统是基于RFID技术发展的一种非接触式的移动智能电子应用系统原型,其主要包括移动智能终端用户群体、移动运营机构、银行金融机构、相关服务提供厂商、NFC移动智能终端制造厂商等,如图1所示。
2.2 移动智能应用系统模型
(1)模型框架描述
基于JavaCard的NFC移动智能应用系统模型主要包含两大部分:电子支付应用与非电子支付应用。如图2所示。
从模型设计中可知,非电子支付应用环节一般由娱乐、防伪、私人门禁等方面组成,移动智能终端用户需通过计算机网络与备份数据信息库对电子产品做进一步防伪认证。其电子支付应用环节一般由移动智能终端用户、制造厂商/产品提供厂商、移动网络运营机构和金融机构等组成。
(2)移动智能终端支付银行选择模块
现有的移动智能电子支付应用系统中在银行卡的选取方面较为固定,不能动态地对其绑定的银行电子支付手段与方式进行选择,因此,本文在基于JavaCard的NFC移动智能应用系统模型的设计中特别添加了移动智能终端支付银行选择模块,实现电子支付过程中的动态与便捷。如图3所示。
具体选择流程如下:⑴选取多户银行并进行开户业务,包括移动电子支付业务;⑵通过移动智能终端获取其应用系统APP;⑶第一次使用时进行设置,包括默认设置,如设置默认银行卡号、绑定默认联系方式等,或者依据添加时间的先后对银行卡的选取进行管理,默认银行卡是第一支付选择的卡号,余下银行卡添加到备选银行卡清单之中;⑷若默认或当前选取的银行卡无法进行支付操作,将自动提示选取下一个邻近时间点的银行卡作为支付银行卡,依次类推,直到支付成功为止。
3 改进的动态二进制防碰撞算法设计
为了满足移动智能电子支付应用系统的安全需求,本文对传统二进制搜索算法进行改进。接下来将对改进的动态二进制防碰撞算法进行详细分析。
(1)基本指令描述
为了描述这个算法,假设标签标识号NFCID的位数为n,即从高位到低位分别为Dn-1Dn-2...D1D0,出现多标签冲突的位数为m(0≤m
①SEL_REQ(x, Dm):读卡器传输一个数值x(x属于1或者0)给相关范围内的标签申请回复,若标签号出现冲突的最后一位到第一位这m个数值中有一个或多个数值位与满足要求的标签回复相一致(以便于降低初始化标签区域面积大小,做出相应优化)。说明:第1次询问时,x=n,使用NULL表示标签号无数值,即空值,所以申请回复指令是:SEL_REQ(NULL, Dn-1)。
②SEL RES(m):获取到余下冲突位置的数据(第m-1至第1位),记录未出现冲突位置的数据。
③SR_DATA:选取满足条件的标签,且获取其数值信息:对符合条件的标签,将其存储的相关数值信息传输给读卡器等相关设备。
④Unsel:将多个预定选取中的一个标签进行取消操作,此标签转换到“无声”状态。此时这个标签处于未被激活状态,对其步骤③中的申请指令SEL_REQ不作出任何答复。当远离读卡器感应操作区域之外时,才能进行标签复位操作,这样使得标签能够重新被激活。
(2)改进算法原理
若NFCID为8 bit,则读卡器作用区域内有多个标签,这里以5个为实例,标签分别为:11100101、10100110、11010100、1000011、10101110。读卡器将利用该算法来识别它们。初始化阶段,读卡器对区域内标签处于未知状态,所以发送SEL_REQ(NULL, 8)命令,要求作用范围内任何一个标签做出应答信息。详细执行过程如图4所示。
4 结束语
本文以JavaCard智能卡技术原理与NFC移动智能技术的理论知识为前提,首先提出了一种基于JavaCard和NFC技术的移动智能支付应用系统的模型框架,并在该模型中设计了移动智能终端支付银行选择模块;其次针对多标签情况下的应用支付碰撞问题设计了一种改进的动态二进制防碰撞算法。研究分析表明,应用支付模型框架与防碰撞安全算法在移动电子支付通信服务方面均达到了次优化的应用与安全效果。
参考文献
[1] Naoya S, Masakazu U, Yasuhiro T. Design technigues to reduce power consumption for ARM946E-S core[J]. Oki Tekunikaru Rebyu, 2005, 72(3): 52-55.
[2] 张德学, 郭立, 傅忠谦. 面积优化与低功耗设计的JavaCard处理器[J]. 中国科学技术大学学报, 2008, (38)3: 289-292.
[3] 李翅. 基于JavaCard和NFC技术的手机钱包关键技术研究[D]. 长沙:湖南师范大学,2009.
[4] 林龙, 张果, 王剑平,等.基于NFC技术的标签模式设计[J]. 微处理机, 2013, 3(3): 31-36.
[5] ETSI. TS 102 622 v7.6.0, 2010.04, Smart Cards, UICC- Contactless Front-end (CLF) Interface; Host Controller Interface (HCI) (Release 7) [S]. Prepared by the European Telecommunications Standards Institute, 2010.
[6] 宋海燕. 基于Android的NFC文件传输系统的设计与实现[D]. 北京: 北京邮电大学, 2012.