Android体系安全 — 6.5 Bluetooth安全毗连原理

[复制链接]
发表于 2026-2-10 18:33:53 | 显示全部楼层 |阅读模式
1 蓝牙协议架构和简称


蓝牙协议栈重要分:APPS层(应用层,包罗音频播放器,蓝牙遥控,智能家居APP等), HOST层(中心层协议,包罗GAP,SMP,ATT/GATT, L2CAP, AMP Manager),CONTROLLER层(底层传输协议,包罗HCI, LL, PHY)
简称先容
GAP(Generic Access Profile)。该协议界说了装备之间怎样发现、毗连和举行安全认证,重要界说装备的脚色和相干参数等设置文件。
SMP(Security Manager Protocol)。顾名思义安全管理协议重要负责BR/EDR, BLE装备间的配对和绑定过程,以及安全性相干的功能。此中配对是一个过程,此中两个BR/EDR, BLE装备互换安全密钥以创建受掩护的毗连。绑定则是一个更长期的过程,此中密钥被长期化存储在装备中,以便未来可以重新创建安全毗连,而无需再次配对
安全管理器协议(SMP)是用于天生加密密钥和身份密钥的点对点协议。该协议在一个专用的固定L2CAP通道上运行。SMP块还管理加密密钥和身份密钥的存储,并负责天生随机地点并将随机地点分析为已知的装备身份。SMP直接壅闭与控制器的接口,以提供在加密或配对过程中用于加密和身份验证的存储密钥。
ATT(Attribute Protocol)。该协议是BLE装备用于存储和访问数据的协议。ATT界说了一种结构化的方法来构造和访问数据,这些数据以"属性"的情势存储。每个属性都有一个唯一的句柄、一个UUID(Universally Unique Identifier)来标识其范例、权限、值以及其他大概的元数据。在ATT中,存在两种装备脚色:服务器和客户端。服务器存储属性,而客户端哀求或修改这些属性。ATT界说了一系列的操纵,使客户端可以或许与服务器交互。这些操纵包罗读、写、查找属性等。此中每个属性都可以设置差别的访问权限,如只读、只写或加密读写。这确保了数据的安全性和完备性。
GATT(Generic Attribute Profile)。该协议为ATT的访问提供了一个通用且具有结构化的的方法来构造和访问数据
L2CAP(Logical Link control&Adaption Protocol)。就是对上层的数据举行封装以便于下层举行数据传输。
HCI(Host Controller Interface)
LL(Link Layer)。为BR/EDR, BLE装备之间的通讯提供了根本的链路功能,当两个BR/EDR, BLE装备决定创建一连毗连时,LL负责初始化、维护和断开这些毗连。也就是说LL规定了蓝牙装备是怎样创建毗连的。LL操纵基于状态机,此中重要的状态包罗停当、广播、扫描、初始化和毗连。
PHY(Plysical Layer Radio)。作为协议栈中的最低层,一共界说了40个信道(此中三个广播信道,37个数据传输的信道),负责无线电信号的发送和吸收。
AMP(Alternate MAC/PHY)。AMP管理器是一个使用L2CAP与对等体通讯层的远程装备上的AMP管理器。它还直接与AMP PAL接口,用于AMP控制目标。AMP管理器负责发现远程AMP并确定其可用性。它还网络有关远程AMP的信息。该信息用于创建和管理AMP物理链路。AMP管理器使用专用的L2CAP信令通道与远程AMP管理器通讯。包罗 AMP HCI, AMP PAL(Protocol Adaption Layer), AMP MAC, AMP PHY。
*IRK(Identity Resolving Key) * :用于天生和分析随机地点的 128 位的密钥.
CSRK(Connection Signature Resolving Key ):用于对数据举行署名并验证吸收装备上的署名的 128 位的密钥
TK(Temporary Key ): 在配对过程中使用的 128 位临时密钥,用于天生 STK
STK(Short Term Key ): 配对后用于加密毗连的 128 位临时密钥
LTK(Long Term Key):用于为加密毗连天生贡献性会话密钥的 128 位的密钥。
EDIV(Encrypted Diversifier):是一个 16 位存储值,用于标识 LE 传统配对期间分配的 LTK。 每次分配唯一的 LTK 时都会天生一个新的 EDIV。
RAND(Random Number ):是一个 64 位存储值,用于标识 LE 传统配对期间分配的 LTK。 每次分配唯一的 LTK 时都会天生一个新的 Rand
2  BLE蓝牙毗连和配对

BLE蓝牙是先LL毗连,再配对,BR/EDR蓝牙是先配对,再LL毗连。BLE哀求毗连叫scan, BR/EDR哀求毗连叫inquiry.
2.1 广播(advertising)

在手机跟装备B创建毗连之前,装备B必要先举行广播,即装备B(Advertiser)不停发送如下广播信号,t为广播隔断。每发送一次广播包,我们称其为一次广播事故(advertising event),因此t也称为广播事故隔断。固然图中广播事故是用一根线来表现的,但实际上广播事故是有一个一连时间的,蓝牙芯片只有在广播事故期间才打开射频模块,这个时间功耗比力高,别的时间蓝牙芯片都处于idle状态,因此匀称功耗非常低。按照蓝牙spec,实际上每一个广播事故包罗三个广播包,即分别在37/38/39三个通道上同时广播雷同的信息。

2.2 毗连(connnection)


手机在收到A1广播包ADV_IND后,以此为初始锚点(这个锚点不是毗连的锚点),T_IFS后给Advertiser发送一个connection request下令,即A2数据包,告诉advertiser我将要过来连你,请做好准备。手机在发完毗连哀求之后会被欺压延时1.25ms,紧接着是发送窗口偏移,和发送窗口。发送窗口偏移可以是0到毗连隔断之间的恣意值,但必须是1.25ms的整数倍。从发送窗口开始从装备必须打开RX窗口用来接罢手机发过来的P1数据包。假如发送窗口竣事还没有收到P1数据包,那么从装备制止监听,并会在下一个毗连隔断后再次实验。从P1开始使用数据通道。Advertiser根据connect_req下令信息做好吸收准备,connect_req包罗如下关键信息:

•        Initiator: 发起毗连者的mac地点,BLE的MAC地点,随机地点的最高两位应该为11b
•        Advertiser: 广播者的地点mac地点
•        Access Address: 接入地点。LL层使用接入地点来区分当前发送的数据是广播包还是数据包,广播包接入地点固定为0x8E89BED6,数据包使用就是该值。
•        CRC initialization value: CRC初始值
•        transmitWindowSize: 发送窗口巨细, 单位是1.25ms
•        transmitWindowOffset: 发送窗口偏移, 单位是1.25ms
•        connInterval: 毗连隔断 单位是1.25ms
•        connSlaveLatency: 从装备延时,表现从装备可以跳过多少个毗连事故。
•        connSupervisionTimeout: 监控监控超时。单位是10ms
•        Channel Map: 信道图,表现当前环境中哪一个信道可用,每一个bit表现一个信道1表现可用,0表现不可用。比如ff ff ff ff 1f(0x1fffffffff), 二进制为0001111111111111111111111111111111111111b
•        masterSCA: 00100b, 休眠时钟精度, 151 ppm to 250 ppm
•        hopIncrement: 110b, 跳频算法的hop值,6
connect_req着实是在告诉advertiser,手机将在Transmit Window期间发送第一个同步包(P1)给你,请在这段时间里把你的射频吸收窗口打开。装备B收到P1后,T_IFS时间后将给手机复兴数据包P2。一旦手机收到数据包P2,毗连即可以为创建乐成。后续手机将以P1为锚点(原点),Connection Interval为周期,周期性地给装备B发送Packet,Packet除了充当数据传送功能,它另有如下两个非常告急的功能:

  • 同步手机和装备的时钟,也就是说,装备每收得手机发来的一个包,都会把自己的时序原点重新设置,以跟手机同步。
  • 告诉装备你如今可以传数据给我了。毗连乐成后,BLE通讯将变成主从模式,因此把毗连发起者(手机)称为Master大概Central,把被毗连者(之前的Advertiser)称为Slave大概Peripheral。BLE通讯之以是为主从模式,是由于Slave不能“随性”给Master发信息,它只有比及Master给它发了一个packet后,然后才华把自己的数据回传给Master。
    对于主装备而言,毗连哀求一旦发出就以为毗连已经创建。当从装备收到毗连哀求时,它也以为自己已经处在毗连之中,毗连已经创建,但不能证明完全建立。
对上面提到的手机和装备B,在BLE通讯过程中,随着时间的推移,他们的状态在发生厘革,两者的关系也在发生厘革,为此蓝牙spec根据差别的时间段大概状态给手机和装备B取差别的名字,即GAP层界说了如下脚色:
•        advertiser。 发出广播的装备
•        observer大概scanner。可以扫描广播的装备
•        initiator。能发起毗连的装备
•        master大概central。毗连乐成后的主装备,即主动发起packet的装备
•        slave大概peripheral。毗连乐成后的从装备,即被动回传packet的装备
图11通逾期间把observer,initiator和central串起来了,着实这三个脚色是相互独立的,也就是说一个装备可以只支持observer脚色,而不支持initiator和central脚色。同样,图11也把advertiser和peripheral串起来了,着实advertiser和peripheral也是相互独立的,即一个装备可以只作为advertiser脚色,而不支持peripheral脚色.
2.3 配对绑定

2.3.1 先容

BLE安全毗连涉及以下三个关联概念:
pairing :关注安全特性和所需密钥范例的互换,比如支不支持 SC,支不支持 MITM 掩护,支不支持 OOB,以及它的输入输出本领等。别的,配对过程还负责共享密钥的天生和互换。一旦共享秘钥互换完成,便会创建一个临时的加密链接来互换短期和长期密钥。
配对包罗配对本领互换,装备认证,密钥天生,毗连加密以及秘密信息分发等过程,配对的目标有三个:加密毗连,认证装备,以及天生密钥。从手机角度看,一旦装备跟手机配对乐成,蓝牙设置菜单将包罗该配对装备,
bonding:为后续毗连存储互换密钥,从而无需再次传输密钥。
配对过程中会天生一个长期密钥(LTK,long-term Key),假如配对双方把这个LTK存储起来放在Flash中,那么这两个装备再次重连的时间,就可以跳过配对流程,而直接使用LTK对蓝牙毗连举行加密,装备的这种状态称为bonding。
encryption:使用 AES-128 engine 和共享秘钥对明文数据举行加密
2.3.1 pairing详解

区别于传统蓝牙的配对过程,BLE 的配对过程发生在毗连过程之后,实现的是链路层的安全。
配对过程分为三个阶段:
• Phase 1: Pairing Feature Exchange
• Phase 2 (LE legacy pairing): Short Term Key (STK) Generation
• Phase 2 (LE Secure Connections): Long Term Key (LTK) Generation
• Phase 3: Transport Specific Key Distribution

配对特性互换用于互换 IO 本领(IO capabilities),OOB 身份验证数据可用性(OOB
authentication data availability),认证要求(authentication requirements),密钥巨细要求以及分配哪种传输特定密钥(transport specific keys)。
此中,IO 本领,OOB 身份验证数据可用性和认证要求用于决定在第二阶段使用哪种密钥天生方法。
Just Works
Numeric Comparison (Only for LE Secure Connections)
Passkey Entry
Out Of Band (OOB)
LE 传统配对使用和天生 2 个密钥:
Temporary Key (TK): 在配对过程中使用的 128 位临时密钥,用于天生 STK
Short Term Key (STK): 配对后用于加密毗连的 128 位临时密钥
LE 安全毗连配对使用和天生 1 个密钥:
Long Term Key(LTK): 在配对后和后续毗连用于加密毗连的 128 位密钥
Session Key(SK): 会话密钥,加密明文数据的128位密钥,通过STK大概LTK盘算所得
SK=e(LTK, (SKDmaster || SKDslave));
Mconfirm:主机身份确认值,第二阶段身份确认,通过TK和128bit随机数盘算所得
Sconfirm:从机身份确认值,第二阶段身份确认,通过TK和128bit随机数盘算所得
ER/IR:128位伪随机数,第二阶段身份确认,通过TK和128bit随机数盘算所得
EDIV: 加密分散器,用于产生LTK
阶段 3 是可选实行的,用于分发传输特定密钥,比方:身份分析密钥(IRK)值和身份地点信息。
阶段 3 只能在使用以下方式加密的链接上实行:
当使用 LE 传统配对时在阶段 2 天生的 STK
当使用 LE 安全毗连配对时在阶段 2 天生的 LTK
当使用 BR/EDR 配对时天生的共享毗连密钥
发起装备通过发送配对哀求下令(Pairing Request)给相应装备来开始配对特性互换过程。
IO Capability: 形貌装备是否具有输入/输出功能,比方表现器或键盘。
OOB Flag: 形貌装备是否支持带外密钥互换,比方使用 NFC 或 Wi-Fi 互换密钥作为TK。
Authorization Request: 指示哀求的安全属性,比方绑定,安全毗连(SC),MITM 掩护或在配对哀求和相应数据包中不存在任何安全属性。
Maximum Encryption Key Size: 最大加密密钥巨细(以字节为单位)。
Initiator Key Distribution/Generation: 表明发起者在传输特定密钥阶段哀求分配/天生哪些密钥。
Responder Key Distribution/Generation: 表明发起者在传输特定密钥阶段哀求相应者分配/天生 哪些密钥。
IO Capabilities
IO Capabilities 是由装备的输入本领和输出本领组合而成,表现的是装备的输入输出的本领。



3 BR/EDR蓝牙毗连和配对

BR/EDR蓝牙的毗连参照:
https://blog.csdn.net/yk150915/article/details/86500055
4 蓝牙的安全

安全应由主装备的 Security Manager 发起,从装备为相应装备。从装备可以哀求主装备发起配对大概其他的安全步调。从装备可以通过向主装备发送 Security Request 来哀求安全。

蓝牙的毗连安全参照:
https://blog.csdn.net/weixin_42583147/article/details/93175701

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表