• 【转】安全加密(二):BLE安全攻击反制措施


    本文导读

    近年来出现了越来越多的低功耗蓝牙应用,即BLE(Bluetooth Low Energy),比如说智能手环、防丢器等,对蓝牙的安全要求也越来越高。这篇文章将深入浅出说明BLE4.0~4.2中的一些安全攻击反制措施,从而引出BLE中最主要的两个安全机制“加密”和“认证”。

    1.  加密(Encryption)

    两个设备正常通信,Device1往Device2发送123,Device2往Device1发送456,这种通信方式非常危险,因为在空中的数据包都是明文。窃听设备Device3很容易就能获取Device1和Device2的通信内容。

     

    针对以上攻击,BLE4.0提供以下反制方法,Device1和Device2首先协商出一个密钥key,Device1将加密过后的数据Text1发送给Device2,Device2得到Text1之后根据之前协商的key解出Device1真正发送的内容123。第三方能够偷听到Text1和Text2,但是没有key就没办法解出Device1和Device2真正的通信内容。

    从上图可以知道,链路是否安全取决于密钥key会不会被Device3获取到。对于BLE4.0来说,其实只要Device3窃听Device1和Device2协商密钥过程,就能够获取密钥key,所以这是BLE4.0的一个漏洞,只有保证协商密钥过程中不被别人窃听,才认为链路是安全的。

    针对BLE4.0的漏洞,BLE4.2增加了基于椭圆曲线的DH密钥交换协议(ECDH),使用该交换协议目的就是在Device3窃听的情况下,仍然能够协商出Device3不知道的密钥key。在举例子前,我们需要了解以下知识:

    对于椭圆曲线的离散对数数学难题可用如下简单的话描述:

    k为正整数,p是椭圆曲线上的点(称为基点)。

    Q = k * p

    已知k和p,很容易推导出Q;已知Q和p,很难推导出k。

    对于该数学难题这里不展开说明,只说明它们是如何和BLE关联起来的,这里的‘*’不是普通乘法符号,看成是一种特殊的运算法则即可。

    经过ECDH之后,Device1和Device2就能得到共享密钥key,基于该共享密钥key可以衍生出LTK密钥,用于后续对称加密。至此,BLE的加密部分已到尾声,下一节将会从另一个攻击角度,引出BLE的另一个安全机制:认证。

    2.  认证

    Device1希望与Device2建立直接连接。但是,存在Device3屏蔽掉真实的信号,同时伪装成Device1和Device2,导致空间中实际存在两个连接,而不是一个连接,这样的攻击叫做中间人攻击。正常情况下, Device2和Device1建立连接之后会进行ECDH,形成第三方无法解密的安全链路,这一点我们在上一节提到过;但是在中间人攻击下,实际是Device3分别和Device1和Device2进行ECDH,所以对于Device3来说,Device1和Device2发送的数据都是没有秘密的。

    为了防止中间人攻击,BLE在连接之后加入了“认证”机制,目的就是在设备Device3存在的情况下,Device1知道自己连接上的是Device2还是设备Device3。

    正常认证过程如下:

    第一步:Device1和Device2交换公钥;

    第二步:Device1和Device2用蓝牙以外的交流方式达成共识,使用相同的配对码;

    第三步:Device1生成随机数Nai,Device2生成随机数Nbi;

    第四步:Device1将相关参数代入函数f得出Cai,发给Device2;

    第五步:Device2将相关参数代入函数f得出Cbi,发给Device1;

    第六步:Device1将Nai发给Device2;

    第七步:Device2用刚刚收到的Nai校验第四步收到的Cai;

    第八步:Device2校验Cai成功,将Nbi发给Device1;

    第九步:Device1用刚刚收到的Nbi校验第五步收到的Cbi。

    下图是中间人攻击下的认证过程,通过对比正常认证过程可以发现问题会出现在第五步。

    为了让Device2第七步能够校验通过,Device3在第五步一定要发送给Device2恰当的Cai。

    所以第五步似乎有两种方案:

    • 将第四步收到的Cai,直接发给Device2。

      因为pk1不等于pk2,所以第七步校验会出错。

    • 私自捏造Cai发给Device2。

      由于不知道Nai和passkey两个参数,所以无法确认Cai的值是多少。

    也就是说,无论Device3怎么样做都没办法通过第七步校验,导致认证不通过。所以通过“认证”机制可以给连接提供中间人攻击保护。

     

    为了方便理解上面用到的例子是经过简化的,有些地方会与标准协议有出入,但是原理是一样的。

    ZLG52810P0-1-TC是基于nrf52810的无线透传模块,串口AT指令控制,使用简单方便。除了支持BLE的加密和认证安全机制外,还支持BLE4.2的LE Data Packet Length Extension与BLE5的2M PHY特性,大大提高了传输速率。

    来源

  • 相关阅读:
    初识Django-前后端不分离(一)
    虚拟环境的搭建
    python+request+Excel做接口自动化测试(二)
    使用postman+newman+python做接口自动化测试
    如何处理接口响应结果分析
    request使用的封装
    python中unittest的使用
    使用python的接口测试环境搭建及使用
    关于测试流程的指导心得
    Redis 学习
  • 原文地址:https://www.cnblogs.com/skullboyer/p/9335166.html
Copyright © 2020-2023  润新知