2013年10月31日,Google發布了最新的Android4.4 操作系統,這其中提到了一個新的NFC特性,即所謂的HCE(Host Card Emulation)。 自誕生之初,HCE就賺足了人們的眼球,這不僅僅因為這項令人耳目一新的新技術本身,更因為它讓業界的所有人都看到了一種脫離安全載體(SE)而部署NFC的可能性。作者相信,HCE的出現會使得NFC服務的部署更加的容易和便捷,這是因為HCE提供了一種簡單但是安全性稍差的模擬NFC卡片的能力。HCE對于Service Providers來說,具有著重大的意義,它使得SP們可以選擇一種較低安全性但是開發成本更低、更能在短時間內推向市場的技術。SP們需要在安全性和便捷性之間做一個權衡,以確定是否要采用HCE技術,完成產品向用戶的推廣。本文的內容選自多家安全實驗室的報告,Google開發者文檔以及各安卓開發者論壇中的討論。作者匯總以上的所有信息,希望從安全、部署和商業的角度分析HCE技術帶來的相關影響。
1.簡單回顧一下現有的NFC技術:
NFC是進場通信技術的簡稱,主要有三種模式:點對點,讀卡器和卡模擬。前面兩種模式目前在市面上的應用還是比較多的,比如通過兩個手機對對碰后建立連接傳輸文件采用的是點對點模式,而把公交卡貼在手機背面就可以讀出余額和交易記錄采用的即是讀卡器模式。卡模擬模式則是我們所說的將手機模擬成為一張卡片,對于卡模擬模式來說,目前基于將所有敏感信息存放在一個叫做SE的安全芯片里,以確保整個環境的安全性。也正因為如此,產業的各方都意識到SE本身是通向“手機錢包”的一扇門,通過掌握SE,可以占據支付、會員卡、優惠券、身份識別、交通和門禁等多種使用場景。
目前SE存在著三種方式,UICC(基于手機SIM卡,例如國內移動的方案),嵌入式SE(Embeded SE,在手機中植入專門的SE芯片,主要由手機制造商所支持和采用),還有一種就是SD卡方案。
SD卡方案被證明是比較難于實施的,是因為SD卡經常是由第三方SP提供的,SD卡方案需要支持SWP-SD方案的手機支持,而市面上相關款式的機型還是太少。另外如果用戶希望能使用多種服務的話,還必須在不同的SD卡中間切換。
對于UICC和eSE來說,雖然解決了多應用的問題,但SP是沒有占有SE的能力的。這意味著SP們必須要同SE的發行者們進行溝通(多為移動通信運營商及設備制造商),而這已被證明是相當復雜和耗時的。
因此,HCE的出現,讓大家看到了一絲解決這些問題的曙光。
2.HCE的技術特點:
正如第一部分鐘提到的,NFC有三種模式:讀卡器、點對點和卡模擬。為了增強安全性,卡模擬技術中使用到了SE。在移動設備中存在著一個叫做NFC控制器的芯片,該芯片的作用是根據NFC模式來做路由的決定。在卡模擬和點對點模式中,信息會被路由到主機CPU中,然而在卡模擬模式中,信息是被路由到SE芯片的。而在安卓4.4系統中,HCE的出現改變了這種傳統的路由方式。卡模擬模式中的命令可以被路由到CPU中所謂的HCE服務上,這就脫離了傳統的SE載體的限制,使得一個可以調動HCE服務的軟件就可以作為SE存在。如下圖所示,需要說明的是,即使采用了HCE技術,傳統的路由到SE的通道,也是保留的。
換一個角度看HCE-安全、部署以及商業未來
不管是HCE也好,基于SE的服務也罷,都需要把應用標識符(AID)進行注冊,而AID是在安裝的時候就已經確定的。在安卓4.4系統中,默認的NFC路由是到Host CPU。這意味著如果要采用基于SE的NFC服務,就需要在NFC控制器的的所謂路由表中注冊一個新的AID。當終端選擇AID的時候,通信數據就根據路由表中的記錄被路由至Host或者是SE。作為這種機制的一個影響,現有的已經部署了SE的設備在升級至安卓4.4的過程中必須要做一次重新適配,這也意味著用戶可能需要到柜臺等地方去重新做一次升級。
安卓4.4定義了兩種NFC服務的類型,支付服務和其它服務。對于支付服務,不管是基于HCE的還是基于SE的,都需要在操作系統中注冊為支付服務的類別。在安卓設置菜單里,有一個Tap&Pay的選項,在這里可以選擇默認的支付應用。需要注意的是這個設置選項的位置和錢包應用中選擇默認支付應用的位置是不一樣的,這意味著開發者需要特別注意這點而避免不必要的默認應用選擇的沖突。
3.HCE安全性的一些討論:
HCE場景下交易的路由還是通過了整個安卓系統,這使得HCE的安全性基本是可以保證的。但是如果是一部終端已經被root的終端,這種基本的安全性就被破壞了。相對于傳統的基于SE的方案來說,HCE具有如下一些可能的安全性風險:
3.1 用戶可以對終端進行Root操作,通過Root用戶可以取得所有儲存在應用中的信息,包括類似于支付憑證之類的敏感數據,這就使得惡意軟件也有了獲取敏感信息的可乘之機。從統計數量上來說,只有很少一部分的安卓終端進行了Root操作,但是這仍然意味著數百萬級別的終端數量。
3.2 惡意軟件可以自行Root操作系統。對于前期安卓系統來說,由于存在著一些漏洞,導致不少的惡意軟件可以直接Root系統。雖然這些漏洞看起來影響范圍不是特別的大(比如如果用戶不安裝未知來源的安卓軟件就不會有這個問題),但在分析的過程中仍然需要考慮到這個問題。安卓系統的一個已知漏洞的彌補是很難的,這是因為安卓系統冗長的更新過程,需要花費很長的時間才能使得市面上的大部分終端都更新到最新的系統版本。如果在支持HCE的系統版本中也出現了缺陷,也需要花費足夠長的時間去解決現有終端上的缺陷問題;
3.3 如果手機丟失或者被盜取,一個惡意用戶可以Root終端或者通過其它方式訪問終端的存儲系統,并且獲取各種存儲于應用中的信息。這可能帶來致命的問題,比如惡意用戶可以使用這些敏感數據去完成一些偽卡的交易。
但是總的來說,如果手機不被Root的話,基本信息的安全還是可以保證的;
3.4 上面提到的三點主要是從操作系統和應用層面本身來論證HCE是不安全的,但在作者看來,將支付數據存儲在云端并且采用一些技術(如Token或者非對稱密鑰等)確保從HCE Host到云端服務器的數據傳輸通道是安全的,HCE的安全性是可以得到提高和增強的,但采用這種方式會對交易的速度產生一定的影響。
4. HCE對于NFC生態的影響:
HCE提供了一種簡單但并非安全的可以替代現有NFC格局的方式,這有可能使得HCE成為加快NFC服務部署的一個因素。HCE對于那些愿意以較低安全性去換取較大市場份額、較快部署速度和較低投入的SP來說,具有重要的意義。HCE可能會讓SP們不需要過多關注于同SE的發行者們進行合作,而更加關注與利用HCE可能實現的業務本身。同時對于現有的TSM平臺來說,HCE的出現也使得TSM平臺需要做相應的功能更改,從可以完成在SE上Applet的個人化,向實現HCE服務個人化功能的演進。
由于沒有采用基于硬件的SE芯片,HCE的風險會更大。我們可以考慮一個提供大金額服務并且使用范圍很廣的開環支付服務商采用HCE后可能產生的場景。使用了HCE意味著服務商可以更快并且更靈活的將自己的支付服務提供給廣大的用戶,但與此同時大量的用戶也意味著潛在的風險非常之高。因此在采用HCE之前,服務商必須進行細致的成本估算以確認采用HCE技術的風險是否為可控的或者可能的損失是否是可承受的。另外對于開環支付服務運營商來說,采用HCE還必須協調好參與各方的權力和責任,設計在出現可能風險時應當采取的策略和規則。這對于運營商來說也是一個不小的挑戰。支付組織對于HCE的態度對于HCE的推廣來說也至關重要。
對于閉環服務運營商來說,上面這些提到的這些問題所產生的影響就相對較小,閉環服務運營商的所有支付和結算過程均留存在體系的內部,在規則設定和風險策略上靈活性會更大。同時,如果閉環服務運營商主要運營小額交易的話,采用HCE的風險就可能是可以接受的。
不可否認的一點是HCE的出現為NFC服務的進一步拓展提供了一個快捷但是不安全的方案。HCE能否得到發展需要找到合適的應用場景,并且需要有較好的風險控制機制,以確保服務的安全。同時,由于需要和云端服務器進行通訊和授權,在采用了HCE技術以后,能否還保持傳統的基于SE的NFC技術在交易場景中快捷和迅速的特點,也是值得觀望的。HCE的出現,對于傳統的卡廠、運營商來說都產生了一定的威脅和挑戰,能否實現產業的共贏,亦是產業各方需要去權衡和考慮的。不管怎樣,我們會繼續關注HCE技術的發展,期待著這項技術對于NFC的普及所產生的積極作用。