GFPS技术原理(五)快速配对流程

这里快速配对流程分为两种情况:

初次做快速配对

Seeker Provider ①:打开配对模式 ②:监听provider广播 ③:write key-based pairing request ④ :key-based pairing response ⑤:改变双方IO Capability为Display Yes/No ⑥:进行Numeric配对 ⑦:write passkey characteristic request confirm passkey to yes or no ⑧:write passkey characteristic request confirm passkey "yes or no" ⑨:生成account key ⑩:write account key ⑪:notification account key characteristic ⑫:退回IO capablity原始设置 ⑬:继续进行SDP和A2DP,HFP Seeker Provider
  • ①:Provider打开配对模式,然后进行广播
  • ②: 如果Seeker发现自己感兴趣的广播,就会通过LE连接到Provider,Seeker会检查广播包的内容,发现没有account key filter,说明此设备还没有配对过。
  • ③:Seeker首先发起key-based pairing request,这个request会有16字节加密数据和64字节Seeker的公钥。Provider收到此write request,利用收到的公钥和自己的私钥,通过secp256r1 ECDH产生256 bits AES key,然后调用SHA-256得到256 bits哈希值,最后取前128 bit作为AES key,我们命名为K。
  • ④:Provider利用K去解析16字节加密数据,如果消息类型符合key-based pairing request数据格式,我们就认为此K有效,然后用K加密回复key-based pairing response,此response会包含6字节Provider的BR/EDR地址和9字节随机数salt,以便Seeker 发起BR连接。
  • ⑤:Seeker准备开启配对之前,双方的IO Capability如果不是Display Yes/No的话,都需要临时改成Display Yes/No,这样是为了防止中间人攻击。
  • ⑥:Seeker发起BR配对,配对方式是Numeric,双方会协商出6 digit也就是4字节的passkey。
  • ⑦:Seeker利用K加密发送passkey request给Provider,如果Provider校验正确,则回复yes。
  • ⑧:同理Provider利用K加密发送passkey request给Seeker,如果Seeker校验正确,也回复yes。
  • ⑨:上述步骤都正确的话,Seeker会产生account key,这里就是K。
  • ⑩: Seeker把account key通过写请求发给Provider。
  • ⑪:Provider收到account key会在本地更新保持,并发个通知给Seeker。
  • ⑫ 退回IO Capability到原始设置。
  • ⑬:Seeker和Provider继续进行SDP,A2DP或者HFP连接。

后续做快速配对

Seeker Provider ①:打开配对模式 ②:监听provider广播 ③:write key-based pairing request ④ :key-based pairing response ⑤:改变双方IO Capability为Display Yes/No ⑥:进行Numeric配对 ⑦:write passkey characteristic request confirm passkey to yes or no ⑧:write passkey characteristic request confirm passkey "yes or no" ⑨:生成account key ⑩:write account key ⑪:notification account key characteristic ⑫:退回IO capablity原始设置 ⑬:继续进行SDP和A2DP,HFP Seeker Provider
  • ①:Provider打开配对模式,然后进行广播
  • ②: 如果Seeker发现自己感兴趣的广播,就会通过LE连接到Provider,发现广播包包含又account key filter,然后Seeker就会从谷歌云获取此设备的account key,再做布隆过滤器判断是否为其中的一个account key作为AES key K尝试去加密报文。
  • ③:Seeker会用步骤2获取的account key加密数据发起key-based pairing request。
  • ④:Provider会尝试利用本地的account key一一去解析16字节加密数据,如果某个account key解析出来的消息类型符合key-based pairing request数据格式,我们就认为此K有效,然后用K加密回复key-based pairing response,此response会包含6字节Provider的BR/EDR地址和9字节随机数salt,以便Seeker 发起BR连接。
  • ⑤:Seeker准备开启配对之前,双方的IO Capability如果不是Display Yes/No的话,都需要临时改成Display Yes/No,这样是为了防止中间人攻击。
  • ⑥:Seeker发起BR配对,配对方式是Numeric,双方会协商出6 digit也就是4字节的passkey。
  • ⑦:Seeker利用K加密发送passkey request给Provider,如果Provider校验正确,则回复yes。
  • ⑧:同理Provider利用K加密发送passkey request给Seeker,如果Seeker校验正确,也回复yes。
  • ⑨:上述步骤都正确的话,Seeker会产生account key,这里就是K。
  • ⑩: Seeker把account key通过写请求发给Provider。
  • ⑪:Provider收到account key会在本地更新保持,并发个通知给Seeker。
  • ⑫ 退回IO Capability到原始设置。
  • ⑬:Seeker和Provider继续进行SDP,A2DP或者HFP连接。

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

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

相关文章

vue内置指令和自定义指令

常见的指令: v-bind : 单向绑定解析表达式, 可简写为 :xxx v-model : 双向数据绑定 v-for : 遍历数组/对象/字符串 v-on : 绑定事件监听, 可简…

《Java核心技术 卷I》用户界面AWT事件继承层次

AWT事件继承层次 EventObject类有一个子类AWTEvent,它是所有AWT事件类的父类。 Swing组件会生成更多其他事件对象,都直接拓展自EventObject而不是AWTEvent。 AWT将事件分为底层(low-level)事件和语义事件。 语义事件:表示用户的动作事件&…

AntFlow:一款高效灵活的开源工作流引擎

AntFlow 是一款功能强大、设计优雅的开源工作流引擎,其灵感来源于钉钉的工作流设计理念,旨在为企业和开发者提供灵活、高效的工作流解决方案。AntFlow 支持复杂的业务流程管理,具有高度可定制性,且拥有现代化的前端设计&#xff0…

2024年江西省职业院校技能大赛网络建设与运维技能竞赛方案赛项规程(中职组)

2024 年江西省职业院校技能大赛网络建设与运维赛项竞赛,为 确保竞赛工作顺利开展,特制定本竞赛方案。 一、赛项介绍 1.赛项简介:本赛项设置网络理论测试、网络建设与调试、 服务搭建与运维三个模块,竞赛内容包括:职…

EWM 打印

目录 1 简介 2 后台配置 3 主数据 4 业务操作 1 简介 打印即输出管理(output management)利用“条件表”那一套理论实现。而当打印跟 EWM 集成到一起时,也需要利用 PPF(Post Processing Framework)那一套理论。而…

WLAN概述

前言 无线局域网WLAN是一种利用无线技术实现主机等总端设备灵活接入以太网的技术,它使得网路哦的国家你和终端的移动更加方便和灵活.不仅可以作为有线局域网的补充和延申,而且还要看与有线网络互为备份. WLAN应用 智能移动设备的使用热潮为BYOD(bring Your Own Device).BYOD解…

stm32——通用定时器时钟知识点

(该图来自小破站 铁头山羊老师的stm32标准库教学)

免费下载 | 2024年金融数字化转型白皮书

导读:数字经济的蓬勃发展给银行创造了全新的机遇和挑战,数字化转型升级已成为必然要求。在金融服务需求方面客户对银行的要求全面升级:一是个人生活线上化比重提升,对金融服务的需求频度和便捷度要求提高;二是企业业务场景化,对金…

RabbitMQ 高级特性——延迟队列

文章目录 前言延迟队列延迟队列的概念TTL 死信队列模拟延迟队列设置队列的 TTL设置消息的 TTL 延迟队列插件安装并且启动插件服务使用插件实现延迟功能 前言 前面我们学习了 TTL 和死信队列,当队列中的消息达到了过期时间之后,那么这个消息就会被死信交…

腾讯IM uniapp微信小程序版本实现迅飞语音听写(流式版)

在之前文章《腾讯IM web版本实现迅飞语音听写(流式版)》实现了腾讯IM web版本实现迅飞语音听写,本文将基于uniapp vue2/vue3(cli 脚手架)的Demo项目集成迅飞语音听写(流式版): 主要代…

实现高效运行管理:如何使用 NSSM 工具将 IoTDB 注册为 Windows 系统服务

后台自动无干扰运行 IoTDB 的“指导手册”! IoTDB 是一个专为工业物联网领域设计的高性能时间序列数据库。在生产环境中,确保 IoTDB 的稳定运行对于业务连续性至关重要。通常情况下,通过批处理(bat)脚本运行 IoTDB 会始…

Windows配置域名映射IP

一、找到 hosts 文件 打开 C:\Windows\System32\drivers\etc 二、添加hosts文件修改、写入权限 右击hosts文件,点击属性 -> 安全 -> Users -> 编辑 -> Users -> 添加修改、写入权限 -> 确定 -> 确定 进入常规,将只读属性关闭 三、…

专题二十_动态规划_简单多状态dp问题_买卖股票系列问题_算法专题详细总结

目录 动态规划 1. 按摩师(easy) 解析: 1.状态表达式: 2.状态转移方程 3.初始化 4.填表方向 5.返回值: 代码编写: 总结: 2. 打家劫舍II (medium) 解析&#xf…

多模态简述

多模态学习概念 【多模态简述-哔哩哔哩】 https://b23.tv/UrUyfln 定义: 模态:事物表达或感知的方式 多模态:研究异构和相互连接数据的科学,涵盖了从原始的器官信号到抽象概念的多种模态 语音和语言是理解人物交互的关键模态&am…

mac2019环境 Airflow+hive+spark+hadoop本地环境安装

1 环境介绍 本地安装可分为两个部分,mac软件环境, python开发环境 ps: 安装过程参考chatgpt、csdn文章 1.1 mac软件环境 目标安装的的软件是hive、apache-spark、hadoop,但是这三个软件又依赖java(spark依赖)、ssh&#xff08…

HarmonyOS4+NEXT星河版入门与项目实战--------开发工具与环境准备

文章目录 1、熟悉鸿蒙官网1、打开官网2、下载 DevEco Studio3、HarmonyOS 资源库4、开发指南与API 2、安装 DevEco Studio1、软件安装2、配置开发工具 1、熟悉鸿蒙官网 1、打开官网 百度搜索 鸿蒙开发者官网 点击进入开发者官网,点击开发,可以看到各种…

11.16 JavaScript

什么是JavaScript? JavaScript(简称:js)是一门跨平台,面向对象的脚本语言,是用来控制网页行为的,它能使网页可交互。JavaScript和java是完全不同的语言,不论是概念还是设计。但是基…

【网络安全面经】技术性问题

1.SQL注入原理 主要基于Web应用程序对用户输入数据的合法性缺乏严格的判断或过滤 2.windows上提权的方式和linux提权方式 windows:本地溢出漏洞提权,AT(计划任务提权),SC(创建服务提权),PS(微软官方工具pstool),数据…

20241116下载中科创达的TurboX D660核心板的Android11的SDK的详细LOG

20241116下载中科创达的TurboX D660核心板的Android11的SDK的详细LOG 2024/11/16 15:28 下载速度,工作日:20MBps/周末30MBps。 【实际情况,取决于您的实际网络环境】 https://docs.thundercomm.com/turbox_doc/products/smart-modules/turbox…

计算机网络 (6)物理层的基本概念

前言 计算机网络物理层是OSI模型(开放式系统互联模型)中的第一层,也是七层中的最底层,它涉及到计算机网络中数据的物理传输。 一、物理层的主要任务和功能 物理层的主要任务是处理物理传输介质上的原始比特流,确保数据…