蓝牙BLE安全-SSP简单安全配对

news2025/1/20 3:43:20

SSP的配对过程由于可以根据设备的IO能力选择不同的关联模型,因此十分灵活,其提供了四种方式:Numeric Comparison、Passkey Entry、Just Works以及Out of Band (OOB) 。这里关联方式的选择实质上对后面的流程是有一定影响的,如Just Works就不需要对Link Key进行验证。

Numeric Comparison : 数值比较是针对两种蓝牙设备都能显示六位数字并允许用户输入“是”或“否”回答的情况而设计的。在配对过程中,用户会在每台显示器上看到一个六位数的数字,如果数字匹配,则在每台设备上回答“是”。否则用户回答no,配对失败。这与传统配对中使用PIN的一个关键区别是,显示的数据不用作生成链接密钥的输入。因此,能够看到(或捕获)显示值的窃听者无法利用它来确定最终链路或加密密钥。

Passkey Entry :Passkey Entry设计用于一个蓝牙设备有输入能力(例如键盘),而另一个设备有显示但没有输入能力的情况。在这种模型中,只有显示屏的设备显示一个6位数的数字,然后用户在具有输入能力的设备上输入该数字。与数值比较模型一样,该交易中使用的6位数字没有包含在链路密钥生成中,对窃听者没有任何用处。

Just Works是为至少一个配对设备既没有显示器也没有键盘输入数字(例如,耳机)的情况而设计的。它执行认证阶段1的方式与Numeric Comparison相同,只是没有显示。用户需要在不验证两个设备上计算出的值的情况下连接,因此Just Works不提供中间人攻击保护。

Out of Band (OOB) :为支持常见的额外的无线(例如,近场通信(NFC))或有线技术设备设计的,用于设备发现和密码交换。在NFC的情况下,OOB模型允许设备通过简单地“点击”一个设备与另一个设备进行配对,然后用户通过一个按钮接受配对。值得注意的是,为了使配对过程尽可能安全,OOB技术应该被设计和配置为减轻窃听和中间人攻击。

安全模式4要求蓝牙服务使用安全连接(第4级)、已验证链接密钥(第3级)、未验证链接密钥(第2级)或完全不安全(第1级)指定一个已验证链接密钥。在上述的关联模型中,除了Just Works模型之外,所有模型都提供已验证链接密钥。

下图是中描述的SSP的链接密钥Link Key的生成,这里使用的是ECDH公私钥对来进行生成,区别与Lagacy LSC 使用PIN生成。

每个设备都会生成自己的ECDH公私密钥对。当两个设备都支持安全连接时,使用P-256椭圆曲线,否则使用P-192椭圆曲线。每台设备将公钥发送给另一台设备。然后,设备执行依赖于关联模型的第1阶段认证。在此之后,第一个设备计算确认值E1并将其发送给第二个设备,后者检查该值。如果成功,第二台设备将其确认值E2发送给第一台设备。假设E2确认值正确,两个设备都会计算出链接密钥。

Simple Pairing配对过程如图所示,主要由下面四部分完成:

  1. Pairing Feature Exchange

用于交换双方有关鉴权的需求(authentication requirements),以及双方具有怎么

的人机交互能力(IO capabilities)。其中最重要的是IO capabilities exchange。

 

 

IO的能力可以归纳为如下的六种:

  1. NoInputNoOutput
  2. DisplayOnly
  3. NoInputNoOutput1
  4. DisplayYesNo
  5. KeyboardOnly
  6. KeyboardDisplay
    上述的IO能力决定了后续的鉴权方式。

2. Public key exchange

两个设备之间交换Public key。 一旦设备收到对端设备的公钥,它就可以开始计算Diffie Hellman Key(DHKey)。耗时较多,应该尽早开始,以便用户交互可以隐藏计算时间。 在步骤8之前不需要DHKey。
Public key的长度大于DM1包的长度时,要使用专门的PDU来进行数据发送。

 

设备验证阶段如下图所示,注意与LSC不一样的地方在于,SSP的设备双方都是申验者和验证者,即通信的设备既会验证对方的Link Key,也会被对方验证本方的Link Key,只要有一方验证失败,则这整个阶段都验证失败。而LSC只有一方(Central)是验证者.

接下来的加密密钥的生成以及加密算法如下图所示,可以看到其大致与LSC一致,不过采用的算法完全不一样,这里采用h3来生成加密密钥,使用AES-CCM来加密数据包。

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

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

相关文章

Python实例|电商API接口数据采集的请求|爬取商品详情描述价格评论

近年来,随着互联网的发展,越来越多的数据以网页的形式存在于各个网站上。对于数据分析师、研究员或者仅仅是对数据感兴趣的人来说,如何高效地提取和分析网页数据成为了一项重要的技能。Python作为一门强大的编程语言,通过其丰富的…

【鸿蒙系统学习笔记】状态管理

一、介绍 资料来自官网:文档中心 在声明式UI编程框架中,UI是程序状态的运行结果,用户构建了一个UI模型,其中应用的运行时的状态是参数。当参数改变时,UI作为返回结果,也将进行对应的改变。这些运行时的状…

HTML的特殊字符

HTML的特殊字符 有些特殊的字符在 html 文件中是不能直接表示的&#xff0c;例如: 空格&#xff0c;小于号(<)&#xff0c;大于号(>)&#xff0c;按位与(&)。 空格 示例代码&#xff1a; 运行结果&#xff1a; 由于html 标签就是用 < > 表示的&#xff0…

原创个人java开源项目发布maven全球中央仓库详细过程示范和遇到的问题解决办法

文章目录 java项目上传到maven全球中央仓库&#xff08;原创个人开源项目发布maven中央仓库详细过程示范&#xff09;需求背景第一步 注册sonatype账号第二步 登录sonatype账号并申请新建项目第三步 准备个人GPG数字签名并发布到ubuntu第四步 准备maven配置第五步 修改项目配置…

java数据结构与算法刷题-----LeetCode155. 最小栈

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 1. 法一&#xff1a;使用辅助最小栈 解题思路&#xff1a;时间复杂度O(1)…

【Git】Gitbash使用ssh 上传本地项目到github

SSH Git上传项目到GitHub&#xff08;图文&#xff09;_git ssh上传github-CSDN博客 前提 ssh-keygen -t rsa -C “自己的github电子邮箱” 生成密钥&#xff0c;公钥保存到自己的github的ssh里 1.先创建一个仓库&#xff0c;复制ssh地址 git init git add . git commit -m …

机器学习之梯度下降法直观理解

形象化举例&#xff0c;由上图所示&#xff0c;假如最开始&#xff0c;我们在一座大山上的某处位置&#xff0c;因为到处都是陌生的不知道下山的路&#xff0c;所以只能摸索着根据直觉&#xff0c;走一步算一步。在此过程中&#xff0c;每走到一个位置的时候&#xff0c;都会求…

shell运行原理

前言 前一段时间由于身体的缘故和一些琐事&#xff0c;好久没有更新Linux的博文了。从本篇博文开始会接着以前的内容一直持续更新&#xff01; 本期类容介绍 为什么存在shell外壳&#xff1f; 什么是shell外壳&#xff1f; shell外壳是如何工作的&#xff1f; 一、为什么存在…

领域驱动设计(Domain Driven Design)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、场景和要求二、领域模型关键词1.领域2.子域3.通用语言4.限界上下文5.领域模型6.实体和值对象7.聚合根8.领域服务9.领域事件 总结 前言 Domain Driven Desi…

垂起固定翼无人机基础知识,垂起固定翼无人机应用前景,垂起固定翼无人机优缺点分析

无人机定义与类型 无人机&#xff0c;也称为无人驾驶飞行器&#xff0c;是一种无需人工直接操作的航空器。根据其用途、设计及技术特点&#xff0c;可以分为多种类型。垂起固定翼无人机是其中的一种&#xff0c;它具有垂直起降的能力并采用固定翼设计以提高飞行效率和稳定性。…

基于WOA优化的Bi-LSTM多输入时序回归预测(Matlab)鲸鱼算法优化双向长短期神经网络时序回归预测

目录 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 亮点与优势&#xff1a; 二、实际运行效果&#xff1a; 三、算法介绍&#xff1a; 鲸鱼优化算法&#xff08;WOA&#xff09;&#xff1a; 双向长短期神经网络&#xff08;Bi-LSTM&#xff09;&#xff1a…

GC调优学习

一.常见工具P62P63 1.jstat 2.visualvm插件 3.Prometheus Grafana 4.GC日志 5.GC Viewer 6.GCeasy&#xff08;强推&#xff09; 二.常见的GC模式P64 三.GC调优 1.优化基础JVM参数P65 2.减少对象产生 看以前视频&#xff0c;内存泄露相关 3.垃圾回收器的选择P66 4.优化垃圾回…

数字孪生核心技术揭秘(一):渲染引擎

数字孪生最早是应用于大型装备制造业领域的一项革命性创新&#xff0c;通过搭建一个将制造流程全部进行整合的数字孪生生产系统&#xff0c;实现从产品设计、到生产计划、再到制造执行的全过程数字化。数字孪生概念与城市数字化管理结合之后&#xff0c;便诞生了“数字孪生城市…

解密短视频上火爆的“私董会”现象

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 最近“私董会”一词再一次上了热门&#xff0c;先是一夜暴火的商业博主dada管培生翻车暴雷&#xff0c;后面是三言财经、互联网大V纷纷发表了自己的看法。 国内领先的私董会服务机构通常每年的收费都在3万元起步。…

Kubernetes基础(二十二)-K8S的PV/PVC/StorageClass详解

1 概述 先来个一句话总结&#xff1a;PV、PVC是K8S用来做存储管理的资源对象&#xff0c;它们让存储资源的使用变得可控&#xff0c;从而保障系统的稳定性、可靠性。StorageClass则是为了减少人工的工作量而去自动化创建PV的组件。所有Pod使用存储只有一个原则&#xff1a;先规…

开源新手之邮件列表

很多老牌开源社区都使用邮件列表作为沟通的主要工具&#xff0c;比如Linux&#xff0c;Git&#xff0c;Apache等等&#xff0c;那么邮件列表是什么&#xff1f;又该怎么使用呢&#xff1f; 作为接触开源社区不久的新手&#xff0c;当然是求助程序员最好的朋友 google 了 什么是…

RK3588平台开发系列讲解(视频篇)ffmpeg 的移植

文章目录 一、ffmpeg 介绍二、ffmpeg 的组成三、ffmpeg 依赖库沉淀、分享、成长,让自己和他人都能有所收获!😄 📢ffmpeg 是一种多媒体音视频处理工具,具备视频采集功能、视频抓取图像、视频格式转换、给视频加水印并能将视频转化为流等诸多强大的功能。它采用 LGPL 或 G…

CF778A String Game 题解

文章目录 CF778A String Game 题解题面翻译Input DataOutput DataInput Sample 1Output Sample 1题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示算法&#xff1a;二分代码&#xff1a; CF778A String Game 题解 link 题面翻译 …

如何通过API在1688平台选品呢?

API接口&#xff08;Application Programming Interface&#xff09;是一种定义了软件组件之间交互的规范。它允许不同的软件系统之间进行通信和数据交换&#xff0c;使得开发者可以利用已有的功能和服务来构建自己的应用程序。 API接口可以分为不同的类型&#xff0c;包括Web…

微信小程序swiper 视频中间大,两边小,轮播滑到中间视频自动播放组件教程

静态效果&#xff1a; 进入下面小程序可以体验效果&#xff0c;点击底部 看剧 栏目 一、创建小程序组件 二、代码 1、WXML <view class"swiper-wrapper" style"background-image:url(/asset/image/hot-banner.jpg);background-size: 100% 100%;">…