Bluetooth GAP介绍
阅读目录
- 1. 介绍
- 2. 角色
- 3. 配置
- 4. 模式
- 5. 安全
- 6. 空闲模式
- 7. 建立连接
- 8. 操作模式和过程
回到顶部
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>
Bluetooth GAP介绍相关推荐
- Bluetooth Baseband介绍
Bluetooth Baseband介绍 阅读目录 1. 介绍 2. 概述 3. 物理信道 4. 物理链路 5. 逻辑传输层 6. 逻辑链路 7. 数据包 8. 链路控制 回到顶部 1. 介绍 蓝牙的 ...
- Bluetooth SDP介绍
Bluetooth SDP介绍 阅读目录 1. 概念 2. 服务记录 3. 服务属性 4. 服务类 5. 服务查找 6. 服务浏览 7. 数据表示 8. 协议说明 回到顶部 1. 概念 SDP, Se ...
- 蓝牙Bluetooth模块介绍
1,蓝牙模块--基础知识介绍 https://blog.csdn.net/wwt18811707971/article/details/77833602 2,常见蓝牙模块介绍和AT指令 https:/ ...
- Bluetooth 蓝牙介绍(一) :基础知识
蓝牙背景 从1994年由电信商爱立信提出"希望创建一个RS-232数据线的无线通信替代版本,它能够链接多个设备,克服同步的问题"以来,蓝牙经过了20余个岁月的发展,蓝牙技术也经历了 ...
- Bluetooth 蓝牙介绍(四):低功耗蓝牙BLE Mesh网络 Ⅰ—— 基础概念
文章目录 背景 术语 Managed Flooding Models Scenes 架构 Node Features 中继节点 代理节点 友元节点和低功耗节点 示例 BLE Mesh Networki ...
- Android4.3 Bluetooth基本介绍
蓝牙定义 蓝牙,是一种支持设备短距离通信(一般10m内)的无线电技术.能在包括移动电话.PDA.无线耳机.笔记本电脑.相关外设等众多设备之间进行无线信息交换.利用"蓝牙"技术,能够 ...
- Bluetooth 蓝牙介绍(二):低功耗蓝牙BLE协议栈
文章目录 Physical LAYER Link LAYER 角色 地址 物理信道 Air Interface Packet PDU Advertising physical channel PDU ...
- Bluetooth 蓝牙介绍(六):低功耗蓝牙信息交互
文章目录 前言 THREE-WIRE UART TRANSPORT LAYER LINK ESTABLISHMENT UnInitialized STATE Initialized STATE Act ...
- Bluetooth ATT介绍
阅读目录 1 介绍 2 详细内容 3 Attribute PDU 4 Attribute Protocol PDU 回到顶部 1 介绍 ATT,Attribute Protocol,用于发现.读.写对 ...
最新文章
- Fatal Error: Out of memory php内存溢出处理三种方法
- LeetCode 264. Ugly Number II--C++,Python解法
- 深入理解JavaScript系列(2):揭秘命名函数表达式(转)
- Linux基础之bash脚本进阶篇-循环语句(for,while,until)
- linux内核驱动开发 培训,嵌入式Linux驱动开发培训 - 华清远见教育集团官网
- .NET6之MiniAPI(七):中间件
- Wamp5 配置PHP 图文详解(转)
- 什么是map评测指标
- WEB字体,多列布局和伸缩盒
- java中this关键字
- 关闭迅雷“XLServicePlatform”服务 防止导致Win8假死
- 推荐 7 个优质技术号
- 微信开发者工具下载地址
- 【python】ssh密码字典攻击
- ansys经典界面分析工字钢_ANSYS经典界面讲解.ppt
- 软件测试工程师太累了?
- ldap服务器配置信息错误,ldap服务器概念配置看这一文就够了!
- 杀不死的人狼——我读《人月神话》(二)
- 如何在基于vue-cli的项目中,使用精灵图 css sprite
- Oracle 时间差计算 数据库关于时间计算
热门文章
- 生产环境JVM内存溢出案例分析
- 2019年Vue学习路线图
- Visual Studio Code高效开发----自动保存设置方法
- Java 匿名内部类总结【复习】
- 【Python】青少年蓝桥杯_每日一题_10.11_小球反弹
- FetchType.LAZY和FetchType.EAGER什么区别?(懒加载和急加载的理解)
- pyqt5 tableview 设置行颜色_Tools Ⅰ:如何用 PyQt5 和 Qt Designer 在 Pycharm 中愉快地开发软件...
- 全面收紧!继新加坡后,又一地拟暂停数据中心建设
- 无人数据中心何时到来仍需等待
- 机房那么大,我想用AR来看看!