十问Android NFC手机上的卡模拟

2013-6-13 编写

2013-7-17 修改最后一条的描述

2013-11-14 根据最新的Android4.4 KitKat,修改第7条的描述

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,但是自行发卡的成本很高,终端用户一般也不会认可。

十问Android NFC手机上的卡模拟相关推荐

  1. NFC手机上基于软件的卡模拟 重大利好还是安全噩梦

    NFC手机上基于软件的卡模拟 重大利好还是安全噩梦? Software Card Emulation in NFC-enabled Mobile Phones: GreatAdvantage or S ...

  2. NFC手机上基于软件的卡模拟 重大利好还是安全噩梦?

    NFC手机上基于软件的卡模拟 重大利好还是安全噩梦? Software Card Emulation in NFC-enabled Mobile Phones: GreatAdvantage or S ...

  3. NFC手机手环脱机模拟加密门禁卡

    目标:将门禁卡.考勤卡.会员卡.停车卡.电梯卡等等各种卡模拟进手机里,模拟后可用手机代替刷卡,无需root,不用电脑 背景介绍: 1.前言   目前,IC卡已被广泛应用于身份识别.金融消费.安全认证等 ...

  4. 在Android 华为手机上运行React_Native工程时出现了如下错误,做以记录:

    报错:unable to load script from assets 'index.android bundle' ,make sure your bundle is packaged corre ...

  5. Android NFC手机的三种工作模式

    Android 支持NFC功能,但是需要硬件的支持,带NFC功能的手机支持3种工作模式:读写模式.点对点模式.仿真卡模式,下面分别介绍 读写模式 这种模式中Android设备扮演的是读卡器的角色,可以 ...

  6. ic卡复制软件_使用MCT复制IC卡0扇区的方法(适用于NFC手机复制或模拟门禁卡)...

    部分IC卡无法被手机门禁卡模拟功能直接添加,但可使用CUID空白卡提取门禁卡0扇区数据直接使用,或提取并转储进CUID空白卡后再行模拟到手机内,实现"曲线救国". 1.自行下载手机 ...

  7. Android 华为手机上点击闪退

    在华为8.0上出现点击按钮闪退的情况,报了这样的日志:Minikin: Could not get cmap table size! MemoryLeakMonitorManager: MemoryL ...

  8. Android读取手机上所有APP列表

    可以读取APP包名,名字,icon图片,大家有需要直接粘贴就可以用 Intent intent = new Intent();intent.setAction(Intent.ACTION_MAIN); ...

  9. android 启动手机上自带浏览器

    方法一: 使用URI 定位导向. This class aims to do as little up front work as possible. To accomplish that, we v ...

最新文章

  1. C宏定义中## 和# 的含义
  2. 负载均衡设备oracle,Oracle RAC 服务器端联接负载均衡(Load Balance)
  3. 力扣--- 滑动谜题
  4. c#执行存储过程的简单实例
  5. jenkins自动部署--定时轮询svn代码更新并自动发布至测试环境
  6. ubuntu文件夹建立软链接方法
  7. Linux中各种锁原理概述
  8. 数据采集无线网服务器软件,WIFI智能数据盒
  9. 清明上河图对计算机技术的启发,吴良镛院士:《清明上河图》启示的城市方向...
  10. python贴吧-贴吧python登录
  11. H5传奇源码,附带微信支付,商城系统,新增了元宝交易商城系统源码
  12. android 双击点亮屏幕,手机双击点亮屏幕是怎么实现的
  13. 牛年交个朋友,重新认识一下云和恩墨!
  14. 牛皮凉席不好的原因!
  15. 苹果ppt_苹果电脑最强PPT神器来了!2000个模版、7 大功能让你的PPT更好看
  16. 游戏开发中为什么要控制模型的面数
  17. 读取股票数据存储到本地MySQL数据库(三)
  18. 离散数学-10 群与环
  19. 量化交易必看电影之《蜂鸟计划》
  20. 巨简单 在eclips上面新建一个网页动态项目

热门文章

  1. 买卖基金看那些指标呢?
  2. Java的方法是什么_java 什么是方法
  3. 学术论文1:如何有针对地高效地阅读一篇学术论文?(转载)
  4. 重庆西山科技股份有限公司咨询采购YDH-1型压电电荷测试仪
  5. ABC235E战斗纪实
  6. 数据挖掘 文本分类 知乎问题单分类(二):爬取知乎某话题下的问题(数据爬取)
  7. Git详解之四 服务器上的Git(第一部分)
  8. 脑机接口破圈医疗,让医疗更加智能化、个性化,为6种疾病的治疗带来了奇效
  9. 逻辑性强,其实是个致命的弱点
  10. laravel 链式组合查询数据