NFC手機上基于軟件的卡模擬的利與弊
摘要
基于軟件的卡模擬是實現(xiàn)NFC手機與現(xiàn)存非接觸智能卡系統(tǒng)之間交互的一個新方法,最早是由RIM(Research In Motion)在黑莓手機上實現(xiàn)。該方法使復雜的,而且在嚴格控制下的卡模擬功能變得更加簡單和開放。通過這種方法,開發(fā)者可以繞過安全單元(通常由“業(yè)界巨頭們”控制),為實現(xiàn)創(chuàng)新性的NFC應用提供了機會。但與此同時,該方法也可能使NFC應用的安全性降低,并為惡意攻擊提供了可能?;诋斍暗膽们闆r以及最新的研究成果,本文評估了軟件卡模擬方法的利弊。
1、介紹
隨著NFC的出現(xiàn),越來越多的NFC設備和應用出現(xiàn)在市場上。但是,NFC的全部潛力還不能被所有開發(fā)者掌控。尤其是安全單元SE(secure element),一種用于實現(xiàn)安全的,基于硬件的卡模擬智能卡芯片,仍然在設備制造商和移動運營商的嚴格控制之下。
同時,為了與現(xiàn)存的RFID系統(tǒng),包括門禁,票卡和支付系統(tǒng)交互,NFC設備上必須實現(xiàn)某種方式的卡模擬。在NFC設備上,安全單元用于存儲重要的安全應用,包括信用卡,門禁和公共交通應用等。通過設備上的NFC控制器,可以像使用常規(guī)的非接觸智能卡一樣使用安全單元。
在支付領域,這個NFC技術最有希望獲得回報的地方,目前其應用嚴重依賴于安全單元。很多公司希望能夠獲準使用安全單元,以便在該領域分得一杯羹。因此,很多開發(fā)者呼吁實現(xiàn)某種更簡便的卡模擬功能。
其中一種方法就是RIM在黑莓平臺上實現(xiàn)的軟件卡模擬方法(簡稱為軟件SE)。NFC手機上的應用可以無需安全單元就可以與現(xiàn)存的RFID系統(tǒng)交互。對這個技術的第一感覺是它將為NFC設備帶來重大的進展。首先,該技術為廣大開發(fā)人員開啟了實現(xiàn)卡模擬功能的大門,該功能之前是被嚴格控制的。其次,這將會增加 NFC技術使用的范圍,從而導致對NFC設備需求的增加。最后,它將推動NFC成為一個真正的有著廣泛應用的技術。然而在這些好處之外,隨之而來的是很多負面的問題。
本文一開始介紹NFC技術和它的操作模式,進一步解釋了卡模擬的種類以及它們在目前NFC設備中的使用情況。最后基于當前的應用情況以及最新的研究成果,本文評估了軟件卡模擬的利弊。
2、NFC
Near FieldCommunication (NFC)近場通訊技術,最早由 ECMA(ECMA-340, ECMA-352)進行標準化,而后被ISO/IEC采納 (ISO/IEC18092, ISO/IEC 21481)。NFC為感應耦合近距離射頻標識(RFID)技術的一個進步?;贗SO/IEC 14443 和FeliCa (JIS X 6319-4)標準,NFC可以與現(xiàn)存的智能卡系統(tǒng)兼容。最近的標準化工作包括與ISO/IEC 15693 近距感應耦合系統(tǒng)兼容。在標準化工作之外,更具體的數(shù)據(jù)格式,協(xié)議,互操作性,需求書,設備認證和NFC應用等方面的工作由NFC論壇(NFC Forum:http://www.nfc-forum.org/)推動。
NFC技術的一個基本原則是“在一次接觸時完成”。這意味著讓一個物體或NFC設備與另外一個NFC設備之間進行簡單的接觸就會觸發(fā)交互動作。這些物體被稱為NFC標簽(基于RFID感應器的非接觸存儲芯片)。這些標簽可以存儲類似互聯(lián)網(wǎng)地址URL, 電話號碼,文本短信SMS或電子商業(yè)卡等內(nèi)容。用戶可以使用標簽接觸NFC設備來獲取這些信息。
NFC終端可在主動、被和雙向三種方式下工作;
1,卡模擬模式,NFC模擬為一張卡
2,讀寫器模式,NFC模擬為讀寫器,對卡進行讀寫
3,雙向數(shù)據(jù)分享模式,兩個NFC終端互相交換數(shù)據(jù),可以用于藍牙和無線連接的初始驗證
圖1顯示了中NFC手機中NFC數(shù)據(jù)的傳輸。應用處理器是手機的主處理單元,NFC控制器為設備中NFC功能的核心部件。它包括NFC調(diào)制解調(diào)器,以及進行命令和數(shù)據(jù)的預處理。安全單元為一個智能卡芯片,能夠進行安全的基于硬件的卡模擬。路徑1為應用處理器與NFC控制器之間的命令和數(shù)據(jù)流,該路徑在點對點模式,讀卡器模式和軟件卡模擬這三種模式中都存在。路徑2為安全單元與NFC控制器之間的命令和數(shù)據(jù)交互,在安全的基于硬件的卡模擬方式中存在。安全單元不僅可以通過NFC接口與外部交互之外,也可以與主控制器進行連接。這樣,安全單元中的信息可以通過手機或者蜂窩網(wǎng)絡控制。路徑4表示安全單元與主控制器連接,或通過路徑3與NFC接口連接。這路徑2和路徑3兩種方式通常只選擇其中一種,也就是說這兩個模式在同一時間只有一個是被激活的。
譯者注:在NFC工作在卡模擬模式下時,路徑1就是基于軟件的卡模擬,即Host Card(主機卡)模式。路徑2就是基于硬件的卡模擬,即Virtual Card(虛擬卡)模式。路徑3,4表示通過手機對安全單元的控制,使用哪個路徑取決于SE的硬件類型。手機訪問SE即所謂的WIRED CARD模式,例如初始化或給SE下載應用時,就需要通過這種方式。在WIRED CARD模式下,虛擬卡模式或主機卡模式被屏蔽。
2.1 卡模擬
NFC卡模擬有多種方式可以選擇。模擬的方式可以通過通訊標準,支持協(xié)議層,支持命令集以及具體進行模擬操作的NFC設備部件上的不同而加以區(qū)分。
對于通訊標準,有三種選擇,ISO/IEC 14443 Type A, ISO/IEC 14443 TypeB 和FeliCa (JIS X 6319-4),對這三種標準的支持取決于NFC控制器,安全單元和應用的地理位置。例如,ISO/IEC 14443Type A, ISO/IEC 14443 TypeB在歐洲廣泛應用,而FeliCa (JIS X 6319-4)主要用于日本。
另外一個區(qū)別在于具體進行模擬操作的NFC設備部件,一方面,卡模擬可以在軟件,也就是設備應用處理器上進行,另外一方面,卡模擬可以由一個專用的智能卡芯片,即安全單元上進行。
2.2 安全單元
安全單元為NFC設備上專用的微處理芯片。該芯片可以與NFC控制器集成在一起。另外也可以集成在NFC設備中的其它智能卡/安全設備中,這些集成的芯片可以是UICC多功能集成電路卡(大多數(shù)情況下是SIM卡)或SD安全數(shù)字記憶卡。
很多安全單元(例如NXP的SmartMX)使用的是標準的智能卡芯片,包括接觸式或非接觸式智能卡。其軟件和硬件架構(gòu)是相同的。唯一的區(qū)別是它們對外的接口有所不同,普通的智能卡具有ISO/IEC 7816-3 (接觸式)或天線(非接觸式)接口,而安全單元在這些接口之外,還通過一個直接的接口與NFC控制器連接(例如NFC線接口NFC-WI,或單線協(xié)議 SWP)。
安全單元具備與常規(guī)智能卡同樣的高安全標準。它可以提供安全存儲,安全執(zhí)行環(huán)境和基于硬件的加密算法。安全單元芯片用于對存儲數(shù)據(jù)的讀取和操作,并可以抵御各種攻擊。其芯片,操作系統(tǒng)和設計流程都經(jīng)過高安全標準的評估和認證。例如智能卡芯片通用標準保護條例(Common Criteria protection profiles for smartcardmicrochips)等。因此,安全單元滿足安全相關的應用,例如支付和門禁管理系統(tǒng)。
智能卡中一個重要的未解決安全問題是接力攻擊場景。“接力攻擊”是指與智能卡的通訊通過另一個載體接力傳播到一個比較遠的距離。攻擊者可以在遠程非法使用受害者的智能卡。這種對非接觸智能卡的接力攻擊最早被Hancke證實,他通過智能卡和RFID讀卡器之間信號層通訊實現(xiàn)了接力攻擊。Kfir和Wool則顯著提高了通訊距離,可以在用戶不知情的情況下輕易使用其智能卡。Roland etal揭示了安全單元不僅能通過非接觸接口進行攻擊,而且能夠通過手機應用處理器上運行的軟件進行。Anderson 表明NFC手機是對非接觸智能卡進行接力攻擊的理想場所。 Francis et顯示可以通過兩部NFC手機的藍牙或其它無線通訊方式組成的攻擊平臺,對NFC點對點通訊和非接觸智能卡通訊進行接力攻擊。
3、基于軟件的卡模擬
軟件卡模擬是NFC手機上進行卡模擬的新方法。最早由RIM公司在黑莓平臺上引入。在支持多種安全單元之外,黑莓7平臺支持通過手機應用控制器模擬NFC標簽和智能卡。
通過指定一條NDEF消息,應用程序能夠模擬NFC Forum 類型4的標簽,該消息可以保存在一個虛擬標簽中。這種類型4標簽協(xié)議由黑莓系統(tǒng)自動處理。工作在該模式下的NFC設備可用于與另外一個工作在讀寫器模式下的NFC設備交換數(shù)據(jù)。
應用程序也可以全方位的模擬符合ISO/IEC 14443-4標準的智能卡,包括類型A和類型B。應用程序可以指定模擬卡的靜態(tài)屬性(例如唯一ID(UID) 以及ISO/IEC 14443 Type A卡的歷史數(shù)據(jù)),并在ISO/IEC14443-4規(guī)定的塊交換協(xié)議基礎上進行信息協(xié)議數(shù)據(jù)單元交換(盡管API允許應用程序隨便定義UID,但考慮到安全因素,在現(xiàn)存設備上沒有提供該功能)。開發(fā)人員可以通過在黑莓系統(tǒng)上進行注冊將應用程序模擬為智能卡。當從外部RFID/NFC讀寫器得到命令時,系統(tǒng)通過一個回調(diào)函數(shù)通知該應用程序,并將得到的命令作為參數(shù)傳遞給該回調(diào)函數(shù)。應用程序可以通過參數(shù)進行相應的處理,該回調(diào)函數(shù)的返回值可以返回到讀寫器。
圖2 演示了軟件卡模擬的命令流程,箭頭1到4顯示了RFID/NFC讀寫器到應用程序注冊的回調(diào)函數(shù)的命令流程,而箭頭5到8表明從應用程序反饋給RFID/NFC讀寫器的流程。
目前為止,黑莓手機是唯一能夠支持軟件卡模擬的手機。但是,最近發(fā)布的基于第三方固件CyanogenMod補丁包能夠讓帶有NXP PN544的NFC手機具有軟件卡模擬的功能。
除了NFC手機之外,其它設備,例如NFC讀寫器,可以實現(xiàn)無安全單元的軟件卡模擬。例如ACS ACR 122U NFC讀寫器,另外還有專用的卡模擬設備(例如Proxmark,OpenPICC, IAIK HF RFID DemoTag等)
3.1 軟件卡模擬的優(yōu)點
卡模擬被視為NFC技術中最具前景的領域。主要原因是相比其它工作模式,卡模擬最有盈利的前景。而且,現(xiàn)存的支付,票務,門禁等智能卡系統(tǒng)一般由固定的讀寫器設備和帶有智能卡/非接觸標簽的用戶組成。因此將用戶端功能(智能卡/非接觸標簽)加入手機中是一個現(xiàn)實和迫切的要求。
盡管NFC社區(qū)一直要求提供卡模擬功能,但是,卡模擬,特別涉及安全單元的卡模擬一直是個復雜的領域。到目前為止,嵌入式系統(tǒng)中的安全單元通常在手持設備制造商控制中或TSM的運營下。如果將UICC(SIM)作為安全單元,則是移動網(wǎng)絡運營商(Mobile Network Operator MNO)控制著安全單元。NFC手機中的安全單元控制權之爭早已打響。因此實現(xiàn)對安全單元訪問的第一個障礙就是不同的安全單元由不同的部門控制。另一個障礙是一個安全單元的運營商不太可能允許其競爭對手在他們的模塊中運行類似的服務。例如谷歌錢包不太可能與Isis錢包中一個手機中共存,尤其是共享一個安全單元。第三個障礙是應用程序訪問安全單元的開銷。除了安全單元上存儲空間的開銷外,共存在一個安全單元上的安全相關的應用程序應該需要某種模式的安全認證。
所有這些障礙限制了一般開發(fā)人員的應用程序使用安全單元的可能性(也許在手機和支付領域的巨頭可以除外)。作為上述問題的解決方案,RIM在其黑莓手機上提供了軟件卡模擬方法。在這種模式下,任何開發(fā)者都可以開發(fā)基于卡模擬技術的應用程序,為開發(fā)與現(xiàn)存具有固定讀寫器的基礎設施交互的應用程序的提供了可能。也就是說,開發(fā)者可以開發(fā)基于手機的門禁,支付,公共交通和票務應用程序,用于使用RFID票卡和智能卡的系統(tǒng)中。
軟件卡模擬的另外一個好處是可以實現(xiàn)與不具備全功能點對點模式的NFC設備通訊。例如,Android系統(tǒng)僅支持Android Beam來實現(xiàn)點對點通訊。然而Android Beam是基于谷歌的NDEF推協(xié)議 (NDEF Push Protocol NPP)和簡單NDEF交換協(xié)議 (Simple NDEF ExchangeProtocol SNEP),在兩個NFC手機接觸時僅能實現(xiàn)單方向單條的消息通訊。因此,軟件卡模擬可以作為NFC手機之間點對點通訊的替代方式。另外許多基于PC平臺的非接觸智能卡讀寫器也不支持點對點模式。例如 Reiner SCTcyberJack RFID basic (在新的德國身份證系統(tǒng)中使用)和HID OMNIKEY 5321。但是,這些設備可以與卡模擬方式下的NFC手機進行通訊,因此,不需要增加額外的NFC硬件,軟件卡模擬方式能夠?qū)崿F(xiàn)了手機與這些PC系統(tǒng)的通訊。
更進一步的好處是相比點對點模式,在PC平臺上對軟件卡模擬的軟件和驅(qū)動支持更好。非接觸智能卡讀寫器在PC/SC上已經(jīng)標準化,而且缺省的集成到大多數(shù)操作系統(tǒng)中。即使Java SE這樣的平臺也具有非接觸式智能卡的標準API。點對點模式則只有有限的支持,而且僅僅被有些第三方庫,例如libnfc4和libnfc-llcp5 支持。另外,NFC點對點模式協(xié)議棧為
應用層協(xié)議(NDEF消息)
基于
NPP,SNEP (或者直接使用另外的應用層協(xié)議)
基于
LLCP (NFC LogicalLink Control Protocol NFC邏輯鏈路控制協(xié)議)
基于
NFC-DEP (NFC DataExchange Protocol NFC數(shù)據(jù)交換協(xié)議,例如符合ISO/IEC 18092的底層點對點通訊協(xié)議)
比較而言,下面的讀寫器模式的協(xié)議棧更簡單:
應用層協(xié)議 (符合ISO/IEC 7816-4)
基于
ISO-DEP (符合ISO/IEC 14443-4定義的通訊協(xié)議)
總體來講,軟件卡模擬方式是一般開發(fā)者,而不是那些“業(yè)界巨頭們”,能夠從簡單的NFC標簽應用上進行功能擴展的很好契機。
3.2 缺點和安全問題
所有上述的好處是有代價的。在當前軟件卡模擬存在的技術限制之外,有重大的安全問題。手機應用處理器中運行的應用程序不具有安全單元中的數(shù)據(jù)安全存儲和可信度執(zhí)行環(huán)境。除非應用處理器自己能夠提供某種形式的可信計算技術。但是目前的絕大多數(shù)手機沒有這個功能。
沒有安全存儲功能,因此卡模擬應用程序不得不自行保存敏感的數(shù)據(jù)(例如門禁系統(tǒng)的口令,支付系統(tǒng)的私鑰,票卡帳號等)。而且沒有安全的執(zhí)行環(huán)境,導致其它應用程序(包括惡意的應用程序)的干擾。例如最近發(fā)現(xiàn)谷歌錢包存在重大安全隱患,盡管谷歌錢包使用安全單元,但是應用程序?qū)⒅匾陌踩珨?shù)據(jù)作為應用程序私有數(shù)據(jù)緩存到手機內(nèi)存中,攻擊者可以通過這些緩存得到信用卡號,帳戶余額,卡持有人信息甚至錢包的PIN碼。
根據(jù)這些敏感信息的價值,也許在某些情況下值得冒險。例如,公共交通中的單程票,或一張主題公園的門票。但是對于支付系統(tǒng)或門禁系統(tǒng),情況就不一樣了。例如信用卡或大樓的門禁卡的信息,就不能簡單的存放在容易被竊取的手機內(nèi)存中了。
但是,使用軟件卡模擬也可以實現(xiàn)某種程度上的安全應用。一個關鍵是將“虛擬卡(virtual card)”存放在一個安全的遠程的地點,而手機僅僅充當一個訪問代理。
圖3顯示了這種基于虛擬卡的在線卡模擬系統(tǒng)。手機將從POS機得到的命令轉(zhuǎn)發(fā)到存放在遠程服務器中的虛擬卡,虛擬卡的回復通過手機反饋給POS終端。
虛擬卡的訪問必須是安全的,可以防止通訊中的截獲已經(jīng)未經(jīng)授權的信用卡使用。例如,通過加密和認證的通道,以及用戶輸入口令進行保護。但是,鑒于在手機應用程序中存放數(shù)據(jù)易于被竊取的現(xiàn)實,創(chuàng)建不能被其它應用竊取的安全信道是很困難的。另外,由于需要與遠程服務建立安全連接,需要穩(wěn)定的互聯(lián)網(wǎng)連接,而并不是所有應用環(huán)境有這個條件。
軟件卡模擬中的安全問題不僅僅是數(shù)據(jù)存儲的問題。另一個問題是使用軟件卡模擬應用的手機作為攻擊工具。Francis et al的研究表明具有NFC功能的手機能夠?qū)崿F(xiàn)遠距離的點對點模式接力攻擊。類似的也可以攻擊非接觸智能卡系統(tǒng)。(cf. Hancke, Kr 和 Wool, Hanckeet al)。過去,攻擊者必須準備專用的設備(例如,用于在RFID/NFC讀寫器和接力處理器之間轉(zhuǎn)發(fā)智能卡信號的卡模擬器)。目前這些專用設備不具備一般 NFC設備的外觀形態(tài)(例如智能卡或手機的外觀)。然而,支持軟件卡模擬的手機具有理想的外形,而且具備建立接力通道所需的多種網(wǎng)絡接口(藍牙,WIFI,GSM,UMTS等)。
Francis et al證明非接觸智能卡能夠輕易的被兩部NFC手機進行接力攻擊:一個NFC手機作為智能卡和接力通道之間的代理,工作在讀寫器模式。另一部NFC手機作為 RFID/NFC讀寫器(例如POS機)和接力通道之間的代理,工作在卡模擬模式。Roland et al甚至演示了受害者手機中的純軟件應用就足以充當進行安全單元和接力通道之間的代理。
軟件卡模擬還存在技術和安全相關的限制。在NXP的NFC控制器中,基于軟件的卡模擬只能使用一段范圍內(nèi)的UID(被保留為隨機號碼的UID號碼段)。在黑莓平臺上的API中,有使用指定 UID的功能,但這個功能因為安全問題而被替換。因此在現(xiàn)存的設備中,也只能使用隨機的UID。該限制妨礙了軟件卡模擬在基于UID的系統(tǒng)中的應用,但也防止了在純UID應用系統(tǒng)(例如某些門禁系統(tǒng))中的卡克隆攻擊。
而且,黑莓的軟件卡模擬功能,包括Android的第三方 CyanogenMod固件最近加入的功能,僅僅支持符合ISO/IEC 14443-4標準的智能卡。底層協(xié)議為專有協(xié)議的系統(tǒng),例如NXP的MIFARE Classic,就不能被模擬。因此,軟件卡模擬不能在所有的現(xiàn)存RFID 系統(tǒng)中使用。
4、結(jié)論
本文評估了基于軟件的卡模擬存在的優(yōu)缺點。軟件卡模擬突破了現(xiàn)有的基于安全單元解決方案的束縛,為開發(fā)人員提供了新的機會。該技術可以方便的將具有NFC功能的手機和現(xiàn)存的非接觸智能卡系統(tǒng)集成在一起。而且與點對點模式相比,讀寫器模式設備和卡模擬設備之間的通訊更具優(yōu)勢,因為讀寫器模式的應用比點對點模式更為普遍。這些優(yōu)點的代價是安全上的問題。在這種情況下,模擬卡中的內(nèi)容更加難以保護,而且,軟件卡模擬將NFC手機變成對智能卡或其它卡模擬設備實施接力工具的一個理想的工具平臺。最后,設備和芯片制造商對某些應用上的軟件卡模擬進行了限制。雖然大多數(shù)軟件卡模擬應用都可以使用點對點方式實現(xiàn),但是使用點對點模式通常需要對現(xiàn)有基礎設施進行大量升級改造。
本人認為,在多個NFC設備之間通信上不需要通過軟件卡模擬實現(xiàn),因為應用程序可以使用點對點模式,這種模式是為NFC設備之間通信而特別設計的。然而,使用軟件卡模擬的優(yōu)勢是能夠支持現(xiàn)有的硬件系統(tǒng)。所以不能僅僅因為開發(fā)人員會創(chuàng)建無安全的應用,或者這種技術會被惡意使用,就將禁止軟件卡模擬功能的開發(fā)。應用的安全不能靠限制可能被惡意使用的技術,而是應該依靠提升系統(tǒng)對攻擊的抵抗力實現(xiàn)。畢竟,從CyanogenMod的補丁包上就能看出限制該功能的使用是不現(xiàn)實的。(來源:firefight的專欄)