Bluetooth GAP介绍
阅读目录
1. 介绍
GAP,Generic Access Profile,该Profile保证不同的Bluetooth产品可以互相发现对方并建立连接
GAP定义了蓝牙设备如何发现和建立与其他设备的安全/不安全连接
它处理一些一般模式的业务(如询问、命名和搜索)和一些安全性问题(如担保)
同时还处理一些有关连接的业务(如链路建立、信道和连接建立)
GAP规定的是一些一般性的运行任务;因此,它具有强制性,并作为所有其它蓝牙应用规范的基础
GAP在蓝牙协议栈中的位置如下图
GAP有如下四个目的
- Profile Role - 可发现模式和过程 - 连接模式和过程 - 安全模式和过程
!!!注意: 本文中的内容针对BR/EDR !!!
2. 角色
在BLE下,GAP Role有四种
- Broadcaster : 发送advertising events的设备(有Transmitter, 可能有Receiver) - Observer : 接收advertising events的设备(可能有Transmitter, 有Receiver) - Peripheral : 物理链路上接受连接的设备, 在LL层Connection State为Slave(有Transmitter和Receiver) - Central : 物理链路上发起连接的设备, 在LL层Connection State为Master(有Transmitter和Receiver)
3. 配置
用户可配置(地址不可配置)的参数如下
- Bluetooth Device Address : BD_ADDR - Bluetooth Device Name : the user-friendly name - Bluetooth Passkey : Bluetooth PIN - Class of Device : 设备发现阶段用于指示设备类别和支持的设备类别
4. 模式
发现模式(Discoverablity Modes), 对应于inquiry
- Non-discoverable Mode: 不响应inquiry - Discoverable Mode: 是下面两种模式的总称, 设备进入INQUIRY_SCAN状态, 响应inquiry - Limited discoverable Mode: 响应LIAC inquiry - General discoverable Mode: 响应GIAC inquiry
连接模式(Connectability Modes), 对应于paging
- Non-connectable Mode: 不响应paging - Connectable Mode: 设备进入PAGE_SCAN状态, 响应paging
配对模式(Bondable Modes), 对应于bonding/paring, 需要和SSP(Secure Simple Pairing)配合使用
- Non-bondable Mode: 设备不可接受来自远端设备的绑定/配对请求 - Bondable Mode: 设备可接受来自远端设备的绑定/配对请求
5. 安全
5.1 认证
认证(Authentication)过程描述了两个蓝牙设备进行LMP认证和LMP配对的一般过程,过程如下
5.2 安全模式
安全模式描述了Channel连接建立过程中的涉及的Secure问题
安全模式大体上可分为两种Legacy Security Modes(1、2、3, 也称Legacy Pairing)和Security Mode 4(即SSP)
注意: 设备可能同时支持Security Mode 2(兼容不支持SSP的设备)和Security Mode 4
详细有如下四种
- Security Mode 1 : Non-secure - Security Mode 2 : Service level enforced security - Security Mode 3 : Link level enforced security - Security Mode 4 : Service level enforced security
5.2.1 Legacy Security Modes
Legacy Security Modes用于蓝牙v2.0及更早版本, 设备需要输入Pin Code, 当双方Pin Code相同时配对成功
Pin Code通常为4个字节, 如0000和1234
5.2.2 SSP
SSP用于蓝牙v2.1及后续版本, 对于BR/EDR要求强制支持;它使用Elliptic Curves Diffie-Hellman提供被动窃听保护,还有可选的MITM保护
SSP引入了IO Capabilities的概念,这是一种考虑设备输入和输出能力并据此选择配对模型的机制
SSP使用四种不同的配对模式:Numeric Comparison、Just Works、Passkey Entry、Out Of Band
Numeric Comparison
适用于两个设备都可以显示六位数字并且能够让用户输入"Yes"或"No"的情况;在这个模型中,有针对MITM的保护,故而即使知道这六位数字对解密数据也没有意义;这也是Android中蓝牙常用的配对模式
Just Works
适用于两个设备都没有任何输入和输出能力的情况;它使用与数字比较相同的协议,但它不向用户显示任何数字,也不要求确认这些数字;该模型不提供针对MITM的保护
Passkey Entry
适用于一个设备具有数字键盘但没有显示器且另一个设备至少具有数字输出的情况;在配对过程中,带显示屏的设备显示一个6位数字,另一个设备必须通过键盘进行输入
值得注意的是,Passkey Entry与Legacy Pairing的PIN Code输入不同;在Legacy Pairing中,PIN Code是**生成的唯一随机源;而在Passkey Entry中,六位数字只是安全算法的artifact,而不是输入;知道六位数字对解密数据没有帮助;Passkey Entry可防止MITM
Out Of Band
该模型允许通过不同的技术(如NFC)进行配对;使用NFC进行蓝牙配对,只需将设备放在一起,它们就会配对;对于MITM保护,依赖于使用的带外机制的MITM的保护
5.2.3 IO能力
SSP配对模型的选择取决于设备的输入和输出能力
输入能力有三种
- No Input: 设备没有输入能力 - Yes/No: 用户可以选择Yes或者No - Keyboard: 用户可以输入六位数
输出能力有两种
- No Output: 设备不能显示六位数字 - Numeric Output: 设备能够显示六位数字
IO能力可以映射进行下表所示的映射
5.2.4 配对模型选择
当我们知道设备的IO功能后,可以据此选择设备之间的配对模型
下表显示了如何选择配对模式以及设备是否能够相互进行身份验证(Initiator位配对发起方, Responder为配对接收方)
6. 空闲模式
描述了发起方Inquiry和Discovery的过程
- General Inquiry - Limited Inquiry - Name Discovery - Device Discovery - Bonding: 包括Dedicated Bonding和General Bonding, 区别???
TIP:
Dedicated Bonding是用户通过特定请求(如添加设备)触发的绑定
General Bonding是在连接到首次某个服务时由于安全性自动触发的绑定
7. 建立连接
进行下面过程之前需要Discovery过程提供远端设备如下信息
基本信息
- DB_ADDR、Device Access Code - System Clock - Page Scan Mode
附加信息
- The Class of device - The Device name - The supported Service Classes
有如下三种
- Link Establishment - Channel Establishment - Connection Establishment
8. 操作模式和过程
在LE物理层通道上可能同时存在多个模式和过程
- Broadcast mode and observation procedure - Discovery modes and procedures - Connection modes and procedures - Bonding modes and procedures
参考:
<Bluetooth Security>
<Guide to Bluetooth Security>
<Secure Simple Pairing Explained>