1
-
蓝牙1.0版本作为早期版本存在产品兼容性以及一些安全问题,并未得到广泛使用。
-
蓝牙1.1版本正式列入IEEE 802.15.1标准,作为早期版本,还存在容易受到同频率之间产品干扰的问题。
-
蓝牙1.2版本解决1.0版本暴露出的安全性问题,同时引入了适应性跳频技术(AFH,Adaptive Frequency Hopping)、延伸同步连结导向信道技(eSCO,Extended Synchronous Connection-Oriented links)等技术来提高通信质量。
-
蓝牙2.0版本使用EDR(Enhanced Data Rate)是蓝牙设备的传输率达到3Mbps,同时支持了全双工模式。
-
蓝牙2.1版本主要新增Sniff Subrating省电功能,通过将设备相互确认的讯号发送时间间隔从0.1s延长到0.5s,从而让蓝牙芯片的工作负载大幅降低。另外还引入了SSP 简易安全配对功能,使蓝牙设备配对更加方便快捷。
-
可选技术High Speed,可实现高达24Mbps的传输速率。
-
AMP(Generic Alternate MAC/PHY),一种全新的交替射频技术,允许蓝牙协议栈针对任一任务动态地选择正确射频。
-
EPC 增强电源控制技术,降低空闲功耗;
-
UCD 单向广播无连接数据技术,提高蓝牙设备的相应能力。
-
蓝牙4.0版本是第一个蓝牙综合协议规范,提出了低功耗蓝牙(BLE,Bluetooth Low Energy)、传统蓝牙和高速蓝牙三种模式。高速蓝牙主攻数据交换与传输,传统蓝牙以信息沟通、设备连接为重点,低功耗蓝牙以不需要占用太多带宽的设备连接为主,功耗较老版本降低了90%。蓝牙4.0还将芯片模式分为了单栈模式(Single Mode)和双栈模式(Dual Mode),单栈模式只能与蓝牙4.0互相传输数据,无法实现向下的兼容,双栈模式则可以向下兼容。在低功耗模式下,蓝牙4.0还把传输距离提升到100米以上。
-
蓝牙4.1版本主要是针对物联网设备,提出了几个关键技术:1. 支持与LTE无缝写作,通过自动协调两者的传输信息,以确保协同传输,降低相互干扰。2. 允许开发人员或开发商自定义重新连接间隔,提供更高的灵活性和掌控度。3. 加入专用的IPv6通道,允许蓝牙设备通过联网的设备使用IPv6协议上网,满足物联网的应用需求。
-
蓝牙4.2版本传输速率相对上一代提高了2.5倍,同时改善了传输速率和隐私保护程度,并支持6LoWPAN低速无线个域网标准,这样大部分智能家居产品可以抛弃相对复杂的WiFi 连接,改用蓝牙传输,实现更加快捷的互联互通。
2
-
Channel Manager:负责创建、管理和释放L2CAP channel。
-
L2CAP Resource Manager:负责管理PDU数据的顺序、调度、分片、重组等功能,是L2CAP核心功能的一部分。
-
SMP:Security Manager Protocol,实现BLE系统中的点对点安全认证功能,包括秘钥生成和认证等;BR/EDR系统的对应功能则在Controller的Link Manager中实现。
-
ATT:Atrribute Protocol,应用层attribute client和server之间的协议。
-
GATT:Generic Attribute Profile,表示ATT server或者client的功能,profile描述了服务和属性的层级结构,主要用于LE profile服务发现中。
-
GAP:Generic Access Profile,表示所有蓝牙设备通用的基础功能,比如传输层、协议、应用所使用的模式或流程等。GAP服务包括设备和服务发现、连接模式、安全认证和关联模型等。
-
SDP:Service Discovery Protocol,即服务发现协议,是蓝牙协议体系中的核心协议,是蓝牙系统重要组成部分,是所有用户模式的基础。通过这个协议,客户端程序可以发现哪些服务可用以及服务的特性是什么。
-
Device Manager:基带(baseband)中控制设备行为的模块,主要负责不与传输直接相关的部分,比如查询周围蓝牙设备,连接蓝牙设备,切换蓝牙设备的状态(discoverable/connectable),以及修改蓝牙名称、属性等。
-
Link Manager:负责创建、修改和释放逻辑链路(logical links)以及对应的逻辑传输(logical transports),并更新设备之间对应物理链路(physical links)的相关参数。在BR/EDR系统中,与对端的Link Manager通过LMP协议(Link Manager Protocol)进行通信;在BLE系统中则使用的是LL协议(Link Layer Protocol)。
-
Baseband Resource Manager:负责管理所有到射频媒介的访问。在链路层中,有两种类型的“连接”:
① SCO:Synchronous Connection Orientated,实时窄带数据传输,如电话音频等,无重传
② ACL:Asynchronous Connection-Less,异步无连接,用以其他所有数据的传输
-
Link Controller:负责对指定物理信道(逻辑链路和逻辑传输)的蓝牙数据进行编解码。
3
a
传统蓝牙BR/EDR协议栈
-
BE/EDR Radio和Baseband and Link Control层对应OSI物理层,负责射频媒介的管理和物理信道数据的编解码
-
Link Manager Protocol (LMP)、L2CAP、RFCOMM和PPP层对应OSI链路层,负责通信链路的创建、销毁及数据传输
-
基于蓝牙实现的UDP、TCP、IP层对OSI模型网络层、传输层、会话层的混合层。
核心协议
-
BR/EDR Radio,无线电层是蓝牙规范的最低定义层。其中BR模式是强制性的,而EDR模式是可选的。该层定义了在2.4GHz ISM频带中工作的蓝牙收发器设备的要求。BR/EDR实现了1600跳/秒的FHSS技术,它以伪随机方式在79个指定的蓝牙信道上跳跃。每个蓝牙信道的带宽为1 MHz,每个频率位于(2402+k)MHz,其中k=0,1,…78。BR和EDR模式的调制技术分别为GFSK和差分相移键控(DPSK),波特率为1 Msymbol/s。蓝牙BR/EDR无线电使用时分双工(TDD)拓扑,其中数据传输在一个方向上可同时发生。
-
Link Manager Protocol (LMP),LMP层主要负责不同蓝牙设备之间的链路设置和链路配置。这些过程包括通过生成、交换和检查链接和加密密钥来建立安全功能,如身份验证和加密。此外,该层控制蓝牙无线电设备的功率模式和占空比以及蓝牙单元的连接状态。
-
L2CAP,给较高层协议屏蔽了较低层协议的细节,可向更高层协议提供面向连接和无连接的服务,这包括协议复用能力、分段和重组操作以及组抽象。
-
SDP,发现服务是蓝牙框架的一个重要方面,是构建在L2CAP之上基础协议。。服务发现协议(SDP)为应用程序提供了一种查询服务和服务特性的方法,随后可以在两个或多个蓝牙设备之间建立连接。
-
RFCOMM,RFCOMM通过L2CAP提供串行端口仿真。RFCOMM通过蓝牙基带模拟RS-232控制和数据信号,并为使用串行接口作为传输机制的更高层服务提供传输能力。RFCOMM还提供到一个设备的多个同步连接,并支持到多个设备的连接。
-
OBEX,对象交换(OBEX)协议是由IrDA开发的用于交换对象的会话级协议。OBEX协议提供了类似于HTTP的功能,但方式更简单。OBEX协议为客户端提供了连接到服务器的可靠传输。它还提供了表示对象和操作的模型。
-
HCI,HCI为BR/EDR无线电、基带控制器和链路管理器提供命令接口。它是一个用于访问蓝牙基带功能、硬件状态和控制寄存器的单一标准接口。
b
低功耗蓝牙BLE协议栈
-
Bluetooth LE PHY物理层与OSI物理层直接对应
-
LL(Link Layer)链路层与L2CAP层与OSI数据数据链路层对应
-
BLE更高层提供应用层服务、设备模型、连接管理和安全控制功能,与OSI网络层及以上层的混合层对应
-
Bluetooth LE PHY,空中接口在与Wi-Fi相同的未经许可的2.4 GHz工业、科学和医疗(ISM)频带中运行。LE PHY空中接口还包括以下特征:
① 工作射频(RF)在2.4000 GHz至2.4835 GHz(包括2.4000 GHz)的范围内。
② 信道带宽为2MHz,工作频带分为40个信道,k=0,1,…,39,第k个信道的中心频率为2402+k×2MHz。
a. 使用[0, 36]范围中的信道来发送用户数据分组。
b. 广告数据分组在信道37、38和39中发送。
③ 实现了高斯频移键控(GFSK)调制方案。
④ 使用跳频扩频(FHSS)来减少干扰并对抗衰落信道的影响。跳频之间的时间可以从7.5ms到4s不等,并在每个外围设备的连接时设置。
⑤ 对于规范版本4.x兼容的设备,必须支持1 Mbps的吞吐量。在1Mbps的数据速率下,传输是未编码的。
⑥ 可选地,符合蓝牙核心规范5.1版的设备支持以下附加数据速率:
a.以500 kbps或125 kbps的比特率进行编码传输
b.以2Mbps的比特率进行非编码传输
-
LL,LL执行类似于OSI模型的介质访问控制(MAC)层的任务。在蓝牙中,LL直接与Bluetooth LE PHY交互,并管理无线电的链路状态,以将设备的角色定义为中心、外围设备、广告器或扫描器。
-
HCI,可以分为两个部分,Host侧HCI接口和Controller侧HCI:
① 控制器侧的HCI处理主机和控制器之间的交互。HCI定义了用于传输和接收分组数据的一组命令和事件。当从控制器接收数据包时,HCI在控制器处提取原始数据以发送到主机。
② 主机侧的HCI处理主机和控制器之间的交互。HCI定义了用于传输和接收分组数据的一组命令和事件。当传输数据时,HCI将原始数据转换为数据包,将其从主机发送到控制器。
-
L2CAP,L2CAP根据在ATT和SMP层指定的链路配置,将来自蓝牙LE更高层的数据封装成标准蓝牙LE分组格式用于传输,或者在接收时从标准Bluetooth LE LL分组中提取数据。
-
ATT,ATT在基于GATT的配置文件中的客户端和服务器之间传输属性数据。ATT定义了客户机-服务器体系结构的角色。这些角色通常对应于链路层中定义的中心和外围。通常,无论设备是中央设备还是外围设备,设备都可以是客户端、服务器或两者。ATT还将数据组织成如图所示的属性。
-
GATT,GATT为所有基于GATT的概况提供了参考框架。GATT封装了ATT,并负责协调蓝牙LE链路中的配置文件交换。配置文件包括信息和数据,如句柄分配、UUID和一组权限。
-
SMP,SMP应用安全算法来加密和解密数据包。一旦建立连接,该层就定义了对应于中央和外围设备的启动器和响应器。
-
GAP,GAP指定了设备的角色、模式和过程。它还管理连接建立和安全性。GAP直接与应用程序配置文件和服务(App)层接口。
4
更多阅读
原文始发于微信公众号(云起无垠):技术分享 | 蓝牙协议安全(上)