BLE SCO 模式下可能的明文属性?

Plaintext attributes possible in BLE SCO mode?

据我所知,在 BLE 仅安全连接 (SCO) 模式下,两个配对设备之间的所有传入和传出流量都经过身份验证和加密。但是,BLE 还允许为属性分配单独的访问权限。

因此,我想知道如果两个设备在SCO模式下通信,BLE规范是否允许存在既不需要认证也不需要加密的属性。举一个具体的例子:设备A可以有一个不需要安全的属性吗?设备B可以在没有安全的情况下访问那个属性吗?

请注意,仅安全连接模式只是 GAP 中的一个高级“概念”,在 ATT/GATT 协议级别上并不存在。

这就是规范中的全部内容(蓝牙核心规范 v5.3,第 3 卷 C 部分 (GAP)):

10.2.4 Secure Connections Only mode

A device may be in a Secure Connections Only mode. When in Secure Connections Only mode only security mode 1 level 4 shall be used except for services that only require security mode 1 level 1.

The device shall only accept new outgoing and incoming service level connections for services that require Security Mode 1, Level 4 when the remote device supports LE Secure Connections and authenticated pairing is used.

模式 1 级别 1 表示未加密、未验证。模式 1 级别 4 意味着 LE 安全连接与经过身份验证的配对一起使用,即不是“LESC Just Works”。

因此,要声明您的设备处于 SCO 模式,您可以混合使用完全不需要任何加密的服务和仅允许在使用经过身份验证的 LESC 时使用的服务。不需要任何加密的服务可以随时使用,无论是 link 加密还是未加密。其他服务只有在使用经过身份验证的 LESC 加密连接时才能使用。

如果我的解释是正确的,那么您就不会拥有具有多种特性的 GATT 服务,例如一种特性无需加密即可访问,而另一种特性只能通过加密访问。在这种情况下,您需要将其拆分为两项服务,一项没有加密要求,另一项需要经过身份验证的 LESC。

无论如何,“SCO模式”只是一个抽象的术语,除了对服务结构进行分类外,没有任何实际意义。基本上你可以用它做的是在你的产品上打印一个标签“经认证支持 SCO 模式”。它也可以用作蓝牙堆栈中的标志,您可以设置它来验证本地 GATT 数据库是否满足 SCO 的要求。