1.蓝牙基础介绍
蓝牙(Bluetooth)一词取自于十世纪丹麦国王哈拉尔HaralBluetooth。而将“蓝牙”与后来的无线通讯技术标准关联在一起的,是一位来自英特尔的工程师 Jim Kardach。他在一次无线通讯行业会议上,提议将“Bluetooth”作为无线通讯技术标准的名称。
蓝牙技术让各种数码设备之间能够无线沟通,让散落各种连线的桌面成为历史。如今,蓝牙已经成为最庞大的无线通讯技术之一,被应用在智能家居、智能穿戴设备、安防设备、远程遥控等各类产品中,并逐渐渗透到各个行业及领域。可以说蓝牙已经融入进我们生活的方方面面,悄无声息地改变着我们的生活习惯,让我们的日常生活变得更加便利。
不过,蓝牙技术的一路发展可谓坎坷曲折,从1.0到4.2 再到现在的5.2,这是一个不平凡的历程。
1.1 蓝牙技术发展历程
第一代蓝牙:关于短距离通讯早期的探索
1999 年:蓝牙 1.0
早期的蓝牙 1.0 A 和 1.0B 版存在多个问题,有多家厂商指出他们的产品互不兼容。同时,在两个设备“链接”(Handshaking)的过程中,蓝牙硬件的地址(BD_ADDR)会被发送出去,在协议的层面上不能做到匿名,造成泄漏数据的危险。
因此,当 1.0 版本推出以后,蓝牙并未立即受到广泛的应用。除了当时对应蓝牙功能的电子设备种类少,蓝牙装置也十分昂贵。
2001 年:蓝牙 1.1
蓝牙 1.1 版正式列入 IEEE 802.15.1 标准,该标准定义了物理层(PHY)和媒体访问控制(MAC)规范,用于设备间的无线连接,传输率为 0.7Mbps。但因为是早期设计,容易受到同频率之间产品干扰,影响通讯质量。
2003 年:蓝牙 1.2
蓝牙 1.2 版针对 1.0 版本暴露出的安全性问题,完善了匿名方式,新增屏蔽设备的硬件地址(BD_ADDR)功能,保护用户免受身份嗅探攻击和跟踪,同时向下兼容 1.1 版。
第二代蓝牙:发力传输速率的 EDR 时代
2004 年:蓝牙 2.0
蓝牙 2.0 是 1.2 版本的改良版,新增的 EDR(Enhanced Data Rate)技术通过提高多任务处理和多种蓝牙设备同时运行的能力,使得蓝牙设备的传输率可达 3Mbps。
蓝牙 2.0 支持双工模式:可以一边进行语音通讯,一边传输文档/高质素图片。
2007 年:蓝牙 2.1
蓝牙 2.1 新增了 Sniff Subrating 省电功能,将设备间相互确认的讯号发送时间间隔从旧版的 0.1 秒延长到 0.5 秒左右,从而让蓝牙芯片的工作负载大幅降低。
第三代蓝牙:High Speed,传输速率高达 24Mbps
2009 年:蓝牙 3.0
蓝牙 3.0 新增了可选技术 High Speed,High Speed 可以使蓝牙调用 802.11 WiFi 用于实现高速数据传输,传输率高达 24Mbps,是蓝牙 2.0 的 8 倍,轻松实现录像机至高清电视、PC 至 PMP、UMPC 至打印机之间的资料传输。
蓝牙 3.0 的核心是 AMP(Generic Alternate MAC/PHY),这是一种全新的交替射频技术,允许蓝牙协议栈针对任一任务动态地选择正确射频。
功耗方面,蓝牙 3.0 引入了 EPC 增强电源控制技术,再辅以 802.11,实际空闲功耗明显降低。
此外,新的规范还加入 UCD 单向广播无连接数据技术,提高了蓝牙设备的相应能力。
第四代蓝牙:主推“ Low Energy”低功耗
2010 年:蓝牙 4.0
蓝牙 4.0 是迄今为止第一个蓝牙综合协议规范,将三种规格集成在一起。其中最重要的变化就是 BLE(Bluetooth Low Energy)低功耗功能,提出了低功耗蓝牙、传统蓝牙和高速蓝牙三种模式。
2013 年:蓝牙 4.1
蓝牙 4.1 在传输速度和传输范围上变化很小,但在软件方面有着明显的改进。此次更新目的是为了让 Bluetooth Smart 技术最终成为物联网(Internet of Things)发展的核心动力。
2014 年:蓝牙 4.2
蓝牙 4.2 的传输速度更加快速,比上代提高了 2.5 倍,因为蓝牙智能(Bluetooth Smart)数据包的容量提高,其可容纳的数据量相当于此前的10倍左右。
蓝牙技术变迁历史
第五代蓝牙:开启「物联网」时代大门
2016 年:蓝牙 5.0
蓝牙 5.0 在低功耗模式下具备更快更远的传输能力,传输速率是蓝牙 4.2 的两倍(速度上限为 2Mbps),有效传输距离是蓝牙 4.2 的四倍(理论上可达 300 米),数据包容量是蓝牙 4.2 的八倍。
支持室内定位导航功能,结合 WiFi 可以实现精度小于 1 米的室内定位。针对 IoT 物联网进行底层优化,力求以更低的功耗和更高的性能为智能家居服务。
低功耗版蓝牙与经典版蓝牙参数
2019 年:蓝牙 5.1
蓝牙 5.1 新增「寻向(direction finding)功能」,配合蓝牙近接(proximity)技术,即可让设备更容易被侦测发现,同时将蓝牙定位的精准度提升到厘米级,借此应用在小型蓝牙设备中实现定位。如此一来,大家在丢失了AirPods这类小巧的蓝牙配件的时候,也就更容易找到了。当然,蓝牙5.1的寻向功能并不只是用于寻找物件,还可以用户更好的室内导览、信息提供等用途。
2020 年:蓝牙 5.2
蓝牙5.2的新特性主要体现在3个方面:增强型ATT协议;LE功耗控制;LE同步信道,其中最引人注目的是下一代蓝牙音频LE Audio的颁布。LE Audio不仅支持连接状态及广播状态下的立体声,还将通过一系列的规格调整增强蓝牙音频性能,包括缩小延迟,通过LC3编解码增强音质等。在通过LE实现短距离万物互联后,加上LE Audio,这将使得蓝牙在物联网时代获得彻底新生和腾飞。
1.2 蓝牙关键技术点
Bluetooth的主要技术特点:
(1)、工作频段:2.4GHz的ISM频段,无需申请许可证。大多数国家使用79个频点,载频为(2402+k)MHz(k=0,1, 2…78),载频间隔1MHz。采用TDD时分双工方式。
(2)、传输速率:BR/EDR 1M/2M/3M bps , BLE 1M/2M bps
(3)、调试方式:GFSK
(4)、采用跳频技术:跳频速率为1600跳/秒,在建连时(包括寻呼和查询)提高为3200跳/秒。蓝牙通过快跳频和短分组技术减少同频干扰,保证传输的可靠性。
(5)、语音调制方式:连续可变斜率增量调制(CVSD,Continuous Variable Slope Delta Modulation),抗衰落性强,即使误码率达到4%,话音质量也可接受。
(6)、支持电路交换和分组交换业务:蓝牙支持实时的同步定向联接(SCO链路)和非实时的异步不定向联接(ACL链路),前者主要传送语音等实时性强的信息,后者以数据包为主。语音和数据可以单独或同时传输。蓝牙支持一个异步数据通道,或三个并发的同步话音通道,或同时传送异步数据和同步话音的通道。每个话音通道支持64kbps的同步话音;异步通道支持723.2/57.6kbps的非对称双工通信或433.9kbps的对称全双工通信。
(7)、支持点对点及点对多点通信:蓝牙设备按特定方式可组成两种网络:微微网(Piconet)和分布式网络(Scatternet),其中微微网的建立由两台设备的连接开始,最多可由八台设备组成。在一个微微网中,只有一台为主设备(Master),其它均为从设备(Slave),不同的主从设备对可以采用不同的链接方式,在一次通信中,链接方式也可以任意改变。几个相互独立的微微网以特定方式链接在一起便构成了分布式网络。所有的蓝牙设备都是对等的,所以在蓝牙中没有基站的概念。
2.蓝牙连接过程
2.1 BR/EDR 连接过程(ACL连接)
步骤2 feature 交换
步骤3 LM发送连接请求
步骤4 接受连接或者角色交换【optional】
步骤5 使能自适应频率选择功能(AFH)【optional】
步骤6 鉴权请求【optional
步骤7 配对鉴权 或 鉴权【optional】
如果在步骤6中,host收到controller的HCI_link_Key_Request请求事件后,本地没有对端设备的link key。则将向controller回复HCI_Link_Key_Request_Negative_Reply。
然后,将有LM层发起配对过程,下图是传统配对流程图。
如果在步骤6中,host收到controller的HCI_link_Key_Request请求事件后,本地存储有对端设备的link key。则将向controller回复HCI_Link_Key_Request_ Reply。然后双方进行鉴权过程。
步骤8 加密【optional】
当完成了步骤7以后,加密流程可以被启动。
步骤9 连接完成
链路层连接完成后,将会向host发送HCI_Connection_Complete事件。Host收到该事件后,可以进行接下来的服务级连接和操作。
步骤10 连接断开
当连接不再需要保持时,任何一端可以主动断开连接。通过host层下发HCI_Disconnect命令给controller来进行ACL连接的断开。
2.2 BR/EDR配对流程
BR/EDR配对的目的是为了协商他们共同的link key,用于两个设备之间的鉴权和数据加密目的。
在BR/EDR中,配对流程都是在芯片(controller)中实现的。在BLE中,配对过程是在host层实现的。
BR/EDR的配对过程分为legacy pairing 和 security simple pairing。只有双方均支持SSP的时候,才能启动SSP配对过程,否则双方启动legacy pairing。
2.2.1 Legacy pairing
2.2.2 security simple pairing
安全简单配对主要分为4个阶段:
n IO能力交换
两个设备之间通过IO能力交换。来确定下面的阶段要具体使用的身份验证模型:
Numeric comparison, Passkey entry, Out of band.
n 公钥交换
n 认证阶段1 – 身份认证
认证阶段1有三种模型,可以通过使用 Numeric Comparison 、 Passkey Entry 、 OOB 这三种鉴权模型之一进行身份验证,鉴权模型的选择取决于两个设备的IO能力的组合。
Numeric Comparison:当两个设备都具有输出功能时,或者其中一个设备没有输入或输出功能,则将执行数字比较步骤。如果两个设备都有输出功能,则此步骤需要向用户显示确认值这个值应该显示到步骤8结束为止;如果一个或两个设备没有输出功能,则使用相同的协议,但是协议栈Host将跳过要求用户确认的环节,这就是Just Works模型。
其流程图如下,该图省略了用户确认数字的计算过程:
此时,一般会在UI界面上弹窗,让用户进行确认。
Passkey Entry:在如下两种情况下使用Passkey Entry模型执行省份验证当一个设备仅有数字输入,而另一个设备具有显示或数字输入能力当两个设备都仅具有数字输入能力。
流程图如下:
Out of Band:只有当两个设备都有一些OOB信息要使用时,OOB身份验证才会完成。 此身份验证方式不需要用户参与。由于市面上使用该方法验证省份进行配对的蓝牙设备比较少,这里就不做深入分析了。
n 认证阶段2 – DHKey Check
必选步骤,一旦设备经过身份验证,并且DHKey计算已经完成(通过步骤6交换的公钥计算得到的),就会检查生成的DHKey值。如果成功,那么这两个设备都将完成向用户显示信息的操作,因此从Controller向Host发送消息通知双方停止显示此信息。
Link Key计算
简单的配对完成,链接密钥(Link Key)就可以从DHKey中计算出来,这应该用作标准相互身份验证的输入,并通过HCI事件上报Host保存。
对应的HCI报文如下图:
启动加密
必选步骤,鉴权随着Link Key的上报就完成了,那接下来Host就可以使用标准方法对数据交互进行加密。
鉴权加密流程成功完成也即是SSP简单配对流程结束,接下来蓝牙l2cap链路就可以安全地建立连接了。
当我们两个设备之间配对过以后,再次连接则不需要再次配对,直接进行启动加密即可。
2.3 BLE连接过程
2.3.1 BLE 链路层连接过程(ACL连接)
2.3.2 BLE 配对鉴权
BLE的配对鉴权在host层的SMP协议中实现,一般在上述ACL连接完成后进行。大体流程如下:(Vol 3, Part H Security Manager Specification)
文章来源:https://www.toymoban.com/news/detail-845834.html
文章来源地址https://www.toymoban.com/news/detail-845834.html
到了这里,关于蓝牙连接及安全基础的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!