本文导读

近年来出现了越来越多的低功耗蓝牙应用,即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特性,大大提高了传输速率。

来源

【转】安全加密(二):BLE安全攻击反制措施的更多相关文章

  1. 图解ARP协议(二)ARP攻击原理与实践

    一.ARP攻击概述 在上篇文章里,我给大家普及了ARP协议的基本原理,包括ARP请求应答.数据包结构以及协议分层标准,今天我们继续讨论大家最感兴趣的话题:ARP攻击原理是什么?通过ARP攻击可以做什么 ...

  2. 【系统安全性】二、Web攻击与防范

    二.Web攻击与防范 1.XSS攻击 跨站脚本攻击(Cross Site Scripting),因为简写CSS,与层叠样式表(Cascading Style Sheets)有歧义,所以取名XSS 原理 ...

  3. XSS 防范XSS 攻击的措施

    XssSniper--0KEE TEAM               XssSniper--0KEE TEAM XssSniper 扩展介绍 一直以来,隐式输出的DomXSS漏洞难以被传统的扫描工具发 ...

  4. PHP漏洞全解(二)-命令注入攻击

    本文主要介绍针对PHP网站常见的攻击方式中的命令攻击.Command Injection,即命令注入攻击,是指这样一种攻击手段,黑客通过把HTML代码输入一个输入机制(例如缺乏有效验证限制的表格域)来 ...

  5. 六十二:CSRF攻击与防御之系统准备之注册功能

    CSRF攻击原理: 配置信息 import osSQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:123456@127.0.0.1:3306/test'S ...

  6. [转] Meida视频加密二-Blob对象

    2. blob 1 <video src="blob:http://www.bilibili.com/d0823f0f-2b2a-4fd6-a93a-e4c82173c107" ...

  7. go加密算法:非对称加密(二)--Hash

    关于一些加密算法的应用和信息,可以在以下博客中查找到: https://www.cnblogs.com/charlesblc/p/6130141.html // MyHash package main ...

  8. PHP防止木马攻击的措施

    防止跳出web目录 只允许你的PHP脚本在web目录里操作,针对Apache,还可以修改httpd.conf文件限制PHP操作路径. 例如:php_admin_value  open_basedir( ...

  9. Java代码加密与反编译(二):用加密算法DES修改classLoader实现对.class文件加密

    Java代码加密与反编译(二):用加密算法DES修改classLoader实现对.class文件加密 二.利用加密算法DES实现java代码加密 传统的C/C++自动带有保护机制,但java不同,只要 ...

随机推荐

  1. vue2.0中使用sass

    第一部分:Sass语言 Sass是一种强大的css扩展语言(css本身并不是一门语言),它允许你使用变量.嵌套规则.mixins.导入等css没有但开发语言(如Java.C#.Ruby等)有的一些特性 ...

  2. C# 深浅复制 MemberwiseClone

    学无止境,精益求精 十年河东,十年河西,莫欺少年穷 学历代表你的过去,能力代表你的现在,学习代表你的将来 最近拜读了大话设计模式:原型模式,该模式主要应用C# 深浅复制来实现的!关于深浅复制大家可参考 ...

  3. Elasticsearch 系列文章汇总(持续更新...)

    系列文章列表 Query DSL Query DSL 概要,MatchAllQuery,全文查询简述 Match Query Match Phrase Query 和 Match Phrase Pre ...

  4. 干货分享:vue2.0做移动端开发用到的相关插件和经验总结(2)

    最近一直在做移动端微信公众号项目的开发,也是我首次用vue来开发移动端项目,前期积累的移动端开发经验较少.经过这个项目的锻炼,加深了对vue相关知识点的理解和运用,同时,在项目中所涉及到的微信api( ...

  5. 个人博客地址: furur.xyz

    趁着Hexo的热度,最近就买了域名,在GitHub Pages上搭了个人博客.也不是说博客园不好吧,毕竟在博客园三年多,也学到了不少东西,唯一要吐槽的,估计也就是后台管理不方便,markdown无即时 ...

  6. Oracle_安装问题

    [INS-07003] 访问 BeanStore 时出现意外错误   oracle安装时出现以下问题: 原因:未配置环境变量CLASSPASH 解决方法:新增系统变量,在我的电脑上右击-属性-高级系统 ...

  7. Ionic 入门与实战之第一章:Ionic 介绍与相关学习资源

    原文发表于我的技术博客 本文是「Ionic 入门与实战」系列连载的第一章,主要对 Ionic 的概念.发展历程.适配的移动平台等知识进行了介绍,并分享了 Ionic 相关的学习资源. 原文发表于我的技 ...

  8. BZOJ3782 上学路线

    设障碍个数为,\(obs\)则一般的容斥复杂度为\(O(2^{obs})\).但因为这个题是网格图,我们可以用DP解.设\(f[i]\)表示不经过任何障碍到达第\(i\)个障碍的方案数,转移时枚举可以 ...

  9. Week 1 工程文档

    计算器——工程文档 一.输入与格式 1.数据规模 本文档的输入基于如下的要求: (1)既然是小学生,我们假设他们不会计算超过10亿的数字. (2)既然是出考试题,那么也不会出超过10亿道题目. 也就是 ...

  10. SE Springer小组之《Spring音乐播放器》需求分析说明书二

    2.1 目标 Spring音乐播放器软件为课程<软件工程>所开发的课程作业,主要意图是为访问计算机中的mp3格式的音频文件,并使其能够完成访问,读取,添加,保存,播放,切换音频文件等功能. ...