目录
写在前面
简介
核心系统架构
主机(host)架构模块
BR/EDR/LE控制器架构
AMP控制器架构
数据传输架构
核心运输承载
传输架构实体
BR/EDR通用数据包
LE通用数据包
物理信道
BR/EDR物理信道
LE物理信道
物理链路
逻辑链路与逻辑传输
L2CAP信道
蓝牙安全概述
安全架构
在学习蓝牙配对流程的过程中,发现配对跟所属版本和蓝牙控制器类型相关系,现蓝牙使用的控制器有ER/EDR,LE,AMP三类,其中ER/EDR用于传统蓝牙,LE用于低功耗蓝牙,AMP用于网络协议。所以在相应的蓝牙的安全管理也有可能会不同。所以感觉有必要把蓝牙的架构梳理一遍。
这篇协议基本上是参考蓝牙核心协v5.0议进行的翻译,并且只选取了我认为重要的部分,如果需要深入详细的了解,请自行参考核心协议。如有不当的地方欢迎指正。
蓝牙无线技术是一种短程通信系统,旨在取代连接便携式或固定电子设备的电缆。蓝牙无线技术的关键特性是健壮性,低功耗和低成本。核心规范的许多功能都是可选的,可以实现产品差异化。
蓝牙核心系统由主机和一个或多个控制器组成。主机是一个逻辑实体,定义为非核心配置文件下方和主机控制器接口(HCI)上方的所有层。Controller是一个逻辑实体,定义为HCI以下的所有层。主机和控制器的实现可以包含HCI的各个部分。在此版本的核心规范中定义了两种类型的控制器:主控制器和辅助控制器。
蓝牙核心的实现只有一个主控制器,它可以是以下配置之一:
蓝牙核心系统由主机,主控制器和零或多个辅助控制器组成,如下图所示:
蓝牙BR/EDR核心系统的最小实现包括蓝牙规范定义的四个最低层和相关协议以及一个公共服务层协议:服务发现协议(SDP),和通用访问配置协议(GAP)组成。蓝牙LE核心系统的最小实现覆盖了由蓝牙规范定义的四个最低层和相关协议以及两个公共服务层协议:安全管理器(SM)和属性协议(ATT),以及通用属性协议(GATT)和通用访问协议(GAP)。蓝牙BR/EDR/LE控制器的实现则包括上述两种最小实现。
完整的蓝牙应用程序需要许多蓝牙规范中定义的附加服务和更高层协议,比如A2DP,HFP,AVRCP等等。
上图显示了蓝牙的整个核心架构,每个块都有相关的通信协议。链路管理器(LMP),链路控制器(BB)和BR/EDR射频组成基本的BR/EDR控制器。链路层规范(LL)和LE射频(PHY)组成基本的LE控制器。
L2CAP,SDP和GAP组成BR/EDR主机。L2CAP,SMP,ATT,GAP和GATT组成LE主机。BR/EDR/LE主机组合来自每个相应主机的块集。
每个蓝牙的实体(经典蓝牙或低功耗蓝牙)都会选取如下的部分或者全部的模块:
用的不多,这里就不过多介绍了
蓝牙数据传输系统遵循分层架构。蓝牙系统的这种结构描述了蓝牙核心传输层,包括L2CAP信道。所有蓝牙操作模式都遵循相同的通用传输架构,如下图:
蓝牙核心系统为服务协议和应用数据的传输提供了许多标准流量承载,如下图所示。
上图中,逻辑链路使用关联逻辑传输的名称和后缀来命名,后缀表示传输的数据类型。(C表示承载LMP或LL消息的控制链路,U表示承载用户数据的L2CAP链路(L2CAP PDU),S表示承载无格式同步或同步数据的流链路。)后缀通常从逻辑链路中删除而不引入模糊性因此,对于默认ACL逻辑传输的引用可以解析为在讨论LMP协议的情况下的ACL-C逻辑链路,在讨论LL协议的情况下的LE-C逻辑链路,AMP-在讨论PAL协议的情况下的C逻辑链路,或在讨论L2CAP层时的ACL-U,LE-U或AMP-U逻辑链路。
蓝牙传输架构实体如下图所示:
BR/EDR物理传输封装了BR/EDR物理信道。BR/EDR物理传输使用BR/EDR通用数据包结构。LE物理传输封装了LE物理信道。LE物理传输使用LE通用分组结构。
BR/EDR通用分组结构反映了蓝牙BR/EDR系统中的架构层。BR/EDR数据包结构旨在最佳地用于正常操作,结构如下图:
LE射频操作基于三个PHY并且使用两种调制方案。下表总结了每个LE PHY的属性。传输的每个数据包使用单个PHY。每个PHY使用单一调制方案。其中两个PHY是未编码的,也就是说,每个位直接映射到数据包中的比特位;而第三个PHY是有纠错编码的,有两种编码方案:S=8和S=2,其中S是每比特的符号数。
LE 不编码PHY的数据包结构设计用于正常操作的最佳使用,如下图:
LE编码PHY的数据包结构设计用于扩展范围操作的最佳使用,如下图:
蓝牙规范定义了许多类型的物理信道。所有蓝牙物理信道的特征在于一组PHY频率与时间参数相结合并受空间考虑的限制。对于基本和适应的微微网物理信道,跳频用于周期性地改变频率以减少干扰的影响并且出于监管原因。
蓝牙BR/EDR系统和LE系统在使用物理信道的方式上略有不同。
在BR/EDR核心系统中,对等设备使用共享物理信道进行通信。为了实现这一点,他们的收发器需要同时调谐到相同的PHY频率,并且它们需要在彼此的标称范围内。
鉴于RF载波的数量是有限的并且许多蓝牙设备可能在相同的空间和时间区域内独立操作,因此两个独立的蓝牙设备很可能将其收发器调谐到相同的RF载波,从而产生物理信道碰撞。为了减轻这种冲突的不良影响,物理信道上的每个传输都以访问码开始,该访问码被调谐到物理信道的设备用作相关码。该频道访问代码是物理频道的属性。访问代码出现在每个传输的数据包的开头。
定义了几个BR/EDR物理信道。每个都经过优化,用于不同的目的。这些物理信道中的两个(基本微微网信道和自适应微微网信道)用于连接设备之间的通信,并与特定微微网相关联。其他BR/EDR物理信道用于发现(查询扫描信道)和连接(页面扫描信道)蓝牙设备。设备使用同步扫描物理信道来获得关于无连接从属广播物理链路的定时和频率信息,或者恢复当前的微微网时钟。
蓝牙设备在任何给定时间只能使用一个BR/EDR物理信道。为了支持多个并发操作,设备使用信道之间的时分复用。以这种方式,蓝牙设备可以看起来在几个微微网中同时操作,以及可发现和可连接。
每当蓝牙设备与物理信道的定时,频率和访问代码同步时,它就被称为“连接”到该信道。蓝牙规范假设设备只能随时连接到一个物理信道。
在LE核心系统中,两个蓝牙设备使用共享物理信道进行通信。为实现这一点,他们的收发器需要同时调谐到相同的PHY频率,并且它们需要在彼此的标称范围内。
鉴于PHY信道的数量是有限的,并且许多蓝牙设备可以在相同的空间和时间区域内独立操作,很可能两对独立的蓝牙设备将其收发器调谐到相同的PHY信道,导致碰撞与使用访问代码识别微微网的BR/EDR不同,LE使用随机生成的访问地址来识别设备之间的物理信道。如果两个设备碰巧在同一区域中共享相同的PHY信道,则目标设备访问地址被用作相关器以确定通信所针对的设备。
定义了三个LE物理信道。每个都经过优化,用于不同的目的。LE微微网信道用于连接的设备之间的通信,并与特定的微微网相关联。LE广告频道用于向LE设备广播。这些广播可用于发现,连接或将用户数据发送到扫描或启动设备。周期性物理信道用于以指定间隔在周期性广播中将用户数据发送到扫描设备。
LE设备在任何给定时间只能使用这些LE物理信道中的一个。为了支持多个并发操作,设备使用信道之间的时分复用。通过这种方式,蓝牙设备可以看起来支持连接的设备,同时发送广播。
每当LE设备与物理信道的定时和频率同步时,它就被称为与该信道连接或同步。蓝牙规范假定设备一次只能连接到一个物理信道。
物理链路表示蓝牙设备之间的基带连接。物理链路始终与一个物理信道相关联(尽管物理信道可能支持多个物理链路)。在蓝牙系统内,物理链路是虚拟概念,其在发送分组的结构内没有直接表示。
在BR/EDR中,访问码包字段与主蓝牙设备的时钟和地址一起用于识别物理信道。在LE中,访问地址和信道映射用于识别物理信道。对于BR/EDR和LE,数据包的后续部分没有直接识别物理链路。相反,可以通过与逻辑传输相关联来识别物理链路,因为每个逻辑传输仅在一个物理链路上接收。
某些物理链接类型具有可以修改的属性。一个例子是链路的发射功率。其他物理链接类型没有可修改的属性。在具有可修改属性的物理链路的情况下,LM协议(BR/EDR)用于调整这些属性。由于LM协议(BR/EDR)在更高层(通过逻辑链路)得到支持,因此通过来自传输LM信令的逻辑链路的含义来识别适当的物理链路。
有多种逻辑链接可用于支持不同的应用程序数据传输要求。每个逻辑链路与逻辑传输相关联,逻辑传输具有许多特征。这些特征包括流控制,确认/重复机制,序列编号和调度行为。逻辑传输能够承载不同类型的逻辑链路(取决于逻辑传输的类型)。在一些蓝牙逻辑链路的情况下,这些链路被复用到同一逻辑传输上。逻辑传输可以由基本或适应的微微网物理信道上的活动物理链路承载。
在分组报文头部中携带逻辑传输标识和实时(链路控制)信令,并且对于一些逻辑链路,在有效负载报头中携带标识。
下表列出了所有逻辑传输类型,支持的逻辑链路类型,物理链路和物理信道可以支持的类型,以及逻辑传输目的的简要说明:
L2CAP提供多路复用角色,允许许多不同的应用程序共享ACL-U或AMP-U逻辑链路。应用程序和服务协议使用面向通道的接口与L2CAP连接,以创建与其他设备上的等效实体的连接。
通过信道标识符(CID)向其客户端标识L2CAP信道端点。这由L2CAP分配,并且任何设备上的每个L2CAP信道端点具有不同的CID。
L2CAP信道可以被配置为向应用提供适当的服务质量(QoS)。L2CAP将信道映射到ACL-U逻辑链路LE-U或AMP-U逻辑链路之一。
L2CAP支持面向连接的通道和面向组的其他通道。面向组的信道可以映射到ASB-U逻辑链路上,或者实现为依次通过ACL-U逻辑链路迭代传输到每个成员。
除了创建,配置和拆除信道之外,L2CAP的主要作用是将来自信道客户端的业务数据单元(SDU)复用到ACL-U,LE-U或AMP-U逻辑链路上,并执行一个简单的调度级别,根据相对优先级选择SDU。
L2CAP可以为对等L2CAP层提供每信道流控制。建立通道时,应用程序选择此选项。L2CAP还可以提供增强的错误检测和重传,以降低传递给应用程序的未检测错误的概率,以及当基带层对ACL-U逻辑执行刷新时从用户数据的部分丢失中恢复链接。
在存在HCI的情况下,L2CAP还需要将L2CAP SDU分段为适合基带缓冲器的片段,并且还要在HCI上操作基于令牌的流控制过程,仅在允许时将片段提交到基带。这样做。这可能会影响调度算法。
蓝牙安全模型包括五个不同的安全功能:配对,绑定,设备身份验证,加密和消息完整性。
蓝牙核心安全架构随着时间的推移不断发展。最初,配对使用基于SAFER +的E21或E22算法。此配对版本称为“BR/EDR传统配对”。设备认证最初基于E1算法,该算法也基于SAFER+。加密利用源自Massey-Rueppel算法的E0算法。加密消息完整性也没有规定。尽管CRC提供了一些完整性保护,但不会考虑提供加密完整性,因为它很容易伪造。
核心规范v2.1,EDR引入了Secure Simple Pairing,它采用了FIPS认可的算法(SHA-256,HMAC-SHA-256和P-192椭圆曲线),并引入了四种关联模型:Just Works,Numeric Comparison,Passkey Entry和Out of Band。引入安全简单配对时,设备身份验证和加密保持不变。
核心规范v3.0,HS增加了对AMP的支持。
核心规范v4.0,增加了LE的整个安全模型,但没有改变BR/EDR或AMP的任何安全功能。
核心规范v4.1,为BR/EDR物理传输添加了安全连接功能,该功能将安全简单配对升级为使用P-256椭圆曲线,设备认证使用FIPS认可的算法(HMAC-SHA256和AES-CTR)。安全连接还添加了消息完整性(AESCCM)。
核心规范v4.2,为LE物理传输添加了安全连接功能,升级LE配对以使用FIPS认可的算法(AES-CMAC和P-256椭圆曲线),并使数字比较关联模型适用于蓝牙LE物理传输。它还包括在物理传输上使用安全连接生成的密钥的规定,以排除用户在另一个物理传输上第二次配对的需要。蓝牙核心规范4.0和4.1中定义的LE配对称为LE传统配对。
BR/EDR和AMP的安全密钥层次结构如下图所示。密钥层次结构根据物理链路是使用安全连接还是传统安全过程和算法而有所不同:
LE的安全密钥层次结构下图所示。密钥层次结构根据物理链路是使用LE安全连接还是LE传统配对过程和算法而不同:
整个蓝牙架构基本情况就描述到这里,详细请参考核心规范。
如果有相关资料,我都会通过网盘分享出来,需要的请到我的博客<蓝牙学习笔记(序)>最下面的网盘链接中下载!