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的流程如下图所示:

 

低功耗蓝牙依据版本的不同,采用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的流程如下: 

 

各个步骤详细内容如下:

  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

低功耗蓝牙

  

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/681106.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《Linux 简易速速上手小册》第4章: 包管理与软件安装(2024 最新版)

文章目录 4.1 包管理基础4.1.1 重点基础知识4.1.2 重点案例:在 Ubuntu 上安装和管理软件4.1.3 拓展案例 1:添加软件仓库4.1.4 拓展案例 2:回滚软件到旧版本 4.2 使用 APT 与 YUM4.2.1 重点基础知识4.2.2 重点案例:在 Ubuntu 上配置…

Kong 负载均衡

负载均衡是一种将API请求流量分发到多个上游服务的方法。负载均衡可以提高整个系统的响应速度,通过防止单个资源过载而减少故障。 在以下示例中,您将使用部署在两台不同服务器或上游目标上的应用程序。Kong网关需要在这两台服务器之间进行负载均衡&…

嵌入式Qt 计算器界面设计

一.计算器界面设计 计算机界面程序分析&#xff1a; 需要用到的组件&#xff1a; 界面设计&#xff1a; 界面设计实现&#xff1a; 实验1&#xff1a;计算器界面设计 #include <QtGui/QApplication> #include <QWidget> //主窗口 #include <QLineEdit> //文…

2024年2月5日-2月11日周报

论文阅读 1. 本周计划2. 完成情况2.1 论文摘要2.2 网络结构2.3 损失函数2.4 优化器2.5 代码2.5.1 代码结果2.5.2 代码大致流程 4. 总结及收获4. 下周计划 1. 本周计划 阅读论文《Data-Driven Seismic Waveform Inversion: A Study on the Robustness and Generalization》并实…

五.实战软件部署 1-3实战章节-前言MYSQL 5.7版本在centos系统安装MYSQL 8.0版本在centos系统安装

目录 五.实战软件部署 1-实战章节-前言 五.实战软件部署 2-MYSQL 5.7版本在centos系统安装 1-配置yum仓库 2-使用yum安装mysql 3-安装完成后&#xff0c;启动mysql并配置开机自启动 4-检查mysql的运行状态 --配置 1-获取mysql的初识密码 2-登录mysql数据库系统 3-修改…

限制资源使用

限制资源使用 您需要显示对服务器资源的访问来保护Web应用程序和应用程序数据不受未授权用户的访问。在Java EE Web应用程序中,您可以通过在应用服务器中创建用户和用户组来保护资源免受未经授权的访问。您可以为应用程序定义角色并在部署过程中将角色分配给用户。 1. 创建授权…

2024.2.9

作业1 请使用递归实现n&#xff01; #include<stdio.h> #include<string.h> #include<stdlib.h>int fun(int m) {if(m0)return 1;else{return m*fun(m-1);} } int main(int argc, const char *argv[]) {int m;printf("please enter m:");scanf(&…

软件测试 - 测试用例设计方法之等价类划分和边界值分析

1. 等价类划分法 1.1 基本理论 等价类划分法是通过科学的方法找到具有共同特性的测试输入的集合&#xff0c;避免进行穷举测试&#xff0c;大大减少了测试用例的数量&#xff0c;从而提高测试效率。等价类划分法的典型应用场景就是输入框&#xff0c;适用于较少数量输入框的场…

【学习笔记】TypeScript编译选项

TS 中的编译选项 我们写了一个TS的文件&#xff0c;我们需要使用如下的命令将我们的TS文件转换为JS文件。 tsc xxx.ts 这样会产生一个对应的js文件 自动编译文件 编译文件时&#xff0c;使用 -W 指令后&#xff0c;TS编译器会自动监视文件的变化&#xff0c;并在文件发生变…

I.MX6U C语言运行环境构建及驱动开发格式

1.设置处理器模式 设置6ULL处于SVC模式下。设置下CPSR寄存器的bit4-0,也就是M[4:0]为100110x13.。读写状态寄存器需要用到MRS和MSR指令。MRS将CPSR寄存器数据读出到通用寄存器里面&#xff0c;MSR指令将通用寄存器的值写入到CPSR寄存器里面去。 2.设置SP指针 SP可以指向内部…

数据结构与算法:单链表

朋友们大家好&#xff0c;本节来到数据结构与算法的新内容&#xff1a;单链表 在上篇文章中&#xff0c;我们知道顺序表通常需要预分配一个固定大小的内存空间&#xff0c; 通常以二倍的大小进行增容&#xff0c;可能会造成空间的浪费&#xff0c;本篇文章我们介绍的链表可以解…

leetcode刷题(模拟问题)

题一&#xff1a;替换所有的问号 1.链接 1576. 替换所有的问号 - 力扣&#xff08;LeetCode&#xff09; 2.思路 这道题&#xff0c;最重要的就是理解什么是连续重复的字符 连续重复字符是指&#xff1a;相同字母连在一起多次出现 先遍历这个数组&#xff0c;去找到 &#x…

C语言每日一题(56)平衡二叉树

力扣网 110 平衡二叉树 题目描述 给定一个二叉树&#xff0c;判断它是否是高度平衡的二叉树。 本题中&#xff0c;一棵高度平衡二叉树定义为&#xff1a; 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,…

猫头虎分享已解决Bug || InvalidArgumentError in TensorFlow

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

网络报文处理流程

报文处理流程 WLAN网络中的数据包括管理报文和业务数据报文。管理报文必须采用CAPWAP隧道进行转发&#xff0c;而业务数据报文除了可以采用CAPWAP隧道转发之外&#xff0c;还可以采用直接转发方式和Soft-GRE转发方式。 管理报文用来传送AC与AP之间的管理数据&#xff0c;存在于…

苹果推出新型开源AI图像编辑模型“MGIE”;可汗学院辅助学习的GPT,Prompt 质量非常高

&#x1f989; AI新闻 &#x1f680; 苹果推出新型开源AI图像编辑模型“MGIE” 摘要&#xff1a;苹果公司最近发布了一个名为“MGIE”的开源人工智能模型&#xff0c;旨在通过自然语言指令对图片进行编辑。MGIE&#xff0c;全称MLLM-Guided Image Editing&#xff0c;依赖于多…

雨云裸金属服务器

雨云服务器与裸金属服务器&#xff1a;云端与实体的完美交融 随着信息技术的迅猛发展&#xff0c;云服务已经成为企业和个人数据处理与存储的重要选择。其中&#xff0c;雨云服务器和裸金属服务器作为两种截然不同的服务形式&#xff0c;各自拥有独特的优势和应用场景。本文将深…

【MySQL探索之旅】MySQL数据库下载及安装教程

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更新的动力❤️ &#x1f64f;小杨水平有…

1.Electron初始与安装

这里写目录标题 一、前言二、下载三、简要总结 一、前言 原文以及该系列后续文章请参考&#xff1a;安装Electron 随着前端的不断强盛&#xff0c;现在的前端已经不再满足于网页开发了&#xff0c;而是在尝试能否使用前端的开发逻辑来开发PC端的桌面软件。 即用html、js、css…

浅谈测试用例设计

前言 最近干的最多的事情就是设计测试用例、评审测试用例了&#xff0c;于是我不禁又想到了一个经典的问题&#xff1a;如何设计出优秀的测试用例&#xff1f; 可能有些童鞋看到这个问题会有些不以为然&#xff0c;这有什么好想的&#xff1f;干个测试谁还不会设计测试用例&a…