一、非接触式支付概述

大家好,我是这次课程的主讲工程师。在安全领域摸爬滚打了十几年,我接触最多的攻击面之一,就是非接触式支付。说实话,这个技术刚普及时,很多人都觉得「刷一下就走」很酷,但很少有人想过——这背后藏着多少安全风险?

今天这一章,我们先打好基础。把非接触式支付到底是什么、底层技术怎么跑、支付流程怎么拆解,统统捋一遍。我个人习惯是,先理解原理,再谈攻防。不然你连数据怎么传的都不知道,谈什么防护?

什么是非接触式支付

非接触式支付,说白了就是不用插卡、不用刷磁条,把卡片或手机靠近读卡器,「嘀」一声就完成支付。你想想看,地铁闸机、便利店、快餐店,现在到处都是这种场景。

它的核心载体有两种:

  • 卡片形态:银行卡、公交卡、门禁卡,内部封装了芯片和天线
  • 设备形态:手机(Apple Pay、华为Pay)、手表、手环,通过模拟卡片实现

嗯,这里要注意一点:非接触式支付不等于「无密码支付」。很多场景下,小额免密,大额还是要输密码的。我在项目中遇到过不少用户,以为刷一下就走完全不需要验证,结果卡片丢了被人小额盗刷——这个后面我们会详细讲。

核心特征:通信距离短(通常4-10cm)、交易速度快(<500ms)、无需物理接触。

NFC技术原理

NFC,全称Near Field Communication,近场通信。它是在RFID基础上发展出来的,工作频率13.56MHz。为什么选这个频率?因为它是全球通用的ISM频段,不需要额外申请牌照。

NFC有三种工作模式:

  1. 读写模式:读卡器主动读取标签数据。比如你用手机读银行卡信息。
  2. 卡模拟模式:设备模拟成一张卡片,被读卡器读取。手机支付就是这个模式。
  3. 点对点模式:两个NFC设备直接交换数据。比如两部手机互传文件。

支付场景下,我们最关心的是卡模拟模式。手机里的安全芯片(SE)或主机卡模拟(HCE)技术,会模拟出一张符合金融标准的卡片。读卡器发来指令,手机返回响应——整个过程就像两个人在对暗号。

我的经验:NFC的通信距离其实可以做到更远。我曾经测试过,用高增益天线和放大器,能把有效距离拉到30cm以上。但标准协议强制限制在10cm以内,就是为了安全——距离越短,中间人攻击越难实施。

RFID技术原理

RFID(射频识别)是非接触式支付的底层技术。它比NFC更早出现,应用也更广——物流、仓储、门禁、动物追踪,都在用。

RFID系统由三部分组成:

  • 标签(Tag):附着在物体上,存储数据。分有源(自带电池)和无源(靠读卡器供电)两种。
  • 读卡器(Reader):发射射频信号,读取标签数据。
  • 天线(Antenna):负责发射和接收电磁波。

支付卡片用的是无源RFID标签。卡片靠近读卡器时,读卡器发射的电磁波在卡片天线中感应出电流,给芯片供电。芯片上电后,开始和读卡器通信。整个过程不需要电池,所以卡片可以做得又薄又轻。

为什么会这样设计?因为无源标签成本低、寿命长。一张银行卡用十年,里面没电池,全靠读卡器「无线供电」。我第一次拆解银行卡时,看到里面只有一圈铜线和一个小芯片,说实话挺震撼的——就这么点东西,撑起了万亿级的支付市场。

注意:RFID的通信协议本身没有强加密要求。早期的Mifare Classic卡(比如一些老式门禁卡)用的是CRYPTO1加密算法,早就被破解了。我2010年就复现过它的破解流程,用一台普通电脑加一个Proxmark3,几分钟就能克隆一张卡。所以金融支付必须用更安全的芯片和协议。

支付流程拆解

一次完整的非接触式支付,从用户掏出卡片到交易完成,大致分这么几步:

  1. 寻卡阶段:读卡器持续发射射频场,检测范围内是否有卡片。卡片进入场区后,通过负载调制响应读卡器。
  2. 防冲突阶段:如果同时有多张卡片在场,读卡器通过防冲突算法选出一张进行通信。这个算法很巧妙——每张卡片有唯一ID,读卡器逐位比对,直到锁定目标。
  3. 选择阶段:读卡器选中一张卡片,进入激活状态。
  4. 应用选择:卡片返回支持的应用列表(比如借记、贷记、电子现金)。读卡器选择一个应用开始交易。
  5. 交易处理:这是核心阶段。读卡器发起交易请求,卡片验证并生成动态数据(包括交易金额、时间、卡片密钥生成的签名)。读卡器验证签名,确认卡片合法。
  6. 完成阶段:读卡器发送完成指令,卡片更新内部状态(比如扣减电子现金余额)。双方断开连接。

整个流程通常在300-500毫秒内完成。你感觉就是「嘀」一下,其实背后跑了这么多步骤。

关键点:交易处理阶段生成的动态数据,每次交易都不同。这是防止重放攻击的核心手段。如果每次刷卡的响应数据都一样,攻击者只要截获一次,就能伪造交易。EMVCo标准强制要求动态数据生成,就是这个原因。

主流标准:ISO 14443 与 EMVCo

非接触式支付不是谁想怎么搞就怎么搞的,背后有严格的标准。我列个表,大家一目了然:

标准 全称 负责内容 典型应用
ISO 14443 识别卡—非接触式集成电路卡 物理特性、射频接口、通信协议 银行卡、公交卡、身份证
EMVCo Europay、MasterCard、Visa联合组织 支付应用规范、安全要求、交易流程 全球银行卡支付

ISO 14443 定义了卡片和读卡器之间怎么「说话」。它分四部分:

  • Part 1:物理特性——卡片尺寸、弯曲强度、抗静电能力
  • Part 2:射频功率和信号接口——频率13.56MHz,调制方式ASK,编码方式Miller或Manchester
  • Part 3:初始化和防冲突——卡片如何进入场区、如何被选中
  • Part 4:传输协议——数据帧格式、错误检测、块传输

EMVCo 则是在ISO 14443之上,定义了支付层面的东西。比如:

  • 交易流程怎么走(Generate AC、Application Cryptogram)
  • 密钥怎么管理(发卡行、收单行、卡片三方密钥体系)
  • 动态数据怎么生成(ATC、不可预测数、签名算法)

我举个例子你就明白了:ISO 14443定义了卡片和读卡器之间用「中文」交流,而EMVCo定义了交流的内容必须是「银行转账」而不是「聊天」。两者缺一不可。

避坑指南:我曾经帮一家公司做支付终端认证,他们自己写的协议栈在ISO 14443-4的块传输层有个bug——帧等待时间(FWT)设置得太短,导致某些老卡片响应超时。测试时用新卡片没问题,一上线就被用户投诉。所以做支付设备,一定要买官方的测试工具(比如EMVCo Level 1测试工具),把协议栈跑一遍。

本章知识体系

下面这张图,我把本章的核心逻辑画出来了。你可以把它当作一张「地图」,后面每一章都会在这张图上展开。

非接触式支付知识体系 非接触式支付 NFC 技术 RFID 技术 支付流程:寻卡 → 防冲突 → 选择 → 应用选择 → 交易处理 → 完成 ISO 14443(物理/协议) EMVCo(支付/安全) 安全关注点:距离限制、动态数据、加密算法、防克隆 后续章节将逐一深入每个模块的攻防细节

这张图从顶层到底层,把非接触式支付的技术栈拆解清楚了。上面是应用层(非接触式支付),中间是技术层(NFC/RFID)和流程层(支付流程),下面是标准层(ISO 14443/EMVCo),最下面是安全关注点。每一层都依赖下一层,缺一不可。

好了,第一章就到这里。基础打牢了,后面我们才能聊攻击手法和防护措施。下一章,我会带大家看看非接触式支付有哪些常见的攻击面——说实话,有些攻击手法我第一次看到时,后背都发凉。


专注资料整理