蓝牙核心规范(V5.2)7.3-深入详解之GAP

举报
心跳包 发表于 2021/11/12 23:29:36 2021/11/12
【摘要】 蓝牙篇之蓝牙核心规范(V5.2)深入详解汇总 目录 1.GAP(Generic Access Profile)的目的是什么? 2.协议栈 3 协议角色  4.蓝牙设备地址(BD_ADDR)   5.蓝牙设备名称(用户友好的名称) 5.配对   6.物理传输方式 7.空...

蓝牙篇之蓝牙核心规范(V5.2)深入详解汇总


目录

1.GAP(Generic Access Profile)的目的是什么?

2.协议栈

3 协议角色 

4.蓝牙设备地址(BD_ADDR) 

 5.蓝牙设备名称(用户友好的名称)

5.配对 

 6.物理传输方式

7.空闲模式程序–BR/EDR物理传输

8.操作模式和程序–LE物理传输

9.广播和扫描响应数据格式

10.GATT服务器的GAP服务和特性 


 

1.GAP(Generic Access Profile)的目的是什么?

介绍与传输和应用程序配置文件要使用的模式和访问过程相关的定义、建议和通用要求。

描述设备如何处于待机和连接状态,以确保蓝牙设备之间始终可以建立链接和通道,并可以实现多模式操作。特别关注发现、链接建立和安全程序。

陈述对用户界面方面的要求,主要是编码方案和程序和参数的名称,以保证令人满意的用户体验。

2.协议栈

 

3 协议角色 

通过BR/EDR物理传输进行操作时的角色

         在GAP中,为了描述BR/EDRGAP角色中两个设备之间发生的蓝牙通信,使用甲方(建立链接时的分页设备或建立链接上的启动器)和乙方(分页设备或接受者)的通用符号。对于给定的过程,是启动设备发现、启动物理链路的建立或在现有链路上发起事务的一方。

        此协议处理与发现和连接(链接和连接建立)相关的两个设备之间的程序,以及(至少)一个设备在开始所述的程序之前建立了链接(可能到第三设备)的情况。

         发起者和接受者通常操作通用程序根据此协议或参考此协议的其他协议。如果接受方同时根据多个协议进行操作,此协议描述如何处理此问题的通用机制。

 在LE物理传输上操作时的角色

为在LE物理传输上操作的设备定义了四个GAP角色:

•广播者
•观察着
•外围设备
•中心设备

定义在LE物理传输上操作时对每个GAP角色的物理层和链路层功能的遵从性要求。

 

“M”用于强制性支持(用于配置文件中应使用的功能);

“O”表示可选的支持(用于可在配置文件中使用的功能);

“C”用于条件支持(用于在支持某种其他功能时应使用的功能);

“E”用于排除在配置文件角色内(用于单元可能支持但不得在配置文件角色中使用的功能);

 C1:如果支持被动扫描,则可选,否则为强制扫描。

C2:如果支持连接参数请求过程,则具有强制性,否则是可选的

 广播角色

在广播器角色中运行的设备被称为广播器,并且应具有发射器,并可以具有接收器。

 观察角色

在观察者角色中运行的设备被称为观察者,并且应具有一个接收器,并可能具有一个发射器。

 外围设备角色、

任何接受使用任何连接建立程序建立LE活动物理链路的设备都被称为处于外围角色。在外围角色中操作的设备将处于链路层连接状态中的从角色。在外围设备角色中操作的设备被称为外围设备。外围设应具有发射机和接收器

中心设备角色

支持中心角色的设备将启动LE活动物理链接的建立。在中心角色中操作的设备将处于链路层连接状态中的主角色。在中心角色中操作的设备被称为中心角色。中心装置应同时配备发射机和接收器。

多GAP角色中的并发操作 

如果由控制器支持,则设备可以同时在多个GAP角色中操作。在使用任何过程或模式之前,主机应从控制器中读取受支持的链路层状态和状态组合。

4.蓝牙设备地址(BD_ADDR) 

 BD_ADDR是蓝牙设备使用的地址。它在设备发现过程中从远程设备接收。

 当在UI级别上提到蓝牙地址时,应使用术语“蓝牙设备地址”。

在基带级别上,BD_ADDR被表示为48位。在链路层上,公共和随机设备地址被表示为48位地址。

在UI级别上,蓝牙地址应以12个十六进制字符表示,可能分为由“:”(例如,“000C3E3A4B69”或“00:0C:3E:3A:4B:69”)分隔的子部分。在UI级别上,任何数字都应具有MSB->LSB(从左到右)的“自然”顺序。 

 5.蓝牙设备名称(用户友好的名称)

         BR/EDR/LE设备类型应具有一个蓝牙设备名称,无论执行名称发现过程的物理通道如何,该设备名称都应相同。

        蓝牙设备名称是蓝牙设备向远程设备公开的用户友好的名称。对于支持BR/EDR设备类型的设备,该名称是在LMP_NAME_RES中为响应LMP_NAME_REQ而返回的字符串。对于支持仅限le的设备类型的设备,该名称是设备名称特性中保存的字符串。

具有BR/EDR/LE设备类型的设备中的蓝牙设备名称

无论执行名称发现过程的物理通道如何,该设备名称都应相同。

对于BR/EDR物理通道,该名称将在LMP_NAME_RES中接收。对于LE物理通道,可以从定义的设备名称特征中读取该名称。

注:如果本地设备支持BR/EDR  ATT,远程设备可以通过ATT通过BR/EDRATT读取本地设备的设备名称特征。

在用户界面级别上的术语

当在UI级别上引用蓝牙设备名称时,应使用术语“蓝牙设备名称”。

 蓝牙名称的的长度

蓝牙设备名称最多可达248字节。它应根据UTF-8进行编码(因此,如果使用U+0000到U+007F范围之外的编码点,在UI级别输入的名称可能被限制为62个字符)。

设备不能期望通用远程设备能够处理蓝牙设备名称的前40个字符。如果远程设备的显示功能有限,则它可能只使用前20个字符。

 蓝牙密码钥(蓝牙PIN)

蓝牙密码密钥可用于在通过配对过程创建互链接密钥时相互验证两个蓝牙设备。该密码密钥可以用于配对过程来生成初始链接密钥

PIN可以在UI级上输入,但也可以存储在设备中;例如,在一个没有足够的MMI来输入和显示数字的设备的情况下。

用户界面级别的条款 

当在UI级别上提及蓝牙PIN时,术语“蓝牙应使用“密钥”。

 对于安全简单配对和安全管理器,蓝牙密码密钥是一个6位的数值。它表示为0x000000000-0x000F4023F(999999)范围内的整数值。

PIN码最多可达16个字符。为了充分利用安全性,所有的pin都应该是16个字符长。变量PIN应由从Unicode范围U+0000到U+007F内选择的字母数字字符组成。如果PIN包含任何十进制数字,则应使用Unicode基本拉丁字符(即U+0030到U+0039)进行编码。

设备类型

设备类别是在BR/EDR物理传输上的设备发现过程中接收到的一个参数,指示设备的类型。“设备类别”参数仅在使用BR/EDR物理传输的BR/EDR和BR/EDR/LE设备上使用。

有些设备提供多个服务,并且给定的服务可以由不同的设备类型提供。因此,设备类型与受支持的服务没有一对一的关系。主设备类和次要设备类字段不应用于确定设备是否支持任何特定的服务。它可以用于在发出服务发现请求之前最有可能支持所需服务的设备的指示,并且可以用于在支持同一服务的多个设备中进行选择时指导用户。

 外观特征

外观特征包含一个16位的数字,可以映射到描述设备发现过程中设备的物理表示的图标或字符串。它是位于设备的GATT服务器上的GAP服务的一个特征。

外观特征值应映射到一个图标或字符串或类似于向用户传达对设备的可视化描述的东西。这允许用户纯粹通过视觉外观来确定发现哪些设备。如果显示一个字符串,则应将该字符串转换为用户为设备选择的语言。

 广播码

Broadcast_Code参数用于支持加密的BIS。它用于加密BIS传输时数据的加密过程和接收BIS时解密数据的过程。

当在UI级别上提到Broadcast_Code参数时,应使用术语“蓝牙隐私代码”。

在除UI以外的所有级别上,广播代码参数都应表示为一个128位的值。从字符串到数字的转换应通过在UTF-8中表示字符串,将结果字节放在从最重要的位开始的值的8位字段中,然后在必要时在最重要的位中填充零。例如,字符串“BørneHouse”表示为值0x00000000_6573756F_4820656E_72B8C342

5.配对 

        在BR/EDR物理链接上的配对是在LMP级别上定义的。

        在LE物理链接上的配对由安全管理器规范定义。

       用户启动绑定过程并输入密钥,在两个蓝牙设备之间创建bond(可能还有安全关系),或者在建立过程中请求用户输入密钥,因为这些设备事先没有共享公共链接密钥。在第一种情况下,用户被称为执行“绑定(通过输入密码密钥)”,而在第二种情况下,用户被称为“使用密码密钥进行身份验证”。

 6.物理传输方式

 发现模式

不可发现的模式

可发现模式

有限的可发现模式

通用可发现模式

连接模式

不可连接模式

可连接模式

绑定模式

非绑定模式

绑定模式

 同步模式

 非同步模式

同步模式

 发现模式

当蓝牙设备处于不可发现的模式时,它不会响应查询。

据说,当蓝牙设备处于有限的可发现模式或一般可发现模式时,即可发现或设置为可发现模式。即使蓝牙设备被发现,它也可能由于其他基带活动而可能无法响应查询(例如,预留的同步插槽应该优先于响应包,同步链接可能会阻止返回响应)。不响应查询的蓝牙设备被称为静默设备。

发现的速度取决于蓝牙设备的查询扫描间隔的配置和查询扫描类型。主机能够根据功耗、带宽和所需的发现速度之间的权衡来配置这些参数。

不可发现的模式 

当蓝牙设备处于不可发现的模式时,它永远不能进入INQUIRY_SCAN状态。

 有限的可发现模式

有限的可发现模式应由只需要在有限的时间内、在临时条件下或在特定事件中被发现的设备使用。

使用有限的可发现模式有两个常见的原因:

  • 当向终端用户展示已发现设备时,远程设备使用通用查询程序优先排序或以有限可发现方式识别设备,因为通常用户正在与它们交互。
  • 有限的可发现模式还可用于允许远程设备使用有限的查询程序来过滤掉使用一般的可发现模式的设备。 

        蓝牙设备的有限可发现模式不得超过TGAP(104)。对有限查询访问码的扫描可以并行或与一般查询访问码的扫描顺序进行。当在有限的可发现模式下时,应使用以下选项之一。

 并行扫描

  • 当蓝牙设备处于有限的可发现模式时,当发现速度比功耗或带宽更重要时,它建议蓝牙设备至少每台TGAP(105)进入INQUIRY_SCAN状态,并使用交错查询扫描。
  • 但是,如果功耗或带宽很重要,但不是很重要,则建议蓝牙设备至少每一次TGAP(102)都进入INQUIRY_SCAN状态,并使用交错查询扫描。
  • 当功耗或带宽为关键时,建议蓝牙设备至少每次TGAP(102)都进入INQUIRY_SCAN状态,并使用非隔行查询扫描。
  • 在所有情况下,蓝牙设备应在TGAP(102)中至少进入一次INQUIRY_SCAN状态,并扫描GIAC和LIAC至少扫描TGAP(101)。
  • 当SCO或eSCO链路正在运行时,建议使用交错扫描,以显著减少可发现的时间。

顺序扫描

  • 当蓝牙设备处于有限的可发现模式时,应在TGAP(102)中至少进入一次INQUIRY_SCAN状态,扫描GIAC至少TGAP(101),在TGAP(102)中多次进入一次INQUIRY_SCAN状态,扫描LIAC至少TGAP(101)
  • 如果在有限的可发现模式下接收到查询消息,则进入INQUIRY_RESPONSE状态的条目将优先于下一个进入INQUIRY_SCAN状态的条目,直到查询响应完成。

 通用发现模式

通用可发现模式应用于需要连续发现或不需要特定情况的设备。

执行有限查询程序的设备将不会发现通用可发现模式下的设备。如果已知执行发现的设备将使用有限的查询程序,则不应使用通用可发现模式。

当蓝牙设备通常处于一般可发现模式,且发现速度比功耗或带宽更重要时,建议蓝牙设备至少每个TGAP(105)进入INQUIRY_SCAN状态,并使用交错查询扫描。

但是,如果功耗或带宽很重要,但不是很重要,则建议蓝牙设备至少每一次TGAP(102)都进入INQUIRY_SCAN状态,并使用交错查询扫描。

当功耗或带宽为关键时,建议蓝牙设备至少每次TGAP(102)都进入INQUIRY_SCAN状态,并使用非隔行查询扫描。

在所有情况下,蓝牙设备应在TGAP(102)中至少进入一次INQUIRY_SCAN状态,并扫描GIAC至少为TGAP(101)。

当SCO或eSCO链路正在运行时,建议使用交错扫描,以显著减少可发现的时间。

一般可发现模式下的设备不得响应LIAC的查询。

连接模式 

当蓝牙设备处于不可连接模式时,它不会响应寻呼。当蓝牙设备处于可连接模式时,它会响应寻呼。

连接的速度取决于蓝牙设备的页面扫描间隔的配置和页面扫描类型。主机能够根据功耗、带宽和所需的连接速度之间的权衡来配置这些参数。

不可连接模式

当蓝牙设备处于不可连接模式时,它永远不能进入PAGE_SCAN状态。

当蓝牙设备处于可连接模式时,应定期进入PAGE_SCAN状态。该设备使用蓝牙设备地址BD_ADDR执行页面扫描。连接速度是功耗/可用带宽和速度之间的权衡。蓝牙主机可以使用页面扫描间隔、页面扫描窗口和交错扫描参数来进行这些权衡。

当连接速度非常低时,应使用R0页面扫描重要信息,以及寻呼设备对蓝牙时钟。在这些条件下,分页是可能完成的在两次页面扫描窗口内。因为页面扫描间隔是与页面扫描窗口相同,任何其他流量都无法通过使用R0页面扫描时的蓝牙链接。在R0页扫描中,无法使用交错扫描。R0页面扫描是最高功率消费模式的运作。

当连接时间很关键,但另一个设备要么没有对蓝牙时钟的估计,或者当估计可能过时时,最好使用R1页面扫描和非常短的页面扫描间隔、TGAP(106)和交错扫描。

当连接时间重要但不够关键以牺牲大量带宽和/或功耗时,建议使用TGAP(107)或TGAP(108)作为扫描间隔。使用交错扫描将使连接时间减少一半,但可能使用两倍的功耗。在这种情况下,根据是否使用交错扫描,可以在页扫描间隔内完成分页。在这种情况下,蓝牙设备应进行页面扫描至少为TGAP(101)。

当SCO或eSCO链路正在运行时,建议使用交错扫描以显著减少连接时间。

绑定模式

关于绑定,蓝牙设备应处于不可绑定模式或可绑定模式。在可绑定模式下,蓝牙设备接受由远程设备发起的绑定,而在不可绑定模式下,它不接受。

当蓝牙设备处于不可绑定模式时,它不应接受导致连接的配对请求。处于不可绑定模式下的设备可能会接受不要求或不需要绑定的连接

不可绑定模式的设备应响应接收到的LMP_IN_RAND,原因不允许配对。

当两个设备都支持安全简单配对,且本地设备处于不可绑定模式时,本地主机应响应Authentication_Requirements参数请求专用连接或一般连接的负响应。

绑定模式

当蓝牙设备处于可绑定模式,且本地或远程设备都不支持安全简单配对时,本地设备应响应接收到的LMP_IN_RAND(如果有固定PIN,则响应LMP_IN_RAND)。

当两个设备都支持安全简单配对时,本地主机应积极响应用户的确认请求。

 同步模式

当蓝牙设备处于可同步模式时,它将为其活动的无连接从属广播数据包传输定时和频率信息。当蓝牙设备不可同步时,将不传输定时和频率信息。

主机能够根据带宽、对其他设备的潜在干扰、功耗和从端接收同步列车包所需的时间来配置同步列车间隔。

当蓝牙设备处于不可同步模式时,它永远不能进入同步传输子状态。

同步模式

当蓝牙设备处于可同步模式时,应使用TGAP(Sync_Train_Interval)的同步列车间隔进入同步传输子状态。

在实现可同步后,蓝牙设备应至少可同步TGAP(Sync_Train_Duration)。

7.安全方面的物理传输

认证

通用身份验证过程描述了当一个蓝牙设备向另一个蓝牙设备发起身份验证时,如何使用LMP身份验证和LMP配对过程,这取决于是否存在链路密钥以及是否允许配对。

 本地设备应在链路建立后启动认证。该远程设备可以在链路建立期间或之后启动安全性。

安全模式 

设备可以同时支持两种安全模式:对与不支持安全简单配对的远程设备向后兼容的安全模式2,以及对支持安全简单配对的设备的安全模式4。 

遗留安全模式适用于那些具有控制器或不支持SSP的主机的设备。

当远程蓝牙设备处于安全模式1时,它将永远不会启动任何安全过程(即,它将永远不会发送LMP_AU_RAND、LMP_IN_RAND或LMP_ENCRYPTION_MODE_REQ)。

安全模式2(服务级强制安全性)

当远程蓝牙设备处于安全模式2时,在接收到通道建立请求(L2CAP_ConnectReq)或自己启动通道建立过程之前,它将不会启动任何安全过程。是否启动了安全过程,取决于所请求的通道或服务的安全要求。

处于安全模式2中的蓝牙设备应使用至少以下属性对其服务的安全要求进行分类:

  • 授权需要
  • 身份验证需要
  • 加密

注意:安全模式1可以被认为(至少从远程设备的角度来看)是安全模式2的一种特殊情况,其中没有服务注册任何安全要求。

安全模式3(链路级强制安全性)

当远程蓝牙设备处于安全模式3时,它将在发送LMP_SETUP_COMPLETE之前启动安全程序。

安全模式3中的蓝牙设备可以根据主机中的设置(例如,只允许与预先配对的设备通信)来拒绝主机连接请求(使用LMP_NOT_ACCEPTED响应LMP_HOST_CONNECTION_REQ)。

 安全模式4(服务级别强制安全性)

安全模式4中的蓝牙设备应至少使用以下属性(按降低安全级别的顺序)对其服务的安全要求进行分类:

  • 经过验证的链接密钥需要
  • 未经验证的链接密钥需要
  • 安全性可选;仅限于特定服务

经过身份验证的链接密钥是一个链接键,其中使用了数字比较、带外或通键条目简单配对关联模型。经过身份验证的链接密钥对中间人(MITM)攻击有保护作用。为了确保在简单配对过程中创建了一个经过身份验证的链接密钥,Authentication_Requirements参数应该设置为“MITM保护必需”选项之一。一个未经身份验证的链接密钥是一个链接密钥,其中使用了安全简单配对关联模型。未经身份验证的链接密钥对MITM攻击没有保护作用。

当设备处于可绑定模式时,它应在进入可连接模式或建立链路之前启用安全简单配对模式.

安全模式4中的蓝牙设备在远程设备处于安全模式3时,应在链路建立时响应认证请求。

安全模式4的蓝牙设备在尝试访问远程设备提供的服务之前以及在授予向远程设备提供的服务之前强制执行其安全要求。服务访问可以通过L2CAP通道或通过L2CAP以上的协议建立的通道,如RFCOMM进行。

设备可能处于仅限安全连接使用的模式。在“仅安全连接”模式下,BR/EDR物理传输上的所有服务(允许具有安全模式4、0级的服务除外)都需要安全模式4、4级。当服务需要安全模式4、4级,并且物理传输不支持安全连接或请求未经身份验证的配对时,设备应拒绝新的传出和传入服务级别连接。

当不支持安全连接的物理传输,试图访问需要安全模式4,级别4的服务时,设备可以使用错误代码0x05(身份验证失败)断开ACL连接。

注意:一个设备可以同时操作多个物理传输——在这种情况下,所有的物理传输都需要同时启用仅限安全连接的模式。

访问远程服务的安全性(发起侧)

当响应设备不支持安全简单配对时,当启动设备请求用户输入PIN时,它可能会断开链接的连接。这可能是由于缺少L2CAP通道存在的时间超过特定于实现的时间量(例如,几秒钟)。当这种情况发生时,启动设备应允许用户完成输入PIN,然后重新启动配对过程。

1.访问远程服务所需的配对

当安全模式4的蓝牙设备通过面向连接的L2CAP信道启动对远程服务的访问且没有足够的链路密钥时,本地设备应在发送信道建立请求(L2CAP_ConnectReq或诸如RFCOMM建立请求等高级信道建立请求)之前执行配对程序并启用加密。

当安全模式4的蓝牙设备通过单播无连接L2CAP通道向远程服务传输数据且没有足够的密钥时,本地设备应在无连接L2CAP通道单播数据上执行配对程序并启用加密。

如果配对不成功,则本地设备不应发送信道建立请求。本地设备最多可以重试配对三次(3)。如果连续三次配对失败,本地设备应断开带有错误代码为0x05-认证失败的ACL链接。

如果生成的链路密钥至少不如预期或要求的类型,本地设备将建立失败,并可能断开错误代码0x05-身份验证失败。

2.访问远程服务所需的身份验证

当安全模式4的蓝牙设备通过面向连接的L2CAP信道启动对远程服务的访问,并且远程设备有足够的链路密钥时,它应在发送信道建立请求(L2CAP_ConnectReq或更高的层信道建立请求)之前对远程设备进行验证并启用加密。

当安全模式4的蓝牙设备通过无连接的L2CAP通道将单播数据传输到远程服务,并且应用需要安全,并且有足够的链路密钥,那么本地设备应在L2CAP无连接通道上传输单播数据之前验证远程设备并启用加密。

如果服务需要身份验证但没有成功,或者没有足够的链接密钥,则本地设备不得启用加密,也不得发送信道建立请求,也不得通过L2CAP无连接信道发送任何单播数据。然后,主机可以通知用户并提供执行配对。

3.交叉传输密钥的生成和分发

在启用加密并且两个设备都支持交叉传输密钥生成后,BR/EDR传输的主服务器可以执行LE密钥生成和分发

通过远程设备访问本地服务的安全性(响应端)

当远程设备试图访问处于安全模式4的蓝牙设备提供的服务,且存在足够的链路密钥且尚未执行身份验证时,本地设备应在收到信道建立请求之后但在发送信道建立确认(结果代码为0x0000或诸如RFCOMM的高级信道建立确认的L2CAP_ConnectRsp)之前,对远程设备进行身份验证并启用加密。

当L2CAP是用于所请求服务的信道建立协议时,响应设备应在收到L2CAP_ConnectReq后,由包含结果代码0x0001(连接挂起)的响应设备发送L2CAP_ConnectRsp信令包,该安全程序可能导致提示本地用户输入(例如,使用密码项或数值比较关联模型使用PIN或安全简单配对)。这将停止远程设备上的L2CAP RTX计时器(可能短至1秒),并将调用远程设备上的ERTX计时器,这至少持续时间为60秒。

1.通过远程设备访问本地服务所需的配对

当远程设备试图访问处于安全模式4的蓝牙设备提供的服务,并且由于链路密钥缺失或不足而需要配对时,本地设备应在收到信道建立请求和发送信道建立确认(结果代码为0x0000或RFCOMM等更高级的信道建立响应)之前,执行配对过程并启用加密。

如果配对不成功,则本地设备不得发送通道建立确认书。本地设备最多可以重试配对三次(3)。如果连续三次配对失败,则本地设备应断开0x0个错误代码0x05-认证失败的ACL链接。

如果生成的链路密钥至少不如预期或需要的类型,那么本地设备将失败的通道建立,并可能断开连接与错误代码0x05-身份验证失败。

2.通过远程设备访问本地服务所需的身份验证

如果认证不成功,则本地设备不得发送信道建立确认。主机此时可以通知用户并提供执行配对。

安全模式4中的蓝牙设备在远程设备处于安全模式3时,应响应链路建立过程中的认证和配对请求。但是,对远程设备的认证应在接收到信道建立请求之后执行,并在发送信道建立响应之前执行。

3.交叉传输密钥的生成和分发

在启用加密并且两个设备都支持交叉传输密钥生成后,BR/EDR传输的主服务器可以执行LE密钥生成和分发

身份验证失败后的简单配对

当两个设备都支持安全简单配对时,所有非sdp连接都会被加密,无论是否需要安全或设备是否被绑定。这两个设备之间的初始连接将通过安全简单配对产生一个链接键。根据是否执行了绑定和启动设备的安全策略,可以存储链接密钥。当存储链路密钥时,到同一设备的后续连接将使用身份验证,但如果远程设备已经删除了链路密钥,这可能会失败。表5.2定义了根据链接键的类型以及是否执行键合的操作。

 IO功能

一旦建立了连接,如果主机确定需要安全,并且两个设备都支持安全简单配对,则这些设备将执行IO能力交换。IO能力交换的目的是确定在简单配对的认证阶段第1阶段中使用的认证算法。

将输入/输出能力映射到IO能力

单个输入和输出能力被映射到单个IO能力,稍后用于确定将使用哪种身份验证算法。

当一个设备具有来自该远程设备的OOB身份验证信息时,它将在LMP_IO_CAPABILITY_RESPDU中指示它。当任何一台设备都有OOB信息时,都将使用OOB关联模型

主机可以允许链接管理器忽略IO功能,并通过将Authentication_Requirements参数设置为MITM保护不必需选项之一来使用自动接受的数字比较协议。

IO和OOB能力映射到身份验证阶段1的方法

确定在身份验证阶段1中使用的关联模型分三个步骤执行。

首先,设备查看在远程IO功能中接收到的OOB身份验证数据存在参数。如果任何一个设备都接收到了OOB身份验证数据,则将使用OOB关联模型。在简单配对的IO能力交换步骤中,由设备表示接收OOB信息的事件。

第二,如果两个设备都未接收到OOB认证数据,并且两个设备都将Authentication_Requirements参数设置为MITM保护不必需选项之一,认证阶段1的功能应好像两个设备的IO功能都设置为仅显示(例如,与两个设备上的自动确认进行数值比较)。

最后,如果两个设备都没有接收到OOB验证数据,如果一个或两个设备都将Authentication_Requirements参数设置为MITM保护必需选项之一,则IO和OOB功能将映射到表5.7中定义的验证阶段1方法。将Authentication_Requirements参数设置为MITM保护必需选项之一的主机应验证生成的链接密钥是经过验证的组合密钥。表5.7还列出了组合密钥是否导致经过身份验证或未经身份验证的链接密钥。

 带外(OOB)

带外机制也可用于通信发现信息以及与配对过程相关的其他信息。

 如果当一个或两个设备都有OOB身份验证数据时,简单配对失败,则两个设备都应丢弃OOB身份验证数据,而最初启动身份验证的设备应重新启动身份验证。尽管用户可能参与由两个设备的IO功能定义的身份验证,但当一个或两个设备的OOB身份验证数据失效时,回到带内关联模型将防止死锁情况。

 安全性数据库

安全模式4的蓝牙设备应使用以下级别属性(降低安全要求,以便与支持安全简单配对的远程设备配对时使用:

•4级,适用于具有以下属性的服务:
MITM保护要求

使用FIPS所需的链路和加密密钥具有128位等效强度批准的算法(不允许E0、不允许SAFER+和不允许P-192允许;加密密钥未缩短)

用户交互可接受
•3级,适用于具有以下属性的服务:
MITM保护要求

加密要求加密密钥至少具有56位等效强度,

用户交互可接受
•2级,适用于具有以下属性的服务:
MITM保护不需要

加密要求

至少使用56位等效强度的加密密钥
•1级,适用于具有以下属性的服务:
进行加密时,加密密钥不需要至少56位等效强度的MITM保护应使用enabled(已启用)

减少所需的用户交互
•0级:服务要求如下:
不需要MITM保护

不需要加密

不需要用户交互

安全模式4级0应仅用于以下情况:a)CID在CID0x0001、0x0003和0x003Fb)SDPC)L2CAP通道(CID0x0002)d)服务上发送的广播数据以及核心规范补充第C部分第1节中列出的服务类UUID和L2CAP通信类型的组合。 

7.空闲模式程序–BR/EDR物理传输

8.操作模式和程序–LE物理传输

 广播模式和观察程序

广播模式和观察程序允许两个设备使用广告事件以单向无连接的方式进行通信。

广播模式

广播模式提供了一种供设备在广告中发送无连接数据的方法

在广播模式下的设备应使用不可连接的广告事件发送数据。

广播模式下的设备可以通过排除广播器的地址来匿名发送不可连接和不可扫描的不可定向或不可连接和不可扫描的定向广告事件。

注意:一个设备在广播模式下发送的所有数据都被认为是不可靠的,因为没有来自可能已经接收到该数据的任何设备的确认。

该设备可以配置和启用多个独立的广告集。每个广告集都可能有一个独立的广告过滤策略。

观察程序

观察程序提供了一种设备接收信号的方法来自发送广告事件的设备的无连接数据。

执行观察程序的设备可以使用被动扫描或主动扫描来接收广告事件。

执行观察程序的设备也可以使用活动扫描来接收由使用可扫描广告事件进行广告的任何设备发送的扫描响应数据。

当执行“观察”程序的设备在广告事件中接收到可解析的私有地址时,该设备可以通过可解析的私有地址解析程序来解析该私有地址。

注意:在广播模式下的设备发送动态数据的使用情况下,接收设备应禁用控制器中的重复过滤功能,以便主机接收由控制器接收到的所有广告包。

 发现模式和过程

 所有设备都应处于不可发现模式或可发现模式之一。在可发现模式下的设备应处于一般的可发现模式或有限的可发现模式。无法发现处于不可发现模式下的设备。发现设备可找到以一般可发现模式或有限可发现模式运行的设备。

有些设备可能只使用传统的广告pdu来扫描广告事件。因此,建议使用带有扩展广告pdu的广告事件的设备也使用带有使用遗留广告pdu的广告事件的广告集。

如果设备处于一种可发现的模式,并且如果多个广告集使用相同的身份地址或相同的IRK,那么这些广告集也应共享相同的过滤策略。

不可发现的模式

任何正在执行常规发现过程或有限发现过程的设备都不会发现配置为不可发现模式的设备。

处于不可发现模式下的设备可以发送广告事件。如果设备发送广告事件,则不应在FlagsAD类型中设置“LE通用发现模式”标志或“LE有限发现模式”标志。

如果设备发送广告事件,则建议主机将控制器配置如下:

主机应将所有广告集的广告过滤策略设置为“仅来自白列表中设备的进程扫描和连接请求”或“来自所有设备的进程扫描和连接请求”。

•主机定义设置广告间隔。

有限发现模式

在有限的可发现模式下配置的设备可以由执行有限的或一般的设备发现过程的其他设备在有限的时间内被发现。当用户执行特定的操作时,设备通常会进入有限的可发现模式。

使用有限的可发现模式有两个常见的原因:

  • 可以使用有限的可发现模式,允许使用通用发现程序的远程设备在向最终用户展示已发现的设备时进行优先排序或以其他方式识别设备,因为通常,用户正在与它们交互。
  • 有限的可发现模式也可用于允许远程设备使用有限的发现程序,以使用一般的可发现模式过滤掉设备。

当设备处于外围设备角色时,该设备可能支持有限的可发现模式。虽然设备仅在广播器、观察器或中心角色中,但该设备不应支持有限的可发现模式。

处于有限可发现模式的设备应发送广告事件类型和广告数据,包括核心规范补充,并按描述设置了所有以下标志:

  • 将LE有限的可发现模式标志设置为1。
  • LE常规可发现模式标志设置为零。
  • 对于具有以下所有标志设置的唯一的设备类型的设备:a)“BR/EDR不支持”标志来设置一个。b)“同时使用LE和BR/EDR到相同设备容量(控制器)”标志设置为零。c)“同时LE和BR/EDR到相同设备容量(主机)”标志设置为零。

注:遗留广告事件经常使用的主机数据应该放在广告数据中,静态数据应该放在扫描响应数据中。

注:广告间隔的选择是功耗和设备发现时间之间的权衡。

该设备可以配置和启用多个独立的广告集。

通用发现模式

在一般可发现模式下配置的设备可以通过执行一般发现过程的设备不确定地发现。设备通常会自动进入一般的可发现的模式。

执行有限的发现过程的设备将不会发现处于一般可发现模式下的设备。如果已知执行发现的设备将使用有限的发现程序,则不应使用一般的可发现模式。

当设备处于外围设备角色时,该设备可能支持一般的可发现模式。虽然设备仅在广播器、观察者或中心角色中,但该设备不支持一般可发现模式。

有限的发现程序

执行有限发现过程的设备仅从有限可发现模式下的设备接收设备地址、广告数据和扫描响应数据。

只有当已知要发现的设备使用有限的可发现模式时,才应该使用有限的发现过程。当希望发现所有设备时,应使用通用发现程序,无论它们是使用有限的可发现模式还是通用的可发现模式。

 当设备处于中心角色时,该设备可能支持有限的发现过程。虽然设备仅在广播器、观察器或外围设备角色中,但该设备不应支持有限的发现程序。

建议该设备对其支持的所有phy进行扫描。

当主机执行有限的发现过程时,主机配置控制器如下:

1。主机应将扫描器过滤器策略设置为“处理所有广告数据包”。

2.主机设置扫描间隔和扫描窗口。

3.主机应将控制器配置为使用主动扫描。

主机应开始扫描广告包,并在扫描LE1MPHY和扫描LE编码PHY时继续扫描至少TGAP(lim_disc_scan_min),除非主机结束有限的发现程序。

9.广播和扫描响应数据格式

 广播、定期广告和扫描响应数据的格式如图所示。这些数据由重要部分和不重要部分组成。最重要的部分包含了一系列的AD结构。每个AD结构应有一个八位的长度字段,其中包含长度值,和一个长度八位的数据字段。数据字段的第一个八进位字段包含AD类型字段。数据字段中其余的长度-1八进制的内容取决于AD类型字段的值,它被称为AD数据。

 如果“长度”字段设置为零,则“数据”字段设为零八位字节。这只能允许提前终止重要部分。

10.GATT服务器的GAP服务和特性 

 GATT服务器应包含表12.1中GAP服务需求中定义的GAP服务。一个设备在GATT服务器中应该只有一个GAP服务的实例。GAP服务是一个基于GATT的服务,服务UUID作为在分配编号中定义的GAP服务。

 支持多个GAP角色的设备包含满足所支持角色的要求的所有特性。当设备在特性无效的角色中运行时,设备必须继续公开特性。

设备名称特性

设备名称特性应包含UTF-8字符串。当设备被发现时,设备名称特征值应不经认证或授权即可可读。当设备无法发现时,如果没有身份验证或授权,设备名称不应可读特性。设备名称特征值可以可写入。如果可写,身份验证和授权可以由更高级的规范定义,或者特定于实现。

 设备名称特征值的长度应为0至248八进制。一个设备应只有一个设备名称特性的实例。

 外观特征

外观特征定义了设备外观的表示。这使得发现设备能够使用图标、字符串或类似的方式向用户表示该设备。外观特征值应未经身份验证或授权即可可读。外观特征值可能是可写入。如果可写,身份验证和授权可以由更高级的规范定义,或者特定于实现。

 外观特征值应为规定的枚举值以指定的号码。外观特征值应为2个八位长度。装置应仅具有一个外观特征实例。

外围设备首选连接参数特征

 外设首选连接参数(PPCP)特性包含外设的首选连接参数。

外围首选连接参数特征值应可读。身份验证和授权可以由更高的层规范定义或特定于实现。

外围首选连接参数特征值不可写。

 外围首选连接参数特征值的长度应为8位。一个设备应仅具有一个外围设备首选连接参数特性的实例。

 

 中心地址解析

 在使用将启动器地址设置为可解析的专用地址(RPA)的定向广告之前,外围设备应通过读取中心地址解析特征来检查地址对等设备是否支持地址解析。

中心地址解析特性定义设备是否支持地址解析隐私。

 中央地址分辨率特征值长度应为1个字节:

本设备不支持 0=地址

本设备支持 1=地址

2-255=保留供将来使用

 一个设备应仅具有一个中心地址分辨率特性的实例。如果不存在中央地址解析特征,则应假定不支持中心地址解析。

仅可解析的私有地址

 设备应通过读取“仅可解析专用地址”特性,检查对等设备是否只在绑定后使用可解析专用地址(rpa),以确定其是否满足隐私模式。

“仅可解析专用地址”特性定义了设备是否只使用可解析私有地址(rpa)作为本地地址。

 设备应只有一个仅可解析专用地址特性的实例。如果不存在仅可解析私有地址特性,则不能假定仅使用可解析私有地址。

文章来源: xintiaobao.blog.csdn.net,作者:心跳包,版权归原作者所有,如需转载,请联系作者。

原文链接:xintiaobao.blog.csdn.net/article/details/120302113

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。