- 1 -
中国科技论文在线
基于 Arduino平台实现的 NFC中继攻击
陈建文,范春晓**
作者简介:陈建文(1992-至今),男,北邮工学硕士,研究方向:智能卡与信息安全
通信联系人:范春晓(1962-至今),女,北京邮电大学电子工程学院教授,主要研究方向:大数据挖掘、
物联网、智能信息处理等方面
(北京邮电大学电子工程学院通信与网络研究中心)
5 摘要:NFC 技术是由射频识别技术 RFID 演变而来的近场通信技术,具有成本低廉、方便易
用等优点,被广泛应用于移动支付和对等通信等场合。本文基于 Arduino 开放平台,利用
pn532 芯片开发、模拟电子标签与读卡设备,并在树莓派(基于 ARM 的微型电脑主板)上
完成整个中继攻击的调度。分析监听与攻击结果,对 NFC 通信进行漏洞分析,并提出改进
方案。 10
关键词:NFC;安全通信;Arduino;中继攻击;pn532;树莓派。
中图分类号:TN925
A Practical NFC Relay Attack based on Arduino Platform 15
ChenJianwen, FanChunxiao
(Communication and Network Research Center, School of Electronic Engineering, Beijing
University of Posts and Telecommunications)
Abstract: NFC is a near field communication technology evolved from RFID(the Radio
Frequency Identification )which has features of low cost,easy to use,etc. It is widely used in 20
mobile payments , peer to peer communications and other this article, two pn532
chips were simulated as a card and a card reader based on an open platform Arduino and the entire
scheduling of the relay attack was completed in a Raspberry Pi(miniature ARM-based PC
motherboard ). This article proposed improvement scheme after analyzing the results of the attack
on the NFC communications and vulnerabilities of NFC communications. 25
Key words: NFC;safely communication;Arduino;relay attack;pn532;Raspberry Pi .
0 引言
2013 年,中国银联与中国移动合作推出 NFC 支付服务,NFC 支付概念正式走入国人生
活。公交卡充值、缴费、余额查询以及各种会员卡的优惠促销信息的获取和使用,都可以凭30
借 NFC 技术得到很好的实现。作为一种高频无线通信技术,用户无需连网即可享受服务[1]。
随着 NFC 技术的逐步完善,移动运营商也渴望能够凭借该技术实现业务的突破。目前 NFC
功能几乎成为 4G 手机的标准配置[2],而基于 NFC 功能的手机钱包也将会给人们的生活带来
极大的便捷。
1 NFC 技术及其安全性 35
NFC(Near Filed Communication,NFC)是一种短距离高频无线电技术,该技术最早由
Philips 与 Nokia 于 2002 年提出[3]。 它有三大基本功能:卡模拟、读写、点对点交互[4]。关
于 NFC 的主要安全漏洞有:窃听、数据篡改与破坏、克隆以及中间人攻击,本课题研究点
基于中间人攻击的思想,通过一定的硬件设备结合软件编程,模拟出 POS 机和智能卡通信
过程中受到的中继攻击[5],中继攻击的原理图如图 1 所示。 40
- 2 -
中国科技论文在线
Device A Device B
Attacker
Device A Device BAttacker
图 1 中继攻击原理图
Fig. 1 Schematic diagram of relay attack
2 中继攻击设计 45
中继攻击模型
图 2 中继攻击系统模块图
Fig. 2 system module diagram of relay attack
50
中继攻击系统模块图如图 2 所示,课题利用两个 PN532 芯片模拟出读卡器与智能卡
Tag
[6],分别用于监听 CPU 卡与 Pos 机的数据,再把监听到的数据传送给树莓派 Linux 主机
进行分析,并在需要的时候进行数据篡改[7],达到中间人攻击的效果与目的[8]。
硬件设备介绍 55
课题涉及到的硬件设备有:Arduino 开发板两个、PN532 芯片两个、树莓派一个。
PN532 是一个高度集成的非接触读写芯片,它包含 80C51 微控制器内核,集成了
下的各种主动/被动式非接触通信方法和协议[9]。
Arduino 是一款包含硬件(各种型号的 Arduino 板)和软件(Arduino IDE)的开源电子60
原型平台。
树莓派是只有信用卡大小的卡片式电脑,其系统基于 Linux。
- 3 -
中国科技论文在线
利用上述硬件设备,课题对中继攻击系统进行了搭建,如下图 3 所示。
图 3 中继攻击系统效果图 65
Fig. 3 system effect diagram of relay attack
中继攻击通信协议的定义
课题设计的中继攻击系统 [10]包含三部分:模拟的智能卡[11]、模拟的读卡器[12]以及树莓
派,为了保证三者之间进行规范的数据交互,同时还要保证三者的数据转发顺序正确无误,70
本文对三者的请求指令以及响应指令进行了详细的定义,请求指令格式如表 1 所示:
表 1 请求指令格式
Tab. 1 request instruction format
Begin Flag1 Flag2 Flag3 Length Data ParityCheck End
0x2424 0x00 0x00/0x01 0xd1/0xd2 0x00/0x01 0x2323
表 1 是请求指令的完整定义,一条请求指令除了包含指令的开头与结尾,还需要对指令75
的类型、发送方、指令的数据类型、数据长度以及校验位进行定义:
Begin 代表指令开头字节,End 代表指令结束字节。
Flag1 代表指令类型,“0x00”代表请求指令,占一个字节。
Flag2 代表请求指令发送方,“0x00”代表模拟的智能卡,“0x01”代表模拟的读卡器。
Flag3 代表数据类型(Data 的类型),请求指令可以携带如下数据:UID(卡片 ID)与80
APDU(监听到的 APDU 指令)指令,分别用 0xd1、0xd2 进行表示。
Length 代表 Data 的长度,单位是字节,占一个字节。
Data 代表监听到的数据,可以是 UID 或者 APDU。
ParityCheck 代表奇偶校验位,占一个字节。
响应指令的格式如表 2 所示: 85
表 2 响应指令格式
Tab. 2 response instruction format
Begin Flag1 Flag2 StatusCode ParityCheck End
0x2424 0x01 0x00/0x01 0x00 0x00/0x01 0x2323
表 2 为响应指令的完整定义,一条响应指令包含开头与结尾标志,还包括指令类型、发
送方、状态字节以及校验位,定义如下: 90
Flag1 代表指令类型,“0x01”标示响应指令,占一个字节。
- 4 -
中国科技论文在线
Flag2 代表响应指令发送方,“0x00”代表模拟的智能卡,“0x01”代表模拟的读卡器。
StatusCode 代表监听状态,“0x00”代表监听系统正常运行,占一个字节。
ParityCheck 代表奇偶校验位[13],占一个字节。
中继攻击流程 95
中继攻击系统的核心代码逻辑是运行在树莓派主机当中。当主机收到了一条指令之后会
按照图 4 所示的流程图进行处理,主要分为以下几步:
1. 主机对指令进行奇偶校验,判断指令是否完整准确。如果校验成功,则进行下一步。
2. 查找指令的开头字段“Begin”和“Flag1”,通过“Flag1”判断指令是请求指令或
者是响应指令。 100
3. 如果是响应指令,则判断状态码是否正常,进行相应操作后结束流程。如果是请求
指令,则进一步判断“Flag2”,判断请求指令来自模拟的智能卡或者是来自模拟
的读卡器。
4. 如果请求指令来自模拟读卡器,则判断“Flag3”之后进行相应的处理操作。如果
请求指令来自模拟智能卡,则对 APDU 指令进行提取、重封装等操作。最终结束105
主机的一个处理流程。完整的流程图如图 4 所示:
开始开始
奇偶校验奇偶校验
查找Begin查找Begin
判断Flag1判断Flag1
判断Flag2判断Flag2 判断
StatusCode
判断
StatusCode
返回错误码返回错误码 失败
成功
存在
请求指令 响应指令
回复响应指令
给EReader
回复响应指令
给EReader
判断Flag3判断Flag3
APDU指令提
取、重封装、发
送至ECard
APDU指令提
取、重封装、发
送至ECard
回复响应指令
给ECard
回复响应指令
给ECard
APDU指令提取、重
封装、发送至
EReader
APDU指令提取、重
封装、发送至
EReader
指令来自EReader
APDU
结束结束UID
指令来自ECard
错误处理错误处理
状态码异常
状态码 00 正常
不存在
树莓派主机流程:
ECard:模拟的智能卡
EReader:模拟的读卡器
Flag1、Flag2、Flag3是
标志位
- 5 -
中国科技论文在线
图 4 主机流程图
Fig. 4 flow-process diagram of the host 110
3 中继攻击实现结果
当 Pos 机与一卡通进行正常交易时,Pos 机首先发送读取一卡通主应用的指令,一卡通
收到 Pos 机的指令之后进行响应,中继攻击系统窃听得到如下数据:
6f 37 84 0e 4e 43 2e 65 43 61 72 64 2e 44 44 46 30 31 a5 25 9f 08 01 02 9f 0c 1e 6e 65 77 63 115
61 70 65 63 00 00 8b 03 00 12 70 00 00 56 58 64 00 00 00 00 00 00 00 00 d1 fa 90 00
(Command1)
攻击系统直接截获 Command1 并对 Command1 最后两个状态字节进行恶意篡改:
6f 37 84 0e 4e 43 2e 65 43 61 72 64 2e 44 44 46 30 31 a5 25 9f 08 01 02 9f 0c 1e 6e 65 77 63
61 70 65 63 00 00 8b 03 00 12 70 00 00 56 58 64 00 00 00 00 00 00 00 00 d1 fa 6F 00120
(Command2)
即将“90 00”改为“6F 00” ,“90 00”代表“命令正常结束”,“6F 00”代表“命
令不支持,但是没有找出精确的诊断[14]”。如此一来,Pos 机收到异常数据导致 Pos 机主动
中断了交易。更加恶劣的情景是,如果一卡通正在 Pos 机上进行圈存操作,实际上一卡通已
经圈存成功了,但是由于中间人攻击的介入,Pos 机却收到一卡通圈存失败的信息,这类攻125
击将直接造成经济上的损失。
在实际的应用场景中,我们希望攻击系统距离交易设备一定距离也能完成攻击,为了测
试距离对攻击结果的影响,本课题对模拟的读卡器与智能卡之间的间距(d1)以及模拟的智
能卡与 Pos 机之间的距离(d2)进行了调整,测试结果如表 3 所示:
表 3 攻击距离测试结果 130
Tab. 3 test results of different distance
d1(cm) d2(cm) 测试次数 成功次数 成功率
1 0 50 41 82%
2 0 50 40 80%
3 0 50 37 74%
4 0 50 29 58%
0 50 13 26%
5 0 50 6 12%
0 1 50 45 90%
0 2 50 43 86%
0 3 50 37 74%
0 4 50 31 62%
0 50 13 26%
0 5 50 7 14%
另外,为了了解一次中继攻击的操作会对整个交易流程造成多大的延时,课题对模拟读
卡器允许的最大响应接收延时进行了设定。测试结果如表 4 所示:
表 4 系统响应延时测试结果 135
Tab. 4 test results of system response delay
延时上限 t (ms) 攻击成功率
250 5%
- 6 -
中国科技论文在线
280 15%
290 20%
295 25%
300 25%
305 35%
310 45%
315 60%
320 60%
受硬件设备的限制,目前该攻击系统必须离 Pos 或者卡片足够近才可进行攻击(4cm 以
内),当距离超过 5cm 以后,攻击失败的机率将超过 50%。
4 结论 140
攻击结果分析
根据第三章节实验结果,总结如下:
第一:中继攻击系统可以做的足够小,方便携带(模拟智能卡、模拟读卡器和树莓派外
形都只有卡片大小);第二:本课题受硬件设备的限制,攻击系统必须距离 Pos 或者卡片足
够近才可进行攻击(4cm 以内),如果模拟智能卡与模拟读卡器的天线功率足够大,那么理145
论上可以延长攻击距离;第三:利用 PN532 与 Arduino 平台,可以实现基本的中继攻击;
第四:中继攻击会给交易流程造成一定的延时。
对抗措施分析
分析 章节的实验结果,课题对如何有效抵抗 NFC 中继攻击总结出三方面的建议:
通信加密、限制交易时间、限制交易距离。 150
通信加密,利用公钥密码体制对通信数据进行加密,不过这样会加大交易时间成本,需
要考虑到具体的交易场景是否允许加密之后存在的交易时间延长的问题。
对交易时间进行限制,比如在 Pos 机发送指令后,限定收到响应的延时在 200ms 之内,
结合具体的硬件设备,对接收延时进行设定,是避免中间人攻击最简单的方法。
对交易距离进行限制,通过人为削弱 Pos 机发送的信号强度达到控制交易距离的目的,155
不过这种方法可能会破坏支付体验,需要结合具体的设备进行不断的尝试和测试。
[参考文献] (References)
[1] Orumiehchiha M A, Pieprzyk J, Steinfeld R. Practical attack on NLM-MAC scheme[J]. Information Processing
Letters, 2014, 114(10):547-550. 160
[2] Aerts W, Biham E, Moitié D D, et al. A Practical Attack on KeeLoq[J]. Journal of Cryptology, 2012,
25(1):136-157.
[3] Peris-Lopez P, Li T, Hernandez-Castro J C, et al. Practical attacks on a mutual authentication scheme under the
EPC Class-1 Generation-2 standard[J]. Computer Communications, 2009, 32(7-10):1185-1193.
[4] Erguler I, Anarim E. Practical attacks and improvements to an efficient radio frequency identification 165
authentication protocol[J]. Concurrency & Computation Practice & Experience, 2012, 24(17):2069-2080.
[5] Longrigg J, Ushakov A. A Practical Attack on a Certain Braid Group Based Shifted Conjugacy Authentication
Protocol[J]. Groups, 2009, 1(2):275-286.
[6] Liew J H, Ong I, Lee S, et al. Practical Attacks on Hybrid Group Key Management for SOHAN[J]. Journal of
Information & Communication Convergence Engineering, 2010, 8(5):549-553. 170
[7] Fei Y, Ming G, Wang W, et al. Practical Attacks on Decoy State Quantum Key Distribution Systems with
Detector Efficiency Mismatch[J]. Physical Review A, 2015, 91(5):123-127.
[8] Wondracek G, Holz T, Kirda E, et al. A Practical Attack to De-anonymize Social Network
Users[J].Symposium on Security and Privacy, 2010, 41(3):223-238.
[9] Kang D W, Oh J H, Im C T, et al. A Practical Attack on Mobile Data Network Using IP Spoofing[J]. Applied 175
- 7 -
中国科技论文在线
Mathematics & Information Sciences, 2013, 7(6):2345-2353.
[10] Burman S. A System using Provably Strong Cryptography is Probably not Secure: Some Practical Attacks[J].
Iete Technical Review, 2002, 19(4):161-168.
[11] Brumley D, Dan B. Remote timing attacks are practical[J]. Computer Networks the International Journal of
Computer & Telecommunications Networking, 2005, 48(5):701-716. 180
[12] Qi, Fung, Lo, et al. Time-shift attack in practical quantum cryptosystems[J]. Quantum Information &
Computation, 2005, 7(1):73-82.
[13] Dunkelman O, Keller N, Shamir A. A Practical-Time Related-Key Attack on the KASUMI Cryptosystem
Used in GSM and 3G Telephony[J]. Journal of Cryptology, 2010, 27(4):393-410.
[14] Fung C H F, Qi B, Tamaki K, et al. Phase-remapping attack in practical quantum-key-distribution systems[J]. 185
Physical Review A, 2006, 75(3):723-727.