Mac PacketLogger分析BLE配对流程

Security Manager介绍

主要目的是为LE设备(LE only或者BR/EDR/LE)提供建立加密连接所需的key(STK or LTK)。定义了如下几类规范:

  1. 将生成加密key的过程称为Pairing(配对),并详细定义了Pairing的概念、操作步骤、实现细节等。
  2. 定义一个密码工具箱(Cryptographic Toolbox),其中包含了配对、加密等过程中所需的各种加密算法。
  3. 定义一个协议(Security Manager Protocol,简称SMP),基于L2CAP连接,实现master和slave之间的配对、密码传输等操作。

Pairing(配对)

在SM的规范中,配对是指"Master和Slave通过协商确立用于加(解)密的key的过程",主要由三个阶段组成:

  • 阶段1 ,"Pairing Feature Exchange",用于交换双方有关鉴权的需求(authentication requirements),以及双方具有怎么的人机交互能力(IO capabilities)。
  • 阶段2 ,通过SMP协议进行实际的配对操作,根据阶段1 "Feature Exchange"的结果,有两种配对方法可选:LE legacy pairingLE Secure Connections
  • 阶段3,经过阶段1和阶段2之后,双方已经产生了加密key,因而可以建立加密的连接。加密连接建立后,可以互相传送一些私密的信息,例如Encryption Information、Identity Information、Identity Address Information等。

Pairing Feature Exchange

配对的过程总是以Pairing Request和Pairing Response的协议交互开始,通过这两个命令,配对的发起者(Initiator,总是Master)和配对的回应者(Responder,总是Slave)可以交换足够的信息,以决定在阶段2使用哪种配对方法、哪种鉴权方式、等等

在此阶段,配对的双方以下面的原则选择鉴权方法:

  • 如果双方都支持OOB鉴权,则选择该方式(优先级最高)。
  • 否则,如果双方都支持MITM鉴权,则根据双方的IO Capabilities(并结合具体的配对方法),选择合适的鉴权方式。
  • 否则,使用Just work的方式(不再鉴权)。

鉴权方式

所谓的鉴权(Authentication),就是要保证执行某一操作的双方(或者多方,这里就是配对的双方)的身份的合法性。对BLE来说,主要有两大类:

1、OOB(out of band)

由配对的双方,在配对过程之外,额外的交互一些信息,并以这些信息为输入,进行后续的配对操作。这些额外信息也称作OOB(out of band)。

2、需要人参与进来

手机A向手机B发起配对操作的时候,手机A在界面上显示一串6位数字的配对码,并将该配对码发送给手机B,手机B在界面上显示同样的配对码,并要求用户确认A和B显示的配对码是否相同,如果相同,在B设备上点击配对即可配对成功。

这种需要人参与的鉴权方式,在蓝牙协议里面称作MITM(man-in-the-middle)authentication,不过由于BLE设备的形态千差万别,硬件配置也各不相同,有些可以输入可以显示、有些只可输入不可显示、有些只可显示不可输入、有些即可输入也可显示,因此无法使用统一的方式进行MITM鉴权。

2.1、Passkey Entry

通过输入配对码的方式鉴权,常见于SSP(安全简单配对)中PC和键盘配对场景。

2.2、Numeric Comparison

两个设备自行协商生成6个数字,并显示出来(要求两个设备具有显示能力),用户比较后进行确认(一致,或者不一致,要求设备有简单的yes or no的确认能力)。

2.3、Just Work

没有需要额外输入的信息,现阶段是很常见和简单的一种方式。

配对方法

BLE协议栈支持两种可选的配对方法:LE legacy pairingLE Secure Connections

1、LE legacy pairing

  1. LE legacy pairing最终生成的是Short Term Key(双方共享),生成STK之后,用STK充当LTK,并将EDIV和Rand设置为0,去建立加密连接。
  2. 加密连接建立之后,双方可以自行生成Long Term Key(以及相应的EDIV和Rand),并通过后续的阶段三将它们共享给对方,以便后面重新建立加密连接所使用:master和slave都要生成各自的LTK/EDIV/Rand组合,并共享给对方,以便后续Master或者Slave重新发起连接。
  3. STK的生成也比较简单,双方各提供一个随机数(MRand和SRand),并以TK为密码,执行S1加密算法即可。
  4. TK是鉴权的过程中得到的,根据在阶段一选择的鉴权方法,TK可以是通过OOB得到,也可以是通过Passkey Entry得到,也可以是0(Just Work)

注意: LE legacy pairing只能使用OOB、Passkey Entry或者Just Work三种鉴权方法(Numeric Comparison只有在LE Secure Connections时才会使用)

2、LE Secure Connections Pairing

LE Secure Connections pairing利用了椭圆曲线加密算法(P-256 elliptic curve),具体可以细节和参考郭睿 和 汤南 做的channel 通道加密,涉及到此加密算法。

  1. 可以使用OOB、Passkey Entry、Just Work以及Numeric Comparison四种鉴权方法。其中Numeric Comparison的流程和Just Work基本一样。
  2. 可以直接生成LTK(双方共享),然后直接使用LTK进行后续的链路加密,以及重新连接时的加密。
  1. Transport Specific Key Distribution

加密链路建立之后,通信的双方就可以传输一些比较私密的信息。

BLE的SMP的一些Key相关定义

Long Term Key (LTK) 加密链路用,128-bit
Encrypted Diversifier (EDIV) 在LE legacy pairing过程中,用于识别LTK分发,16-bit
Random Number (Rand) 在LE legacy pairing过程中,用于识别LTK分发,64-bit
Identity Resolving Key (IRK) 用于生成和解析random address用的,128-bit

常见配对失败的错误

详细可参考 BLUETOOTH CORE SPECIFICATION Version 5.2 | Vol 3, Part H Table 3.7: Pairing Failed reason codes 。这里简单列举下常见的错误:

1、Unspecified Reason (点击配对框取消)

2、PIN Or Key Missing (加密LTK丢失导致加密失败)

Man-In-The-Middle Protection

当想要让两个设备相连时,其实两个设备并没有直接相互连接,而是在不知不觉中都连接到了第三个(攻击性)设备,这个设备扮演了他们试图配对的设备的角色,从而发生中间人(MITM)攻击。

中间人在中间进行转发,以使双方设备错误的认为已经相互连接。此时,双方交换的信息都会被中间人所监听,甚至可以修改。

为了避免MITM攻击,提供了两种辅助的数字方法:numerical comparison 或者 passkey entry(passkey entry典型情景是PC与键盘,一个有输入能力但无显示能力,对端设备则有输出能力,PC显示6位十进制数字,键盘输入这组数字,输入正确则成功)

如果有认证动作,双方通过数字比较,就可以知道连接的设备是不是"预期设备",因为,"同名攻击者"与两个设备相连时,产生的数值是不同的。

传统的SSP 配对中 PIN CODE方式也可以抵御MITM攻击,但是由于可以通过穷举PIN码的方式进行破译,因此,无法抵御被动监听攻击。

相关推荐
Android技术栈10 天前
鸿蒙NEXT(API 12)【蓝牙设置】 网络开发
网络·php·蓝牙·harmonyos·鸿蒙·鸿蒙系统·openharmony
SuperHeroWu71 个月前
【HarmonyOS】鸿蒙应用蓝牙功能实现 (二)
华为·蓝牙·harmonyos·低功耗蓝牙·bluetooth
WUNEAL1 个月前
安卓蓝牙日志的获取方法
安卓·蓝牙
Lenzetech1 个月前
蓝牙资讯|AirPods Pro 2推送最新开发者版固件,支持点头摇头控制Siri
科技·物联网·蓝牙·find my
SuperHeroWu71 个月前
【HarmonyOS】鸿蒙应用蓝牙功能实现 (一)
华为·蓝牙·harmonyos
小白橘颂1 个月前
喵喵蓝牙热敏打印机(下)
c++·stm32·物联网·esp32·arduino·蓝牙
Lenzetech1 个月前
Find My防狼器|苹果Find My技术与防狼器结合,智能防丢,全球定位
科技·物联网·蓝牙·find my
西西菜鸟1 个月前
[ 烧录 ]蓝牙一键烧录调试程序-批量烧写-MAC地址自增-串口调试-Phy62XX-ST17H6X-支持奉加微电子和伦茨科技
科技·蓝牙·奉加微电子·伦茨科技·phy62xx·st17h6x·烧写
塔寨围城2 个月前
spi 推跑马灯
android·蓝牙
知孤云出岫2 个月前
华为配置蓝牙终端定位实验
蓝牙·数据通信·终端定位