搞定蓝牙——第五篇(SMP)

2023-10-29 01:52
文章标签 搞定 蓝牙 smp 第五篇

本文主要是介绍搞定蓝牙——第五篇(SMP),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

搞定蓝牙——第五篇(SMP)

  • 原理
    • Security Manager(简称SM,不要想歪)
    • 秘钥
    • 配对
    • 秘钥生成
    • 特定秘钥分发
    • 原理总结

原理

Security Manager(简称SM,不要想歪)

按照前面的试验,两个设备可以通过ble通讯了,但是,这两个demo都是带有spp的,也就是透明传输的意思,也就是说,这两个设备的ble通讯在空中的数据是透明的,也就意味着会被别的设备捕获到,然后被破解出来,如果用来传输一些私密的东西那当然是不安全的了,所以,ble协议栈中还有一个协议专门做这个事情(给空中传输的数据进行加密),Security Manager Procotol,简称SMP。

秘钥

我们知道,数据的加密是需要一套加密算法的,既能按照算法推演出加密后的数据,又能将加密的数据解密出来。这个时候这套算法就一定有个参数来修改(如果是固定,别人捕获了这个数据按照这套算法来就可以解密了),这个参数叫做秘钥。

配对

那么,接收数据的那个ble设备怎么知道发送数据的ble的秘钥呢,这个时候就需要在发送数据前协商一下了,这个过程叫配对(Pairing)。
你想用手机连接蓝牙手环,如果隔壁大哥和你有一个一样的手环,这两个设备的名字设备的名字都是一样的,那么,你怎么知道你连接的是你的手环呢?我们可以在手环屏幕上显示,有一个手机要连接手环,然后加一个按钮,用户自己确定是不是要连接,为了防止大哥也正在连接大哥的手环,可以在手机显示一串数字,在手环显示同样的数字,我们只需要判断是不是相同数字就知道了。这个过程叫做鉴权,属于配对的一个小步骤,这串数字叫做key。

鉴权有两类,

  1. OOB,这种事不需要人来参与的,例如通过两者本来已经连接的wifi来交互这个key
  2. MITM,需要人来确认key的。这里有几种方式:
    A. 一个设备显示key,另外一个设备输入key
    B. 两个设备显示相同key,用户确认
    C. 两个设备都需要输入同样的key
    D. 两个设备都不需要输入,这种就是没有鉴权了
    当然,有些ble设备没有屏幕没有按键的,就无法输入key也无法查看key了,这就需要按照ble设备来决定使用哪种鉴权方式了,称为IO Capabilities。

有这六种方式。
NoInputNoOutput
DisplayOnly
NoInputNoOutput1
DisplayYesNo
KeyboardOnly
KeyboardDisplay

我们发现,我们手机连接手环只需要在买回来第一次输入key,后面就不需要了,这是因为,手机和手环的ble中的秘钥已经被存储到各自的存储器里面了,使用下次直接使用就行,这个行为叫做绑定。

秘钥生成

通过上面的步骤已经拿到key了,但是这个key可能会被旁边人偷窥到,这个key就不能直接用来作为秘钥了,两个ble这个时候使用这个key来作为临时秘钥来建立临时连接,然后使用这个临时秘钥来传输各自生成的真正的秘钥,最后使用这个真正的秘钥来加密要传输的数据。

特定秘钥分发

最后还有一步,就是ble其他协议还有一些秘钥和一些敏感数据,通过最后真正安全连接后来发送,称为特定秘钥分发。

原理总结

总结一下,SMP是一个给传输数据加密的安全管理协议。分为三大块,配对,秘钥生成,特定秘钥分发。配对其实有两种配对方式,LE legacy pairing和LE Secure Connections,后者更安全,蓝牙4.2以后才有,需要双方都支持这种。鉴权有两大类,OOB和MITM,主要取决于是不是需要人来参与,当然,设备优先使用OOB。在MITM中使用哪种鉴权方式,取决于两个设备是否能输入、是否能显示,具体看下图。
在这里插入图片描述
在这里插入图片描述

这篇关于搞定蓝牙——第五篇(SMP)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/297472

相关文章

Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单

《Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单》:本文主要介绍Springboot的ThreadPoolTaskScheduler线... 目录ThreadPoolTaskScheduler线程池实现15分钟不操作自动取消订单概要1,创建订单后

MySQL数据库宕机,启动不起来,教你一招搞定!

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG、Mongodb数据库运维(如安装迁移,性能优化、故障应急处理等)公众号:老苏畅谈运维欢迎关注本人公众号,更多精彩与您分享。 MySQL数据库宕机,数据页损坏问题,启动不起来,该如何排查和解决,本文将为你说明具体的排查过程。 查看MySQL error日志 查看 MySQL error日志,排查哪个表(表空间

分享5款免费录屏的工具,搞定网课不怕错过!

虽然现在学生们不怎么上网课, 但是对于上班族或者是没有办法到学校参加课程的人来说,网课还是很重要的,今天,我就来跟大家分享一下我用过的几款录屏软件=,看看它们在录制网课时的表现如何。 福昕录屏大师 网址:https://www.foxitsoftware.cn/REC/ 这款软件给我的第一印象就是界面简洁,操作起来很直观。它支持全屏录制,也支持区域录制,这对于我这种需要同时录制PPT和老师讲

开放式耳机好用?平价开放式耳机推荐?四款开放式的蓝牙耳机推荐

开放式耳机好用吗?有平价些的开放式耳机推荐吗?那这两个问题的回答当然是肯定的。 首先开放式耳机好不好用取决于对耳机的需求,因为开放式耳机其实是比较适用于需要注意周围环境、需要‌长时间佩戴舒适以及需要频繁与人交流的场景中,在这些场景下使用开放式耳机的话就会比较有优势。就例如跑步骑行健身等运动的时候,能够兼得佩戴舒适度的同时,增加一定的安全性;还有在办公学习的时候,会很适合长时间佩戴,能够方便和

Flutter 中的低功耗蓝牙概述

随着智能设备数量的增加,控制这些设备的需求也在增加。对于多种使用情况,期望设备在需要进行控制的同时连接到互联网会受到很大限制,因此是不可行的。在这些情况下,使用低功耗蓝牙(也称为 Bluetooth LE 或 BLE)似乎是最佳选择,因为它功耗低,在我们的手机中无处不在,而且无需连接到更广泛的网络。因此,蓝牙应用程序的需求也在不断增长。 通过阅读本文,您将了解如何开始在 Flutter 中开

快速搞定“照片调色”!50000+Lr预设滤镜模板,一键让你照片不再丑!

照片调色不仅仅是调整颜色,更是一种艺术表达。通过巧妙地运用 LR 预设,可以突出照片的主题,增强情感共鸣。比如,在风景照片中,使用特定的预设可以让天空更蓝、草地更绿,让大自然的美丽更加生动地展现出来。 在人像摄影中,合适的 LR 预设可以让肤色更加自然、眼神更加明亮,让人物更加迷人。而且,LR 预设还可以根据不同的风格和场景进行定制,满足各种个性化的需求。如果你对照片调色还不是

开放式蓝牙耳机哪个品牌好用?盘点五款超优秀的开放式耳机!

开放式蓝牙耳机现在挺受欢迎的,它们最大的好处就是不塞耳朵,戴着舒服,特别适合长时间佩戴。而且,这种耳机能让你在听音乐的同时,还能听到周围的环境声,这样在外面运动或者骑车的时候就更安全。音质方面,现在的开放式耳机也做得越来越好,有些高端款式还有特别的技术来减少漏音,保护你的隐私。但是现在市场上的开放式耳机品牌太多了,很多人不知道怎么选?为了帮助您在众多选项中做出选择,我根据个人经验挑选了一些表现良好

两步搞定 Tomcat 下启用 https:// 访问

这个简单教程中我们通过简单的两步就可以在 Tomcat 7 中启用 HTTPS 访问。 第一步:创建 .keystore 文件 使用如下命令生成 .keystore 文件 windows : 1 %JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA Linux: 1 $JAVA_HOM

Anroid BLE蓝牙(手机分别作为中心设备和外围设备)

蓝牙是一种短距的无线通讯技术,可实现固定设备、移动设备之间的数据交换。一般将蓝牙3.0之前的BR/EDR蓝牙称为传统蓝牙,而将蓝牙4.0规范下的LE蓝牙称为低功耗蓝牙。  BLE蓝牙模块主要应用领域     1、移动扩展设备     2、汽车电子设备     3、健康医疗用品:心跳带、血压计等     4、定位应用:室内定位、井下定位等     5、近距离数据采集:无线

一分钟搞定月考成绩群发给家长!

Hey亲们,月考又来啦!老师们又在头疼怎么快速又准确地把成绩发给每位家长吗?别担心,我来给你们安利一个超好用的工具——易查分小程序! 老师们只需要三步,就能轻松搞定成绩发布: 1.登录易查分主页,点击“新建查询”。 2.上传包含学生信息的电子表格,比如姓名、学号等。 3.设置查询条件,比如通过学号和姓名查询,然后点击发布。 噔噔噔噔~一个专属的查询二维码就生成啦!把这