车联网安全基础:NFC中继攻击
字数 3334
更新时间 2026-03-18 13:29:55

NFC中继攻击原理、实践与防御

本文档基于《车联网安全基础:NFC中继攻击》一文内容,系统梳理NFC中继攻击的技术原理、实践步骤与防御方案,旨在提供详尽的教学参考。

第一章:NFC基础技术

1.1 NFC技术概述

NFC(Near Field Communication,近场通信)是一种基于RFID(13.56MHz频率)演变而来的短距离无线通信技术。其标准通信距离通常小于20厘米,实际有效距离约为4厘米。

1.2 NFC的主要工作模式

NFC设备支持三种基本工作模式:

  1. 卡模拟模式(Tag/Card Emulation):设备(如智能手机、实体NFC卡片)模拟成一张被动式标签或智能卡。在车联网数字钥匙场景中,用户的手机或卡片通常工作在此模式。
  2. 读卡器/写入器模式(Reader/Writer):设备(如车辆的NFC读取模块)作为主动方,发射射频场(RF Field)为附近的卡片或手机供电,并发送指令(Command)与接收响应(Response)。车辆通常在此模式下工作。
  3. 点对点模式(Peer-to-Peer):允许两个NFC设备在彼此之间直接交换数据。此模式在数字钥匙场景中使用相对较少。

1.3 NFC在车联网中的应用

NFC不仅是移动支付、交通卡等场景的支付工具,更是当前车联网数字钥匙(Digital Key)的主流实现方案之一。主流汽车制造商(如特斯拉、比亚迪)的车机方案主要遵循CCC(Car Connectivity Consortium)规范。
与简单门禁卡仅验证UID(唯一标识符)不同,车规级NFC通信包含完整的权限验证过程,安全性要求更高。

第二章:NFC中继攻击原理

2.1 攻击定义

中继攻击(Relay Attack)的核心思想是将本应限于极短距离(<20cm)内的NFC通信,通过“接力”方式扩展至远距离,甚至全球范围。攻击者充当中间人,在不破解任何加密密钥的情况下,仅转发合法的通信数据包,从而欺骗验证系统。

2.2 攻击流程拆解

正常的、合法的NFC验证流程是:Tag1(用户钥匙)Reader1(车辆读卡器) 直接近距离通信。

中继攻击在此流程中插入两个恶意设备和通信中继服务器:

  1. 攻击者A携带设备Reader2,靠近或接触Tag1(如用户放在餐桌上的手机)。
  2. 攻击者B携带设备Tag2,靠近Reader1(车辆门把手处的NFC感应区)。
  3. Reader2Tag2通过一个中继服务器(如攻击者搭建的电脑服务器)建立远程连接。
  4. 完整的攻击链路变为:
    Tag1 <--> Reader2 <--> [中继服务器] <--> Tag2 <--> Reader1

2.3 攻击场景模拟

用户(车主)在餐厅内就餐,手机(作为数字钥匙)放置于桌上。车辆停放在餐厅外。

  • 攻击者A在用户附近,用隐藏的设备Reader2读取用户手机的NFC信号。
  • 攻击者B在车辆旁边,用设备Tag2模拟手机信号,与车辆NFC读卡器交互。
  • 攻击者A与B通过互联网实时中继所有通信数据。
  • 车辆接收到来自Tag2的、经由中继转发的合法指令,误以为是合法钥匙在近场操作,从而执行解锁、启动等命令。
  • 此攻击可在1-2秒内完成,使攻击者能打开车门并将车辆开走,直至车辆熄火。

第三章:NFC中继攻击实践

3.1 实验环境与工具准备

声明: 以下实践步骤仅用于授权的安全研究与教学测试,严禁用于非法活动。

  • 硬件准备
    • 两台支持NFC的安卓手机(需Root并安装Xposed框架)。
    • 一台电脑(作为中继服务器)。
  • 软件准备
    1. NFCGate App:安装在两台手机上,用于模拟Reader和Tag模式。下载地址:https://github.com/nfcgate/nfcgate
    2. NFCGate Server:运行在电脑上的中继服务器。下载地址:https://github.com/nfcgate/server

3.2 攻击实施步骤

  1. 搭建网络:电脑开启Wi-Fi热点,两台手机连接此热点。在电脑上运行服务器程序(如server.py)。
  2. 配置客户端:在两台手机的NFCGate App的“Settings”中,设置服务器IP地址(电脑热点IP)和端口号。
  3. 设置工作模式
    • 一台手机在App主界面选择“Relay Mode”,并将其角色设置为Tag(模拟卡)。
    • 另一台手机同样在“Relay Mode”下,将角色设置为Reader(模拟读卡器)。
    • 两台手机均连接至服务器。
  4. 执行攻击
    • 确保目标车辆处于锁车状态。
    • 将设置为Reader模式的手机,靠近Tag1(即真实的数字钥匙,如用户的手机)。
    • 将设置为Tag模式的手机,靠近车辆的NFC感应区(Reader1)。
    • 此时,中继链路建立,通信数据被自动转发。如果攻击成功,车辆将执行解锁操作。

3.3 协议数据分析(APDU)

为了深入理解交互逻辑,需要分析NFC通信中的APDU数据单元。APDU是智能卡与读卡器之间的应用协议数据单元。

  • C-APDU(命令APDU,由读卡器发出)结构
字段 含义 说明
CLA 类别 指令的类别
INS 指令 要执行的具体操作代码
P1, P2 参数1, 2 指令的参数
Lc 长度 后续数据域的长度(可选)
Data 数据 发送的具体数据(可选)
Le 期望长度 期望从卡片响应的数据长度(可选)
  • R-APDU(响应APDU,由卡片返回)结构
字段 含义 说明
Data 数据 卡片返回的实际数据(可选)
SW1 SW2 状态字 指令执行的状态码(必须)

分析重点:通过捕捉和分析中继过程中的C-APDU和R-APDU,可以理解车辆与钥匙之间的交互逻辑,包括认证流程、指令序列以及关键的状态码(SW1 SW2)含义。这有助于从数据层面验证攻击是否成功,并为进一步的安全分析奠定基础。

第四章:NFC中继攻击防御方案

针对中继攻击的防御核心在于增加距离欺骗的难度,主要技术手段如下:

4.1 测距与定位技术

  • UWB(超宽带)技术:当前最有效的防御手段之一。UWB能实现厘米级高精度测距,其基于飞行时间(ToF)原理计算信号在两个设备间传输的精确时间,从而得到真实距离。任何中继引入的额外传输延迟都会导致测距结果远超物理极限(如几厘米),系统随即判定为攻击并拒绝操作。

4.2 协议与时序强化

  • 严格的FWT限制:FWT(Frame Waiting Time)定义了读卡器等待卡片响应的最长时间。将此时间设置得非常短(例如**< 20ms**),使得由网络延迟导致的中继响应无法在规定时间内返回。
  • 禁用WTX:WTX(Waiting Time Extension)是卡片向读卡器请求延长响应时间的指令。在安全关键场景中,读卡器应拒绝所有WTX请求,强制要求即时响应,使中继没有多余时间操作。

4.3 多因素认证

  • 生物特征认证:在NFC通信认证通过后,额外要求进行指纹、人脸等生物特征验证。即使攻击者中继了NFC信号,也无法提供车主的生物特征。
  • PIN码/车内按钮确认:在车辆解锁或启动前,要求用户在车载屏幕上输入PIN码或按下物理确认键。

4.4 行为感知与上下文验证

  • 运动传感器(加速度计):在数字钥匙(如智能钥匙或手机)中集成运动传感器。当钥匙静止超过设定时间(如X分钟),自动进入休眠状态,关闭无线发射功能。只有当传感器检测到钥匙被拿起、移动时,才重新激活无线功能。这能有效防御攻击者远程“唤醒”并中继静止钥匙的信号。
  • 蓝牙信号强度(RSSI)辅助定位:结合蓝牙信号的强度变化来粗略判断钥匙是否在真实接近车辆,作为一项辅助验证手段。
相似文章
相似文章
 全屏