BLE Privacy(一)

BLE Privacy(一)

概述

        Privacy隐私功能在BLE中是一个非常重要的概念,LE Legacy Pairing使用AEC-CCM加密以及4种关联的模式,类似于安全简单配对(Secure Simple Pairing)但不相同。此外,就是signed data和privacy feature了。

​       当前主流手机都默认开启了Privacy功能,因此深入了解掌握这个机制的原理以及使用场景就尤为重要。

​       使用Privacy主要是出于安全考虑,防止设备地址信息泄露,导致设备被跟踪

Core Spec

        学习BLE Privacy,只需查阅蓝牙Core Spec即可,无需翻阅其他Host Profile。截至笔者目前,Core Spec已经更新到5.4的版本https://www.bluetooth.com/specifications/specs/core-specification-5-4/

        其实自v4.1版本就开始有Privacy的相关描述,v4.2添加完善LL Privacy机制。从Core Spec 5.4中的《Vol 0,Part C:Version History and Acknowledgments》中可以看到版本描述。

Architecture

        在Spec的《Vol 1,Part A:Architecture》《Page - 275/3112 》,章节中有讲解Privacy是做什么的,以及一些关键概念,没多少内容,建议详细看完。这里对一些重要概念,作简要说明。

        Privacy的目的主要是通过周期性的修改蓝牙设备地址,以防止被其他设备跟踪。同时,为了支持蓝牙回连的场景,蓝牙设备的私有地址必须能被其他设备解析。因此,可以根据实际应用场景是否需要reconnect,来选择使用resolvablenon-resolvable地址。

        私有地址是由设备绑定过程中交互的IRK(identity resolving key)生成的。一个设备可以通过接收到的private address和存储的IRK来计算device identity address

​        对于resolvable address,分为两种方式,一种方式是由Host来解析和生成,另一种则是Host+Controller,由Host提供给Controller设备身份信息之后,Controller可以自行解析和生成。当Controller的resolvable list无法存储所有绑定设备所需的IRK之后,就可能涉及到Host了。简单理解,就是一个是Host来做,另一个是Host+Controller,通常Host能力要更强,而Controller的Resolvable list能力有限,可能还得靠Host来做,虽然这会导致功耗增加。

​        Privacy还定义了两种模式,分别是device privacy mode以及network privacy mode。前者更注重设备隐私,只接收包含其身份地址和私有地址的广播包。后者,侧重于网络,只接收包含其私有地址的广播包,不接收包含其identity address的广播包。默认情况下,由Controller来解析和生成private address的话,通常使用network privacy mode

        Controller's resolving list ≤ Host's resolving list,解析列表相同或Controller's是Host's子集。device Identity由Peer Device Identity Address、Local IRK和Peer IRK组成。 

​        这里还提及了Filter机制,"the Filter Accept List",通常Privacy都是伴随着Filter来使用的,合理使用这个机制,可以有效减少Controller上报Adv Event的数量,从而降低功耗。即,Controller即使解析成功,也有可能被过滤掉。

RESOLVING LIST

​        Resolving list可参考上图Figure 5.4,所有支持Link Layer privacy的链路层应具备存储至少一个resolving list的能力。在Reset后,Resolving list应被清空,Resolving list由Host配置,LL层可用于解析advertising、scanning、initiating使用的RPA(Resolvable Private Address)。

​        当Controller解析完RPA地址后,需和Filter Accept List中Device Identity Address对照,如不在list中,则会被过滤掉。如果Host配置Resolving list中的Peer IRK全为0,则在advertising physical channel PDU中应使用主机提供的Peer's Identity Address。如果Host配置Resolving list时,把Local IRK配置为全0,则设备在advertising physical channel PDU中使用的任何local address都应该是Host提供的Identity Address(public or random).

​        如果LL层使用的Resolving list解析了对端设备,但加密失败(可能成功解析了RPA但其实使用的IRK是错误的,此时双方设备的IRK是没有匹配上的)!此时,要立刻丢掉当前的RPA,并用正确的IRK重新生成一个RPA。

        Controller一般能力比较有限,因为要求在T_IFS(150us)内要解析成功识别对端设备identity address,并匹配Filter Accept ListResolving private address这一解析过程通常所需时间较长,如果再算上RF时延,那对Controller的要求就更高了。一般而言,Controller的Resolvable List的size都比较小,实际使用通常只会用一个,或者说会一定小于Host所记录的总个数。

Host可以通过以下HCI Command来控制Resolving List.

​        LE Add Device To Resolving List command

​        LE Remove Device From Resolving List command

​        LE Clear Resolving List command

​        LE Read Resolving List Size command

​        LE Read Peer Resolvable Address command

​        LE Read Local Resolvable Address command 

​        LE Set Address Resolution Enable command

​        LE Set Resolvable Private Address Timeout command

操作流程一般如下,初始化流程先读size,再Clear,再Add。然后在要开启的时候再enable.

FILTER ACCEPT LIST

​        在Core Spec《Vol 6,Part B》4.3 LINK LAYER DEVICE FILTERING有对LL层的设备过滤机制作详细说明,建议仔细阅读,其中4.3.1 Filter Accept List有详细描述。过滤的机制可以减少设备应答次数,同时也减少了Host Controller之间通讯次数,以此达到降低功耗的作用

​        参考前面Figure 5.4图中,Filter Accept List由device identity address以及device address type(public or random)组成,所有支持Link Layer device filter的链路层都应具备至少一组记录的存储能力。

​        Host可以配置Controller的Filter Accept List来控制adv、scan、initiate的filter机制处理。

Host可以通过以下HCI Command来控制Filter Accept List.

​        LE Read Filter Accept List Size command

​        LE Clear Filter Accept List command

​        LE Add Device To Filter Accept List command

​        LE Remove Device From Filter Accept List command

操作流程一般如下,先读size,再Clear,再Add

​        Filter Accept List在各个业务中开/关,有对应不同的Filter policy,前面提到的《4.3 LINK LAYER DEVICE FILTERING》可结合以下三条指令来看:

Adv -- LE Set Advertising Parameters command

        Host实现privacy可以先发送LE Set Random Address配置好RPA地址,之后配置LE Set Advertising Parameters command参数Own Address Type为01,之后发送的AdvA即为RPA了。

        Controller实现privacy,Host可以先发送LE Add Device To Resolving List配置Resolving List,再使用LE Set Address Resolution Enable使能Resolvable List功能,最后发送LE Set Advertising Parameters command参数Own Address Type为02或03Controller就会根据Resolving List中local IRK生成RPA地址,之后发送的AdvA即为RPA地址。

        Advertising Filter Policy对收到的Scan/Connection Request处理有4种配置,00默认不启用Filter,01只接收Filter List中设备发来的Scan Request,02只接收Filter List中设备发来的Connection Request,03则是两种请求都只接收来自Filter List设备发来的。

Scan -- LE Set Scan Parameters command

        Host实现privacy,可以先发送LE Set Random Address配置好RPA地址,之后配置LE Set Scan Parameters command参数Own Address Type为01,之后发送的Scan Request中ScanA即为RPA了。

        Controller实现privacy,Host可以先发送LE Add Device To Resolving List配置Resolving List,再使用LE Set Address Resolution Enable使能Resolvable List功能,最后发送LE Set Scan Parameters command参数Own Address Type为02或03Controller就会根据Resolving List中local IRK生成RPA地址,之后发送的Scan Request中ScanA即为RPA地址。

        Scanning Filter Policy详见core spec.

Initiate -- LE Create Connection

        Host实现privacy,可以先发送LE Set Random Address配置好RPA地址,之后配置LE Create Connection参数Own Address Type为01,之后发送的Connection Request中ScanA即为RPA了。

        Controller实现privacy,Host可以先发送LE Add Device To Resolving List配置Resolving List,再使用LE Set Address Resolution Enable使能Resolvable List功能,最后发送LE Create Connection参数Own Address Type为02或03Controller就会根据Resolving List中local IRK生成RPA地址,之后发送的Connection Request中InitA即为RPA地址。

        以上需注意,当resolving list为空时,Own  Address Type配置为2会默认使用public address,配置为3会默认使用random address,因此Host最好事先通过LE Set Random Address配置好random address.

  • 29
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值