NFC技术简介

news2024/11/16 19:24:17

NFC简介

NFC(近场通信,Near Field Communication)是一种短距高频的无线电技术,由非接触式射频识别(RFID)演变而来。
NFC工作频率为13.56Hz,通常只有在距离不超过4厘米时才能启动连接,其传输速度有106 Kbit/秒、212 Kbit/秒或者424 Kbit/秒三种。
NFC有3种工作模式:读卡器模式、点对点模式、卡模拟模式。

  • 读取器/写入器模式(Reader/writer mode):NFC设备产生射频场从外部采用相同标准的NFC标签中读写数据,支持 NFC 设备读取和/或写入被动 NFC 标签和贴纸。
  • 点对点模式(P2P mode):支持 NFC 设备与其他 NFC 对等设备交换数据,Android Beam 使用的就是此操作模式。
  • 卡模拟模式(Card emulation mode):读卡器是主动设备,产生射频场;NFC设备为被动设备,模拟一张符合NFC标准的非接触式卡片与读卡器进行交互。
  • 外部读写器 <--->  NFC芯片 <---> SE

基于Android的NFC终端

Android 4.4版本开始,通过HCE(host-based card emulation,基于主机的卡模拟),方式提供NFC功能支持。

NFC终端主要包括非接触性前端CLF(也叫NFC控制器)、天线(Antenna)、安全模块(Secure Element,SE)三个主要部件,其中,非接前端、天线一般都集成在手机终端中,而安全模块可根据情况存放在不同的位置。

  • CLF:非接触性前端,也称为NFC控制器,其功能包括射频信号的调制解调,非接触通信的协议处理。
    非接触前端一方面连接射频天线,实现13.56MHz信号的发送与接收,另一方面与安全模块通信。在CLF中提供了识读接口、P2P接口、卡模拟接口,分别对应上面所说的三种工作模式。
  • 天线,通常集成在终端内部,与非接前端相连,实现13.56MHz射频信号的发送与接收。
  • 安全模块SE,主要功能是实现应用和数据的安全存储,对外提供安全运算服务,它是卡模拟的核心。
    安全模块还通过非接前端与外部读写设备进行通信,实现数据存储及交易过程的安全性。

根据安全模块存放的位置不同,NFC可分为不同的实现方案。

基于硬件的虚拟卡模式(Virtual Card Mode)

在虚拟卡模式下,需要提供安全模块SE(Secure Elemen),SE提供对敏感信息的安全存储和对交易事务提供一个安全的执行环境。NFC芯片作为非接触通讯前端,将从外部读写器接收到的命令转发到SE,然后由SE处理,并通过NFC控制器回复。

基于软件的主机卡模式(Host Card Mode)

主机卡模式下,不需要提供SE,而是由在手机中运行的一个应用或云端的服务器完成SE的功能,此时NFC芯片接收到的数据由操作系统或发送至手机中的应用或通过移动网络发送至云端的服务器来完成交互。两种方式的特点都是绕过了手机内置的SE的限制

那么,如何通过HCE技术在手机上实现NFC卡模拟呢?首先要创建一个处理交易事务的HCE 服务,Android4.4为HCE服务提供了一个非常方便的基类,我们可以通过继承基类来实现自己的HCE服务。如果要开发已存在的NFC系统,我们只需要在 HCE 服务中实现NFC 读卡器期望的应用层协议。反之如果要开发自己的新的NFC 系统,我们就需要定义自己的协议和APDU 序列。一般而言我们应该保证数据交换时使用很少的APDU包数量和很小的数据量,这样用户就不必花很长时间将手机放在NFC 读卡器上。

HCE 技术只是实现了将NFC 读卡器的数据送至操作系统的HCE 服务或者将回复数据返回给NFC 读卡器,而对于数据的处理和敏感信息的存储则没有具体实现细,所以说到底HCE 技术是模拟NFC 和SE 通信的协议和实现。但是HCE 并没有实现SE,只是用NFC 与SE 通信的方式告诉NFC 读卡器后面有SE的支持,从而以虚拟SE 的方式完成NFC 业务的安全保证。既然没有SE,那么HCE 用什么来充当SE 呢,解决方案要么是本地软件的模拟,要么是云端服务器的模拟。负责安全的SE如何通过本地化的软件或者远程的云端实现,并且能够保障安全性,需要HCE厂商自己考虑和实现。

超级SIM卡是基于SIM SE芯片的技术方案,因此属于基于硬件的虚拟卡模式,但同时也可以为HCE提供支持。

双模(Dual Mode)

对比分析

HCE的协议栈

为支持NFC射频卡,HCE主要实现了两个ISO协议,分别是硬件标准ISO/IEC 14443和应用协议ISO/IEC 7816

ISO/IEC 14443

Android 4.4 支持基于NFC-Forum ISO-DEP规范(基于ISO/IEC 14443-4)的模拟卡,要求仅使用 Nfc-A (ISO/IEC 14443-3 Type A) 技术模拟 ISO-DEP,但也可以支持 Nfc-B (ISO/IEC 14443-4 Type B) 技术。

该标准包含四个部分:

  • ISO/IEC14443-1:制定了有关非接触卡的物理特性;
  • ISO/IEC14443-2:制定了有关射频功率及信号界面的特性;
  • ISO/IEC14443-3:则为非接触卡的初始化及防冲突机制;
  • ISO/IEC14443-4:位有关的交易协定。

ISO/IEC14443-3 定义了 TYPE A、TYPEB 两种卡型(与飞利浦的 Mifare 标准兼容),均通过13.56Mhz的射频载波传送信号,此外索尼公司开发了FeliCa 标准,也成为TYPE F。
不同TYPE的主要的区别在于信号发送的载波调制深度、二进制数编码方式存在差异。
此外,防冲突机制的原理也完全不同,TYPE A是基于 BIT 冲突检测协议,TYPE B则是通过字节、帧及命令完成防冲突。

SWP单线协议(Single Wire Protocol)

手机与普通非接触IC卡最大的不同体现在拥有网络功能和人机交互两部分,因此,NFC手机可以从事传统非接触IC所不能完成的丰富业务,如空中充值、余额查询。所有这些业务均需要一个技术前提即需要一个标准的SIM卡访问接口,能够使得应用客户端访问SIM卡并与SIM卡中的applet进行通信。具体讲,需要在手机中支持三个标准:

  1. SIM Alliance Open Mobile API:为应用客户端提供与SIM卡通信的通道

  2. Global Platform/GSMA:Secure Element Access Control:授权应用客户端访问SIM卡中对应的applet

  3. Modem:需完全支持3GPP 27.007标准,支持打开SIM卡逻辑通道,并能够在逻辑通信上真正实现APDU的透传

SWP(Single Wire Protocol)是采用C6引脚的单线连接方案。在SWP方案中,接口界面包括三根线:VCC(C1)、GND(C5)和SWP(C6),其中SWP一根信号线上基于电压和负载调制原理实现全双工通讯,这样可以实现SIM卡在ISO7816界面定义下同时支持7816和SWP两个接口,并预留了扩展第三个高速(USB)接口的引脚。支持SWP的SIM卡必须同时支持ISO和SWP两个协议栈,需要SIM的COS是多任务的OS系统,并且这两部分需要独立管理的,ISO界面的RST信号不能对SWP部分产生影响。

  SWP是在一根单线上实现全双工通讯,定义了S1和S2两个方向的信号, SWP传输的波特率可以从106KBPS最高上升至2MBPS。从SWP的定义看,SWP方案同时满足ISO7816、NFC和大容量高速接口,并且是全双工通讯,可以实现较高波特率。SWP系统地定义了从物理层、链路层到应用层的多层协议,并已经上升成为ETSI的标准,正在争取成为ISO的标准,目前得到业界较多的支持。从另一个角度看,SWP方案要求SIM卡和NFC模拟前端芯片同时重新设计,涉及的面比较广,市场推进的难度较大。另外,NFC应用非常关注掉电模式下的应用,SWP的S2负载调制通讯方式带来接口的功耗损失,对掉电模式下的性能有不利影响。

ISO/IEC 7816

Android处理应用协议数据单元 (APDU)遵循的是ISO/IEC 7816-4规范。

Android系统上的HCE技术是通过系统服务实现的(HCE服务)。使用服务的一大优势是它可以一直在后台运行而不需要有用户界面。这个特点就使得HCE技术非常适合像会员卡、交通卡、门禁卡这类的交易,当用户使用时无需打开程序,只需要将手机放到NFC读卡器的识别范围内,交易就会在后台进行。当然如果有必要的话,用户也可以打开UI界面。这时的手机和普通的智能卡片已经没有区别了。

服务选择AID

交易中我们有一个重要问题需要解决,当用户将手机放到NFC读卡器的识别范围时,Android系统需要知道读卡器真正想要和哪个HCE服务交互,这样它才能将接收到的数据发送至相应的服务。ISO/IEC 7816-4规范正是解决服务选择的问题,它定义了一种通过应用程序ID(AID)来选择相应服务的方法。

一个AID占16位,如果手机模拟的是一个已经存在的NFC读卡设施,那么这些NFC读卡设施会去寻找那些经公共注册而广为人知的AID(类似于端口号)。像Visa卡和万事达卡等这些智能卡可以注册 AID号作为他们专用的识别标志。反之,如果要为自己的新的读卡设施部署NFC应用,你就需要注册自己的AID。AID注册过程在ISO/IEC 7816-5规格中定义,为防止和其他的Android程序冲突,Google建议AID号按此规格中推荐的注册。

当用户将设备接近 NFC 读写器时,Android 系统需要知道 NFC 读写器实际上想要与哪个 HCE 服务对话。这就是ISO/IEC 7816-4规范的来源:它定义了一种以应用程序 ID(AID)为中心的选择应用程序的方法。

AID 由 16 个字节组成。如果您正在为现有的 NFC 读写器基础设施模拟卡片,这些读者正在寻找的 AID 通常是众所周知的和公开注册的(例如,支付网络的 AID,如 Visa 和 MasterCard)。

如果您想为自己的应用程序部署新的读取器基础设施,则需要注册您自己的 AID。AID 的注册过程在ISO/IEC 7816-5规范中定义。谷歌建议,如果您正在为 Android 部署 HCE 应用程序,可以按照 7816-5 注册一个 AID,它可避免与其他应用程序发生冲突。

AID组

在某些情况下,HCE 服务可能需要注册多个 AID 才能实现某个应用程序,并且需要确保它是所有这些 AID 的默认处理程序(与另一服务的组中的某些 AID 相反)。

AID 组是一系列被视为属于共同的操作系统 AID 。对于一个 AID 组中的 AID,Android 可以保证以下一项:

组中的所有 AID 都被路由至此 HCE 服务。
组中没有任何 AID 被路由至此 HCE 服务(例如,服务请求组中的一个或多个 AID,而用户优先选择另一服务)。
换句话说,不存在中间状态,其中该组中的一些 AID 可以被路由到一个 HCE 服务,而另一些可以路由到另一个 HCE 服务。

AID组和类别

每个 AID 组都与一个类别关联。这使得 Android 可以按类别将 HCE 服务分组,并且反过来允许用户在类别级别上设置默认值而不是 AID 级别。通常,避免在应用程序中任何面向用户的部分中提到 AID:它们对普通用户没有任何意义。

Android 4.4 支持两种类别:CATEGORY_PAYMENT(覆盖行业标准支付应用)和CATEGORY_OTHER(对应于所有其它 HCE 应用)。

注意:在任何给定时间,在系统中只能启用CATEGORY_PAYMENT类别中的一个 AID 组。通常,这将是一个应用程序,了解主要的信用卡支付协议,可以在任何商家工作。

对于仅在一个商家(例如储值卡)工作的闭环支付应用,您应该使用CATEGORY_OTHER。该类别中的 AID 组可以总是活动的,并且在必要时可以在 AID 选择期间由 NFC 读写器给予优先级。

超级SIM卡的通信接口

通信接口指的是 SIM 卡与外部终端设备进行通信的接口,应支持 ISO7816 和 SWP 两种接口。

  • ISO7816 接口是 SIM 卡与外部终端设备进行通信的接触式 I/O 接口,遵循 ETSI 102.221 的要求。
  • SWP 接口是 SIM 卡与外部非接触终端设备进行通信,实现近场通信相关业务 的物理接口。
    超级 SIM 卡支持 SWP 协议,遵循 ETSI TS 102.613 的要求。支持卡 模拟模式、读卡器模式,可选支持点对点传输模式。

移动终端若支持 NFC 功能,则应支持 SWP 接口,与超级 SIM 卡协同实现刷卡 操作,为用户提供基于非接触感应的线下应用场景。

应用层的技术标准

NFC手机可以从事传统非接触IC所不能完成的丰富业务,如空中充值、余额查询。所有这些业务均需要一个技术前提即需要一个标准的SIM卡访问接口,能够使得应用客户端访问SIM卡并与SIM卡中的applet进行通信。具体讲,需要在手机中支持三个标准:

  1. SIM Alliance Open Mobile API:为应用客户端提供与SIM卡通信的通道

  2. Global Platform/GSMA:Secure Element Access Control:授权应用客户端访问SIM卡中对应的applet

  3. Modem:需完全支持3GPP 27.007标准,支持打开SIM卡逻辑通道,并能够在逻辑通信上真正实现APDU的透传


附录一:SIM卡的技术标准

SIM卡是一个装有微处理器的芯片卡,它的内部有5个模块,并且每个模块都对应一个功能:、

  • 微处理器CPU(8位)
  • 程序存储器ROM(3–8kbit)
  • 工作存储器RAM(6–16kbit)
  • 数据存储器EEPROM(128–256kbit)
  • 串行通信单元。

这5个模块被胶封在SIM卡铜制接口后与普通IC卡封装方式相同。这五个模块必须集成在一块集成电路中,否则其安全性会受到威胁。因为,芯片间的连线可能成为非法存取和盗用SIM卡的重要线索。

SIM卡同手机连接时至少需要5条连接线(通常编程口未定义)

  • 数据I/O口(Data)
  • 复位(RST)
  • 接地端(GND)
  • 电源(Vcc)
  • 时钟(CLK)

如上图所示。

SIM卡的供电分为5V(1998年前发行)、5V与3V兼容、3V、1.8V等,当然这些卡必须与相应的移动电话机配合使用,即移动电话机产生的SIM卡供电电压与该SIM卡所需的电压相匹配。卡电路中的电源VCC、地GND是卡电路工作的必要条件。卡电源用万用表就可以检测到。SIM卡插入移动电话机后,电源端口提供电源给SIM卡内各模块。

附录二:主流NFC硬件厂商和芯片型号

射频前端芯片读卡器/NFC芯片卡芯片
德州仪器:TI TRF7970A恩智浦:NXP PN532复旦微电子:FMSH FM1208
复旦微电子:FMSH FM11NC08S恩智浦:NXP PN7150华翼微电子 HYm4616A1/2/3/4/5/6
-意法半导体:ST CR95HF华翼微电子: HYm4616A7
-华大电子:HED CIE72D01-

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1246387.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IBM V5000存储报错控制器脱机节点自动恢复失败

PS&#xff1a;友情分享&#xff0c;请注意报错信息是否与本文一致。设备有价&#xff0c;数据无价&#xff0c;谨慎操作&#xff01; 报错信息&#xff1a; 存储为双控制器互相冗余&#xff0c;目前node2脱机&#xff0c;node1已承载所有业务 处理方案&#xff1a; 登录进n…

SpringBoot+SSM项目实战 苍穹外卖(1)

目录 产品原型与技术选型后端环境搭建Git版本控制IDEA中运行sql脚本文件nginx反向代理和负载均衡完善登录功能 导入接口文档SwaggerSwagger常用注解 产品原型与技术选型 管理端原型图&#xff1a; 用户端原型图&#xff1a; 餐饮企业内部员工使用。 主要功能有: 模块描述登录…

onelist能让alist聚合网盘拥有海报墙

什么是 onelist &#xff1f; onelist 是一个类似 emby 的专注于刮削 alist 聚合网盘形成影视媒体库的程序。 主要解决以下痛点&#xff1a; alist 挂载云盘后能在网页端看视频&#xff0c;却没有分类&#xff0c;没有海报墙&#xff1b;使用 webdav 挂载本地后&#xff0c;用…

马斯克星链与芯事:30亿美元炸出卫星互联网革命,GPU算力创无限可能

★卫星互联网&#xff1b;算力&#xff1b;卫星通信&#xff1b;互联网&#xff1b;低轨卫星互联网&#xff1b;5G基础设施&#xff1b;GPT-4 Turbo&#xff1b;算力&#xff1b;地面通信&#xff1b;液冷&#xff1b;水冷&#xff1b;AI服务器&#xff1b;东数西算&#xff1b…

2023年亚太杯数学建模A题水果采摘机器人的图像识别功能(免费思路)

中国是世界上最大的苹果生产国&#xff0c;年产量约为 3500 万吨。同时&#xff0c;中国也是世界上最大的苹果出口国&#xff0c;世界上每两个苹果中就有一个出口到国。世界上每两个苹果中就有一个来自中国&#xff0c;中国出口的苹果占全球出口量的六分之一以上。来自中国。中…

【数据结构】最小生成树(Kruskal算法)

一.基本思想 设无向连通网为G&#xff08;V&#xff0c;E&#xff09;&#xff0c;令G的最小生成树为T&#xff08;U&#xff0c;TE&#xff09;&#xff0c;其初态为UV&#xff0c;TE{},然后&#xff0c;按照边的权值由小到大的顺序&#xff0c;考察G的边集E中的各条边。若被考…

简述马尔可夫链【通俗易懂】

前言 马尔可夫链&#xff08;Markov Chain&#xff09;可以说是机器学习和人工智能的基石&#xff0c;在强化学习、自然语言处理、金融领域、天气预测、语音识别方面都有着极其广泛的应用。 The future is independent of the past given the present 未来独立于过去&#xff…

不小心删除了Mac重要文档?试试这10个Mac数据恢复软件

您是否不小心删除了重要文件并需要可靠的解决方案&#xff1f;别再犹豫了&#xff01;本文是您选择最佳 Mac 数据恢复软件的首选指南。我们的目标是为您提供做出明智决策和轻松找回丢失数据所需的工具和知识。 选择最佳 Mac 数据恢复软件&#xff1a;要考虑的因素 选择最佳 Ma…

高精度人像背景分割SDK技术解决方案

图像处理技术已经成为企业和个人生活中不可或缺的一部分&#xff0c;特别是在人像处理方面&#xff0c;如何准确、高效地将人物与背景分离&#xff0c;一直是一个技术难题。然而&#xff0c;美摄科技凭借其在AI深度学习领域的深厚积累&#xff0c;推出了一款高精度的人像背景分…

刷卡、扫码、插卡获取卡号,根据卡号请求数据;

业务需求&#xff1a;医院会进行刷卡 扫码 插卡等操作快速获取患者信息 一、刷卡和扫码 刷卡和扫码其实是同一种操作。刷卡/扫码和普通的键盘输入的区别就是&#xff1a;刷卡/扫码的速度快&#xff0c;而普通的键盘输入的速度慢。 <el-inputv-model"form.cardNo"…

【黑马甄选离线数仓day03_数仓设计和维度域开发】

1. 数仓基本概念 1- 什么是数据仓库呢? 存储数据的仓库, 主要用于存储过去历史发生过的数据,面向主题, 对数据进行统计分析的操作, 从而能够对未来提供决策支持 2- 数据仓库最大的特点是什么呢? 数据仓库既不生产数据, 也不消耗数据, 数据来源于各个数据源 3- 数据仓库的四…

uniapp打包的ipa上架到appstore的傻瓜式教程

​ 转载&#xff1a;uniapp打包的ipa上架到appstore的傻瓜式教程 uniapp打包 在HBuilder X编辑器中打开需要打包的项目&#xff0c;然后点击上面菜单栏中 发行 > 原生App-云打包&#xff0c;对以下弹出的弹窗进行内容填写 ​ 填写完成以后&#xff0c;点击打包操作 ​ ​ …

FreeSWITCH学习笔记:EventSocket

Event Socket命令最后需带有两个换行符。 api 执行API命令。阻塞。 1api API [ARG [ ...]] auth 内连模式下身份验证。需要第一个发送。 1auth PASSWORD bgapi 后台执行API命令。不阻塞。 1bgapi API [ARG [ ...]]2[Job-UUID: UUID] 返回带有Job-UUID。当API命令执行完成…

用自己热爱的事赚钱,是多么的幸福

挖掘天赋可能有些困难&#xff0c;但挖掘爱好就简单多啦&#xff01;最幸福的事情就是能用自己喜欢的事情赚钱。 我们要说的是一个博主&#xff0c;他非常喜欢骑自行车&#xff0c;虽然他的工作是在外贸公司做销售&#xff0c;但每当有空时&#xff0c;他都会骑自行车。而且他…

2023年亚太地区数学建模大赛 C 题

我国新能源电动汽车的发展趋势 新能源汽车是指以先进技术原理、新技术、新结构的非常规汽车燃料为动力来源&#xff08;非常规汽车燃料指汽油、柴油以外的燃料&#xff09;&#xff0c;将先进技术进行汽车动力控制和驱动相结合的汽车。新能源汽车主要包括四种类型&#xff1a;…

eclipse项目移到idea上部署运行

1.配置web模块 另外&#xff0c;模块这里&#xff0c;也要加上Spring 2.配置Artifact &#xff08;用于tomcat&#xff09; 就是从上面配置的web模块&#xff0c;产生的工件 3.添加lib 一般是在web-inf/lib &#xff0c; 遇到的坑&#xff1a; jdk版本问题&#xff0c;这里…

计算机毕业设计——基于SpringBoot+Bootstrap框架的学生宿舍管理系统的设计与实现

计算机毕业设计——基于SpringBoot+Bootstrap框架的学生宿舍管理系统的设计与实现 摘 要:近年来,随着高等教育的快速发展,大学生的人数日益增加,然而部分高校仍以人工记录的方式进行管理。针对这种传统管理方式,为进一步优化宿舍的管理效率,通过使用 Springboot 架构模式…

ATA-2042高压放大器在细胞的剪切应力传感器研究中的应用

微流控技术是一种通过微小的通道和微型装置对流体进行精确操控和分析的技术。它是现代医学技术发展过程中的一种重要的生物医学工程技术&#xff0c;具有广泛的应用前景和重要性。它在高通量分析、个性化医疗、细胞筛选等方面有着巨大的潜力&#xff0c;Aigtek安泰电子今天就将…

Android 提示框代码 java语言

在Android中&#xff0c;你可以使用 AlertDialog 类来创建提示框。以下是一个简单的Java代码示例&#xff0c;演示如何创建和显示一个基本的提示框&#xff1a; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; im…

ArkUI开发进阶—@Builder函数@BuilderParam装饰器的妙用与场景应用

ArkUI开发进阶—Builder函数BuilderParam装饰器的妙用与场景应用 HarmonyOS&#xff0c;作为一款全场景分布式操作系统&#xff0c;为了推动更广泛的应用开发&#xff0c;采用了一种先进而灵活的编程语言——ArkTS。ArkTS是在TypeScript&#xff08;TS&#xff09;的基础上发展…