本文共 2880 字,大约阅读时间需要 9 分钟。
隐私策略简述除了设备过滤机制以外,BLE协议还提供了隐私策略(Privacy)以保护设备地址不被窃取。Privacy的核心思想是通过加密和解密过程保护地址安全。与白名单机制类似,若设备需要使用LL Privacy机制,则需要在Link Layer层保存一个Resolving List。其工作原理如下: 1)在白名单机制中,将受信任设备的Identity Address加入白名单中,并采用适当的白名单策略。
2)若设备需使用LL Privacy策略保护自身及对方的地址,则需将自身(local)和对方(peer)的地址及加密Key存储在Resolving List中。
3)Resolving List的每个条目包含以下信息:
- 本地的IRK(Local IRK):用于将本地设备的Identity Address加密为Resolvable Private Address。IRK可为0,表示直接使用Identity Address。
- 对端的IRK(Peer IRK):用于将对端设备的Resolvable Private Address解析为Identity Address,可为0,表示对端地址即为Identity Address。
- 对端设备的Identity Address:用于唯一标识对端设备。
- Address Type:与Peer Device Identity Address配合使用,用于地址比对。
- Resolving ListResolving List是Link Layer层由上层通过HCI命令提供的表,负责地址加密与解密的操作。其具体功能包括:
- 发送数据包时:当需要填充AdvA时,若Resolving List中存在非0的Local IRK条目,则使用该Local IRK将Identity Address加密为Resolvable Private Address填充至AdvA;否则直接使用Identity Address。同理,若需要填充InitA,则检查Resolving List中是否存在匹配的非0 Peer IRK条目,以决定是否加密对端Identity Address为Resolvable Private Address。
- 接收数据包时:若接收到的数据包中的AdvA或InitA为Resolvable Private Address,则遍历Resolving List中的IRK条目,尝试解析Identity Address。若匹配,则解析成功并进行后续处理;若未匹配且启用了白名单或LL Privacy策略,则丢弃数据包。
此过程对上层实体(HCI之上)是透明的,Link Layer自行完成地址加密、解密及比对操作。
Private Address Generation Interval
Resolvable Private Address类型的地址需与一个定时器配合使用,定期生成新的Resolvable Private Address。为了平衡连接建立效果和地址泄露风险,Spec推荐Setting定为15分钟。 Privacy In The Advertising State
在Advertising State下的Privacy处理流程可分为以下几种情形: 4.1 Connectable and scanable undirected event type
- 发送包时:需要查看Resolving List是否存在非0的Local IRK条目,存在则将自身Identity Address加密为Resolvable Private Address填充至AdvA;否则直接使用Identity Address。
- 接收连接请求时:若InitA为Resolvable Private Address且启用了地址解析功能,则遍历Resolving List中匹配的Peer IRK条目,尝试解析对端Identity Address。若匹配,则基于白名单策略决定是否接受连接;若未匹配,则无法建立连接。
- 接收扫描请求时:处理策略与接收连接请求时类似,不在本文详述。
4.2 Connectable directed event type
- 发送包时:与4.1相同,需使用Local IRK将Identity Address加密为Resolvable Private Address填充至AdvA。
- 发送TargetA时:若Resolving List中存在匹配的非0Peer IRK条目,则使用该Peer IRK将对端Identity Address加密为Resolvable Private Address填充至TargetA;否则直接使用Identity Address。
- 接收连接请求时:与4.1相同,需解析InitA中的Resolvable Private Address并根据Resolving List中的条目判断是否接受连接。
4.3 Non-connectable and non-scannable undirected and scannable undirected event types
- 发送包时:与4.1相同,需使用Local IRK处理自身地址。
- 接收扫描请求时:若ScanA为Resolvable Private Address且启用了地址解析功能,则遍历Resolving List中的Peer IRK条目解析对端Identity Address,并根据白名单策略决定是否回复。如果解析失败,则不回复。
4.4 Connectable undirected event type
- 发送包时:与4.1相同。
- 接收连接请求时:与4.1相同,需解析InitA中的Resolvable Private Address并根据Resolving List判断连接是否可行。
4.5 Non-connectable and non-scannable directed and scannable directed event types
- 发送包时:与4.1相同。
- 发送TargetA时:与4.2相同。
- 接收扫描请求时:与4.3相同。
在以上所有情形中,安全策略均依赖于Resolving List中的Local IRK和Peer IRK信息,本地发出的地址信息需根据Local IRK加密,收到的地址信息需通过Peer IRK解析。
Privacy In The Scanning State
在Scanning State下的Privacy机制堪称与上文情形一致。Scanner发出的ScanA或TargetA需要根据Local IRK处理,收到的地址信息需通过Peer IRK解析,与本地或对方设备进行地址匹配。 Privacy In The Initiating State
本地发出的地址信息需使用Local IRK处理,收到的需通过Peer IRK解析,具体细节与上文情形一致。
转载地址:http://dkyuk.baihongyu.com/