前言
蓝牙低能耗(Bluetooth Low Energy,或称Bluetooth LE、BLE,旧商标Bluetooth Smart)也称低功耗蓝牙,是蓝牙技术联盟设计和销售的一种个人局域网技术,旨在用于医疗保健、运动健身、信标、安防、家庭娱乐等领域的新兴应用。相较经典蓝牙,低功耗蓝牙旨在保持同等通信范围的同时显著降低功耗和成本。
蓝牙技术联盟沿用经典蓝牙的规范内容,为蓝牙低功耗定义了一些profile,这些profile定义了一个设备在特定应用情景下如何工作。制造商应通过在实现中遵循特定的profile以确保兼容性。一台设备可以使用多个profile。
当前所有低功耗应用profile都基于通用属性规范(GATT)。GATT定义了属性,作为通用的封装数据的单位,并定义了如何通过蓝牙连接传输属性从而达到传输数据的目的。蓝牙4.0能够提供低功耗的较高比特率传输。
2014年,CSR(现属高通一部分)发布了CSR Mesh协议。CSR Mesh中各设备使用蓝牙低功耗进行通信。各设备能够为其他设备转发消息,从而实现网格效应。举例来说,借助网格的通信能力,使用一台智能手机就可以关掉整栋建筑的灯光。蓝牙技术联盟已经成立了智能网格(Smart Mesh)研究组,研究并定义用例,纳入到标准规范中。 [1]
健康护理规范
BLP(Blood Pressure Profile)— 用于血压测量。
HTP(Health Thermometer Profile)— 用于医疗温度测量设备。
GLP(Glucose Profile)— 用于血糖监测。
CGMP(Continuous Glucose Monitor Profile)
运动和健身规范
BCS(Body Composition Service)
CSCP(Cycling Speed and Cadence Profile)— 用于连接到自行车或健身单车传感器,测量节奏和轮速
CPP(Cycling Power Profile)
HRP(心率规范)
LNP(位置和导航规范)
RSCP(Running Speed and Cadence Profile)
WSP(Weight Scale Profile)
互联网连接
IPSP(互联网协议支持规范)
通用传感器
ESP(环境感应规范)
UDS(用户数据服务)
HID连接
HOGP(HID通过GATT规范)使蓝牙低功耗的无线鼠标、键盘或其他设备可获得持久的电池续航时间。
接近感应
“Electronic leash”非常适合为“始终开启”的设备尽可能延长电池寿命。iBeacon设备的制造商为其设备实现了相应规范,确保与苹果公司设备的接近感应功能兼容。
有关的应用程序规范包括:
FMP — “查找我”规范 — 允许使用另一个设备让一个设备发出提醒。
PXP — 接近度规范 — 允许接近感应器检测接近报告器是否在附近。物理接近度可以使用无线电接收器的RSSI值估算,尽管这不是经过绝对校准的距离。一种典型设计是,设备之间的距离超过设定阈值时发出提醒。
提醒和时间规范
手机提醒状态规范和提醒通知规范允许客户端设备接收通知,例如另一台设备发来的来电通知。
时间规范允许客户端设备设置采用服务器设备的当前时间和时区信息,例如手表与手机之间的网络时间。
电池
电池服务(Battery Service)
报告“电池状态”和设备中单个电池或电池组的电量级别。
一、问题描述
蓝牙广泛应用于智能灯泡、智能门锁中,蓝牙协议本身包含安全协议SMP,但是目前市面上产品仍然存在很多安全隐患,下面是个通过破解技术使用非授权软件控制智能灯泡的案里。
【胖猴小玩闹】智能门锁与 BLE 设备安全 Part 2:对一款 BLE 灯泡的分析
从攻击过程可以看出,智能灯泡和手机app之间并没有利用蓝牙本身的安全机制,导致攻击者非常容易的找到控制指令,进而进行了非法控制。
二、分析
我们看下BLE协议栈
了解BLE的同学应该对此图比较熟悉,而我们本篇文章之关系SMP部分,SMP我们可能不熟悉,但是一定用过蓝牙的配对绑定功能,而配对绑定功能正是通过SMP来保护蓝牙安全的主要功能。
蓝牙的配对绑定过程分为3个阶段,阶段1生成临时密钥TK,TK是配对过程中用户的输入数字(我们一定很了解这个,在被连接设备的屏幕上显示,由用户输入到发起连接欸对设备上,还有其他方式,暂时先不展开);TK用于第二阶段的身份认证以及派生短期密钥STK,STK用来保护第三阶段LTK等密钥分发的的安全,当然是通过STK派生的会话密钥SK保护的;一旦两端拥有了LTK,之后的连接就可以采用LTK保护。
经历了上述过程,破解案里中使用BLE 调试工具向灯泡发送控制信息就会在连接的过程中失败,因为没有ltk密钥。
那么抛开破解案里,我们来分析下蓝牙安全连接的一些薄弱点。
LTK存储泄漏
LTK存储在设备端和手机端、或者设备端和网关端,通常存放在非易失存储区,黑客可以通过一定技术将其dump出来,存在风险
配对绑定过程中密钥泄漏
如果配对绑定过程被监听,并且TK被看到,那么所有密钥都会泄漏,这种对于部署环境复杂的情境中,会存在风险
三、解决方案
对于风险1,可以将LTK放进TEE中存储
对于风险2,可以将TK通过产线放进TEE中保护,并可以采用动态密钥技术进行保护
另外,可以将SMP部分逻辑放进TEE中
四、展望
目前蓝牙基本采用了对称密钥方式来保护网络安全,但是也具备公钥密钥方案,因为性能问题,使用的比较少。所以对于存在在TEE中的密钥方案,仍然需要性能评估。
四、术语
BT
Bluetooth (蓝牙非正式的缩写)
device security level
设备安全级别,根据设定的安全级别,可以拒绝对某设备的访问。有两种级别的设备安全级别:可信任设备和不可信任设备
discoverable device
可发现设备,在规定范围内,可以响应查询信息的蓝牙设备