博客
关于我
BLE(15)—— Privacy
阅读量:825 次
发布时间:2019-03-24

本文共 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配合使用,用于地址比对。
    1. Resolving List
      Resolving 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自行完成地址加密、解密及比对操作。

      1. Private Address Generation Interval

        Resolvable Private Address类型的地址需与一个定时器配合使用,定期生成新的Resolvable Private Address。为了平衡连接建立效果和地址泄露风险,Spec推荐Setting定为15分钟。

      2. Privacy In The Advertising State

        在Advertising State下的Privacy处理流程可分为以下几种情形:

      3. 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解析。

        1. Privacy In The Scanning State

          在Scanning State下的Privacy机制堪称与上文情形一致。Scanner发出的ScanA或TargetA需要根据Local IRK处理,收到的地址信息需通过Peer IRK解析,与本地或对方设备进行地址匹配。

        2. Privacy In The Initiating State

          本地发出的地址信息需使用Local IRK处理,收到的需通过Peer IRK解析,具体细节与上文情形一致。

    转载地址:http://dkyuk.baihongyu.com/

    你可能感兴趣的文章
    nginx负载均衡的5种策略(转载)
    查看>>
    nginx负载均衡的五种算法
    查看>>
    Nginx负载均衡(upstream)
    查看>>
    nginx转发端口时与导致websocket不生效
    查看>>
    Nginx运维与实战(二)-Https配置
    查看>>
    Nginx部署_mysql代理_redis代理_phoenix代理_xxljob代理_websocket代理_Nacos代理_内网穿透代理_多系统转发---记录021_大数据工作笔记0181
    查看>>
    Nginx配置HTTPS服务
    查看>>
    Nginx配置Https证书
    查看>>
    Nginx配置http跳转https
    查看>>
    Nginx配置ssl实现https
    查看>>
    Nginx配置TCP代理指南
    查看>>
    Nginx配置——不记录指定文件类型日志
    查看>>
    nginx配置一、二级域名、多域名对应(api接口、前端网站、后台管理网站)
    查看>>
    Nginx配置代理解决本地html进行ajax请求接口跨域问题
    查看>>
    nginx配置全解
    查看>>
    Nginx配置参数中文说明
    查看>>
    Nginx配置后台网关映射路径
    查看>>
    nginx配置域名和ip同时访问、开放多端口
    查看>>
    Nginx配置多个不同端口服务共用80端口
    查看>>
    Nginx配置好ssl,但$_SERVER[‘HTTPS‘]取不到值
    查看>>