利用HCE功能的非接觸式IC卡讀寫器與手機(jī)NFC直接通信
首先為大家介紹一下HCE概念
HCE(host-based cardemulation),即基于主機(jī)的卡模擬。
在一部配備NFC功能的手機(jī)實(shí)現(xiàn)卡模擬,目前有兩種方式:一種是基于硬件的,稱為虛擬卡模式(Virtual Card Mode);一種是基于軟件的,被稱為主機(jī)卡模式(Host Card Mode)。
在虛擬卡模式下,需要提供安全模塊SE(Secure Elemen),SE提供對(duì)敏感信息的安全存儲(chǔ)和對(duì)交易事務(wù)提供一個(gè)安全的執(zhí)行環(huán)境。NFC芯片作為非接觸通訊前端,將從外部讀寫器接收到的命令轉(zhuǎn)發(fā)到SE,然后由SE處理,并通過NFC控制器回復(fù)。
在主機(jī)卡模式下,不需要提供SE,而是由在手機(jī)中運(yùn)行的一個(gè)應(yīng)用或云端的服務(wù)器完成SE的功能,此時(shí)NFC芯片接收到的數(shù)據(jù)由操作系統(tǒng)或發(fā)送至手機(jī) 中的應(yīng)用,或通過移動(dòng)網(wǎng)絡(luò)發(fā)送至云端的服務(wù)器來完成交互。兩種方式的特點(diǎn)都是繞過了手機(jī)內(nèi)置的SE的限制。這一標(biāo)準(zhǔn)的妙處在于,它不需要整個(gè)行業(yè)為了控制 安全元件而爭(zhēng)斗。
HCE技術(shù)誕生的背景
NFC(Near Field Communication)是“近場(chǎng)通訊”的簡(jiǎn)稱,采用短距離RF(射頻)通訊技術(shù)。NFC 工作頻率為13.56Hz,有效范圍為500px 以內(nèi),其傳輸速度有106 Kbit/秒、212 Kbit/秒或者424 Kbit/秒三種,能夠應(yīng)用在手機(jī)/平板、電腦/游戲機(jī)、印表機(jī)、電子產(chǎn)品,甚至家電設(shè)備中。
NFC技術(shù)已經(jīng)有十來年歷史,在過去的幾年里一直被稱為很有前景的便利移動(dòng)支付技術(shù)。但即使在NFC手機(jī)日漸成為智能機(jī)標(biāo)配的今天,基于NFC的移 動(dòng)支付卻沒有在消費(fèi)者群體中形成氣候。一個(gè)重要的原因在于:所有人都在爭(zhēng)著控制NFC 技術(shù)的安全元件(the Secure Element)。安全元件,顧名思義,是保證財(cái)產(chǎn)信息安全的,控制這個(gè)就可以控制每一筆交易的費(fèi)用。SE導(dǎo)致了金融機(jī)構(gòu)、OEM和運(yùn)營(yíng)商之間無休止的爭(zhēng) 斗,沒辦法聯(lián)合起來,這使得NFC移動(dòng)支付發(fā)展緩慢。
使用基于主機(jī)的卡模擬時(shí)(HCE),NFC 控制器從外部讀寫終端接收到的數(shù)據(jù)將直接被發(fā)送到主機(jī)系統(tǒng)上,而不是安全模塊。
NFC標(biāo)準(zhǔn)對(duì)Android支持
NFC標(biāo)準(zhǔn)對(duì)很多智能卡通訊協(xié)議提供了支持,而Android4.4系統(tǒng)也支持包括主流智能卡應(yīng)用在內(nèi)的很多非接觸智能卡協(xié)議,因此使用NFC手機(jī)和HCE應(yīng)用,就可以方便的模擬出不同類型的智能卡應(yīng)用。
同樣市場(chǎng)上很多NFC讀卡終端也支持這些協(xié)議,包括一部支持NFC的Android設(shè)備作為讀卡器本身。這樣通過HCE技術(shù)我們只用Android設(shè)備就可以部署一個(gè)端對(duì)端的NFC解決方案。
Android4.4系統(tǒng)使用NFC論壇制定的的ISO-DEP標(biāo)準(zhǔn)協(xié)議(基于ISO/IEC14443-4(ISO-DEP)標(biāo)準(zhǔn))進(jìn)行數(shù)據(jù)傳輸,傳輸?shù)臄?shù)據(jù)單元被稱為應(yīng)用協(xié)議數(shù)據(jù)單元(APDUs)。
另外,在數(shù)字協(xié)議方面(相當(dāng)于MAC層協(xié)議)Android系統(tǒng)只要求對(duì)頂層的NFC-A(ISO/IEC 14443-3 Type A)技術(shù)提供支持,而對(duì)NFC-B技術(shù)的(ISO/IEC 14443-3 Type B)的支持則是可選的,這些技術(shù)提供了包括初始化、沖突檢測(cè)等解決方案。
Android系統(tǒng)上的HCE技術(shù)是通過系統(tǒng)服務(wù)實(shí)現(xiàn)的(HCE服務(wù))。使用服務(wù)的一大優(yōu)勢(shì)是它可以一直在后臺(tái)運(yùn)行而不需要有用戶界面。這個(gè)特點(diǎn)就 使得HCE技術(shù)非常適合像會(huì)員卡、交通卡、門禁卡這類的交易,當(dāng)用戶使用時(shí)無需打開程序,只需要將手機(jī)放到NFC讀卡器的識(shí)別范圍內(nèi),交易就會(huì)在后臺(tái)進(jìn) 行。當(dāng)然更推薦為用戶提供配套的HCE應(yīng)用UI界面,這樣除了像普通的智能卡片一樣刷卡使用以外,還可以通過UI界面為用戶提供更多的在線服務(wù)功能,包括 查詢、充值和信息推送等。
當(dāng)用戶將手機(jī)放到NFC讀卡器的識(shí)別范圍時(shí),Android系統(tǒng)需要知道讀卡器真正想要和哪個(gè)HCE服務(wù)交互,這樣它才能將接收到的數(shù)據(jù)發(fā)送到相應(yīng) 的HCE應(yīng)用。HCE參考ISO7816規(guī)范,定義了一種通過應(yīng)用程序AID來選擇相應(yīng)應(yīng)用的方法。因此,如果要為自己的新的讀卡設(shè)施部署NFC應(yīng)用,就 需要定義自己的AID。
HCE技術(shù)實(shí)現(xiàn)NFC模擬
在手機(jī)上用HCE技術(shù)實(shí)現(xiàn)NFC卡模擬,首先要?jiǎng)?chuàng)建一個(gè)處理交易事務(wù)的HCE 服務(wù),Android4.4為HCE服務(wù)提供了一個(gè)非常方便的基類,我們可以通過繼承基類來實(shí)現(xiàn)自己的HCE服務(wù)。如果要開發(fā)已存在的NFC系統(tǒng),我們只 需要在 HCE 服務(wù)中實(shí)現(xiàn)NFC 讀卡器期望的應(yīng)用層協(xié)議。反之如果要開發(fā)自己的新的NFC 系統(tǒng),我們就需要定義自己的協(xié)議和APDU 序列。一般而言我們應(yīng)該保證數(shù)據(jù)交換時(shí)使用很少的APDU包數(shù)量和很小的數(shù)據(jù)量,這樣用戶就不必花很長(zhǎng)時(shí)間將手機(jī)放在NFC 讀卡器上。
HCE 技術(shù)只是實(shí)現(xiàn)了將NFC 讀卡器的數(shù)據(jù)送至操作系統(tǒng)的HCE 服務(wù)或者將回復(fù)數(shù)據(jù)返回給NFC 讀卡器,而對(duì)于數(shù)據(jù)的處理和敏感信息的存儲(chǔ)則沒有具體實(shí)現(xiàn)細(xì),所以說到底HCE 技術(shù)是模擬NFC 和SE 通信的協(xié)議和實(shí)現(xiàn)。但是HCE 并沒有實(shí)現(xiàn)SE,只是用NFC 與SE 通信的方式告訴NFC 讀卡器后面有SE的支持,從而以虛擬SE 的方式完成NFC 業(yè)務(wù)的安全保證。既然沒有SE,那么HCE 用什么來充當(dāng)SE 呢,解決方案要么是本地軟件的模擬,要么是云端服務(wù)器的模擬。負(fù)責(zé)安全的SE如何通過本地化的軟件或者遠(yuǎn)程的云端實(shí)現(xiàn),并且能夠保障安全性,需要HCE廠 商自己考慮和實(shí)現(xiàn)。
HCE方案與SE方案的路由和兼容
支持HCE功能的Android4.4手機(jī),很多也同時(shí)支持SWP-SIM或者SWP-SD之類的SE模式實(shí)現(xiàn)手機(jī)支付功能,因此存在一個(gè)應(yīng)用 AID路由的問題,通常是由CLF芯片中的AID路由表來負(fù)責(zé)進(jìn)行相關(guān)的路由工作,由手機(jī)生產(chǎn)廠商負(fù)責(zé)開發(fā)實(shí)現(xiàn)具體的規(guī)則。具體系統(tǒng)架構(gòu)和指令流向如下 圖:
因?yàn)镃LF芯片的路由表,是通過讀卡終端發(fā)送的Select指令中的應(yīng)用AID來進(jìn)行區(qū)分和路由的,因此對(duì)于SE(SWP-SIM)和手機(jī) HOSTCPU中的HCE應(yīng)用,如果各自支持的具體智能卡應(yīng)用的AID均不相同,則不會(huì)出現(xiàn)任何路由和兼容性的問題,所有的應(yīng)用均能夠被正確識(shí)別和分別路 由到SE(SWP-SIM)或者HCE應(yīng)用,并正常完成交易的實(shí)現(xiàn)和處理。
如果SE(SWP-SIM)和手機(jī)HOST CPU中的HCE應(yīng)用,支持的智能卡應(yīng)用中有相同的AID,則存在一個(gè)路由優(yōu)先級(jí)的問題,同時(shí)涉及到支持SE(SWP-SIM)的設(shè)備升級(jí)到Android4.4之后,對(duì)于SWP-SIM中原有的應(yīng)用的兼容問題。
按照google提供的Android API的要求,HCE APP的路由優(yōu)先級(jí)更高,表示說如果存在相同的AID的應(yīng)用,則會(huì)被優(yōu)先路由到HCE應(yīng)用來處理,那么SWP-SIM中的相同AID的應(yīng)用將無法被調(diào)用和 使用,會(huì)出現(xiàn)系統(tǒng)升級(jí)到4.4版本后,無法兼容既有應(yīng)用使用的問題,除非不安裝HCE 應(yīng)用。
因此運(yùn)營(yíng)商的定制手機(jī),通常會(huì)要求修改一下路由的優(yōu)先級(jí),使SE(SWP-SIM)的路由優(yōu)先級(jí)更好,即如果存在相同的AID的應(yīng)用,則會(huì)被優(yōu)先路由到SWP-SIM來處理,確保對(duì)于舊時(shí)發(fā)行的支持SE的設(shè)備,在系統(tǒng)升級(jí)到4.4之后的兼容性。
HCE技術(shù)的關(guān)鍵大事記
2012/09/19,SimplyTapp在Android第三方CyanogenMod固件中實(shí)現(xiàn)主機(jī)卡模擬技術(shù)HCE;
2013/11/01,Google發(fā)布最新的Android4.4操作系統(tǒng),支持主機(jī)卡模擬HCE技術(shù),目前已通過谷歌錢包將HCE應(yīng)用到Nexus 5手機(jī)中,可支持Paypass;
2013/12/13,美國(guó)連鎖咖啡TimHortons在北美4000多家門店推出基于HCE的NFC支付應(yīng)用;
2014/02/17,西班牙銀行Bankinter發(fā)布基于HCE技術(shù)的虛擬卡手機(jī)錢包;
2014/02/19,Visa和萬事達(dá)卡同時(shí)宣布將基于HCE技術(shù)推動(dòng)云端移動(dòng)支付;
2014/02/20,全球智能卡制造商ABnote與SimplyTapp合作,將HCE技術(shù)加入到其TSM平臺(tái)中。
2015/04/05,重慶諾塔斯智能科技研發(fā)了支持HCE技術(shù)的NFC讀寫器。
NFC讀寫器技術(shù)參數(shù)如下:
產(chǎn)品型號(hào) |
L3-W |
頻率 |
13.56MHz |
標(biāo)準(zhǔn) |
ISO 14443A,ISO14443B,ISO 15693 |
支持芯片 |
1.ISO14443A:Mifare_One(S50&S70)/UltraLight/Mifare_Pro |
操作系統(tǒng) |
Microsoft Windows2000/xp/Win7,Pocket PC 2002/2003,Windows CE 5.0,Windows Mobile 5.0/6.0/6.5,Android、IOS、Linux等 |
接口 |
IEEE 802.11b/g/n ,IEEE 802.3/802.3u, IEEE 802.1X等 |
電源 |
USB 5V(暫無電池設(shè)計(jì)) |
指 示 燈 |
綠燈表示工作狀態(tài),紅燈表示正在讀寫卡操作 |
讀寫距離 |
ISO 15693:5CM(取決于天線的結(jié)構(gòu)和使用環(huán)境) |
外形尺寸 |
11cm*7cm*1cm |
重量 |
約100g |
功耗 |
5 mA (typical) standby;90 mA (typical) field scanning;3.3V (typical) operation |
開發(fā)環(huán)境 |
C++,VC,Java,C#,vb,vb.net,pb,Delphi,Android,IOS等 |
應(yīng)用領(lǐng)域 |
倉庫管理、人員識(shí)別、門票管理、列車檢票、電力巡查、監(jiān)獄管理、鋼瓶管理、食品仿偽、包裹跟蹤、產(chǎn)品質(zhì)檢、藥品管理 |
使用手冊(cè) |
WIFI RFID Reader |
開 發(fā) 包 |
C++,VC,Java,C#,vb,vb.net,pb,Delphi,Android,js等 |