基于移动终端NFC的门禁系统研究
引言
随着3G 时代到来,以及iOS、Android、WP8等移动操作系统的发展,手机不再局限于语音和短信功能,以智能手机为代表的新的移动终端产品不断问世。而具备近距离无线通信技术(Near Field Communication,NFC)功能的智能移动终端正在成为热门话题。
早在 2010年,谷歌就已经在手机中加入了NFC功能,还斥资收购了加拿大一个专门做NFC的创业型公司ZetaWire ,苹果也早就宣称要在iPhone中置入NFC功能,而诺基亚也从N9系列起加入手机NFC阵营。而今年7月份中国移动首款TD-SCDMA NFC手机研制成功更是成为国内业界焦点。
毫无疑问,以后NFC将成为移动终端的标配。除了最热门的移动支付功能,NFC技术还可以实现诸多其他功能如门禁、签到、安防、共享等等。本文基于NFC技术与智能移动终端结合的模式,提出一种社区门禁系统的移动终端化、智能化的构想及改进,拓展电信通信、非接触等移动应用的开发实现。
1 NFC技术介绍
1.1 NFC的发展与功能
在射频识别( RFID ) 及互联互通技术发展的推动下,为满足电子设备间近距离的通信需求,飞利浦、诺基亚、索尼等著名厂商联合推了的一项新的无线通信技术——NFC,是一种基于 13.56 MHz的短距离高频无线通信技术,允许电子设备之间进行非接触式点对点数据传输(在10 cm内)。NFC可以使移动设备、消费类电子产品、PC 和智能控件工具间进行近距离无线通信,让消费者简单直观地交换信息、访问内容与服务。
NFC 具有3种典型实用模式:第一种是仿卡模式(Card Emulation Mode),使NFC设备具有非接触式智能卡同样的功能;第二种是读取模式(Reader Mode),NFC设备主动读取NFC标签;第三种是点对点模式 (Peer to Peer Mode) ,使不同NFC设备之间进行数据交换。这些为消费者的生活方式开创了不计其数的全新机遇。这是一个开放接口平台,可以对无线网络进行快速、主动设置,也是虚拟连接器,服务于现有蜂窝状网络、蓝牙和无线 802.11 设 备。
1.2 NFC的连接与传输
在 NFCIP-1 标准中,连接和传输过程规定了调制机制、编码、传输速率、帧结构、射频接口,同时还有初始化过程、冲突检测和传输协议等规则,在传统的近距通讯相比中,近场通讯(NFC)就有天然的优越性,主要表现在连接建立的快速性, 具体对比如表1所示。
表1 传统近距通讯比较
分析表1的数据可以得出,根据NFC连接的快速性和传输的近场性,它可以服务于现有蜂窝状网络、蓝牙和无线 802.11 设备的通讯连接,或者生活应用系统中的权限审核,比如手机支付,IC卡、公交门禁系统应用等。
1.3 NFC的安全性
通讯技术的安全性,主要表现在双方的链接和身份验证这两个方面。NFC通讯技术在这两个方面都表现出了不错的安全性。NFC的拥有安全的链接,它的无线加密链接只需要一个公钥,在带内通道的不可见、以及建立链接之后对密钥的对称加密,都加大了基于NFC 的无线链接的安全性;NFC设备身份验证,不是伪装的被动/主动中间人生成的验证设备,而是确保链接密钥以预期的验证设备,相对通过连接一根线缆,或要求用户在两台设备上输入PIN 码来讲,更方便更安全,只需将双方设备靠拢即可触发相关软件和用户界面。基于NFC通讯技术的移动端支付或者刷卡系统可以根据应用安全级别,加入别的安全措施[6],对系统做一个安全补救。
1.4 NFC的硬件支持
随着微软、谷歌、诺基亚、三星等各大厂商各大新闻发布会都大推手机NFC功能,NFC手机端应用将会普及我们的生活。NFC 应用系统和3G 智能卡的操作系统具有共同的地方,如文件系统、安全保护、通信传输、命令模型。在硬件和软件上有共通的地方,考虑到与国际规范兼容问题,NFC 应用与3G 智能卡通信协议将采用单线协议。单线协议本身是一个全双工的通信协议,使用电压和电流调制在USIM 卡片及NFC 硬件组件之间传输数据。3G 智能卡(如USIM 卡)中的NFC 应用组件主要用于存储Java 应用并处理非接触交易,卡片须支持单线协议并能与NFC 处理器进行通信。另外,在共同的文件系统中存储任何与应用发行、电子钱包消费、充值过程相关的密钥、证书,降低被破解风险。
1.5 NFC的应用系统模型
NFC 非接触应用的操作系统,包括通信传输,文件系统、安全保护、命令模块、硬件结构等,NFC 技术的应用系统采用NFC 通信技术用作连接通信,把移动支付、电子票务、门禁、移动身份识别等非接触应用作为NFC 系统功能应用。实现系统的模型如图1所示。
图1 NFC非接触应用系统模型
图中表示了手机客户端的一个通信流程,在很多应用中,会对NFC手机端有一个初始化,根据手机系统(Android与WP8都已支持),主要在客户端软件中完成。客户端软件与服务器进行通信完成用户的支付、权限审核功能。
2 基于移动终端NFC的门禁系统研究
随着各大手机厂商在手机硬件上对NFC模块的支持,以及微软、谷歌两大操作系统对NFC应用程序API的支持,移动手机通常是作为通信中的发起者,也就是作为NFC 的读写器。智能手机也可以模拟作为NFC通信的接受者并支持P2P通信。基于NFC的移动端门禁系统主要在手机端进行软件封装,运用NFC的通讯技术与感应式读卡器进行通讯,在手机软件内部运用TCP/IP通讯技术,实现手机端与服务器端的通讯,实现权限审核。其实现大致过程如图2所示。本文将以 Android手机端来讲解系统的实现以及模型建立。
图2 手机门禁系统实现过程
2.1 Android系统NFC 应用模块
1)NFC管理器(NFCManager):可以用来管理Android设备中指出的所有NFC Adapter,但由于大部分Android设备只支持一个NFC Adapter,可以直接使用getDefaultAapater 来获取系统支持的Adapter。
2)NFC适配器(NFCAdapter)。一个NFC适配器代表一个NFC设备,提供一切NFC的操作,包括NFC设备开关、标签读写、NDEF数据交互、NFC安全访问、点对点通信等。
3)NDEF消息(NdefMessage):NDEF是NFC论坛定义的数据结构,用来有效的存数据到NFC tags.比如文本,URL,和其他MIME类型。在应用程序中通过接ACTION_TAG DISCOVERED Intent来读取NDEF消息。
4)NDEF记录(NDEF Record),是NFC中定义的NDEF数据包的基本组成单元。一个 NDEF数据包可以有一个或多个NDEF三录。
2.2 Android系统NFC 应用模块
在 NFC的Android应用系统架构中,NFC管理器(NFCManager)为应用程序提供编程接口,通过bind和service通信为主程序提供一个NFC适配器的实例。通过这个NFCAdapter,就可以对NFC的一些实体进行操作,比如注册前台tag提醒发布和前台NDEF推送。TAG, 标示一个被动的NFC目标,比如tag,card,钥匙挂扣,甚至是一个电话模拟的的NFC卡。当一个TAG被检测到,一个tag对象将被创建并且封装到一个Intent里,然后NFC 发布系统将这个Intent用 startActivity发送到注册了接受这种Intent的activity里。你可以用getTechList()方法来得到这个tag支持的技术细节和创建一个android.nfc.tech提供的相应的TagTechnology对象。
NFCAdapter作为整个NFC系统模块的实例对象,在整个NFC通讯模块中起着关键的扮演者,Android未其提供了丰富的函数接口,主要实现的功能如下:
1)设备初始化以及开关,相关程序段为
private static synchronized lNfcAdapter setupServiee();
public boolean enable();
public boolean disable();
2)NDEF消息的读写和安全管理链接,相关程序为
public void setLocalNdefMessage(NdefMessage message);
public NdefMessage getIx,calNdefMessage();
public NfcSecureElement createNfcSecureElementConnection0;
3)P2P的后台通信,相关程序段为
public void enableForegroundNdefPush(Activity activity,NdefMessage msg);
public void disableForegroundNdefPush(Activity activity);
这些基本函数都是NFC Binder客户端函数,通过Binder IPC调用Service对应的函数进行通信处理。在NFC Service中主要实现了以下功能:Adapter中的Binder客户端函数对应135 的Service端函数实现,包括INfcTag.Stub,INfcAdapter.Stub等;Service状态管理的消息处理;Java本地接口( Java Native Interface,JNI)的Native代码的访问接口。
2.3 Android系统NFC 门禁功能实现
在具有NFC功能的手机(比如Google Nexus S,操作系统:Android ICS 4.04)系统中安装上述NFC门禁客户端应用程序,并在系统设置中打开手机NFC功能,并在手机电池处于电量充足、低电和掉电三种情况下开展测试。当在有效距离范围内时,移动手机上的NFC硬件设备即可检测到的门禁标签,读取数据后,TAG分发系统会自动创建一个封装了NFC TAG信息的intent,应用程序接收该消息,解析其中的标签数据,并根据手机端客户软件进行密钥匹配,进行权限审核,当手机检测到门禁系统审核TAG 时,客户端软件自动启用界面(Activity)进行匹配,向系统同服务器发送访问请求,服务器返回访问权限。客户 端业务流程与测试结果如图3、4所示。
图3 Activity匹配流程图
图4 手机门禁功能测试结果
3 结论
测试结果表明,通过正确的软硬件配置和有效的测试方法,在具备NFC的移动终端上实现门禁系统功能易实施且稳定有效。此外,由于该系统采用Client/Server模式,代码调整灵活,功能增减方便,符合各类使用者不同的门禁性能需求。
目前,搭载NFC功能的移动终端在我国处于起步阶段,随着Android、WP8以及iOS操作系统对于NFC技术越来越广泛的支持,我们甚至可以通过 WP8移动终端NFC装载的信息与门禁系统进行密钥匹配实现权限审核。这一信息化、智能化社区发展趋势最终将促使人们舍弃各类卡片,获得极大的生活便利。