目录

一、蓝牙配对介绍

二、蓝牙配对过程

三、蓝牙配对方式展示


一、蓝牙配对介绍

蓝牙规范定义了两种标准配对过程,LMP配对(也称为基于PIN码)和SSP安全简易配对。

LMP(Link Manager Protocol)配对,又名PIN码配对,即pincode配对方式。

SSP(Secure simple pairing)安全简易配对,一共有四种,其中Out of Band很少使用到,具体如下:

(1)Numeric Comparison (即confirm配对方式)

配对双方都显示一个6位的数字,由用户来核对数字是否一致,并输入Yes/No,两端Yes表示一致即可配对,可以防止中间攻击。 使用场景:两端设备可以弹出6位十进制数,并且有yes和no按钮。

(2)Passkey Entry 

配对目标输入一个在本地设备上显示的6位数字,输入正确即可配对,并可以防止中间人攻击。 使用场景:一端设备可以显示,另一端设备可以输入。

(3)Just Works 

不会进行鉴权,不能防止中间人攻击用于配对没有显示没有输入的设备,主动发起连接即可配对,用户看不到配对过程,不可以防止中间人攻击,例如连接蓝牙耳机。 使用场景:用于即不能显示6位随机数,也不能输入的设备。

(4)Out of Band 

两设备的通过别的途径交换配对信息,例如一些NFC蓝牙音箱。

任何配对方法的结果都是一样的:即创建共享的链路密钥(Link Key)。

二、蓝牙配对过程

配对设备的过程旨在在两个蓝牙设备之间创建共享密钥:链路密钥(Link Key)。然后,该链路密钥(Link Key)用于彼此认证设备并加密交换的数据。数据实际上并没有使用链路密钥(Link Key)直接加密;临时加密密钥(Encryption Key)从链路密钥(Link Key)和在加密通信流开始之前不久交换的随机数导出。然后,该加密密钥(Encryption Key)用于在两个方向上加密数据。可以在连接处于活动状态的任何时候更改它,一旦连接关闭,或者如果加密停止,将被丢弃。

一旦两个设备拥有相同的链路密钥(Link Key),该共享密钥可以用于在稍后的时间将两个设备重新认证。当重新连接时,设备通过交换从其派生的数字来快速验证它们都具有相同的链路密钥(Link Key)。如果链路密钥(Link Key)匹配,则可以继续创建会话密钥(Session Key)。否则,配对过程(LMP配对或SSP)必须从一开始重新启动,从而创建一个全新的链路密钥(Link Key)。

三、蓝牙配对方式展示

这里主要展示pincode、confirm、passkey和justwork四种配对方式,看看蓝牙设备在不同的配对方式下,在手机设置的系统蓝牙中,配对蓝牙设备,界面弹出的配对框是什么样子的。

(1)pincode 配对方式,配对码一般为0000或1234,只要手机端配对码输入正确,即可配对成功。

(2)confirm 配对方式,除了手机端确认配对码之外,蓝牙设备端也需要确认该配对码,两端同时确认正确之后才能配对成功。

(3)passkey 配对方式,手机端弹出配对码显示框,在蓝牙设备端填入该配对码确认,确认正确才能配对成功。

(4)justwork 配对方式,手机端、蓝牙设备端不显示任何配对相关信息,直接配对成功。

参考文章:

1、蓝牙安全简单配对的解释 https://www.jianshu.com/p/683c287fee3e

2、蓝牙配对过程分析(经典蓝牙)https://blog.csdn.net/w1107845086/article/details/79636090

【Android】蓝牙开发——经典蓝牙配对介绍(通过手机系统蓝牙演示)相关推荐

  1. 蓝牙配对模式 java_【Android】蓝牙开发—— 经典蓝牙配对介绍(Java代码实现演示)附Demo源码...

    目录 前言 一.连接&配对方法介绍 二.演示:第一次连接蓝牙设备  &  直接与蓝牙设备建立配对 三.总结 四.补充 五.Demo案例源码地址: 前言 前面两篇文章[Android]蓝 ...

  2. 【Android】蓝牙开发—— 经典蓝牙配对介绍(Java代码实现演示)附Demo源码

    目录 前言 一.连接&配对方法介绍 二.演示:第一次连接蓝牙设备  &  直接与蓝牙设备建立配对 三.总结 四.补充 五.Demo案例源码地址: 前言 前面两篇文章[Android]蓝 ...

  3. 【Android】蓝牙开发——经典蓝牙:配对与解除配对 实现配对或连接时不弹出配对框

    目录 一.配对方法 二.解除配对方法 三.配对/解除配对结果 四.justwork配对模式下,不弹出配对框 五.pincode配对模式下,不弹出配对框 六.小结 在之前的文章[Android]蓝牙开发 ...

  4. Android蓝牙开发—经典蓝牙详细开发流程

    文章目录 开发流程 权限 核心API BlueToothAdapter getDefaultAdapter():获取BluetoothAdapter对象 判断设备是否支持蓝牙 判断蓝牙是否开启 get ...

  5. Android笔记---蓝牙开发经典蓝牙和低功耗蓝牙

    目录 前言 一般开发步骤 相关API介绍 一.通用API 1.BluetoothAdapter 2.BluetoothDevice 二.经典蓝牙(BT)API 1.BluetoothSocket 2. ...

  6. Android蓝牙开发 — 经典蓝牙BLE蓝牙

    一,前期基础知识储备 1)蓝牙是一种支持设备之间短距离通信的无线电技术(其他还包括红外,WIFI): 支持移动电话.笔记本电脑.无线耳机等设备之间进行信息的交换: Android支持的蓝牙协议栈:Bl ...

  7. android pin码 经典蓝牙_Android蓝牙开发—经典蓝牙详细开发流程

    Android蓝牙开发-经典蓝牙详细开发流程 发布时间:2018-07-16 13:41, 浏览次数:637 , 标签: Android Android蓝牙开发前,首先要区分是经典蓝牙开发还是BLE( ...

  8. Android TV 开发有关PopupWindow的KeyListener(手机也能用)

    转载请标明原地址:Android TV 开发有关PopupWindow的KeyListener(手机也能用)_高磊的专栏-CSDN博客 现在这个公司主要是做智能电视视频方面.有硬件电视盒子,APP开发 ...

  9. Android蓝牙开发—经典蓝牙和BLE(低功耗)蓝牙的区别

    找到一篇介紹BT与BLE使用差别的文章, 写的很清晰,看完基本明白了 ----------------------------------------------------------------- ...

最新文章

  1. MongoDB修改器的使用1
  2. Android-Binder进程间通讯机制-多图详解
  3. 函数式编程与REST的思考
  4. 泛海精灵 Beta计划 (草案)
  5. android 介绍0
  6. python类的成员函数_Python为类对象动态添加成员函数
  7. 计算机电缆 耐火,耐火计算机电缆ZR-NH-DJVVP
  8. 漫画 | 让设计师崩溃的十个瞬间
  9. 设置固定高度_防排烟系统的设置,前室、楼梯间、避难层!设置要求全记住!...
  10. secureCRT及secureFX安装注册和secureFX中出现中文乱码的处理方式
  11. C/C++ 中的指针
  12. 南华大学计算机专业导师排名,南华大学研究生导师介绍:左国平-中公研招网...
  13. Win7远程桌面连接不上问题解决方案
  14. 最小生成树问题:算法分析 Java 实现
  15. ayit第十周训练g题
  16. DYNAMIC MOVEMENT PRIMITIVES PART 1: THE BASICS
  17. Latex--TikZ和PGF--高级文本绘图,思维绘图,想到--得到!
  18. 2021半年盘点,这些经典更新了!
  19. 关闭安卓手机的按键背景灯
  20. 微信视频号服务商怎么赚钱?

热门文章

  1. 计算机二级C语言考试Tips
  2. 26平移-XY轴平移——html
  3. matlab在数字传输系统,数字基带传输系统matlab仿真.doc
  4. 「Luogu2495」 [SDOI2011]消耗战 虚树
  5. 第314场Leetcode周赛|使用机器人打印字典序最小的字符串
  6. 好诗好词PARKER SCP01-100-24-07苏轼
  7. 正则表达式验证手机号,适用最新166、198、199号段
  8. mysql DISTINCT去重,返回去重后的所有字段
  9. weblogic 安装升级补丁出现内存溢出问题解决
  10. 为什么我的 Wireshark 抓不到/抓不全 HTTP 数据包 ?