基于移動(dòng)終端NFC的門禁系統(tǒng)研究
引言
隨著3G 時(shí)代到來(lái),以及iOS、Android、WP8等移動(dòng)操作系統(tǒng)的發(fā)展,手機(jī)不再局限于語(yǔ)音和短信功能,以智能手機(jī)為代表的新的移動(dòng)終端產(chǎn)品不斷問(wèn)世。而具備近距離無(wú)線通信技術(shù)(Near Field Communication,NFC)功能的智能移動(dòng)終端正在成為熱門話題。
早在 2010年,谷歌就已經(jīng)在手機(jī)中加入了NFC功能,還斥資收購(gòu)了加拿大一個(gè)專門做NFC的創(chuàng)業(yè)型公司ZetaWire ,蘋果也早就宣稱要在iPhone中置入NFC功能,而諾基亞也從N9系列起加入手機(jī)NFC陣營(yíng)。而今年7月份中國(guó)移動(dòng)首款TD-SCDMA NFC手機(jī)研制成功更是成為國(guó)內(nèi)業(yè)界焦點(diǎn)。
毫無(wú)疑問(wèn),以后NFC將成為移動(dòng)終端的標(biāo)配。除了最熱門的移動(dòng)支付功能,NFC技術(shù)還可以實(shí)現(xiàn)諸多其他功能如門禁、簽到、安防、共享等等。本文基于NFC技術(shù)與智能移動(dòng)終端結(jié)合的模式,提出一種社區(qū)門禁系統(tǒng)的移動(dòng)終端化、智能化的構(gòu)想及改進(jìn),拓展電信通信、非接觸等移動(dòng)應(yīng)用的開發(fā)實(shí)現(xiàn)。
1 NFC技術(shù)介紹
1.1 NFC的發(fā)展與功能
在射頻識(shí)別( RFID ) 及互聯(lián)互通技術(shù)發(fā)展的推動(dòng)下,為滿足電子設(shè)備間近距離的通信需求,飛利浦、諾基亞、索尼等著名廠商聯(lián)合推了的一項(xiàng)新的無(wú)線通信技術(shù)——NFC,是一種基于 13.56 MHz的短距離高頻無(wú)線通信技術(shù),允許電子設(shè)備之間進(jìn)行非接觸式點(diǎn)對(duì)點(diǎn)數(shù)據(jù)傳輸(在10 cm內(nèi))。NFC可以使移動(dòng)設(shè)備、消費(fèi)類電子產(chǎn)品、PC 和智能控件工具間進(jìn)行近距離無(wú)線通信,讓消費(fèi)者簡(jiǎn)單直觀地交換信息、訪問(wèn)內(nèi)容與服務(wù)。
NFC 具有3種典型實(shí)用模式:第一種是仿卡模式(Card Emulation Mode),使NFC設(shè)備具有非接觸式智能卡同樣的功能;第二種是讀取模式(Reader Mode),NFC設(shè)備主動(dòng)讀取NFC標(biāo)簽;第三種是點(diǎn)對(duì)點(diǎn)模式 (Peer to Peer Mode) ,使不同NFC設(shè)備之間進(jìn)行數(shù)據(jù)交換。這些為消費(fèi)者的生活方式開創(chuàng)了不計(jì)其數(shù)的全新機(jī)遇。這是一個(gè)開放接口平臺(tái),可以對(duì)無(wú)線網(wǎng)絡(luò)進(jìn)行快速、主動(dòng)設(shè)置,也是虛擬連接器,服務(wù)于現(xiàn)有蜂窩狀網(wǎng)絡(luò)、藍(lán)牙和無(wú)線 802.11 設(shè) 備。
1.2 NFC的連接與傳輸
在 NFCIP-1 標(biāo)準(zhǔn)中,連接和傳輸過(guò)程規(guī)定了調(diào)制機(jī)制、編碼、傳輸速率、幀結(jié)構(gòu)、射頻接口,同時(shí)還有初始化過(guò)程、沖突檢測(cè)和傳輸協(xié)議等規(guī)則,在傳統(tǒng)的近距通訊相比中,近場(chǎng)通訊(NFC)就有天然的優(yōu)越性,主要表現(xiàn)在連接建立的快速性, 具體對(duì)比如表1所示。
表1 傳統(tǒng)近距通訊比較
分析表1的數(shù)據(jù)可以得出,根據(jù)NFC連接的快速性和傳輸?shù)慕鼒?chǎng)性,它可以服務(wù)于現(xiàn)有蜂窩狀網(wǎng)絡(luò)、藍(lán)牙和無(wú)線 802.11 設(shè)備的通訊連接,或者生活應(yīng)用系統(tǒng)中的權(quán)限審核,比如手機(jī)支付,IC卡、公交門禁系統(tǒng)應(yīng)用等。
1.3 NFC的安全性
通訊技術(shù)的安全性,主要表現(xiàn)在雙方的鏈接和身份驗(yàn)證這兩個(gè)方面。NFC通訊技術(shù)在這兩個(gè)方面都表現(xiàn)出了不錯(cuò)的安全性。NFC的擁有安全的鏈接,它的無(wú)線加密鏈接只需要一個(gè)公鑰,在帶內(nèi)通道的不可見、以及建立鏈接之后對(duì)密鑰的對(duì)稱加密,都加大了基于NFC 的無(wú)線鏈接的安全性;NFC設(shè)備身份驗(yàn)證,不是偽裝的被動(dòng)/主動(dòng)中間人生成的驗(yàn)證設(shè)備,而是確保鏈接密鑰以預(yù)期的驗(yàn)證設(shè)備,相對(duì)通過(guò)連接一根線纜,或要求用戶在兩臺(tái)設(shè)備上輸入PIN 碼來(lái)講,更方便更安全,只需將雙方設(shè)備靠攏即可觸發(fā)相關(guān)軟件和用戶界面?;贜FC通訊技術(shù)的移動(dòng)端支付或者刷卡系統(tǒng)可以根據(jù)應(yīng)用安全級(jí)別,加入別的安全措施[6],對(duì)系統(tǒng)做一個(gè)安全補(bǔ)救。
1.4 NFC的硬件支持
隨著微軟、谷歌、諾基亞、三星等各大廠商各大新聞發(fā)布會(huì)都大推手機(jī)NFC功能,NFC手機(jī)端應(yīng)用將會(huì)普及我們的生活。NFC 應(yīng)用系統(tǒng)和3G 智能卡的操作系統(tǒng)具有共同的地方,如文件系統(tǒng)、安全保護(hù)、通信傳輸、命令模型。在硬件和軟件上有共通的地方,考慮到與國(guó)際規(guī)范兼容問(wèn)題,NFC 應(yīng)用與3G 智能卡通信協(xié)議將采用單線協(xié)議。單線協(xié)議本身是一個(gè)全雙工的通信協(xié)議,使用電壓和電流調(diào)制在USIM 卡片及NFC 硬件組件之間傳輸數(shù)據(jù)。3G 智能卡(如USIM 卡)中的NFC 應(yīng)用組件主要用于存儲(chǔ)Java 應(yīng)用并處理非接觸交易,卡片須支持單線協(xié)議并能與NFC 處理器進(jìn)行通信。另外,在共同的文件系統(tǒng)中存儲(chǔ)任何與應(yīng)用發(fā)行、電子錢包消費(fèi)、充值過(guò)程相關(guān)的密鑰、證書,降低被破解風(fēng)險(xiǎn)。
1.5 NFC的應(yīng)用系統(tǒng)模型
NFC 非接觸應(yīng)用的操作系統(tǒng),包括通信傳輸,文件系統(tǒng)、安全保護(hù)、命令模塊、硬件結(jié)構(gòu)等,NFC 技術(shù)的應(yīng)用系統(tǒng)采用NFC 通信技術(shù)用作連接通信,把移動(dòng)支付、電子票務(wù)、門禁、移動(dòng)身份識(shí)別等非接觸應(yīng)用作為NFC 系統(tǒng)功能應(yīng)用。實(shí)現(xiàn)系統(tǒng)的模型如圖1所示。
圖1 NFC非接觸應(yīng)用系統(tǒng)模型
圖中表示了手機(jī)客戶端的一個(gè)通信流程,在很多應(yīng)用中,會(huì)對(duì)NFC手機(jī)端有一個(gè)初始化,根據(jù)手機(jī)系統(tǒng)(Android與WP8都已支持),主要在客戶端軟件中完成??蛻舳塑浖c服務(wù)器進(jìn)行通信完成用戶的支付、權(quán)限審核功能。
2 基于移動(dòng)終端NFC的門禁系統(tǒng)研究
隨著各大手機(jī)廠商在手機(jī)硬件上對(duì)NFC模塊的支持,以及微軟、谷歌兩大操作系統(tǒng)對(duì)NFC應(yīng)用程序API的支持,移動(dòng)手機(jī)通常是作為通信中的發(fā)起者,也就是作為NFC 的讀寫器。智能手機(jī)也可以模擬作為NFC通信的接受者并支持P2P通信?;贜FC的移動(dòng)端門禁系統(tǒng)主要在手機(jī)端進(jìn)行軟件封裝,運(yùn)用NFC的通訊技術(shù)與感應(yīng)式讀卡器進(jìn)行通訊,在手機(jī)軟件內(nèi)部運(yùn)用TCP/IP通訊技術(shù),實(shí)現(xiàn)手機(jī)端與服務(wù)器端的通訊,實(shí)現(xiàn)權(quán)限審核。其實(shí)現(xiàn)大致過(guò)程如圖2所示。本文將以 Android手機(jī)端來(lái)講解系統(tǒng)的實(shí)現(xiàn)以及模型建立。
圖2 手機(jī)門禁系統(tǒng)實(shí)現(xiàn)過(guò)程
2.1 Android系統(tǒng)NFC 應(yīng)用模塊
1)NFC管理器(NFCManager):可以用來(lái)管理Android設(shè)備中指出的所有NFC Adapter,但由于大部分Android設(shè)備只支持一個(gè)NFC Adapter,可以直接使用getDefaultAapater 來(lái)獲取系統(tǒng)支持的Adapter。
2)NFC適配器(NFCAdapter)。一個(gè)NFC適配器代表一個(gè)NFC設(shè)備,提供一切NFC的操作,包括NFC設(shè)備開關(guān)、標(biāo)簽讀寫、NDEF數(shù)據(jù)交互、NFC安全訪問(wèn)、點(diǎn)對(duì)點(diǎn)通信等。
3)NDEF消息(NdefMessage):NDEF是NFC論壇定義的數(shù)據(jù)結(jié)構(gòu),用來(lái)有效的存數(shù)據(jù)到NFC tags.比如文本,URL,和其他MIME類型。在應(yīng)用程序中通過(guò)接ACTION_TAG DISCOVERED Intent來(lái)讀取NDEF消息。
4)NDEF記錄(NDEF Record),是NFC中定義的NDEF數(shù)據(jù)包的基本組成單元。一個(gè) NDEF數(shù)據(jù)包可以有一個(gè)或多個(gè)NDEF三錄。
2.2 Android系統(tǒng)NFC 應(yīng)用模塊
在 NFC的Android應(yīng)用系統(tǒng)架構(gòu)中,NFC管理器(NFCManager)為應(yīng)用程序提供編程接口,通過(guò)bind和service通信為主程序提供一個(gè)NFC適配器的實(shí)例。通過(guò)這個(gè)NFCAdapter,就可以對(duì)NFC的一些實(shí)體進(jìn)行操作,比如注冊(cè)前臺(tái)tag提醒發(fā)布和前臺(tái)NDEF推送。TAG, 標(biāo)示一個(gè)被動(dòng)的NFC目標(biāo),比如tag,card,鑰匙掛扣,甚至是一個(gè)電話模擬的的NFC卡。當(dāng)一個(gè)TAG被檢測(cè)到,一個(gè)tag對(duì)象將被創(chuàng)建并且封裝到一個(gè)Intent里,然后NFC 發(fā)布系統(tǒng)將這個(gè)Intent用 startActivity發(fā)送到注冊(cè)了接受這種Intent的activity里。你可以用getTechList()方法來(lái)得到這個(gè)tag支持的技術(shù)細(xì)節(jié)和創(chuàng)建一個(gè)android.nfc.tech提供的相應(yīng)的TagTechnology對(duì)象。
NFCAdapter作為整個(gè)NFC系統(tǒng)模塊的實(shí)例對(duì)象,在整個(gè)NFC通訊模塊中起著關(guān)鍵的扮演者,Android未其提供了豐富的函數(shù)接口,主要實(shí)現(xiàn)的功能如下:
1)設(shè)備初始化以及開關(guān),相關(guān)程序段為
private static synchronized lNfcAdapter setupServiee();
public boolean enable();
public boolean disable();
2)NDEF消息的讀寫和安全管理鏈接,相關(guān)程序?yàn)?/p>
public void setLocalNdefMessage(NdefMessage message);
public NdefMessage getIx,calNdefMessage();
public NfcSecureElement createNfcSecureElementConnection0;
3)P2P的后臺(tái)通信,相關(guān)程序段為
public void enableForegroundNdefPush(Activity activity,NdefMessage msg);
public void disableForegroundNdefPush(Activity activity);
這些基本函數(shù)都是NFC Binder客戶端函數(shù),通過(guò)Binder IPC調(diào)用Service對(duì)應(yīng)的函數(shù)進(jìn)行通信處理。在NFC Service中主要實(shí)現(xiàn)了以下功能:Adapter中的Binder客戶端函數(shù)對(duì)應(yīng)135 的Service端函數(shù)實(shí)現(xiàn),包括INfcTag.Stub,INfcAdapter.Stub等;Service狀態(tài)管理的消息處理;Java本地接口( Java Native Interface,JNI)的Native代碼的訪問(wèn)接口。
2.3 Android系統(tǒng)NFC 門禁功能實(shí)現(xiàn)
在具有NFC功能的手機(jī)(比如Google Nexus S,操作系統(tǒng):Android ICS 4.04)系統(tǒng)中安裝上述NFC門禁客戶端應(yīng)用程序,并在系統(tǒng)設(shè)置中打開手機(jī)NFC功能,并在手機(jī)電池處于電量充足、低電和掉電三種情況下開展測(cè)試。當(dāng)在有效距離范圍內(nèi)時(shí),移動(dòng)手機(jī)上的NFC硬件設(shè)備即可檢測(cè)到的門禁標(biāo)簽,讀取數(shù)據(jù)后,TAG分發(fā)系統(tǒng)會(huì)自動(dòng)創(chuàng)建一個(gè)封裝了NFC TAG信息的intent,應(yīng)用程序接收該消息,解析其中的標(biāo)簽數(shù)據(jù),并根據(jù)手機(jī)端客戶軟件進(jìn)行密鑰匹配,進(jìn)行權(quán)限審核,當(dāng)手機(jī)檢測(cè)到門禁系統(tǒng)審核TAG 時(shí),客戶端軟件自動(dòng)啟用界面(Activity)進(jìn)行匹配,向系統(tǒng)同服務(wù)器發(fā)送訪問(wèn)請(qǐng)求,服務(wù)器返回訪問(wèn)權(quán)限??蛻?端業(yè)務(wù)流程與測(cè)試結(jié)果如圖3、4所示。
圖3 Activity匹配流程圖
圖4 手機(jī)門禁功能測(cè)試結(jié)果
3 結(jié)論
測(cè)試結(jié)果表明,通過(guò)正確的軟硬件配置和有效的測(cè)試方法,在具備NFC的移動(dòng)終端上實(shí)現(xiàn)門禁系統(tǒng)功能易實(shí)施且穩(wěn)定有效。此外,由于該系統(tǒng)采用Client/Server模式,代碼調(diào)整靈活,功能增減方便,符合各類使用者不同的門禁性能需求。
目前,搭載NFC功能的移動(dòng)終端在我國(guó)處于起步階段,隨著Android、WP8以及iOS操作系統(tǒng)對(duì)于NFC技術(shù)越來(lái)越廣泛的支持,我們甚至可以通過(guò) WP8移動(dòng)終端NFC裝載的信息與門禁系統(tǒng)進(jìn)行密鑰匹配實(shí)現(xiàn)權(quán)限審核。這一信息化、智能化社區(qū)發(fā)展趨勢(shì)最終將促使人們舍棄各類卡片,獲得極大的生活便利。