硬核拆解:从 RFID 到 NFC,一文读懂智能卡底层技术 (突出“硬核”和“全覆盖”)

文章目录

  • 0.导言
  • 1.技术谱系:从包含关系看RFID、感应卡与NFC
    • [1.1 三者的层级关系](#1.1 三者的层级关系)
    • [1.2 技术基因相同与差异](#1.2 技术基因相同与差异)
  • 2.RFID:发展历史、频段及工作原理
    • [2.1 RFID发展](#2.1 RFID发展)
    • [2.2 频段分类](#2.2 频段分类)
      • [2.2.1 LF(低频 125--134 kHz)](#2.2.1 LF(低频 125–134 kHz))
      • [2.2.2 HF(高频 13.56 MHz)](#2.2.2 HF(高频 13.56 MHz))
      • [2.2.3 UHF(超高频 860--960 MHz)](#2.2.3 UHF(超高频 860–960 MHz))
      • [2.2.4 微波(2.45 GHz、5.8 GHz等)](#2.2.4 微波(2.45 GHz、5.8 GHz等))
    • [2.3 标签分类](#2.3 标签分类)
  • 3.感应卡:定义、分类、标准、安全与应用
    • [3.1 感应卡定义](#3.1 感应卡定义)
    • [3.2 感应卡分类](#3.2 感应卡分类)
    • [3.3 常见卡类型](#3.3 常见卡类型)
      • [3.3.1 ID卡和IC卡简介](#3.3.1 ID卡和IC卡简介)
      • [3.3.2 M1卡简介](#3.3.2 M1卡简介)
      • [3.3.3 CPU卡简介](#3.3.3 CPU卡简介)
      • [3.3.4 身份证简介](#3.3.4 身份证简介)
      • [3.3.5 不同卡 场景应用](#3.3.5 不同卡 场景应用)
    • [3.4 M1卡概要讲解](#3.4 M1卡概要讲解)
      • [3.4.1 M1卡特性](#3.4.1 M1卡特性)
      • [3.4.2 M1卡功能说明](#3.4.2 M1卡功能说明)
      • [3.4.3 M1卡的存储结构](#3.4.3 M1卡的存储结构)
        • [3.4.3.1 M1 1k容量的存储概述](#3.4.3.1 M1 1k容量的存储概述)
        • [3.4.3.2 数据块应用](#3.4.3.2 数据块应用)
        • [3.4.3.3 控制块](#3.4.3.3 控制块)
      • [3.4.4 M1卡的读写流程](#3.4.4 M1卡的读写流程)
    • 3.4.CPU卡概要讲解
      • [3.4.1 主要特性](#3.4.1 主要特性)
      • [3.4.2 COS 是什么?](#3.4.2 COS 是什么?)
      • [3.4.3 CPU 卡文件结构(MF/DF/EF/ADF)](#3.4.3 CPU 卡文件结构(MF/DF/EF/ADF))
      • [3.4.4 内部认证和外部认证](#3.4.4 内部认证和外部认证)
      • [3.4.5 典型读写流程(APDU 流程)](#3.4.5 典型读写流程(APDU 流程))
        • [4.1 卡上电与复位](#4.1 卡上电与复位)
        • [4.2 选卡、选应用与选文件](#4.2 选卡、选应用与选文件)
        • [4.3 认证与安全会话建立](#4.3 认证与安全会话建立)
        • [4.4 读写数据流程(以 EF 为例)](#4.4 读写数据流程(以 EF 为例))
  • 4.ISO14443协议概述
    • [4.1 协议内容](#4.1 协议内容)
    • [4.2 PICC各种状态](#4.2 PICC各种状态)
  • 5.刷卡功能实战
    • [5.1 基于14443-A的操作帧格式:](#5.1 基于14443-A的操作帧格式:)
    • [5.2 CPU卡实际操作记录](#5.2 CPU卡实际操作记录)
      • [5.2.1 APDU指令结构](#5.2.1 APDU指令结构)
        • [1. 对MF文件进行外部认证](#1. 对MF文件进行外部认证)
        • [2. 对DF文件进行外部认证](#2. 对DF文件进行外部认证)
        • 3.选择认证文件的依据
      • [5.2.2 例子说明](#5.2.2 例子说明)
    • [5.3 NFC调试记录](#5.3 NFC调试记录)
    • [5.4 UID白卡调试记录](#5.4 UID白卡调试记录)
  • 6.相关参考
  • 7.相关推荐

0.导言

在当今数字化社会中,无线识别与通信技术已成为物流、零售、支付、安全等多个领域的基础设施。用户在乘坐公交车刷卡、用手机靠近POS机支付、进办公楼刷门禁卡的日常体验背后,都涉及到三种相互关联但又各具特色的技术:RFID、感应卡与NFC 。尽管这三者经常被混淆或等同,但它们在技术原理、应用场景、发展轨迹上各有千秋。本文将从历史发展、技术原理、分类方法、应用现状与未来趋势等多个维度,系统阐述这三大技术的核心内涵与相互关系。

本文主要讲解章节如下:

1.技术谱系:从包含关系看RFID、感应卡与NFC

1.1 三者的层级关系

理解RFID、感应卡与NFC的最直观方式,是认识它们的包含与演进关系:​

  • RFID(Radio Frequency Identification,射频识别)
    最宽泛的概念,泛指所有利用电磁波或磁场在无接触状态下进行身份识别与数据交换的技术总称。覆盖从低频(LF)、高频(HF)、超高频(UHF)乃至微波段的各类系统。​
  • 感应卡(非接触式智能卡)
    一类特定的物理载体,主要工作在13.56 MHz的高频段,符合ISO/IEC 14443或ISO/IEC 15693等国际标准。感应卡本质上是高频RFID卡片化的具体实现,是RFID家族中的一支。
  • NFC(Near Field Communication,近场通信)
    基于同样的13.56 MHz高频RFID基础,但为手机、智能手表等移动终端设计的双向、短距离无线通信标准。NFC将感应卡技术与移动设备结合,并增强了安全性和应用灵活性。

1.2 技术基因相同与差异

从基本的物理层讲,RFID、感应卡与NFC都基于电磁感应电磁波的无线传播 ,都工作在非授权的ISM (Industrial, Scientific, Medical)频段。

但它们在以下几个维度有明显差异:

维度 RFID(全频段) 感应卡(HF RFID) NFC
频段 LF/HF/UHF/微波 13.56 MHz 13.56 MHz
通信方向 多为读写器→标签单向 + 背散射ebyte+2​ 卡片被动响应 真正双向通信(可P2P)ebyte+2​
读写距离 厘米到数十米(视频段而定)ebyte+3​ 0--10 cm(ISO 14443)rfidlabel​ 0--4 cm 左右ebyte+2​
主要角色 工业追踪、资产管理 身份与权限管理的实体卡 个人移动终端的数字卡与支付
安全侧重 工业效率为主 金融/门禁级认证 支付、隐私、防欺诈ebyte+3​

2.RFID:发展历史、频段及工作原理

2.1 RFID发展

  • 1940年至1950年早期开始。RFID的历史可追溯到二战时期,1940年代,英国在飞机上装置了简单的无线应答器以进行敌我识别(IFF,Identification Friend or Foe)。​早期的IFF系统利用雷达波的反射特性------即无源反向散射(Backscatter)的物理基础------来判断目标属性。若目标飞机装有应答器,它在接收到雷达信号后会发射回特定的编码信号,从而在雷达屏幕上呈现出友军标识。这一机制奠定了现代RFID"阅读器(Interrogator)"与"标签(Tag)"交互模式的基石。

  • 1960至1970代开始工业化阶段 。1973年,美国发明家马里奥·卡杜洛(Mario Cardullo)获得了第一个被动无线传感器(被动RFID标签)的专利,这为低成本、可大规模部署的RFID铺平了道路,也这标志着RFID从单纯的"识别"走向了"数据存储" 。随后,铁路公司开始应用RFID进行货车自动识别,大幅提升了物流效率。​

  • 1990年至2000年,RFID标准化工作加快推进。ISO/IEC 14443(接触式卡)、ISO/IEC 15693(远距卡)、EPCglobal(UHF供应链标准)等相继出台,为各行业应用奠定了基础。​

  • 2004年至2006年, NFC 启动与标准化。 NFC 论坛的成立(2004 年):2004 年,恩智浦半导体、索尼和诺基亚共同创立了 NFC 论坛,该组织负责推广和标准化 NFC 技术。

  • 2010年至2015年,移动支付与早期采用。Google Wallet(2011):2011 年 Google Wallet 的推出使 NFC 获得了广泛关注,实现了基于 NFC 的非接触式支付。 Apple Pay(2014):2014 年,Apple Pay 推出,将 NFC 技术整合进 iPhone,进一步普及移动支付的概念,使 NFC 成为消费者的主流技术。

  • 2015年代至今,快速发展,RFID与物联网、AI、云计算等深度融合,形成了支撑智能供应链、智能零售、工业4.0的基础设施。

2.2 频段分类

RFID按工作频段可分为四大类,每一类有其独特的物理特性与应用场景:

2.2.1 LF(低频 125--134 kHz)

物理原理 :采用近场电磁感应耦合。读写器在天线中通以高频电流,产生交变磁场。标签线圈处于磁场中产生感应电压,经整流稳压为芯片供电。标签通过改变自身负载来改变磁场,从而向读写器"回送"数据(负载调制)。
主要特点:​

  • 读写距离短(2--10 cm)
  • 穿透力强:对水、生物组织、薄金属的衰减小
  • 数据率低(≤1 kbps),多用于ID-only应用
  • 抗干扰能力强,在高EMI环境(焊接、电磁加热)中表现好# 1.感应卡概念

典型应用:​

  • 牲畜与宠物身份标记(符合ISO 11784/85)
  • 医疗设备跟踪(MRI、消毒附近工作的设备)
  • 工业访问控制(高温、潮湿、油污环境)

2.2.2 HF(高频 13.56 MHz)

物理原理 :同样采用近场电磁感应耦合,但在频率更高、Q值更高的谐振电路中工作,读写距离可扩展至30 cm以上。
主要特点:​

  • 读写距离中等(0--30 cm,取决于天线设计)
  • 全球无授权ISM频段,标准化程度高
  • 数据率较高(最高106 kbps),支持复杂应用
  • 对金属环境较敏感,但对液体相对不敏感
  • 已形成完整的标准与生态(ISO 14443、ISO 15693、NFC等)

典型应用:​

  • 感应卡:门禁、公交、校园一卡通、金融IC卡
  • 图书管理:图书条码替代
  • NFC与移动支付:手机钱包、无接触支付

2.2.3 UHF(超高频 860--960 MHz)

物理原理 :采用远场电磁波背散射(Far-field Backscatter)。UHF标签天线接收读写器发送的电磁波并从中获取能量,通过改变自身阻抗来改变反射波的幅度与相位,从而编码信息。​
主要特点:​

  • 读写距离最远(6--12 m固定读写器,5--8 m手持)
  • 批量读取能力强(可同时识别600+标签/秒)
  • 对金属和液体较敏感,环境适应性低于HF
  • 成本最低(0.05--0.25/张大批量)
  • 标准为EPCglobal Gen2(ISO/IEC 18000-63)

典型应用:​

  • 物流与仓储:托盘、箱柜、货物追踪
  • 零售:商品防盗标签、自助结算、智能货架
  • 供应链可视化:从制造、运输到零售的端到端追踪

2.2.4 微波(2.45 GHz、5.8 GHz等)

工作在更高频段,多用于特定场景如ETC(电子不停车收费)、车辆识别等。

2.3 标签分类

除频段外,RFID标签还按供电方式分类:​

  • 无源(Passive)标签
    无内置电池,完全从读写器电磁场获能,成本最低,寿命最长(10年以上)。绝大部分商用RFID标签为此类。
  • 有源(Active)标签
    内置电池,可主动发射信号,读距更远(可达100 m),但成本与维护成本高,电池寿命一般为3--5年。
  • 半有源(Semi-passive)标签
    电池仅供芯片工作,与读写器通信时仍用无源方式(背散射)。介于两者之间

3.感应卡:定义、分类、标准、安全与应用

3.1 感应卡定义

感应卡,也常被称为非接触式智能卡 (Contactless Smart Card),是一种内置微芯片和天线的塑料卡片。它通过射频识别 (Radio Frequency Identification, RFID) 技术,在与读卡器保持短距离(通常是几厘米,如 10 厘米以内)的情况下,无需物理接触就能完成数据传输和能量交换。
工作原理核心: 能量和数据的无线传输。

  • 能量: 读卡器发出的射频场为感应卡中的芯片提供能量,使其能够启动工作。
  • 数据: 芯片利用此能量将存储的数据(如卡号、余额、加密信息)通过天线传输回读卡器,实现双向通信。

举个具体例子:

读写器(RFID)向感应卡发一组固定频率的电磁波,卡片内有一个 LC串联谐振电路 ,其频率与读写器发射的频率相同 ,在电磁波的激励下,LC谐振电路产生共振 ,从而使电容内有了电荷,在这个电容的另一端,接有一个单向导通的电子泵,将电容内的电荷送到另一个电容内储存,当所积累的电荷达到规定电压时,此电容可做为电源为其它电路提供工作电压,将卡内数据发射出去或接取读写器的数据。简单地说,就是感应产生电流来工作的一种卡片。在MIFARE卡中,芯片连接到一个几匝的天线线圈上,并嵌入塑料中,形成了一个无源的非接触卡。不需要电池。

3.2 感应卡分类

感应卡可以根据其读写距离/供能方式和功能/内部结构进行分类。

1) 按读写距离/供能方式分类(即 RFID 频率)

这是最常见的分类方式,决定了卡片的应用场景和技术标准。

名称 英文简称 典型频率 读写距离 供能方式 典型应用
低频卡 LF 125 kHz 极短距离 被动式 门禁卡、动物识别标签
高频卡 HF 13.56 MHz 短距离 被动式 主流智能卡(支付、交通、身份识别)
超高频卡 UHF 860--960 MHz 远距离 被动式 供应链管理、物流、车辆识别
有源卡 Active 任意(自带电池) 远距离 主动式 精确定位、资产追踪

2)按功能和内部结构分类

  • 存储卡 (Memory Card): 芯片只具备存储功能,不具备运算能力,安全性较低。
  • CPU 卡/智能卡 (Smart Card): 芯片内置微处理器 (CPU),具有独立运算和加密能力,可以执行复杂的安全协议和算法,安全性高。现代支付和身份识别感应卡多属于此类。

3.3 常见卡类型

3.3.1 ID卡和IC卡简介

ID卡 :全称身份识别卡(Identification Card),多为低频(125Khz),是一种不可写入的感应卡,含固定的编号,主要有台湾SYRIS的EM格式,美国HID、TI、MOTOROLA等各类ID卡。
IC卡 :全称集成电路卡(Integrated Circuit Card),又称智能卡(Smart Card)。多为高频(13.56Mhz),可读写数据、容量大、有加密功能、数据记录可靠、使用更方便,如一卡通系统、消费系统等,目前主要有PHILIPS的Mifare系列卡。
主要要区别

  • ID卡,低频,不可写入数据,其记录内容(卡号)只可由芯片生产厂一次性写入,开发商只可读出卡号加
    以利用,无法根据系统的实际需要制订新的号码管理制度;
  • IC卡,高频,不仅可由授权用户读出大量数据,而且亦可由授权用户写入大量数据(如新的卡用户的权
    限、用户资料等),IC卡所记录内容可反复擦写

3.3.2 M1卡简介

所谓的M1芯片,是指菲利浦下属子公司恩智浦出品的芯片缩写,全称为NXP Mifare1系列。也可叫他 Mifare one卡,或者 Mifare 卡。

M1种类

IC卡中最常见的是NXP Mifare系列卡,工作在高频(13.56Mhz),根据卡内使用芯片的不同,有如下分类:

M1卡就是Mifare非接触式感应卡,M1卡数据保存期为10年,可改写10万次,读无限次。无电源,自带天线,工作频率为13.56MHZ。M1卡内含加密控制逻辑和通讯逻辑电路。M1卡主要有两种,一种是S50和一种是S70。

  • Mifare S50卡的容量为1K字节的EEPROM,分16个扇区,每个扇区分4块,以块为存取单位,每块16个字节。
  • Mifare S70卡的容量是4K字节的EEPROM,前2K共分32个扇区,每个扇区为4块;后2K分为8个扇区,每个扇区为16块;以块为存取单位,每个块16个字节。

3.3.3 CPU卡简介

相比于普通的"存储卡"或"逻辑加密卡"(如早期的 M1 卡),CPU 卡的核心区别在于它拥有独立的操作系统 (COS) 和微处理器,本质上是一台微型计算机

CPU 卡 (CPU Smart Card),全称为带有微处理器的集成电路卡。它不仅是数据的存储介质,更是一个具备独立运算、独立加密、独立控制能力的智能终端。通俗理解: 如果说 M1 卡(逻辑加密卡)是一个带锁的"文件柜"(只要有钥匙就能拿走所有文件),那么 CPU 卡就是一台"微型电脑"(每次操作都需要登录、验证权限,且数据在传输前已经被电脑处理过)。

3.3.4 身份证简介

第二代居民身份证本质上是一张基于 ISO 14443 Type B 协议、采用10% ASK 调制以确保通信稳定性、必须依赖专用 SAM 硬件 模块进行解密认证的国产化无源 CPU 智能卡双向认证与 SAM 模块 ,这是身份证技术中最"硬核"的部分。您不能随便用一个 NFC 手机读取身份证的详细信息,原因就在于其独特的安全机制。它不仅仅是一个"身份证明",更是一个端到端的安全加密系统

3.3.5 不同卡 场景应用

  1. ID卡:主要用于考勤、门禁、一卡通等系统
  2. IC卡:主要用于公交、电信、银行、车场管理等领域。主要的功能包括安全认证,电子钱包,数据储存等。常用的门禁卡、二代身份证属于安全认证的应用,而银行卡、地铁卡等则是利用电子钱包功能。
  3. M1卡:主要用于自动收费系统,如公交、轮渡、地铁等。也应用在门禁管理、身份证明和电子钱包。
  4. CPU卡:可适用于金融、保险、交警、政府行业等多个领域,具有用户空间大、读取速度快、支持一卡多用等特点,并已经通过中国人民银行和国家商秘委的认证。

3.4 M1卡概要讲解

3.4.1 M1卡特性

  • 每个扇区有独立的一组密码和访问控制;
  • 每张卡有唯一的序列号,为32位(4Bytes);
  • 工作频率:13.56MHz,常用通信速率:106Kbps;
  • 遵循ISO/IEC 14443A标准的第二部分和第3部分;
  • 具有防冲突机制,支持多卡操作;
  • 无电源,自带天线,内含加密控制逻辑和通讯逻辑电路;

3.4.2 M1卡功能说明

如上图,以MF1 S50为例说明,主要组成有:天线、RF接口、RF接口、数字控制单元、集成电路芯片内含1 Kbyte EEPROM。能量和数据通过天线传输,卡中天线为几匝线圈,直接连接到芯片上;不再需要额外的组件。

  1. RF接口 (属于模拟信号接口)
    • 调制解调器:所谓调制,就是把数字信号转换成通信线上传输的模拟信号;解调,即把模拟信号转换成数字信号。合称调制解调器。
    • 检波器:是检出波动信号中某种有用信息的装置
    • 时钟发生器
    • 上电复位
    • 稳压器
  2. 防冲突:读写范围内的几张卡可以逐一选定和操作。
  3. 认证 :在所有存储器操作之前进行认证过程,以保证必须通过各块指定的密钥才能访问该块。
  4. 控制和算术逻辑单元:数值以特定的冗余格式存储,可以增减。
  5. 加密单元:域验证的CRYPTO1 数据流加密,保证数据交换的安全。
  6. EEPROM: 1 Kbyte,分16区,每区4块。每一块有16字节。每区的最后一块称作"尾块",含有两个密钥和本区各块的读写条件。

3.4.3 M1卡的存储结构

3.4.3.1 M1 1k容量的存储概述

1)M1(S50)卡分为16个扇区,每个扇区由4块(块0、块1、块2、块3)组成 ,(我们也将16个扇区的64个块按绝对地址编号为0~63;第0扇区的块0(即绝对地址0块),它用于存放厂商代码,已经固化,不可更改。每个扇区的块0、块1、块2为数据块,可用于存贮数据。如下图所示:

2)第 0 扇区的块 0(即绝对地址 0 块),它用于存放厂商代码,已经固化,不可更改,如下:

3)每个扇区的块 0、块 1、块 2 为 数据块,可用于存贮数据。数据块可作两种应用:

(1) 用作一般的数据保存,可以进行 读、写 写操作。

(2) 用作数据值,可以进行 初始化值、加值、减值、读值操作。

4)每个扇区的块3是控制块,包括了密码A、存取控制、密码B。

3.4.3.2 数据块应用

数据块有两种应用:

  • 用作一般的数据保存,可以进行读、写操作;
  • 用作数值块:可以初始化值、加值、减值、读值操作;

数值块具有电子钱包功能(有效命令:read, write, increment,decrement, restore, transfer)。数值块有固定的数据格式,以便于错误检测、纠错和备份管理。

数值块只能通过以数值块格式的写操作生成:

  • 数值:有符号4字节数值。数值的最低字节存储在最低地址字节。负值以标准的2的补码形式存储。出于数据完整性和安全原因,数值存储三次,两次不取反,一次取反。

  • 地址:1字节地址,当进行备份管理时,可用于保存块的地址。地址保存四次。两次取反,两次不取反。在increment、decrement、restore和transfer 操作中,地址保持不变。它只能通过write命令更改。

vbnet 复制代码
Byte  0--3   : Value (V)
Byte  4--7   : Value (V')  ← V 的按位取反
Byte  8--11  : Value (V)   ← 再存一遍 V
Byte 12     : Address (A)
Byte 13     : Address (A')
Byte 14     : Address (A)
Byte 15     : Address (A')

感应卡这种存储方式的本质,是在普通 EEPROM 数据块之上,通过固定冗余编码受控指令,把"整数数据"伪装成具备校验、自恢复和原子操作能力的受保护数值结构。

3.4.3.3 控制块

每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取控制。存取控制为4个字节,共32 位,扇区中的每个块(包含数据块和控制块)的存取条件是由密码和存取控制共同决定的,在存取控制中每个块都用相应的三个控制位,定义如下:

三个控制位以正和反两种形式存在于存取控制字节中,决定了该块的访问权限(如进行减值操作必须验证KEY A,进行加值操作必须验证KEY B,等等)。

存取控制 (4 字节,其中字节9 为保留用字节)结构如下所示:(注意颜色是对应不同块)

数据块 (块0、块1、块2)的存取控制如下 :例如:当块0 的存取控制位C10 C20 C30=1 0 0 时,表示验证密码A 或密码B 正确后可读;验证密码B 正确后可写;不能进行加值、减值操作。

控制块块3 的存取控制与数据块 (块0、1、2)不同,它的存取控制如下图;例如:当块3 的存取控制位C13 C23 C33=1 0 0 时,表示:密码A:不可读,验证KEYA 或KEYB 正确后,可写 (更改)。存取控制:验证KEYA 或KEYB 正确后,可读、可写。密码B:验证KEYA 或KEYB 正确后,可读、可写。

注意:在每一次存储器读写时,内部逻辑会验证存储条件的格式。如果发现个是错误,这个区将被永久性锁死.

3.4.4 M1卡的读写流程

M1 卡为被动式非接触 IC 卡,存储器访问由读写器发起命令,并在卡片内部数字控制单元与访问控制逻辑的约束下完成。任何存储器操作均必须在卡片被成功选定并完成目标扇区密钥认证之后才能执行。

1)标准通信与访问流程

射频场建立 → 寻卡(REQA/WUPA) → 防冲突 → 选卡(SELECT) → 卡进入 ACTIVE 状态 → 扇区密钥认证 → 块级读/写/数值操作 → 结束通信或继续认证其他扇区。

vbnet 复制代码
RF On
  ↓
REQA / WUPA
  ↓
Anti-collision
  ↓
SELECT (UID)
  ↓
Authentication (Key A / B, Sector)
  ↓
Block Read / Write / Value Operation
  ↓
HALT or Next Sector Authentication

2)流程分步说明

  1. 射频场建立(RF Field Initialization)

    • 读写器开启 13.56 MHz 射频场,为卡片提供工作能量。
    • 卡片在射频场中被动上电并进入空闲(IDLE)状态。
  2. 寻卡(Request / Wake-up)

    读写器发送寻卡命令,用于检测射频场内是否存在可响应的卡片。

    常用命令:

    • REQA:请求处于空闲状态的卡
    • WUPA:唤醒处于休眠状态的卡
    • 卡片返回 ATQA,用于表明卡类型及 UID 相关信息。
  3. 防冲突(Anti-collision)

    当射频场内存在多张卡时,读写器通过防冲突机制逐位仲裁,获取单张卡的完整 UID。

    防冲突过程可能包含多轮交互,直至唯一 UID 被确定。

  4. 选卡(Select)

    读写器根据获取的 UID 发送选卡命令。

    被选中的卡返回 SAK

    卡片进入激活(ACTIVE)状态

    其他卡保持静默,不再参与后续通信

  5. 扇区密钥认证(Authentication)

    选卡成功后,读写器必须对目标扇区执行密钥认证。

    • 认证对象:指定扇区
      使用密钥:Key A 或 Key B
    • 安全机制:基于 CRYPTO1 的双向随机数认证
    • 认证成功后:
      建立加密通信状态
      数字控制单元根据访问控制位决定允许的操作类型
      认证结果仅对当前扇区有效,不具备跨扇区权限继承。
  6. 存储器操作(Memory Access)

    在认证成功且访问条件满足的前提下,读写器可对指定块执行操作:

    • 普通数据块:
      读(READ)
      写(WRITE)
    • 数值块:
      加值(INCREMENT)
      减值(DECREMENT)
      备份(RESTORE)
      转存(TRANSFER)
    • 所有操作均受扇区尾块中访问控制位的约束。
  7. 会话结束或切换扇区

    读写器可发送 HALT 命令使卡进入休眠状态;

    或重新对其他扇区执行密钥认证,以继续访问新的存储区域。

    射频场关闭后,所有认证状态自动失效。

3.4.CPU卡概要讲解

CPU卡本质定义:内置微处理器(通常为 8/16/32 位 CPU)、安全操作系统(Smart Card OS)和安全存储的智能卡,既有"算力"又有"存储",可以执行复杂逻辑和密码运算。

典型标准:

1)接触式:遵循 ISO/IEC 7816 系列(接口、电气特性、APDU 命令、文件系统等)。​

2)非接触式:通常同时遵循 ISO/IEC 14443(Type A/B,射频与防冲突)和 ISO/IEC 7816-4(APDU 与文件系统)。

3.4.1 主要特性

  • 高安全性:支持对称加密(DES/3DES/AES)、部分支持非对称(RSA、ECC)算法,可完成双向认证、会话密钥协商、数字签名等。
  • 完善的文件系统和多应用支持:内部组织为树状文件系统,支持多个应用(类似"多分区、多目录");可在一张卡上创建多个独立应用,每个应用再下挂多达 32 个文件,每个文件可设定独立访问密钥和权限。
  • 可编程性与灵活性:智能卡操作系统支持一组标准 APDU 命令(SELECT/READ/UPDATE 等),也支持厂商自定义命令。
  • 非接触能力(接触/非接触/双界面):现代 CPU 卡多为非接触或双界面(既有触点又支持 13.56 MHz 射频),可兼容传统接触式终端和非接触 POS/门禁。

3.4.2 COS 是什么?

智能卡并不是裸 MCU,而是一颗带有专用操作系统(COS)的安全微控制器;COS 固化在芯片 ROM 中,负责对外提供统一接口、控制存储访问并实施安全策略。

COS 是厂商相关的软件,COS 是厂商相关的软件,由芯片/卡厂商设计(如 Gemplus、NXP、Infineon)。COS 在流片阶段写入 ROM (Mask ROM)出厂后:不可修改,不可读取,这就是智能卡安全的根。

这些核心例程本质上是:

  • APDU 解析
  • 文件系统管理
  • 安全状态机
  • 密钥与认证逻辑
  • EEPROM 访问控制

应用不能直接访问硬件,只能调用 COS 能力。

3.4.3 CPU 卡文件结构(MF/DF/EF/ADF)

绝大多数 CPU 卡采用基于 ISO/IEC 7816-4 的树形文件系统 ,核心概念是 MF、DF、EF(以及扩展的 ADF)。

1)基本文件类型

  1. MF(Master File,主文件/根目录)
    • 整个文件系统的根节点,每张卡仅有一个 MF。
    • 逻辑上类似磁盘的根目录"/"或 DOS 的根目录。
    • MF 下可以包含多个 DF/ADF 和 EF。
    • 在卡复位(RESET)后,MF 通常被隐式选中作为当前目录。
  2. DF(Dedicated File,专用文件/目录)
    • 类似"目录",可以包含子 DF 和 EF。
    • 常用作为应用目录:每个 DF 对应一个功能模块或业务应用,例如"公交应用 DF""门禁应用 DF"。
    • DF 也可再包含子 DF,构成多级目录结构。
  3. EF(Elementary File,基本文件/数据文件)
    • 树结构的叶子节点,只用来存储数据,不再包含其他文件。
    • EF 按组织形式又分为多种类型(见下一节"存储结构")。
    • 用于保存密钥、账户余额、交易记录、参数配置等业务数据。
  4. ADF(Application Dedicated File,应用根目录文件)
    • 在实际工程中,常把特定 DF 定义为 ADF,用作某个应用的入口,并与 AID 绑定。
    • ADF 通常挂在 MF 下,终端通过 AID 选择 ADF(如 EMV 银行卡应用选择)。
    • 支持"多应用卡":不同机构/业务各有一个 ADF,互相隔离。

3.4.4 内部认证和外部认证

内部认证 :是用读卡设备来认证卡,保证卡的合法性 ,内部认证可以防止伪造的卡在读卡设备上进行操作。

外部认证:是用卡来认证外部读卡设备的合法性,外部认证可以防止恶意对卡进行操作,读取或更改卡内信息。

对比项 内部认证 外部认证
谁证明自己 终端
认证对象 卡合法性 终端合法性
密钥位置 卡内 终端 / SAM
安全目标 防伪卡 防非法终端
常见用途 身份、金融 充值、管理操作

3.4.5 典型读写流程(APDU 流程)

下文以非接触 CPU 卡 + ISO 7816-4 APDU 为例说明典型的读写流程。整体交易过程可以抽象为:复位 → 选卡 → 认证 → 选文件 → 读/写 → 完成

4.1 卡上电与复位
  1. 上电/进入场区
    • 接触式:插入读卡器,VCC 上电后卡复位。
    • 非接触式:进入 13.56 MHz 场区,卡片通过感应取能,芯片上电。
  2. 复位(Reset)与 ATR/ATS
    • 接触式卡返回 ATR(Answer To Reset),描述支持的协议参数。
    • 非接触式卡在完成防冲突选卡后返回 ATS 或其他协议信息。
4.2 选卡、选应用与选文件
  1. 防冲突与选卡 (非接触)
    • 读卡器在场中广播请求,卡片通过 Anti-collision 协议逐一应答,最终选中一张卡并获取其 UID。
  2. 选择应用(ADF)
    • 终端按 AID 发送 SELECT AID 命令(APDU),卡片返回 FCI,表示已选中该 ADF/应用。
  3. 选择文件(DF/EF)
    • 使用 SELECT FILE APDU 按 FID 或路径选择目标 DF/EF。
4.3 认证与安全会话建立
  1. 选择认证密钥(Key ID) (部分卡)
    • 如 DESFire 中的 Authenticate / AuthenticateAES 命令。
  2. 挑战-响应认证
    • 读写器发送随机数(挑战),卡片基于密钥进行加密运算并返回响应;
    • 卡片也向读写器发出挑战,读写器用同一密钥计算回应;
    • 双方都验证对方的响应正确性,建立双向信任
  3. 会话密钥生成
    • 利用双方随机数和共享主密钥,计算出会话密钥,用于后续数据加密与 MAC 保护。
    • 一般采用 DES/3DES/AES 等对称算法。
4.4 读写数据流程(以 EF 为例)
  1. 读数据(READ BINARY / READ RECORD)
    • 透明文件:使用 READ BINARY APDU,指定偏移量与长度,卡返回相应字节。
    • 记录文件:使用 READ RECORD 命令,指定记录号与模式(如当前、下一条)。
    • 若文件访问权限要求认证(如需 Key 1 已成功认证),否则卡返回错误状态字。
  2. 写数据(UPDATE BINARY / UPDATE RECORD)
    • 逻辑类似读操作,但 APDU 中携带要写入的数据。
    • 若 EF 受"写需认证"保护,必须在成功认证后才能执行。
    • 对涉及金额/计数的文件,通常采用事务机制:写操作要么完整成功,要么在异常掉电时回滚,避免"金额写了一半"的风险。
  3. 事务与完整性保护
    • CPU 卡 OS 通常实现写事务日志电源故障保护机制:写入前备份旧数据,写完后更新校验及元数据。
    • 高安全场景下,每笔写操作会生成 MAC 或签名,用于后台系统验证数据未被篡改。

4.ISO14443协议概述

4.1 协议内容

第一部分:物理特性

ISO/IEC 14443-1定义了ISO/IEC 14443 PICC及其组件的物理尺寸天线

第二部分:频谱功率和信号接口

ISO/IEC 14443-2定义了13.56 MHz的载波频率,即调制频率和编码,以及最小和最大场强。分为A型(=MIFARE)和B型。

第三部分:初始化和防冲突算法

ISO/IEC 14443-3定义了通信的开始以及如何选择PICC。有时这被称为"卡激活序列"。分为A型(=MIFARE)B型。

细分在ISO/IEC 14443-3主要包括:

  • PCD(Proximity Coupling Device 读卡器)不断轮询进入能量场的PICC(Proximity card 卡);

  • 在PCD与PICC之间进行通信的初始化阶段用的字节格式、帧和时序;

  • 初始化REQA和ATQA(命令和应答)的内容;

  • 多种卡中检测出1张卡并与之通信的防方法;

  • PCD与PICC进行初始化通信的其他参数;

  • 加速从多卡中选出1张卡的可选方法

第四部分:通讯协议

SO/IEC 14443-4定义了PCD和PICC之间数据交换的协议。该协议通常称为"T=CL"协议。

(后面抽实际对这个协议展开学习讲解一下)

4.2 PICC各种状态

  1. POWER OFF

    PICC由于缺少载波能量而处于断电状态,也不发射副载波。

  2. IDLE (闲置)状态

    电磁场激活后,PICC进入IDLE状态。

  3. READY (就绪)状态

    当收到一个有效的REQA或WAKE-UP命令,就进入READY状态。

    当PICC的UID(唯一标识符)被PCD发来的Selection命令选中时,就退出本状态。

  4. ACTIVE(激活)状态

    当PICC的UID被PCD选中时就进入本状态。

    在激活状态,完成本次应用的全部操作。

  5. HALT(停止)状态

    该状态通过HALT命令或本部分中未定义的应用特定命令来进入。在这种状态中,PICC应仅响应使

    PICC转换为READY状态的WAKE-UP命令。

5.刷卡功能实战

5.1 基于14443-A的操作帧格式:

请求卡 :0x26 → 寻未进入休眠状态的卡
唤醒所有卡 :0x52→ 寻感应区内所有符合14443A标准的卡
防冲突 :0x93,0x20 得到卡ID
选择卡片 :0x93,0x70, ID1,ID2,ID3,ID4, checksum, CRC16

vbnet 复制代码
//1.寻卡的协议内容:一个寻卡命令就可以了,接着就可以发送 
Request tx: 0x52 或者0x26
//2.返回:2byte卡类型(4,0)
Request rx: 0x04 0x00 
 
//3. 协议:防冲突命令 + 0x20
Anticoll tx: 0x93 0x20
//4. 返回:4byte卡ID,1byte校验(异或)(0xa7 0x6f 0xe8 0x50  0x70)
Anticoll rx: 0xa7 0x6f 0xe8 0x50  0x70

//5.协议:命令字 + 0x70 + 4byte卡号 + 1byte校验 + 2byte CRC16校验
Select tx: 0x93  0x70  0xa7  0x6f  0xe8  0x50  0x70  0x8a  0x47 
//6.返回卡类型0x28(CPU卡) + 两个字节的CRC   
Select rx: 0x28  0xb4  0xfc  

5.2 CPU卡实际操作记录

在CPU卡操作中,进行外部认证时,通常需要对DF(Data File)文件或MF(Master File)文件进行认证。具体选择哪个文件进行认证取决于你的操作需求和卡片的安全策略。以下是一些常见的做法:

5.2.1 APDU指令结构

APDU指令分为命令头 (CLA, INS, P1, P2)和命令体(Lc, Data, Le),格式如下:

CLA INS P1 P2 Lc Data Le
  • CLA :指令类别(如 0x00表示标准指令)
  • INS:具体操作(如读取、写入)
  • P1/P2:操作参数(如文件地址)
  • Lc:数据域长度
  • Data:传输的数据
  • Le:期望响应的最大长度
1. 对MF文件进行外部认证
  • 目的:对整个卡片进行认证,通常用于初始化卡片或进行全局操作。
  • 命令示例
vbnet 复制代码
00 86 00 00 05 00 00 01 60 00
  • 00 86:表示外部认证命令。
  • 00 00:表示认证类型和认证数据的长度。
  • 05:表示数据长度。
  • 00 00 01 60 00:表示认证数据。
2. 对DF文件进行外部认证
  • 目的:对特定的DF文件进行认证,通常用于对特定文件的操作。
  • 命令示例
vbnet 复制代码
00 86 00 00 05 01 00 01 60 00
  • 00 86:表示外部认证命令。
  • 00 00:表示认证类型和认证数据的长度。
  • 05:表示数据长度。
  • 01 00 01 60 00:表示认证数据,其中01表示认证类型,00 01 60 00表示认证数据。
3.选择认证文件的依据
  • 全局操作:如果需要对整个卡片进行操作,如初始化卡片或进行全局设置,通常选择对MF文件进行认证。
  • 特定文件操作:如果需要对特定的DF文件进行操作,如读取、写入、删除等,通常选择对DF文件进行认证,不对df文件进行外部认证是无法对DF文件有写的权限。

5.2.2 例子说明

假设我们需要对DF 01 02进行外部认证,然后创建一个密钥。

  1. 选择DF
vbnet 复制代码
00 A4 04 00 02 01 02 00
  • 这个命令表示选择DF 01 02。
  1. 外部认证
vbnet 复制代码
00 86 00 00 05 01 00 01 60 00
  • 这个命令表示对DF 01 02进行外部认证。
  1. 创建密钥
vbnet 复制代码
00 20 00 00 08 12 34 56 78 9A BC DE F0 01
  • 这个命令表示创建密钥。
    通过上述步骤,可以确保对特定DF文件进行认证,并成功执行后续操作。如果遇到认证失败的情况,可以参考之前的错误码及其解决方法进行排查。

5.3 NFC调试记录

vbnet 复制代码
[CARD][INF]【cpu_card_judge】cpuflag=0x20, opt=7
[CARD]send data -->[13]:02 00 a4 04 00 07 f0 65 7a 76 69 7a 01 
[CARD]recv data  -->[2]:f2 01 
[CARD][ERR]NFC select result:0
[CARD]apdu recv-->[2]:f2 01 
[CARD]apdu recv -->[6]:02 fc 00 00 00 fe
[CARD][ERR]等待, NFC 通信select成功
[CARD][WAR]->flag NFC
[CARD][INF]【lpcd_irq_event】卡类型=5, opt=7
[CARD][INF]CardUid:【1405337096】Card_type:【0】
[CARD][INF]lock sn: BE5031487
[CARD]send data -->[19]:03 01 10 00 00 0d 42 45 35 30 33 31 34 38 37 00 00 00 27
[CARD]recv data  -->[11]:03 01 12 00 01 05 18 fa 00 00 f5
[CARD][ERR]NFC certification send1 ok
[CARD][INF]NFC ID not Added recover app
[CARD]nfc user key:[6]:3c 20 85 66 db 3a 
[CARD]nfc SHA1 key:[16]:80 16 3a bc 84 a0 30 b0 ab ca 87 d0 b5 64 63 ff
[CARD]nfc user ID:[4]:c0 e1 00 00
[CARD]send data -->[39]:02 01 20 00 00 21 42 45 35 30 33 31 34 38 37 00 00 00 c0 e1 00 00 80 16 3a bc 84 a0 30 b0 ab ca 87 d0 b5 64 63 ff d5 
[CARD]recv data  -->[2]:f2 01
[CARD]apdu recv-->[2]:f2 01
[CARD]apdu recv -->[39]:02 01 22 00 00 21 86 54 2f 97 ea 9e 3b ff 4b f6 42 6a e3 6a 2e 06 54 df 2d 6b c4 0c 62 a8 74 2e f6 27 b3 a4 78 95 52 
[CARD][ERR]NFC certification send2 ok
[CARD]nfc iv:[16]:86 54 2f 97 ea 9e 3b ff 4b f6 42 6a e3 6a 2e 06
[CARD]nfc encrype_data:[16]:54 df 2d 6b c4 0c 62 a8 74 2e f6 27 b3 a4 78 95
[CARD]nfc decrype_data:[16]:42 45 35 30 33 31 34 38 37 00 00 00 c0 e1 00 00   
[CARD][INF]NFC enroll----------ok
[CARD]nfc ID:[16]:c0 e1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
[CARD]ADD nfc ID:[16]:c0 e1 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[CARD]card uid:[4]:c0 e1 00 00
[CARD][INF]swipe NFC card flag -> 5

使用工具抓图流程如下:

5.4 UID白卡调试记录

vbnet 复制代码
#1.寻卡
send:26 
recv:04 00 
#2.防冲突
send:93 20 
recv:B0 6A BC 3B 5D 
#3.选卡
send:93 70 B0 6A BC 3B 5D D9 36 
recv:08 B6 DD 
#4.休眠
send:50 00 57 CD 
#5.写0块后门指令1(7bit模式)
send:40
recv:0A 
#6.写0块后门指令2
send:43 
recv:0A 
#7.写块数据
send:A0 00 5F B1 
recv:0A 
#8.写入16字节的块数据
send:75 C5 48 37 CF 08 04 00 62 63 64 65 66 67 68 69 5C BB 
recv:0A 
 
#块0数据注解
75 C5 48 37: 4字节卡号
CF         : XOR卡号校验
08         : 卡容量
04 00      : 卡类型
62 63 64 65: 其它
66 67 68 69: 其它

注意:

  1. 正常流程是在第三步:选卡后进行AB秘钥验证了;但为了能使用后门指令,需要放休眠指令,不
    让其密钥验证,否则不能打开后门。
  2. 发送后门指令1:0x40,这个指令必须是7bit,否则不响应;
  3. 发送后门指令2:0x43,这个指令必须是8bit,否则不响应;
  4. 在数据交换前,结合读卡芯片可以设置超时时间15ms:fm175xx、sky1311t;关闭发送的CRC和
    接收的 CRC;

判断是否是UID白卡参考程序(可以当防火墙使用,但只能防止后后门指令的UID白卡)。

这是针对"中国魔术卡"UID Clone Card)的特殊操作,而非标准 ISO 14443 协议或正规 M1 卡的功能。正规 M1 卡的 0 扇区 0 块(厂商块)是物理固化不可写的。

6.相关参考

7.相关推荐

想系统学习BLE可阅读下面文章
(一)蓝牙的发展历史
(二)蓝牙架构概述-通俗易懂
(三)BLE协议栈协议分层架构设计详解
(四)BLE的广播及连接-通俗易懂
(五)图文结合-详解BLE连接原理及过程
(六)BLE安全指南:别让"配对降级"和硬件I/O毁了安全等级(BLE SMP)
(七)Nordic实战--保姆级教程:nRF Connect SDK 开发环境搭建全指南

相关推荐
Stanford_sun5 小时前
基于Zigbee的无线火灾报警系统(云平台版)
网络·嵌入式硬件·物联网·zigbee
Wnq100727 小时前
当无人机 “飞” 入生活,安全隐患如何破解?
嵌入式硬件·物联网·网络安全·信息与通信·信号处理
DuHz7 小时前
《Around the Corner mmWave Imaging in Practical Environments》论文精读
论文阅读·算法·信息与通信·毫米波雷达
TDengine (老段)7 小时前
TDengine 新性能基准测试工具 taosgen
大数据·数据库·物联网·测试工具·时序数据库·tdengine·涛思数据
黑客思维者7 小时前
Python modbus-tk在配电物联网边缘网关的应用
开发语言·python·物联网
小李做物联网7 小时前
【单片机毕业设计】143.1基于单片机stm32塔吊控制反馈物联网嵌入式项目程序开发系统
stm32·单片机·嵌入式硬件·物联网
日更嵌入式的打工仔16 小时前
EtherCAT 逐帧解析状态机切换过程(初始清零阶段)
网络·信息与通信·ethercat
三佛科技-1341638421217 小时前
FT8353系列(FT8353A/B/C/CD/DD/K/KD/PD)隔离型LED恒流驱动IC芯片 典型应用电路
单片机·物联网·智能家居·pcb工艺
三佛科技-1341638421220 小时前
LN8K05A/B/C_5V非隔离AC-DC电源芯片 典型应用场景、典型电路、与阻容降压的对比分析
单片机·嵌入式硬件·物联网·智能家居·pcb工艺