石家庄网站托管公司,济南市章丘区建设局网站,怎么做淘宝客网站赚钱吗,湖南长沙设计公司1#xff0c; 问#xff1a;能否在AndroidNFC手机上实现卡模拟#xff1f;
答#xff1a;在技术上可行#xff0c;但是#xff0c;对一般开发人员来讲#xff0c;目前看来仅仅是技术上可行。
2#xff0c; 问#xff1a;具体如何实现呢#xff1f;
答#xff1…1 问能否在AndroidNFC手机上实现卡模拟
答在技术上可行但是对一般开发人员来讲目前看来仅仅是技术上可行。
2 问具体如何实现呢
答有两种方式一种是基于硬件的被称为虚拟卡模式Virual Card Mode一种是基于软件的被称为主机卡模式Host Card Mode。
在虚拟卡模式下需要提供安全模块SENFC芯片作为非接触通讯前端将从外部读写器接收到命令转发到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但是自行发卡的成本很高终端用户一般也不会认可。