3.5. BLE¶
3.5.1. 简介¶
蓝牙低功耗(Bluetooth Low Energy,BLE),是对经典蓝牙BR/EDR技术的补充,多用于小数据率、离散传输的应用。虽然BLE和经典蓝牙都是蓝牙标准,但是BLE并不兼容经典蓝牙BR/EDR。相比于经典蓝牙,它具有覆盖范围更广,安全性更高,功耗低等特点。
3.5.2. 架构¶
3.5.2.1. 物理层¶
蓝牙物理层(RF层),包括BR/EDR、LE以及AMP三种,主要负责在物理channel上收发蓝牙packet。对BR/EDR和LE RF来说,还会接收来自Baseband的控制命令来控制RF频率的选择和timing。而AMP PHY,则是使用802.11(WIFI)的规范。
3.5.2.2. 基带¶
Link Controller和Basebandresource management组成了蓝牙的基带(baseband)。Link Controller负责链路控制,主要是根据当前物理channel的参数、逻辑channel的参数、逻辑transport的参数将数据payload组装成bluetoothpacket。另外,通过LinkControl Protocol(对LE来说是LL LayerProtocol),可以实现流控、ack、重传等机制。Baseband resourcemanagement,主要用于管理RF资源。
3.5.2.3. Link Manager¶
Link Manager主要负责创建、修改、释放蓝牙逻辑连接(Logical Link),同时也负责维护蓝牙设备之间物理连接(Physical Link)的参数。它的功能主要是通过Link Management Protocol(LMP,for BR/EDR)和Link Layer Protocol(LL,for LE)完成。
3.5.2.4. Device Manager¶
Device Manager主要负责控制蓝牙设备的通用行为(蓝牙数据传输除外的行为),包括:搜索附近的蓝牙设备,连接到其他的蓝牙设备。
3.5.2.5. HCI¶
蓝牙系统分为Bluetooth Controller和Bluetooth Host两个大的模块,它们之间通过HCI(Host Controller Interface)接口以HCI协议进行通信。
3.5.2.6. L2CAP¶
L2CAP位于Bluetooth Host中,包括两个子模块:Channel Manager主要负责创建、管理、释放L2CAP channel。L2CAP Resource Manager负责统一管理、调度L2CAP channel上传递的PDU(Packet Data Unit),以确保那些高QoS的packet可以获得对物理信道的控制权。
3.5.2.7. SMP¶
SMP(Security Manager Protocol)是一个点对点的协议,基于专用的L2CAP channel,用于生成加密(encryption)和识别(identity)用的密匙(keys)。
3.5.2.8. SDP¶
SDP(Service Discover Protocol)也是一个点对点的协议,基于专用的L2CAP channel,用于发现其它蓝牙设备能提供哪些profile以及这些profile有何特性。在了解清楚了其他蓝牙设备的profile以及特性之后,本蓝牙设备可以发起对自己感兴趣的蓝牙profile的连接动作。
3.5.2.9. AMP Manager¶
基于L2CAP channel,和对端的AMP manager交互,用于发现对方是否具备AMP功能,以及收集用于建立AMP物理链路的信息。
3.5.2.10. GAP¶
GAP(Generic Access Profile)是一个基础的蓝牙profile,用于提供蓝牙设备的通用访问功能,包括设备发现、连接、鉴权、服务发现等等。
GAP 是所有其它应用模型的基础,它定义了在 Bluetooth 设备间建立基带链路的通用方法。还定义了一些通用的操作,这些操作可供引用 GAP 的应用模型以及实施多个应用模型的设备使用。GAP 确保了两个 蓝牙设备(不管制造商和应用程序)可以通过 Bluetooth 技术交换信息,以发现彼此支持的应用程序。
3.5.3. 工作流程¶
蓝牙启动
扫描设备
设备配对
数据传输
3.5.3.1. 设备配对¶
- 生成初始密钥
初始密钥Kinit长度为128bit, 由E22算法生成
首先提出通信的设备为主设备(Master),用A表示
被动通信的设备为从设备(Slave),用B表示
- E22算法的输入
从设备的物理地址(BD_ADDR)
PIN码及其长度
128 bit的随机数(IN_RAND),由A产生,并明文传输给B
- 生成链路密钥
A产生128位的随机数LK_RANDA,B产生随机数LK_RANDB
Kinit与LK_RANDA,发送给B
Kinit与LK_RANDB,发送给A
用E21加密LK_RANDA、LK_RANDB、BD_ADDRA、BD_ADDRB,结果异或得到Kab
- 双方认证
使用挑战-应答
A为应答,B为请求
A产生128 bit的随机数AU_RANDA,明文传输至B
A、B使用AU_RANDA、Kab、BD_ANDRB加密运算生成32位的SRESA和SRESB
B将SRESB传给A,A比较SRESA和SRESB,相同则通过
3.5.4. 协议栈¶
3.5.4.1. Physical Layer¶
蓝牙使用2.4GHz频道,自适应跳频
3.5.4.2. Link Layer¶
控制设备的射频状态
Standby
Advertising
Scanning
Initiating
Connection
3.5.4.3. HCI¶
主机控制接口层
Host和Controller的通信协议
软硬件接口
3.5.4.4. Generic Access Profile (GAP)¶
控制设备连接和广播
- role
Broadcaster:设备发送Advertising Events
Observer: 设备在接受Advertising Events
Peripheral:设备接受Link Layer连接
Central: 设备发起Link Layer连接
- 通信模式
Broadcast Mode and Observation Procedure: 单向无连接通信
Discovery modes and procedure: 设备发现
Connection modes and procedure: 设备连接
Bonding modes and procedure: 设备配对
Logical Link Control and Adaptation Protocol (L2CAP Protocol)
- Security Manager (SM)
配对
认证
加密
Attribute Protocol (ATT)
- Generic Attribute Profile (GATT)
接受和处理主从设备的指令信息,并打包成合适的profile
- Services
将数据分为独立逻辑项,包含一个或多个Characteristic
每个Service有一个UUID标识
- Characteristic
最小的逻辑数据单元
3.5.5. 攻击¶
3.5.5.1. MITM¶
B修改自身为A的地址,以A的身份和C通信 B修改自身为C的地址,以C的身份和A通信
3.5.5.2. 离线PIN码¶
暴力攻击PIN码
3.5.5.3. 中继攻击¶
以中继的方式放大蓝牙信号
3.5.5.4. DoS¶
发起大量的鉴权/文件传送等请求,使设备不能正常工作
3.5.6. 分析工具¶
3.5.6.1. 嗅探工具¶
- cc2540 / cc2541
只能监听一个信道
低价替补方案
- MRF51822
数据包捕获不稳定
Frontline BPA 600
Ellsys BEX400
- Ubertooth
支持有限
- HackRF
针对蓝牙,使用复杂
3.5.6.2. 扫描器¶
bleah
bluelog
btCrawler
Kismet
BLE Sniffer
Blue Scanner
3.5.6.3. 攻击¶
BtleJuice
Blueranger
Bluebugging
Peripheral hijacking
3.5.6.4. 模拟器¶
hackmelock
3.5.6.5. 手机端¶
Bluez
LightBlue
nRF Connect
Ramble
hackmelock
3.5.7. 安全问题¶
3.5.7.1. 基础¶
配置管理
身份鉴别
认证授权
会话管理
输入验证
错误处理
3.5.7.2. 业务安全¶
账户管理
云端密码下发
远程开门
开锁记录
3.5.7.3. 网络传输¶
明文传输
加密漏洞
数据包逆向
OTA固件拦截
3.5.7.4. 蓝牙通信¶
协议分析
明文传输
信号重放
信号拦截
操作指令