马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
RFID 分析与实战
根本概念
射频辨认,即RFID(Radio Frequency Identification),又称无线射频辨认,是一种通讯技能,可通过无线电讯号辨认特定目的并读写干系数据,而无需辨认体系与特定目的之间创建机器或光学打仗。
一套完备RFID硬件统由Reader与Transponder两部分构成,其原理为由Reader发射一特定频率的无线电波能量给Transponder,用以驱动Transponder电路将內部的ID Code送出,由Reader吸收此ID Code;Transponder的特别在于免用电池、免打仗、免刷卡故不怕脏污,且晶片暗码为天下唯一无法复制,安全性高、长命命
物联网 分为应用层、网络层和感知层,RFID处于感知层。其在物联网 中的应用非常广泛 。
射频辨认(RFID)
起首,先分析RFID的概念。在Wiki-pedia RFID词条下的界说:
<blockquote id="20240523200157-ubarji6"> Radio Frequency IDentification一种无线通讯技能,可以通过无线电信号辨认特定目的并读写干系数据,而无需辨认体系与特定目的之间创建机器大概光学打仗。
以是RFID实际上并不但限于我们一样寻常用的刷卡的“卡”,尚有其他比如商品上的射频标签。
IC卡和ID卡
这两者的关系,也是现在这一范畴中争论最多的一个点。
ID卡,即IDentification Card,指的是身份辨认卡,一样寻常环境下是不可写入的感应卡,能读出固定的编号。
IC卡,是Integrated Circuit Card的简称,即集成电路卡,又称智能卡(详见Wiki-pedia“智能卡”条目)。特点是可读写,容量大,有加密功能,数据记录可靠,使用方便。
低频卡和高频卡
这里低频、高频的概念总是轻易和IC卡、ID卡有所肴杂。很多地方都把ID卡归类为低频卡,IC卡归类为高频卡,实际上这是错误的。
根据百度百科关于ID卡的形貌,其工作频率有125KHz和13.56MHz两种差别的频段,因此高频和低频并不是区分ID和IC卡的方式。
现在界说的RFID产物的工作频率有低频、高频和超高频(甚高频)、微波等频率范围。差别频段的RFID产物有差别的特性。
<blockquote id="20240523200157-oa6uwsu">
- 125KHz~134KHz属于低频;
- 13.56MHz为高频;
- 860MHz~915MHz为超高频(甚高频);
- 2.4GHz~5.0GHz为微波;
“白卡”和卡复制
这个实际上是一种攻击本领,在这一节提出是由于一个“神奇的卡片”,被国外人称为”Chinese magic Card”的白卡。
理论上来说,卡片的序列号是不可更改的,各种百科和官方文档中也有提到:卡号在封卡前写入后不可再更改,绝对确保卡号的唯一性和安全性,但是有人制作了允许对卡片的序列号举行修改的卡片,导致了卡片的序列号非唯一,这也是有“复制卡”出现的缘故因由。
攻击本领
RFID伪造(卡号复制)
这里说卡号复制,实际上是从传统的ID卡复制而来。但是在实际生存中,对于ID卡和IC卡的使用没有区分的那么显着。以门禁为例,有些门禁就是使用ID卡,去识读卡片的序列号(大概说UID)举行辨别;有些门禁会使用IC卡,但是并不在此中的存储扇区写入数据,故读卡器仍旧读取的是序列号。
因此这里同一使用“卡号复制”而不是ID卡复制来克制这一部分的歧义。
由于ID卡在计划之初就是将UID公开、不防护的,因此这部分没有任何的安全机制可言,尤其是出现了可以修改UID的“白卡”。
由于读取到UID即可完成卡片的复制,攻击者可以制作一个功率很大的天线,来延伸射频卡的识读隔断,可到达30cm乃至更远的隔断,且该读取装备可以做的很小而加强便携性,放在手腕、手提包中靠近目的对象从而读取到其卡片信息(详见DefCon 21,RFID hacking live free or RFID hard)。
扇区、块和卡密
对于IC卡来说,卡片中提供了存储的本领。有些卡片中会存储与卡干系的信息,比如卡片余额,大概持有人的信息等。假如可以读出卡片中的数据,而且分析成故意义的字段并修改,然后重新写入卡中,就可以对卡片举行数据的伪造和窜改。
下面所提到的方法,都是关于Mifare Classic这种范例的卡的,其工作频率是13.56 MHz,符合ISO/IEC 14443A尺度。常见的Mifare Classic有两种,MF1 S50和MF1 S70,S50有1K的存储空间,而S70有4K的存储。
Mifare Classic卡片分为很多个扇区。S50有16个扇区,而S70有40个扇区。S50卡每个扇区分为4个块(Block),而S70卡的扇区略有区别。两种卡片的存储结构如下图所示,可以看出两种卡的特点和关系:
每个扇区的末了一个block是卡密(Key A和Key B)及访问控制字段。干系访问控制比力复杂,详细可以拜见官方文档。
0扇区的0块是厂商信息,包罗了卡的UID。一样寻常0扇区0块是不可写的,但是所谓的“白卡”就是0扇区0块可写的卡,是复制卡的根本。
此中,卡密是卡片校验读卡器权限的,其简朴的交互流程如下:卡片产生一个随机数发送给读卡器,读卡器需按照算法盘算出结果再发送给卡片,由卡片举行验证。验证通过之后,后续的交互都是用卡密举行加密的。
Nested攻击
由于复制卡只是复制了卡的UID,还必要将卡片扇区的数据都拿出来,因此必要知道每个扇区的卡密,才气读取到内容。
<blockquote id="20240523200157-yielltq"> 简朴地说,就是默认暗码攻击。
由于M1卡片有16个扇区,在绝大多数环境下16个扇区不肯定会同时使用到。于是根据厂商在出厂时预设的暗码大概碰撞出此中某一个扇区的暗码。
由于无源的M1卡每一次刷卡上电的时间,密钥互换接纳的随机数都是“有规律”的,用已经碰撞出的某一扇区的密钥去探索别的扇区,在此时根据随机数的规律即可“套”出暗码
根据上述的交互原理可知,想要读取卡片内容,必要知道各个扇区的Key A和Key B。扇区密钥是48bit,使用FPGA直接暴力破解,可在约10小时的时间内完成。
M1卡片使用的加密方式是Crypto-1,卡片上的硬件实现中,加密用的随机数产生器(RNG)使用了LFSR(Liner Feedback Shift Register),其产生的随机数是可猜测的。随机数的天生与两个变量干系:一是读卡器启动的时间,二是哀求随机数的时间。由于攻击者可以通过利用这两个时间来猜测随机数,导致其通讯有被破解的大概性。
Courtios即是2009年提出了一种新的破解方法[11],简朴形貌为:卡片在辨认读卡器发送的认证数据时,会先查抄读卡器返回数据校验位是否精确,假如不精确则不返回;当查抄通逾期,若认证数据错误,则卡片会返回0x5 (NACK),且该数据是加密的。使用加密数据与0x5举行异或 (XOR) 利用后的数据,可规复出密钥流中的4bit数据。
在该文献中,作者称该攻击规复出卡片此中一个扇区的密钥时间在1小时左右。
Darkside攻击
<blockquote id="20240523200157-0vfb095"> 简朴地说就是暴力破解,即爆破出某一个扇区的密钥,之后再使用Nested攻击就能Dump出整张卡。
而与通常意义上的暴力破解差别的是,由于M1卡片的认证机制,其会泄漏部分认证信息,从而大大加速爆破的进度。
由于Crypto-1算法中,对扇区密钥的查抄依赖于LFSR产生的随机数,因此通过检测和猜测随机数可以推测其他扇区的密钥,并通过认证[12]。其过程如下:
- 对某一扇区用默认密钥举行认证,而且读取卡片的Nt;
- 对同一扇区用默认密钥举行认证,而且读取卡片的Nt’;
- 盘算“时间隔断”,即LFSR的位移;
- 推测下一个Nt的值,盘算ks1, ks2和ks3而且认证下一个扇区。
因此,Nested攻击联合Darkside,可以在很短的时间内破解出M1卡片的暗码。
算法分析
这实在不能算是RFID的攻击方式,但是很多干系的文章都有提及。实际上,在智能卡的攻击过程中,分析卡中数据的算法、校验等都是必须的过程,只有把握了数据的构成方式,才气乐成的举行数据的窜改。
Fuzz攻击
这类的攻击告急针对读卡器(Reader)。向读卡器模仿卡片举行数据的交互,给其发送非预期的数据,有大概造成缓冲区溢出等标题,进而大概产生代码实行等结果。
Bluetooth 分析与实战
告急参考
所谓协议,即将指定的字节按照肯定的次序分列起来,以便他人使用本身的装备时,能通过该协议同其他装备举行通讯。协议一特点,就是有固定的帧格式,通过该格式发送,吸收者通过解读帧格式,进而得到新息内容;
一样寻常通讯协议,一类通讯是直接发生数据,当装备接送到数据时,直接对数据举行分析,当继续到的数据正当时,即为有用数据,该范例的通讯协议,告急用在有线通讯协议中,比如Modbus,Can通常接纳的即为该范例的通讯方式。
另一类通讯协议,则必要新创建毗连,当双方毗连创建乐成了方可通讯,比方TCP、BLE;BLE协议在必要举行通讯时,即必要向外发送广播信号,告诉吸收者,即将和它举行通讯,继续者吸收到广播内容后,确认是与本身通讯,于是向广播者发送一相应信息,如许当广播者和继续者都有了对方的身份信息时,即表现双方毗连乐成。
根本概念
蓝牙(Bluetooth)是一个短隔断无线传输的技能,工作在免证的ISM频段。最初名字为Wibree,在90年代由Nokia计划开发,随后转交给蓝牙特别爱好小组(SIG)专门维护。在国际上,蓝牙安全有两套引导性尺度,NIST 800-121-R1和IEEE 802.15.1。NIST 800-121-R1详细的先容了一套完备的蓝牙安全工作流程,包罗对发送者身份的鉴权与认证,信息在传输过程中的保密性以及访问该信息的授权分级等等。而ieee802.15.1则更加侧重于针对蓝牙安全性尺度的研究。
- 第一代蓝牙告急是指90年代的V1.0~V1.2版本,是关于段隔断通讯的早期探索,此时还存在很多标题,应用不是特别广泛
- 第二代蓝牙告急是00年中V2.0~V2.1版本,新增了EDR(Enhanced Data Rate)技能进步传输速率,以及体验及安全
- 第三代蓝牙告急是00年末V3.0版本,新增了802.11 WiFi协议,引入了AMP(Generic Alternate MAC/PHY)瓜代射频技能,极大的进步了传输速率并低沉功耗
- 第四代蓝牙是10年以来的V4.0~V4.2版本,主推LE(Low Energy)低功耗,约莫仅斲丧非常之一,将三种规格,包罗经典蓝牙、高速蓝牙、和蓝牙低功耗,会合在一起形成一套综合协议规范
- 第五代蓝牙是16年开始提出的V5.0版本,告急是为了支持物联网
,在功耗、传输速率、有用传输隔断、数据包涵量方面都做了极大的提升
4.0之前的蓝牙通常被称为经典蓝牙(Classic Bluetooth),包罗1.0提出的BR(Basic Rate,根本速率)以及2.0提出的EDR(Enhanced Data Rate,加强数据速率),BR/EDR用于表现与低功耗蓝牙BLE相对的传统蓝牙。
从使用场景来看,BR/EDR告急侧重于点对点的通讯,毗连性和传输速率是思量的重点,而BLE侧重于低功耗的计划,在射频层和基带层上优化了多播和广播的支持。传统上Controller芯片只支持一种射频模式,但越来越多装备中也同时支持两种体系,以覆盖只管多的使用场景。
蓝牙的核心体系架构包罗一个Host和一个或多个Controller,Host可以明白为主核大概主板,运行主流的富利用体系;而Controller可以看做是蓝牙芯片,运行的是裸机步伐大概RTOS,告急功能是对射频信号举行编解码。Host和Controller之间通过HCI接口(Host Controller Interface)举行通讯,可通过UART、USB等物理接口举行传输。
此中Host部分告急是基于L2CAP抽象出的逻辑信道实现应用层的协媾和功能,涉及的关键组件和协议有:
- Channel Manager:负责创建、管理和开释L2CAP channel。
- L2CAP Resource Manager:负责管理PDU数据的次序、调理、分片、重组等功能,是L2CAP核心功能的一部分。
- SMP:Security Manager Protocol,实现BLE体系中的点对点安全认证功能,包罗秘钥天生和认证等;BR/EDR体系的对应功能则在Controller的Link Manager中实现。
- ATT:Atrribute Protocol,应用层attribute client和server之间的协议。
- GATT:Generic Attribute Profile,表现ATT server大概client的功能,profile形貌了服务和属性的层级结构,告急用于LE profile服务发现中。
- GAP:Generic Access Profile,表现全部蓝牙装备通用的根本功能,比如传输层、协议、应用所使用的模式或流程等。GAP服务包罗装备和服务发现、毗连模式、安全认证和关联模子等。
Controller部分中更多是逻辑链路和物理链路的管理,包罗:
- Device Manager:基带(baseband)中控制装备举动的模块,告急负责不与传输直接干系的部分,比如查询附近蓝牙装备,毗连蓝牙装备,切换蓝牙装备的状态(discoverable/connectable),以及修改蓝牙名称、属性等。
- Link Manager:负责创建、修改和开释逻辑链路(logical links)以及对应的逻辑传输(logical transports),并更新装备之间对应物理链路(physical links)的干系参数。在BR/EDR体系中,与对端的Link Manager通过LMP协议(Link Manager Protocol)举行通讯;在BLE体系中则使用的是LL协议(Link Layer Protocol)。
- Baseband Resource Manager:负责管理全部到射频媒介的访问。在链路层中,有两种范例的“毗连”:
- SCO:Synchronous Connection Orientated,及时窄带数据传输,如电话音频等,无重传
- ACL:Asynchronous Connection-Less,异步无毗连,用以其他全部数据的传输
- Link Controller:负责对指定物理信道(逻辑链路和逻辑传输)的蓝牙数据举行编解码。
BR/EDR
在传统蓝牙(即BR/EDR)中,2.4GHz的ISM频段分成79个频段,每个巨细为1MHz,并使用特定的跳频模式(Hopping Pattern)来决定一条物理信道,从而镌汰差别邻近终端之间的射频干扰。BR/EDR使用点对点的主从模式,此中Master为确定跳频模式的一方,Slave为与Master时钟和跳频模式同步的其他端点。传统蓝牙比力复杂,这里不睁开分析。
传统蓝牙创建链路层毗连告急履历两个阶段:Inquiry和Paging。
Inquiry 阶段,Master发送查询哀求,附近(10米内)可被发现的装备(discoverable)收到哀求后会发送查询相应(Inquiry Response)。在查询过程中,由于与附近装备还未毗连,因此它们很大概处于差别的信道(跳频序列),实际上发送查询的装备会在差别的频率举行发送,而吸收方(处于standby模式)则以更高地频率举行富足长时间的查询扫描(Inquiry Scan)以确保能被精确唤起。查询相应中包罗装备ID和时钟等信息。
Paging 阶段,告急办理的是链路层的毗连标题。与Inquiry雷同,此时各方同样没有举行时钟和频率的同步。
毗连状态的两个装备所处于的抽象网络称为piconet,这是一个星状网络,一个Master可以有最多七个Slave,但是Master本身也可以是其他piconet的Slave,这种网络拓扑称为scatternet。传统蓝牙处理处罚链路层毗连的管理器称为LM,即Link Manager,两个LM之间通过LMP协议举行通讯。
这只是链路层的毗连,和我们寻常所说的蓝牙配对(pairing)并不是一回事。Paging只是包管了在物理层链路的连通性,举行应用层的通讯每每还必要履历两步:
- 服务发现(Service Discovery):用以确认对端所支持的服务
- 服务毗连(Service Connection):使用某个对端装备特定的服务大概设置(Profile)
但是实际上在服务发现之前,蓝牙引入了一层安全性保障,确保双方是志愿毗连的,沟通毗连意愿的过程就称为配对。颠末配对后的装备会分别记着对方,在下一次毗连时就不必要举行重新配对,而是使用之前生存的毗连秘钥(Link Key)直接举行认证和毗连:
BLE
蓝牙是一个巨大的协议栈,它们的规范约莫有2000 多页。在像健武艺环如许的终端装备中实现它必要淹灭很多的能量和资源。因此,在蓝牙 4.0 尺度中,他们引入了一种称为 Low energy 的技能,专门针对在内存和功率受限的装备上运行的物联网和智能装备。在BLE中,2.4GHz的ISM频段分成40个频段,每个巨细为2MHz,此中3个信道为广播信道(advertising channel),别的37个为通用信道(general purpose channel)。BLE也支持对创建毗连后的端点在通用信道中举行跳频通讯。
<blockquote id="20240523200157-jgloqc6"> 各个信道的频率为: f = 2402 + k * 2 MHz, k = 0, 1, ... , 39
BLE低功耗蓝牙核心协议层(Bluetooth Core)
1. 物理层(Physical Layer,简写 PHY):
PHY层用来指定BLE所用的无线频段,调制解调方式和方法等。是1Mbps自顺应跳频的GFSK射频,工作于免允许证的2.4GHz ISM(工业、科学与医疗)频段。PHY层做得好不好,直接决定整个BLE芯片的功耗,敏捷度以及selectivity等射频指标。
2. 链路层(Link Layer,简写 LL):
LL层是整个BLE协议栈的核心,也是BLE协议栈的难点和重点。LL层要做的事变非常多,比如详细选择哪水平 个射频通道举行通讯,怎么辨认空中数据包,详细在哪个时间点把数据包发送出去,怎么包管数据的完备性,ACK怎样吸收,怎样举行重传,以及怎样对链路举行管理和控制等等。LL层只负责把数据发出去大概收返来,对数据举行怎样的分析则交给上面的GAP大概ATT。
3. 主机控制接口层(Host Controller Interface,简写 HCI):
HCI是可选的,HCI告急用于2颗芯片实现BLE协议栈的场所,用来规范两者之间的通讯协媾和通讯下令等。
4. 通用访问设置文件层(Generic access profile,简写GAP):
GAP是对LL层payload(有用数据包)怎样举行分析的两种方式中的一种,而且是最简朴的那一种。GAP简朴的对LL payload举行一些规范和界说,因此GAP能实现的功能极其有限。GAP现在告急用来举行广播,扫描和发起毗连等。
GAP 用来控制装备毗连和广播,GAP 使你的装备被其他装备可见,并决定了你的装备是否可以大概怎样与条约装备举行交互。比方 Beacon 装备就只是向外广播,不支持毗连,小米手环就等装备就可以与中心装备毗连。
GAP 给装备界说了多少脚色,此中告急的两个是:外围装备(Peripheral)和中心装备(Central)。
外围装备:这一样寻常就好坏常小大概简朴的低功耗装备,用来提供数据,并毗连到一个更加相对强大的中心装备。比方小米手环。
中心装备:中心装备相对比力强大,用来毗连其他外围装备。比方手机等。
在 GAP 中外围装备通过两种方式向外广播数据: Advertising Data Payload(广播数据)和 Scan Response Data Payload(扫描复兴),每种数据最长可以包罗 31 byte。这里广播数据是必须的,由于外设必须不绝的向外广播,让中心装备知道它的存在。扫描复兴是可选的,中心装备可以向外设哀求扫描复兴,这里包罗一些装备额外的信息,比方装备的名字。(广播的数据格式我将别的专门写一个篇博客来讲。)
广播数据和扫描复兴数据是怎么工作的。外围装备会设定一个广播隔断,每个广播隔断中,它会重新发送本身的广播数据。广播隔断越长,越省电,同时也不太轻易扫描到。
大部分环境下,外设通过广播本身来让中心装备发现本身,并创建GATT毗连,从而举行更多的数据互换。也有些环境是不必要毗连的,只要外设广播本身的数据即可。用这种方式告急目的是让外围装备,把本身的信息发送给多个中心装备。由于基于GATT毗连的方式的,只能是一个外设毗连一个中心装备。使用广播这种方式最典范的应用就是苹果的iBeacon。
5. 逻辑链路控制及自顺应协议层(Logical Link Control and Adaptation Protocol,简写 L2CAP):
|