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.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.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. 蓝牙通信

  • 协议分析

  • 明文传输

  • 信号重放

  • 信号拦截

  • 操作指令

3.5.8. 参考链接