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

2024-02-19 20:44
文章标签 简单 安全 配对 蓝牙 ssp ble

本文主要是介绍蓝牙BLE安全-SSP简单安全配对,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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来加密数据包。

这篇关于蓝牙BLE安全-SSP简单安全配对的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构

Java中常见队列举例详解(非线程安全)

《Java中常见队列举例详解(非线程安全)》队列用于模拟队列这种数据结构,队列通常是指先进先出的容器,:本文主要介绍Java中常见队列(非线程安全)的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一.队列定义 二.常见接口 三.常见实现类3.1 ArrayDeque3.1.1 实现原理3.1.2

C/C++ chrono简单使用场景示例详解

《C/C++chrono简单使用场景示例详解》:本文主要介绍C/C++chrono简单使用场景示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录chrono使用场景举例1 输出格式化字符串chrono使用场景China编程举例1 输出格式化字符串示

电脑蓝牙连不上怎么办? 5 招教你轻松修复Mac蓝牙连接问题的技巧

《电脑蓝牙连不上怎么办?5招教你轻松修复Mac蓝牙连接问题的技巧》蓝牙连接问题是一些Mac用户经常遇到的常见问题之一,在本文章中,我们将提供一些有用的提示和技巧,帮助您解决可能出现的蓝牙连接问... 蓝牙作为一种流行的无线技术,已经成为我们连接各种设备的重要工具。在 MAC 上,你可以根据自己的需求,轻松地

windows和Linux安装Jmeter与简单使用方式

《windows和Linux安装Jmeter与简单使用方式》:本文主要介绍windows和Linux安装Jmeter与简单使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows和linux安装Jmeter与简单使用一、下载安装包二、JDK安装1.windows设

JAVA保证HashMap线程安全的几种方式

《JAVA保证HashMap线程安全的几种方式》HashMap是线程不安全的,这意味着如果多个线程并发地访问和修改同一个HashMap实例,可能会导致数据不一致和其他线程安全问题,本文主要介绍了JAV... 目录1. 使用 Collections.synchronizedMap2. 使用 Concurren

Python从零打造高安全密码管理器

《Python从零打造高安全密码管理器》在数字化时代,每人平均需要管理近百个账号密码,本文将带大家深入剖析一个基于Python的高安全性密码管理器实现方案,感兴趣的小伙伴可以参考一下... 目录一、前言:为什么我们需要专属密码管理器二、系统架构设计2.1 安全加密体系2.2 密码强度策略三、核心功能实现详解

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则