武磊进球/足球即时此分/迈克马龙/北爱尔兰时间 - 中国vs澳大利亚

最新消息:歡迎加入QQ群276412263一起交流! | 購買NFC標簽前往官方淘寶店 | 投稿郵箱:nfchome@qq.com

是否可以用NFC手機來模擬NFC卡片

NFC教程 小天 21865瀏覽 0評論

nfc_card
1, 問:能否在AndroidNFC手機上實現卡模擬?

答:在技術上可行,但是,對一般開發人員來講,目前看來僅僅是技術上可行。

2, 問:具體如何實現呢?

答:有兩種方式:一種是基于硬件的,被稱為虛擬卡模式(Virual Card Mode);一種是基于軟件的,被稱為主機卡模式(Host Card Mode)。

在虛擬卡模式下,需要提供安全模塊SE,NFC芯片作為非接觸通訊前端,將從外部讀寫器接收到命令,轉發到SE,然后由SE進行回復。

外部讀寫器 NFC芯片 SE。

而在主機卡模式下,不需要提供SE,而是由在手機中運行的一個應用完成SE的功能。

外部讀寫器 NFC芯片 主機上的應用

3, 問:SE是個什么東西,一般手機上有嗎?

答:SE可以理解成一個CPU卡,一般是帶有JAVA虛擬機的CPU卡,即JAVA卡。帶有NFC芯片的手機一般都帶有SE(也可能有例外),例如GOOGLE NEXUS手機的PN65N,就是PN544芯片加SmartMX安全模塊。此外,SE也可以是特殊的SIM卡或SD卡。

4, 問:我要做基于硬件的卡模擬,如何實現?

答:首先開發在SE中運行的程序,即一個JAVA APPLET,它負責將從NFC芯片接收到命令進行解釋,處理和回復。然后,需要開發一個主機應用程序,能夠將APPLET下載到SE中,并激活運行。當然,如果是完整的移動支付系統,還要包括后臺應用,TSM等

5, 問:SE如何與主機通信?如何才能將程序下載到SE呢?

答:根據SE硬件的不同,SE與主機的硬件接口也有所不同。對內置的SE,一般是NFCWI接口,而SIM和SD卡可能是SWP接口。應用接口協議是ISO7816-4,即CPU卡APDU命令。熟悉CPU卡的都知道,沒有密鑰,根本無法完成對卡的寫操作。因此需要SE的操作密鑰。但不幸的是,這些密鑰都掌握在手機廠商(內置SE的情況),例如三星,HTC,或移動運營商(SIM的情況),或者銀行等安全模塊提供商(SD卡的情況)手中,一般開發人員是得不到這些權限的。

6, 問:那么沒有密鑰的情況下,基于硬件能做到什么程度呢?

答:目前看來,對SE進行只讀訪問應該是可能的。例如在安裝GOOGLE錢包后,在SE中會創建GOOGLE錢包的APPLET,我們可以通過程序選擇該APPLET并發送一些查詢命令。僅此而已…

7, 問:如何實現基于軟件的卡模擬?

答:目前,官方Android版本不支持,可以通過刷第三方ROM實現基于軟件的卡模擬,例如Cyanogenmod。(具了解,Android4.4 KitKat能支持NFC軟件卡模擬,支持ISODEP類型(CPU卡),UID為隨機ID,不能在關機和關屏幕下使用,通過AID路由可以與硬件卡模擬應用程序共存。)

8, 問:卡模擬一般能模擬什么卡?

答:取決于軟件和硬件雙方的限制。一般虛擬卡模擬主要取決于硬件,通常支持TYPE A/B的卡,對于專有協議的卡,就看芯片廠商是否支持了。例如用NXP的芯片,可以方便的模擬M1和ULTRALIGHT等,而是用其它家的芯片就不一定支持了。主機卡模擬一般只支持ISO14443-4以上的卡。

9, 問:基于軟件的卡模擬有什么問題嗎?

答:主要是安全問題,對應用在移動支付領域的應用,安全總是最重要的,而手機上的運行環境很不安全。

10,問:總體看來,對一般開發人員,有沒有實現在android NFC手機上卡模擬,并進行商業化的可能 ?

答:綜上所述,主機卡模式存在嚴重的安全問題,而且在目前官方Android版本不支持的情況下,不可能要求用戶刷機以支持一個應用。因此主機卡模式目前只能是一個技術上的研究,而沒有商業應用的可能性。對虛擬卡模式,SE掌握在手機廠商,移動運營商或銀行等行業巨頭手中,根據目前的趨勢,一般應用開發者可以采用與這些巨頭合作,取得SE的部分使用權,一般是建立一個應用的安全域,以加載自己的虛擬卡。中小應用開發者也可以考慮自己發行基于SD或外置模塊的SE,但是自行發卡的成本很高,終端用戶一般也不會認可。

作者:firefight

轉載請注明:NFC之家 » 是否可以用NFC手機來模擬NFC卡片

您必須 登錄 才能發表評論!

項目咨詢服務