当前位置: 首页 > 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…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会&#xff0c;玩音乐的本质就是玩电网。火电声音偏暖&#xff0c;水电偏冷&#xff0c;风电偏空旷。至于太阳能发的电&#xff0c;则略显朦胧和单薄。 不知你是否有感觉&#xff0c;近两年家里的音响声音越来越冷&#xff0c;听起来越来越单薄&#xff1f; —…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析&#xff08;Parser&#xff09; 2.4、执行sql 1. 预处理&#xff08;Preprocessor&#xff09; 2. 查询优化器&#xff08;Optimizer&#xff09; 3. 执行器…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称&#xff1a;Apache Flink REST API 任意文件读取漏洞CVE编号&#xff1a;CVE-2020-17519CVSS评分&#xff1a;7.5影响版本&#xff1a;Apache Flink 1.11.0、1.11.1、1.11.2修复版本&#xff1a;≥ 1.11.3 或 ≥ 1.12.0漏洞类型&#xff1a;路径遍历&#x…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

Netty从入门到进阶(二)

二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架&#xff0c;用于…...