当前位置: 首页 > news >正文

蓝牙 - 如何实现安全性

蓝牙技术在加密上做了很多工作,来保证你的数据安全。

这些年来,我们的许多电子设备都转向了使用无线技术进行连接。我们的鼠标、键盘、耳机和扬声器上不再有长长的纠缠的电线,而使用了简单方便的无线技术,科技进步改善了我们的生活。

由于这些无线设备中有许多依靠蓝牙技术,蓝牙技术联盟(蓝牙技术的权威机构)在保持便利性和可靠性的同时增加了各种安全协议。

通过巧妙的方法和算法,蓝牙技术变得更加安全。本文将介绍蓝牙的安全功能是如何设计出来的,以及应该如何使用。

最新版本的蓝牙和Low Energy中的私密功能

蓝牙安全旨在为具有蓝牙功能的设备提供有关认证、完整性、保密性和隐私的标准协议,所有这些都使用加密。它自1998年以来一直在使用,已经有了几次迭代。

2010年,随着对短距离无线技术的功能需求的上升,蓝牙技术联盟开发了一个更新的蓝牙版本--蓝牙4.0。老几代蓝牙和蓝牙4.0之间最显著的区别是增加了BLE(蓝牙低功耗)。

请注意,BLE中的 "低功耗 "并不意味着它一定会使用更少的能量;它只是意味着它能很好地与低功耗设备(如无线耳机)配合,这些设备的电池容量很小。

由于大多数设备运行在蓝牙4.0及以上版本,我们将具体讨论这些较新版本的设计栈。此外,这个版本解决了前几代蓝牙的许多安全问题。

当前的蓝牙版本目前使用的BLE协议栈如下图所示:

 

我们对堆栈第四层的一个部分感兴趣,它被称为安全管理器Security Manager,负责处理有关认证、安全、保密和隐私的一切。安全管理器通过设备的配对和结合(pairing and bonding )来实现其协议。

BLE配对方法(Pairing methods)

配对是蓝牙安全管理器的一个重要组成部分。它验证你正在连接的设备是否是目标设备,然后生成一个加密密钥,供两个设备在整个会话中使用。

你的设备可以使用几种认证方法,以确保你连接到预定设备。这些方法包括:直接使用; 密钥另传; 输入密码; 数字对比。

- Just Works: 这是在两个设备间传递加密密钥的最快的方法,但安全性不够。

- OOB(Out of Band):使用其他认证方法(除了蓝牙)来发送加密密钥。一个例子包括通过NFC连接或使用你的设备的摄像头扫描对方设备显示屏上的QR码。

- Passkey:在一个设备上提示密码,需要在另一个设备上输入这个密码,才能通过认证。

- Numeric Comparison:  工作原理与Passkey相同,但设备会自动发送密码。用户只需要确认两个设备是否有相同的密码。

BLE加密密钥算法 / BLE Encryption Key Algorithms

现在,你的设备已经验证了连接设备的身份。然后他们将发送加密密钥,你的设备将在整个会话中使用这些密钥来加密和解密数据。

不同时期或版本的蓝牙规范中,安全管理器会使用不同的加密密钥算法来工作。最新版本的蓝牙(4.0及以上)使用的最常见的加密密钥算法如下:

- Symmetric-Key Ciphers / 对称密钥密文:这种类型的加密使用单一的密钥来解密哈希值或密文。

- Asymmetric-Key Ciphers / 非对称密钥密文:这种加密类型利用所谓的公钥和私钥。公钥用于加密数据,而私钥用于解密数据。

- Elliptical Curve Cryptography (ECC) / 椭圆曲线加密法:使用椭圆曲线方程来创建密钥,比对称或非对称密钥短得多,但同样安全。

- Advanced Encryption Standard (AES) / 高级加密标准:是一种基于数据块的对称加密,将128位数据作为一组数据块。

安全管理器的配对和绑定过程 / The Security Manager's Pairing and Bonding Process

安全管理器层旨在通过所谓的配对和绑定过程来处理蓝牙中的所有安全问题。在蓝牙连接中,总会有一个主设备和一个从设备(master and slave)。

主设备负责扫描那些发射广播信息的蓝牙设备。与此相反,从设备向外部发送广播信息的设备。

一个主从关系的例子是你的手机和一个无线耳机。你的手机是主设备,因为它扫描蓝牙设备,而你的无线耳机是从设备,因为它产生广播信号让你的手机能找到它。

配对过程包括安全管理器进行安全管理的三个阶段中的前两个。最开始,两个设备尝试进行建立连接的过程就属于配对过程。

- 初始配对过程中,主设备和从设备将共享每个设备能力信息以及它们所运行的蓝牙版本。能力信息需要包含的是,当前设备是否有屏幕、键盘、摄像头和NFC。

 

- 在让对方知道自己的能力后,从设备和主设备将决定使用何种安全协议和加密算法。

- 两个设备初始配对时使用的共享密钥被称为STK(Short-term key / 短期密钥)。顾名思义,STK将是主设备和从设备使用的加密密钥,直到会话结束。

- 当两台设备配对成功后,它们会使用STK对发送的每个数据包进行加密。而在数据加密后,任何试图监视你们会话的人因为没有STK而无法解密数据。

- STK的问题是,它只适用于同一次会话。每次会话,都需要再次配对,以便为生成一个新的STK。出于这个原因,开发出了一个额外的可选步骤,称为绑定(bonding)。

- 绑定步骤是蓝牙安全管理器的第三个阶段。在你的设备上会出现一个提示,询问你是否信任已配对的设备,并希望在看到设备广播时与之连接。而前两个阶段就是配对和生成STK密钥。

- 由于两个设备已经配对(通过STK有一个安全的连接),绑定过程将不需要进一步的安全检查。这个阶段要做的是生成一个LTK(Long-term key / 长期密钥)和一个IRK(Identify Resolve Key / 身份解析密钥)。然后,两个设备将使用这些密钥来解密数据,并在蓝牙开启时自动识别你的设备。

- LTK是一种类似于STK的加密密钥,设备使用它来加密和解密数据。不同的是,LTK是通过ECC而不是AES-120生成的,并且是长期使用的。

为了理解IRK,让我们简单地谈谈蓝牙MAC地址。所有具有蓝牙功能的设备都配备了一个网络接口控制器(Network Interface Controller / 网络接口控制器)。每个网络接口控制器都有一个独特的MAC地址(Media Access Control)。你不能改变这些MAC地址,因为给定的地址是硬编码在网络接口控制器的物理硬件中。

这个MAC地址也可以通过软件来修改,但如果希望绑定过的设备能够识别当前设备,那就不要随便修改MAC地址。考虑到这一点,为了能够使用可变的蓝牙地址,防止设备被别人追踪,但又能被可信任方发现,Bluetooth SIG增加了一个IRK系统,允许你的设备被绑定的设备识别,而对未知的蓝牙设备则无法识别。

蓝牙是一种复杂的技术组合,提供了广泛的设备兼容性、便利性和可靠性。应用广泛的蓝牙技术使得其安全成为一个不小的话题。

参考:

What Is Bluetooth Encryption and How Does It Work?

相关文章:

蓝牙 - 如何实现安全性

蓝牙技术在加密上做了很多工作,来保证你的数据安全。 这些年来,我们的许多电子设备都转向了使用无线技术进行连接。我们的鼠标、键盘、耳机和扬声器上不再有长长的纠缠的电线,而使用了简单方便的无线技术,科技进步改善了我们的生活…...

深入理解顺序io和随机io(全网最详细篇)

MySql系列整体栏目 内容链接地址【一】深入理解mysql索引本质https://blog.csdn.net/zhenghuishengq/article/details/121027025【二】深入理解mysql索引优化以及explain关键字https://blog.csdn.net/zhenghuishengq/article/details/124552080【三】深入理解mysql的索引分类&a…...

面试准备知识点与总结——(基础篇)

目录Java基础Java面向对象有哪些特征ArrayList和LinkedList有什么区别高并发的集合有哪些问题迭代器的fail-fast和fail-safeArrayList底层扩容机制HashMap面试合集解答设计模式单例设计模式哪些地方体现了单例模式Java基础 Java面向对象有哪些特征 Java面向对象有三大特征&am…...

Linux共享库,静态库与相关系统调用,工具的使用总结

tags: Linux C Syscall 写在前面 总结Unix/Linux操作系统的共享库/静态库部分, 以及一些系统调用. 参考Linux/UNIX系统编程手册41-42章. 测试程序均在Ubuntu下使用cc(gcc-9)运行成功. $ gcc -v Using built-in specs. COLLECT_GCCgcc COLLECT_LTO_WRAPPER/usr/lib/gcc/x86_64…...

「JVM 编译优化」javac 编译器源码解读

Java 的编译过程 前端编译: 编译器的前端,将 Java 文件转变成 Class 文件的过程;如 JDK 的 javac、Eclipse JDT 中的增量式编译器 ECJ;即使编译: JIT,Just In Time Compiler,在运行期将字节码转变成本地机器码的过程&…...

Leetcode DAY 34: K次取反后最大化的数组和 and 加油站 and 分发糖果

1005.K次取反后最大化的数组和 class Solution:def largestSumAfterKNegations(self, nums: List[int], k: int) -> int:nums sorted(nums, key abs, reverse True)for i in range(len(nums)):if nums[i] < 0:nums[i] -nums[i]k - 1else:continueif k 0:return sum(…...

2023美赛A题思路

在线解析 https://kdocs.cn/l/ccNGjN9sGugL​kdocs.cn/l/ccNGjN9sGugL A题思路&#xff1a;&#xff08;具体以题目解决问题顺序为主&#xff09; 这道题分析植被就行&#xff0c;主要涉及不同植被间的相互作用&#xff0c;有竞争有相互促进&#xff0c;我查了下“植物科学数…...

前端上传文件

前言 以 vue 举例&#xff0c;原生 html css js 现在应该很少有人去写了 一、绘制样式 绘制两个标签&#xff0c;一个 <div></div> &#xff0c;一个 <input type"file" />&#xff1b; 为 <div></div>添加 css 样式&#xff0c…...

后台管理系统中选项卡的动态渲染

动态渲染选项卡其中router-link是为了当点击选项卡时跳转到选项卡所在的列表选项卡需要动态渲染&#xff0c;其中active是当选中后激活选中的样式为图标添加点击删除事件在状态机配置tabMenu&#xff08;为了动态渲染&#xff09;需要在tabMenu添加&#xff1a;active、title、…...

网络层重点协议之IP协议(IPv4)

网络层的作用就是来路由的选择&#xff0c;规划传输的路径&#xff0c;其中网络层的重点协议就是IP协议。4位版本号版本号的取值只有4和64位首部长度描述了IP报头有多长&#xff0c;报头中有一个选项部分&#xff0c;是变长的&#xff0c;是可有可无的部分&#xff0c;所以IP报…...

CentOS Stream 8配置DNS

1&#xff1a;用CentOS搭建DNS的目的是想解析一台下载服务器&#xff0c;IP地址172.18.0.58&#xff0c;现在是用IP地址方的式访问&#xff0c;想搭建DNS服务器用域名的方式访问。 使用下面的命令查看一下当前系统的Bind版本。 yum info bind 版本是9.11.36.我的CentOS是最小…...

【roLabelImg】windows下旋转框标注软件安装、使用、rolabelimg打包成exe

主要参考&#xff1a; roLabelImg安装、使用、数据格式roLabelImg在Win10系统下打包成exe - 问雪的文章 - 知乎 一、安装 1.1 直接下载exe运行 劝大家直接去下别人编译好的吧&#xff0c;本来是训练模型标记的&#xff0c;结果搞了半天去了解这个软件了&#xff0c;哎~ 我…...

2023美赛F题:绿色经济

文章目录背景要求词汇表背景 国内生产总值&#xff08;GDP&#xff09;可以说是最知名且最常用的衡量一个国家经济健康的指标之一。它通常用于确定一个国家的购买力和贷款能力&#xff0c;为国家提出提高GDP的政策和项目提供了动力。GDP “衡量一个国家在一段特定时间内生产的…...

华为OD机试 - 剩余可用字符集 | 备考思路,刷题要点,答疑 【新解法】

最近更新的博客 【新解法】华为OD机试 - 关联子串 | 备考思路,刷题要点,答疑,od Base 提供【新解法】华为OD机试 - 停车场最大距离 | 备考思路,刷题要点,答疑,od Base 提供【新解法】华为OD机试 - 任务调度 | 备考思路,刷题要点,答疑,od Base 提供【新解法】华为OD机试…...

“笨办法”学Python 3 ——练习 40. 模块、类和对象

练习40 模块、类和对象 知识点&#xff1a; 40.1.0 模块就像字典 my_stuff[apple] #my_stuff是字典&#xff0c;访问字典apple键的值 import mystuff mystuff.apple() #mystuff是模块&#xff0c;模块访问函数apple() print(mystuff.tangerine) #模块访问变量tangerine说明P…...

自动驾驶:BEVDet

自动驾驶&#xff1a;BEVDetIntroductionMethodoloData AugmentationNetwork StructureScale-NMS实验Introduction 作者通过现有的算法&#xff08;LSS&#xff09;、独特的数据增强方案与新的NMS方案整合了一个BEV框架&#xff08;BEVDet&#xff09;。 如下图&#xff1a; …...

vue的组件通信

文章目录3. 组件通信3.1 父组件-->子组件3.3组件自定义事件&#xff08;子->父&#xff09;3.4.全部事件总线&#xff08;两代以上&#xff09;3.5消息的订阅与发布3. 组件通信 3.1 父组件–>子组件 <Student name"张三" :age"18"></St…...

Typescript的定义及使用优势

编程语言的类型&#xff1a; 动态类型语言 (Dynamically Typed Language&#xff09;静态类型语言 (Statically Typed Language&#xff09; 两种语言的含义及区别&#xff1a; 比如JS、python就是动态类型语言&#xff0c;什么是动态类型语言&#xff0c;通俗的讲&#xff0…...

正则验证:手机号码验证

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title></title> </head> <body> 手机号码<input type"text" id"phone"> <span…...

视频融合 flv流格式对接(上)

FLV 是FLASH VIDEO的简称&#xff0c;FLV流媒体格式是随着Flash MX的推出发展而来的视频格式。由于它形成的文件极小、加载速度极快&#xff0c;使得网络观看视频文件成为可能&#xff0c;它的出现有效地解决了视频文件导入Flash后&#xff0c;使导出的SWF文件体积庞大&#xf…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年&#xff0c;作为行业领先的3D工业相机及视觉系统供应商&#xff0c;累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成&#xff0c;通过稳定、易用、高回报的AI3D视觉系统&#xff0c;为汽车、新能源、金属制造等行…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...