蓝牙技术联盟(SIG: Bluetooth Special Interest Group)由爱立信和IBM 牵头成立于1998年,初始成员共有五个:爱立信、英特尔、诺基亚、东芝和 IBM。
蓝牙的第一个正式标准是2002年发布的V1.1,使用的是BR技术,此时蓝牙理论传输速率为721Kbps;
在2005年发布的V2.0 支持增强数据速率的EDR 技术,用来加快数据传输速率,蓝牙理论传输速率达到3 Mbps;
在2009 年发布的V3.0 引入的HS 技术,可以提供高达 24 Mbps 的理论数据传输速度;
伴随着物联网潮流的兴起,SIG 也逐渐将重心从向高速率发展转移到向低功耗发展(也可以说高速率方向上已经与Wi-Fi 拉开较大差距,二者从直接竞争转为差异化发展)。
在2010年 V4.0 新增LE低功耗技术,传输速率700Kbps左右,无法传输音频;
在2016年 V5.0 LE技术物理层传输速率提高,最大传输速率1.4Mbps,满足音频传输,但未定义音频规范;
在2019年 V5.2 LE技术定义音频规范、支持厘米级定位;
术语/缩写 | 含 义 |
---|---|
外围设备 | Peripheral,链路层四种角色之一,BLE连接建立阶段外围角色可以接收中央角色的连接请求,一个设备可以同时以多个角色运行 |
中央设备 | Central,链路层的四种角色之一,BLE连接建立阶段中央角色会主动发起连接,一个设备可以同时以多个角色运行 |
广播设备 | Broadcaster,链路层四种角色之一,BLE设备在广播信道广播数据,一个设备可以同时以多个角色运行 |
观察设备 | Observer,链路层四种角色之一,BLE设备在广播信道接收广播角色发出的广播数据,一个设备可以同时以多个角色运行 |
GAP | Generic Access Profile,蓝牙核心规范中的通用接入规范,约束了设备发现、建立连接、绑定、安全等功能 |
SM | Security Manage,蓝牙核心规范中的安全管理规范,约束了BLE连接通信的认证、配对、加密实现规范 |
SMP | Security Manage Protocol,安全管理规范中的安全协议,定义了SM规范的数据通信格式 |
GATT | Generic Attribute Profile,蓝牙核心规范中的通用属性规范,约束了连接建立后的蓝牙服务数据框架 |
ATT | Attribute Protocol,属性协议,定义了属性数据的传输格式,GATT基于该协议实现 |
PHY | Physical Layer,负责提供数据传输的物理通道或信道。蓝牙协议栈中提供两种类型的信道:数据信道与广播信道 |
LL | Link Layer,在物理层的基础上,提供两个或多个设备之间、和物理无关的逻辑传输通道或链路 |
ISOAL | Isochronous Adaptation Layer,等时适配层,解决了左右耳等时同步传输的问题,而且可以扩展到多个音频设备在广播通道上等时同步传输音频数据流,应用场景如多人会议借助蓝牙耳机等时同步音频数据流 |
ACL | Asynchronous data,异步数据,主要目标是维护数据完整性,而不是时间延迟,允许重发数据 |
ISO | Isochronous data,等时同步数据,主要时最小化时间延迟,并保证数据等时,不允许重发数据,以确保音频流的实时传输 |
HCI | Host Controller Interface,蓝牙控制器芯片与蓝牙主机芯片之间通过标准的HIC命令交互数据,这里的HCI命令实际上就是对蓝牙链路层报文的简单封装 |
L2CAP | Logical Link Control and Adaptation Protocol,负责管理逻辑层提供的逻辑链路。为上层应用提供多路复用、分片重组、流量控制等机制,类似TCP 中 port 的概念 |
SMP | Security Manage Protocol,用于管理BLE连接通信的加密、认证和安全 |
ATT | Attribute Protocol,Attribute是指被编址的一小块数据,ATT协议提供了一些方法对这些数据读取、修改等操作,为上层的Profile规范提供承载的协议 |
Profiles | 为了实现不同平台下的不同设备的互联互通,蓝牙协议不止规定了核心规范(Bluetooth Core Specification),也为各种不同的应用场景,定义了各种Application 规范,这些应用层规范称作蓝牙profile。如:HID,用于无线鼠标,键盘或其他遥控设备;BatteryServices,电池状态服务,用于告知电池电量状态;HRP,心率计Profile,用于心率采集等等 |
GAP | Generic Access Profile,定义了设备间发现彼此/建立连接/完成绑定、认证加密等规范 |
GATT | Generic Attribute Profile,定义了设备建立连接后,如何提供或响应服务、如何发现或请求服务 |
BLE协议的整体框架如下图所示,包含了蓝牙核心规范(Bluetooth Core Specification)和蓝牙应用(Blue Application)。
蓝牙核心规范主要由Host和Controller两部分组成,其中Controller负责定义RF、Baseband等偏硬件的规范;Host负责在抽象出的逻辑链路(L2CAP)之上进行更为友好的封装,这样可以屏蔽掉蓝牙技术的细节,供应用更方便使用。类比应用层、传输层、数据链路层、物理层。
蓝牙应用主要指蓝牙服务数据的定义标准,包括行业内通用的蓝牙标准(心率Profile、血压Profile)。在核心规范基础上,根据应用需求,定义各种各样的profile。
Controller负责定义RF、Baseband等偏硬件的规范。
BLE设备工作在无需授权的2.4GHz ISM(Industrial Scientific Medical) 频段,具体频段范围为2400MHz到2483.5MHz。共分为40个信道(37个数据信道和3个广播信道),从2402MHz到2480MHz,频宽为2MHz。
由于wifi、zigbee也工作2.4GHz频段,因此存在同频干扰,主要通过跳频手段(跳频算法检测到当前信道受干扰后,切换到下一个非连续的信道)避免干扰。
BLE依靠深度睡眠、周期唤醒、降低发射功率实现低功耗工作,并提供四种功耗级别,通信距离范围最小3米、最大达到100米左右。
BLE的链路层定义了两种基本的数据包格式:
1)LE Uncode PHYs:特点是较高的通信速率,提供两种调制码流,LE 1M PHY和LW 2M PHY,后者的通信速率是前者两倍。该格式可以用于支持音频数据流这种高速路近距离应用
2)LE Coded PHY:特点是较远的传输距离(采用了前向纠错码,可以允许数据存在部分丢失后,在接收端进行恢复,因此允许传输损耗更高,从而距离更远),提供两种调制码流,LE Coded PHY with S=2 coding和S=8 coding,前者传输距离是LE Uncoded PHYs两倍(速率为其1/2),后者传输距离是LE Uncoded PHYs四倍(速率为其1/8)。
Access Address:接入地址,分为广播接入地址与数据接入地址,广播接入地址固定为0x8E89BED6,数据接入地址在每次建立连接时由发起方随机生成。作用:多个蓝牙设备在同一信道通信时,对蓝牙会话进行区分,不至于在同一信道下的多个设备通信混乱。
BLE定义了三大类PDU格式,PDU格式较多且复杂,详细PDU格式及参数解释见蓝牙核心规范空口报文设计。参考资料[1] Vol6, Part B, 2 AIR INFERFACE PACKETS
这里重点介绍三大类PDU报文中所能携带的关键信息。
1.广播信道PDU
Header中的数据主要用于区分PDU类型
细分分为广播PDU、扫描PDU、初始PDU,均在广播信道传输
1)广播PDU
应用场景:设备发起广播供其他设备发现;设备广播数据,如公共场所部署公共广播系统;
关键信息:广播设备地址、是否可连接、是否可扫描、是否为定向广播【定向广播报文内目标设备地址】、广播数据【设备名称、设备发现模式、蓝牙服务数据,更多数据类型见《CSS_v10》Part A, 1】
2)扫描PDU
应用场景:设备A主动发起扫描,扫描指定蓝牙地址的设备B是否在扫描范围内,设备B作出扫描响应
关键信息:扫描请求中包含发起扫描设备地址、目标设备地址;扫描响应中包含目标设备地址、扫描响应数据【数据由用户层自定义】
3)初始PDU
应用场景:设备发现后,完成蓝牙连接建立
关键信息:连接请求中包括发起设备地址、目标设备地址以及数据信道的链接信息。
Header中的数据主要用于区分PDU类型、分片重组、确认重传、【可选】定位信息;MIC用于数据的完整性校验,仅在加密链路时存在;Payload长度为0~251octets
PDU细分分为数据PDU、控制PDU,均在数据信道传输
1)数据PDU
应用场景:用于安全可靠的传输上层数据
关键信息:上层数据
2)控制PDU
应用场景:用于传输控制报文
关键信息:控制连接信息更新、加密秘钥协商、加密开启与关闭、连接心跳、等时同步流协商建立等等
3.等时同步PDU
等时同步数据流可以通过广播信道传输,也可以通过数据信道传输,用于传输音频数据。
Header中的数据在广播、数据信道下不同;MIC用于数据的完整性校验,仅在加密链路时存在
细分分为广播PDU、连接PDU,广播PDU在广播信道传输,连接PDU在数据信道传输
1)广播PDU
Header中的数据主要用于区分等时同步广播数据与控制数据
应用场景:广播等时同步的数据,如音频
关键信息:携带等时同步数据
2)连接PDU
Header中的数据主要用于分片重组、确认重传
应用场景:建立连接时传输等时同步的数据,如音频
关键信息:携带等时同步数据
设备地址长度为48bit,一般每个蓝牙设备都有一个唯一且固定的MAC 地址, Public Device address 需要向IEEE 购买,申请、管理、维护Public MAC 成本较高,且固定的Device Address 有加大信息泄露的安全风险,为了进一步降低成本并提高安全性,BLE 协议新增了Random Device Address,即设备地址不是固定分配的,而是在设备设备启动后随机生成的。
Random Device Address分为Static Device Address与Private Device Address。
**Static Device Address:**最高两个bit为"11",其余为随机数,在一个上电周期内保持不变,下一次上电时可以选择改变或不变,若改变则保持的连接信息失效。保证地址唯一性的同时,解决Public Device address的费用、维护问题。
**Private Device Address:**进一步支持定时更新以及地址签名,提高地址的可靠性与安全性,分为Non-resolvable与Resolvable。
Non-resolvable地址最高两个bit为“00”,其余为随机数,定时更新(默认15分钟);
Resolvable地址最高两个bit为“10”,低24bit为hash值,hash= ah(IRK,prand),剩余22bit为prand,IRK(Identity Resolving Key,蓝牙设备地址解析密钥)为设备配对过程中交换的信息;
L2CAP层提供了三种类型的逻辑通道:面向连接的通道、无连接通道、信令通道,设备可以支持多个通道。面向连接与无连接的通道下支持多个端口,每个端口可以支持特定的协议;信令通道用于L2CAP通道管理,该通道上传输的均为L2CAP层的控制信令(如L2CAP通道建立、关闭等)。
该层作用:
1.多路复用:不同的应用层协议(ATT、SMP协议),可以分配到同一通道的不同端口上,且复用物理层的同一个信道。
2.分段重组:将上层应用数据包(SDU)进行分段、重组
3.流量控制:避免传输链路堵塞,导致数据传输错误或丢失
4.错误重传:数据包错误时,重新传输
5.支持流传输:对于音频流数据,对时延较敏感,不对其使用流量控制和错误重传机制
GAP中主要约束了广播通信、设备发现、建立连接、配对绑定功能的实现要求,详见《Core_V5.3》| Vol3, Part C, 9.
广播通信是指蓝牙设备使用广播事件的方式进行通信,由于广播都是单向通信,没有确认应答机制,所有都是不可靠通信。
蓝牙设备提供了两种广播模式:
1)广播模式:BLE 4.X支持,单个广播报文31字节
2)周期广播模式:BLE 5.X支持,单个广播报文254字节
只有外围设备才允许被发现,中央设备则执行发现外围设备的过程。设备发现是基于蓝牙广播通信技术实现的
外围设备提供三种发现模式:
1)不可发现模式:该模式下设备不可发现
2)有限发现模式:该模式下设备可被在有限的时间段内发现
3)常规发现模式:该模式下设备可被无限期的发现
设备发现后,允许中央设备主动与外围设备建立连接。建立连接是基于蓝牙广播通信技术实现的
外围设备提供三种连接模式:
1)不可连接模式:该模式下设备无法被连接
2)定向连接模式:该模式下设备仅接受来自已知设备的连接请求
3)不定向可连接模式:该模式下设备接受来自任何设备请求
连接建立后,当尝试访问需要绑定的服务数据时,进行配对绑定。绑定允许两个连接的设备之间交换或存储安全性与身份信息(配对、认证、加密等信息),以创建可信任的关系。
蓝牙设备提供两种绑定模式:
1)不可绑定模式:设备不允许被绑定
2)可绑定模式:允许创建绑定关系
GATT规范为设备定义了两种角色:Client与Server。Client设备会主动向Server设备发起请求,Server设备进行响应,或由Server设备主动推送数据到Client。这两种角色并不是绑定在设备上的,设备是Client还是Server,取决于当前的蓝牙数据交互行为。
GATT规范基于ATT协议定义了蓝牙服务的框架,框架中定义了蓝牙服务、服务内特征的格式以及操作过程。操作过程包括了发现、读、写、通知上报以及广播特征数据。
服务与特征概念:
服务:可以看作是完成特定功能或特性的数据和相关行为的集合。
特征:一般都包含一个、多个数据或行为,数据通信的最小单位。
一个蓝牙设备若想作为Server角色提供蓝牙服务,它可以支持多个profile,每个profile内又支持多个Service
每个Service支持多个Characteristic与多个Include Service
GATT规范中包括的功能如下:
1.交换双方ATT协议的MTU,默认23字节,最大可协商到512字节
2.发现设备的服务列表、特征列表
3.发现设备的特征数据
4.读取、写入、通知特征数据
GAP规范约束了蓝牙的安全模式以及安全等级,定义了BLE安全相关的框架
SM规范约束了一套秘钥分发机制来实现蓝牙通信的认证与加密,其中SMP是用于配对和传输秘钥的协议。
SM规范定义了蓝牙设备的配对以及密钥协商机制,密钥协商完成后,由Controller层的链路层完成加密链路的建立以及加解密操作。此外加密链路建立后,通信双方可以在该链路上共享其他的key,如Resolvable地址中使用的IRK。
需要注意的是BLE的加密机制针对面向连接的数据,对于广播数据(等时同步音频流除外)是不支持加密的。
流程如下:
Established LL connection:建立蓝牙连接,此时链路是明文的
Phase1:通过Pairing Request与Pairing Response协议交换双方的配对信息,如IO能力、配对方法、鉴权方式、是否建立绑定关系等等
Phase2:基于SMP协议进行配对操作以及密钥生成,有两种配对方法可选:LE legacy pairing和LE Secure Connections
Encrypted connection:基于密钥,建立加密连接
Phase3:连接建立后,可以传送一些敏感信息,如IRK等,如果后续会重新建立安全连接,则可以将配对信息保存到本地安全数据库中(后续用于建立绑定关系)
配对方法:
1.LE legacy pairing:通过随机数以及与或运算完成密钥协商,存在暴力破解可能
2.LE Secure Connections:通过ECDH算法完成密钥协商,安全性更高,能有效防止中间人攻击
鉴权方法:
1.Passkey Entry:要求用户在一个具有数字输入能力的蓝牙设备输入6位数字,另一个蓝牙设备显示相同数字。
2.Numeric Comparison(仅LE Secure Connections配对支持 ):要求两个具有显示能力的蓝牙设备自行协商6位数字,用户进行确认是否一致,如手机蓝牙
3.Out Of Band:两个蓝牙设备通过非蓝牙途径交换配对信息,如NFC蓝牙音箱
4.Just Works:无需用户参数,设备自行协商,不会进行鉴权,如蓝牙耳机
蓝牙外围设备被中央设备访问时,提供了三种安全模式:安全模式1、安全模式2、安全模式3。外围设备中会维护一个安全数据库,数据库中维护蓝牙服务的安全模式,当中央设备满足安全模式要求时,允许其访问该蓝牙服务。
LE Security mode 1:主要用于在建立连接的Peripheral 和Central 之间,提供不同级别的信息加密,该模式为连接加密提供四个等级,这四个等级的安全性逐级增强。
等级 | 等级内容 | 等级兼容 |
---|---|---|
1 | 无认证且无加密 | 兼容2/3/4 |
2 | 无认证配对且加密(just work方式) | 兼容3/4 |
3 | 认证配对且加密(passkey或oob方式) | 兼容4 |
4 | 128位强度认证配对且加密(secure connection方式) | 仅支持4 |
LE Security mode 2:主要用于在建立连接的Peripheral 和Central 之间,提供不同等级的数据签名,该模式为数据签名提供两个等级,这两个等级的安全性逐级增强。
等级 | 等级内容 | 等级兼容 |
---|---|---|
1 | 无认证且签名(just work方式) | 兼容2 |
2 | 认证配对且签名(passkey或oob方式) | 仅支持2 |
LE Security mode 3:主要用于在同步广播的Broadcaster 和Observer 之间,提供不同等级的BIS 同步广播信息加密,该模式为BIS 信息加密提供三个等级,这三个等级的安全性逐级增强;
等级 | 等级内容 | 等级兼容 |
---|---|---|
1 | 无认证且无加密 | 兼容2/3 |
2 | 无认证且加密 | 兼容3 |
3 | 认证且加密 | 仅支持3 |
蓝牙基于GATT,定义了许多标准的Profile规范,如:HID,用于无线鼠标,键盘或其他遥控设备;BatteryServices,电池状态服务,用于告知电池电量状态;HRP,心率计Profile,用于心率采集等等。可在参考资料[6]搜索。
Profile规范中定义了蓝牙Service、Characteristic的UUID,以及Characteristic Value。Value值采用二进制格式定义,与网络SDK定义方式相似。
应用领域:涵盖的领域有汽车、消费类电子产品、家居自动化、医疗和保健、手机、计算机与外设、可穿戴设备、运动和健身、零售和位置导向式服务等。
核心功能:
1.数据传输,点对点
2.音频传输,点对点、广播
3.位置服务,点对点、广播
4.设备网络,mesh组网
蓝牙产品开发流程包括:加入SIG、开发产品、鉴定产品、显示蓝牙商标。
加入SIG联盟,当前有3万余家公司加入SIG会员,会员类型除了SIG联盟发起者之外,包括两种:采用者会员 与 合作者会员。
采用者:可以开发、蓝牙认证、产品化、售卖蓝牙产品。不需要缴纳会费,但在购买一些协议分析工具、研究报告时不享受费用折扣。海康当前作为采用者加入。
合作者:可以参与蓝牙标准的制定,需要缴纳会费,在购买一些协议分析工具、研究报告时享受费用折扣(15%~50%折扣)。目前华为、阿里、小米、涂鸦智能、中兴等700多家企业成为合作者会员。年会费:根据盈利情况,分为两个档。
加入蓝牙:https://www.bluetooth.com/develop-with-bluetooth/join/
蓝牙官网提供了蓝牙技术的开发指导,包括标准介绍、开发环境搭建、测试蓝牙等等。
开发指导:https://www.bluetooth.com/develop-with-bluetooth/build/
蓝牙产品的鉴定过程确保了全球互操作性,并进一步加强了蓝牙品牌和生态系统实力,使所有Bluetooth SIG成员受益。资格认证主要确保其蓝牙产品符合蓝牙专利和版权许可协议、蓝牙商标许可协议(统称为蓝牙许可协议)和蓝牙规范。
蓝牙官网提供了蓝牙鉴定工具Launch Studio完成蓝牙鉴定,鉴定后企业提交蓝牙设计信息、测试计划、测试证据及产品信息。
通过蓝牙鉴定的产品可以在官网查询到:https://launchstudio.bluetooth.com/Listings/Search
蓝牙鉴定:https://www.bluetooth.com/develop-with-bluetooth/qualification-listing/
产品鉴定完成后,确保蓝牙商标风格符合要求即可。
蓝牙商标:https://www.bluetooth.com/develop-with-bluetooth/marketing-branding/
成为蓝牙合伙人会员进行标准提案,具体提案机制没有找到。
[1] 蓝牙核心规范:《Core_v5.3.pdf》
[2] 蓝牙核心规范补充稿:《CSS_V10.pdf》
[3] 蓝牙UUID:《16-bit UUID Numbers Document.pdf》
[4] 心率Profile:《HRP_V10.pdf》
[5] 心率Service:《HRS_SPEC_V10.pdf》
[6] 蓝牙官网:https://www.bluetooth.com/