博客
关于我
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/

    你可能感兴趣的文章
    MySQL 数据类型和属性
    查看>>
    mysql 敲错命令 想取消怎么办?
    查看>>
    Mysql 整形列的字节与存储范围
    查看>>
    mysql 断电数据损坏,无法启动
    查看>>
    MySQL 日期时间类型的选择
    查看>>
    Mysql 时间操作(当天,昨天,7天,30天,半年,全年,季度)
    查看>>
    MySQL 是如何加锁的?
    查看>>
    MySQL 是怎样运行的 - InnoDB数据页结构
    查看>>
    mysql 更新子表_mysql 在update中实现子查询的方式
    查看>>
    MySQL 有什么优点?
    查看>>
    mysql 权限整理记录
    查看>>
    mysql 权限登录问题:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)
    查看>>
    MYSQL 查看最大连接数和修改最大连接数
    查看>>
    MySQL 查看有哪些表
    查看>>
    mysql 查看锁_阿里/美团/字节面试官必问的Mysql锁机制,你真的明白吗
    查看>>
    MySql 查询以逗号分隔的字符串的方法(正则)
    查看>>
    MySQL 查询优化:提速查询效率的13大秘籍(避免使用SELECT 、分页查询的优化、合理使用连接、子查询的优化)(上)
    查看>>
    mysql 查询数据库所有表的字段信息
    查看>>
    【Java基础】什么是面向对象?
    查看>>
    mysql 查询,正数降序排序,负数升序排序
    查看>>