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

news2024/11/23 19:43:21

搞定蓝牙——第五篇(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中使用哪种鉴权方式,取决于两个设备是否能输入、是否能显示,具体看下图。
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

(a /b)*c的值

系列文章目录 进阶的卡莎C++_睡觉觉觉得的博客-CSDN博客数1的个数_睡觉觉觉得的博客-CSDN博客双精度浮点数的输入输出_睡觉觉觉得的博客-CSDN博客足球联赛积分_睡觉觉觉得的博客-CSDN博客大减价(一级)_睡觉觉觉得的博客-CSDN博客小写字母的判断_睡觉觉觉得的博客-CSDN博客纸币(…

ETL工具Kettle

1 Kettle的基本概念 一个数据抽取过程,主要包括创建一个作业(Job),每个作业由一个或多个作业项(Job Entry)和连接作业项的作业跳(Job Hop)组成。每个作业项可以是一个转换&#xff…

Cookie技术

Cookie中文名称为小型文本文件,指某些网站为了辨别用户身份、进行会话跟踪而储存在用户本地终端上的数据。 Cookie是由服务器端生成,发送给User-Agent(—般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文…

wiresharak捕获DNS

DNS解析: 过滤项输入dns: dns查询报文 应答报文: 事务id相同,flag里 QR字段1,表示响应,answers rrs变成了2. 并且响应报文多了Answers 再具体一点,得到解析出的ip地址(最底下的add…

【Linux】虚拟机安装Linux、客户端工具,MobaXterm的使用,Linux常用命令

目录 一,安装Linux的centos7版本 具体安装步骤: 二,Linux常见的命令: 三、安装客户端工具 1、介绍 2、安装MobaXterm 3、换源 四、拍照功能 一,安装Linux的centos7版本 介绍: 具体安装步骤&#…

PTA L1-8 静静的推荐

PTA L1-8 静静的推荐 分数 20 全屏浏览题目 切换布局 作者 陈越 单位 浙江大学 天梯赛结束后,某企业的人力资源部希望组委会能推荐一批优秀的学生,这个整理推荐名单的任务就由静静姐负责。企业接受推荐的流程是这样的: 只考虑得分不低于 175 …

软考系列(系统架构师)- 2012年系统架构师软考案例分析考点

试题一 软件架构(架构风格对比、架构风格选取、架构设计过程) 【问题1】(12分) 请用200字以内的文字解释什么是软件架构风格,并从集成开发环境与用户的交互方式、集成开发环境的扩展性、集成开发环境的数据管理三个方…

Anaconda下载和安装

1.概述 1)包含conda:conda是一个环境管理器,其功能依靠conda包来实现,该环境管理器与pip类似。 2)安装大量工具包:Anaconda会自动安装一个基本的python,该python的版本Anaconda的版本有关。该…

进程(详解)

进程 进程PCB进程的定义进程的组成进程模式进程的状态进程的运行进程的创建进程的结束孤儿进程僵尸进程僵尸进程的危害 进程的创建pidforkwait案例 进程 PCB 从操作系统理解进程概念-------先描述,后组织 为了使参与并发执行的程序能独立的运行,必须为之…

经常遇到的问题

一个前端经常会遇到的问题 例如,我想要在一个项目里,监听所有的fetch请求,应该怎么办?又或者说,我想用别人封装好的方法,但是在它之前,需要经过一层处理、判断,然后再看情况是否调用…

如何隐藏woocommerce 后台header,woocommerce-layout__header

如何隐藏woocommerce 后台header,woocommerce-layout__header WooCommerce |Products Store Activity| Inbox| Orders| Stock| Reviews| Notices| breadcrumbs 在 functions.php 里添加如下代码即可: // Disable WooCommerce Header in WordPress Admi…

开启CETOS 裸奔了一年的服务器开启firewall防火墙

记录一下关于firewall,博主非运维专家或服务器专家。 背景 客户有一台裸奔运行了一年多的系统有公网但发现没有开防火墙,iptables和firewall均是关闭状态,通过扫描发现很多漏洞。根据客户要求对端口进行重新梳理且关闭不必要或有潜在风险的…

kubeadmin部署k8s1.27.4

kubeadmin部署k8s1.27.4 环境介绍 IP主机名资源配置系统版本192.168.117.170k8s-master2c2g200gCentos7.9192.168.117.171k8s-node12c2g200gCentos7.9192.168.117.172k8s-node22c2g200gCentos7.9 编辑本地解析且修改主机名 三台主机都要做 vim /etc/hosts配置主机名 mast…

软考系列(系统架构师)- 2013年系统架构师软考案例分析考点

试题一 软件架构(根据描述填表、ESB 定义和功能) 【问题1】(10分) 服务建模是对Ramp Coordination信息系统进行集成的首要工作,公司的架构师首先对Ramp Coordination信息系统进行服务建模,识别出系统中的两…

lesson2(补充)关于>>运算符和<<运算符重载

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 前言&#xff1a; cout和cin我们在使用时需要包含iostream头文件&#xff0c;我们可以知道的是cout是写在ostream类里的&#xff0c;cin是写在istream类里的&#xff0c;他们都是定义出的对象&#xff0c;而<< 和 >…

猴子吃桃问题--C语言

问题描述&#xff1a; 猴子第1天摘下若干个桃子&#xff0c;当即吃了一半&#xff0c;还不过瘾&#xff0c;又多吃了一个。第2天早 上又将剩下的桃子吃掉一半&#xff0c;又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天 早上想再吃时&#xff0c;就只剩一…

【AD9361 数字接口CMOS LVDSSPI】B 并行数据之CMOS 续

续【AD9361 数字接口CMOS &LVDS&SPI】B 并行数据之CMOS 数据总线空闲和周转周期 &#xff08;CMOS&#xff09; P0_D[11&#xff1a;0]和P1_D[11&#xff1a;0]总线信号通常由BBP或AD9361有源驱动。在任何空闲期间&#xff0c;两个组件都会忽略数据总线值。但是&…

抢占式调度是如何发生的

最常见的现象就是一个进程执行时间太长了&#xff0c;是时候切换到另一个进程了。那怎么衡量一个进程的运行时间呢&#xff1f;在计算机里面有一个时钟&#xff0c;会过一段时间触发一次时钟中断&#xff0c;通知操作系统&#xff0c;时间又过去一个时钟周期&#xff0c;这是个…

039-第三代软件开发-PDF阅读器

第三代软件开发-PDF阅读器 文章目录 第三代软件开发-PDF阅读器项目介绍PDF阅读器1 初始化PDF view2 qml 中使用3 创建模块 关键字&#xff1a; Qt、 Qml、 pdf、 LTDev、 本地 项目介绍 欢迎来到我们的 QML & C 项目&#xff01;这个项目结合了 QML&#xff08;Qt Met…

NNDL:作业五

习题4-1 对于一个神经元,并使用梯度下降优化参数w时,如果输入x恒大于0,其收敛速度会比零均值化的输入更慢. 证明&#xff1a; 激活函数以sigmoid为例。 神经元&#xff1a;有两层&#xff0c;线性层和激活层&#xff1a;yw*xb,然后y‘sigmoid(y)&#xff0c;也就是。 梯度…