BLE蓝牙安全机制

1. 蓝牙配对

蓝牙配对是建立安全连接的关键过程。对于传统蓝牙应采用SSP配对方式,而低功耗蓝牙4.0和4.1的版本应使用legacy pairing配对方式,4.2以后的版本应采用Secure connection的配对方式。

传统的蓝牙采用的配对方式如下:

  1. 蓝牙2.1版本之前使用的Legacy pairing。该配对方式蓝牙双方采用输入固定pin Code来实现身份的认证,该方式目前已经不在使用。
  2. 蓝牙2.1版本提出了简单安全配对(Secure simple pairing)的方式。这种配对模式的提出主要目标是为了简化用户的配对过程,次要的目标是提高蓝牙无线技术的安全性。

    蓝牙简单安全配对SSP的流程如下图所示:

BLE蓝牙安全机制_第1张图片 

低功耗蓝牙依据版本的不同,采用Secure Connection 和legacy pairing。

  1. 4.0和4.1 使用的也是Secure simple pairing。 后续版本称为BLE legacy pairing。
  2. 4.2之后的版本使用的是Secure Connection。

1.1 简单安全配对SSP

SSP生成密钥的流程如下图:

 

其中各个步骤如下:

  1. 蓝牙设备发现周围的其他蓝牙设备。
  2. 向目标蓝牙设备发起配对请求。
  3. 两个蓝牙设备交换自身设备的输入/输出能力(IO capabilities exchange),例如是否支持显示和键盘输入等,该属性用于后续协商认证手段。
  4. 交换椭圆曲线的公钥。
  5. 依据公钥,生成身份认证码。 依据之前交换的设备IO能力,采用对应的身份认证方式。
  6. 身份认证成功后,通过ECDH key进行校验。
  7. 通过密钥加密通信链路。至此,蓝牙配对完成。

1.2 安全连接Secure Connection

Secure connection用于蓝牙4.2以及之后的版本。Secure connection的流程如下: 

BLE蓝牙安全机制_第2张图片 

各个步骤详细内容如下:

  1. 蓝牙设备搜索附近蓝牙设备。
  2. 与目标蓝牙设备交换各自的IO能力,并依据设备的蓝牙版本,决定使用LE secure Connection还是Le Legacy pairing。
  3. 如果使用Le secure Connection则生成Long term key。
  4. 如果使用Le Legacy pairing,则生成Short tearm key。
  5. 将生成的key用于两个蓝牙设备的密钥分发,并依据之前的IO能力,进行鉴权。
  6. 鉴权完成后,配对完成。用密钥对整个蓝牙链路进行加密。

1.3 蓝牙鉴权 

配对名称

描述

Numeric Comparison

配对双方都显示一个6位数字,由用户来核对数字是否一致,一致即可配对。

Just works

用于配对没有显示且没有输入的蓝牙设备,该设备接收到连接请求即可完成配对,用户看不到配对过程。这种设备常见蓝牙耳机。

Passkey Entry

要求配对目标输入一个在本地设备上显示的6位数字,输入正确即可配对。常见蓝牙键盘。

Out of Band

蓝牙设备之间通过其他的途径交换配对信息。常见NFC。

 

传统蓝牙和低功耗蓝牙同时支持以上四种鉴权模式。

蓝牙配对需要完成两个安全目标:

  1. 防止被动窃听(Passive eavesdropping)
  2. 防止主动窃听(active eavesdropping),中间人攻击是常见的攻击方式。

蓝牙的四种鉴权模式中,只有Just works模式无法防护中间人攻击。因此,该模式不建议使用在汽车蓝牙环境。

蓝牙在完成鉴权后,即可以使用生成的密钥对蓝牙通信信道进行加密。蓝牙的通信数据经过加密后可以在链路上进行安全传输。

2. 蓝牙协议栈安全应用

针对蓝牙协议栈漏洞,应通过升级安全的蓝牙固件、使用高版本蓝牙协议栈等方式解决。

White List

白名单就是一组蓝牙地址列表,通过设置白名单可以允许扫描、连接特定的蓝牙设备,以及被扫描、连接

LL Privacy

在白名单的基础上将设备地址进行加密,转变成Resolvable Private addresses

  • 本地Resolving List需要保存每一对BLE设备的key/address信息,格式为:Local IRK|Peer IRK|Peer Device Identity Address|Address Type

  • LL Privacy机制在Controller中完成,即加解密操作对HCI上层是透明的

LL Encryption

数据发送和接收过程进行加解密

  • 加解密操作在Link Layer完成

  • Host会保存至少1280bit的LTK(根密钥),启动加密传输时,LL会首先协商出一个128-bit的随机数SDK(Session Key Diversifier)和64-bit的iv,经过Encryption Engine和LTK生成此次通信的会话密钥SessionKey

SecurityManager

为BLE设备提供加密连接相关的key,包含以下规范:

  • 定义了配对(Pairing)的相关概念及过程

  • 定义了密码工具箱,包含配对、加密所需的各种算法

  • 定义了安全管理协议(Security Manager Protocol,SMP),实现配对、密码传输等操作

SMP规范中,配对的定义是,Master和Slave通过协商确定用于加密通信的key的过程,包含三个阶段:

  • 阶段一、Pairing Feature Exchange,交换双方配对相关的设置,如配对方法、鉴权方式等

    • 鉴权方式可以采用交换额外的信息(Out of band,OOB),或者弹窗引入人来判定,称为MITM鉴权,还有输入配对码进行对比(Passkey Entry/Numeric Comparison),或者不鉴权(Just Work)

  • 阶段二、通过SMP协议进行配对操作,有两种配对方案,LE Legacy Pairing和LE Secure Connections

  • 阶段三、协商好密钥key,建立加密连接,传输密钥信息(可选)

 

​​​​​​​3. 蓝牙功能设计

蓝牙协议栈是各个蓝牙协议实现的载体。其本身提供蓝牙的各个功能。蓝牙协议栈功能在设计中,应依据具体的应用场景,增加或删除其功能。关闭不必要的功能,做到最小化功能需求。

蓝牙的基本功能依赖于其蓝牙协议栈所支持的服务。除了物理层与链路层协议是不可缺少的,蓝牙服务是由多个协议共同组成的。下表列出了多个常见的车载蓝牙协议的基本功能。

表2 常见蓝牙协议

蓝牙协议名称

蓝牙协议功能

基带协议

蓝牙跳频协议。用于控制物理层的功能

HCI

蓝牙控制器接口,用于上层协议与物理层之间的通信接口

LMP

蓝牙链路管理器。用于链路管理控制。

L2CAP

逻辑链路控制和适配层协议,为上层协议提供面向连接和无连接的数据服务。

SDP

服务发现协议,用于发现其他蓝牙设备所提供的服务。

OBEX

文件交换协议。

AVRCP

蓝牙音乐控制协议,用于控制蓝牙的播放、暂停、上一曲、下一曲等功能。

A2DP

蓝牙音频传输协议。

HFP

蓝牙语音通话控制协议,用于控制蓝牙电话。

OPP

蓝牙文件传输协议

SMP

用于蓝牙设备间的加密认证的协议

PBAP

蓝牙电话本传输协议

GATT

蓝牙低功耗通用属性配置协议

Secure Manager

蓝牙安全管理

​​​​​​​4. 蓝牙功率要求

蓝牙是无线设备,其工作在2.4GHZ的全球公共频段。其采用跳频的方式与其他蓝牙设备进行通信。所以蓝牙硬件需要对其输出的功率有明确的要求。

蓝牙的功率分为三个级别。如下表所示。蓝牙硬件开发时,需要依据具体的需求,设置蓝牙的发射功率。

表3 蓝牙功率级别

功率等级名称

功率限制

覆盖距离

Class1

0dBm – 20dBm

100米

Class2

-6dBm – 4dBm

10米

Class3

小于0dBm

1米

蓝牙发射的包类型如下表:

蓝牙发射包类型

调制方式

蓝牙模式

DH1

GFSK

BDR 传统蓝牙

DH3

GFSK

BDR 传统蓝牙

DH5

GFSK

BDR 传统蓝牙

2DH1

4-DQPSK

EDR 传统蓝牙

2DH3

4-DQPSK

EDR 传统蓝牙

2DH5

4-DQPSK

EDR 传统蓝牙

3DH1

8DPSK

EDR 传统蓝牙

3DH3

8DPSK

EDR 传统蓝牙

3DH5

8DPSK

EDR 传统蓝牙

BLE_1M

GFSK

低功耗蓝牙

BLE_2M

GFSK

低功耗蓝牙

  

 

你可能感兴趣的:(蓝牙,安全)