BLE通讯的安全性
概述
在开发蓝牙低功耗(Bluetooth LE)应用时,对通信链路进行安全防护是最重要的需求之一。蓝牙LE协议提供了丰富的安全特性,包括身份认证(authentication)、完整性(integrity)、保密性(confidentiality)以及隐私(privacy)等。在本课中,我们将全面讲解蓝牙LE安全架构的原理和关键机制。
你将学习如下内容:
-
蓝牙LE安全架构的基本组成和核心概念
-
不同安全级别的作用场景
-
设备配对(Pairing)与绑定(Bonding)过程
-
实现和验证链路加密
-
如何有效管理蓝牙安全密钥
配对过程
保护无线通信最常用的做法就是对连接进行加密,加密会将传输中的数据转化为仅有权限的设备才能读取的形式。
要加密链路,通信双方必须拥有相同的密钥。生成、分发、认证这些加密密钥的过程叫做配对(pairing)过程。
每次需要重新加密链路时,设备都要再次执行配对过程。除了“配对”,还有一个术语叫“绑定”(bonding),指的是双方将加密密钥保存在设备中,之后再次连接可直接重用该密钥实现快速加密。在绑定过程中,双方还可以交换和存储身份密钥,以便今后通过随机可解析私有地址(RPRA)识别彼此。
定义
-
配对(Pairing):指为加密目的生成、分发和认证密钥的过程。
-
绑定(Bonding):是配对之后,将密钥用于后续重新连接加密的过程。
蓝牙LE将加密过程分为三个阶段。
阶段1:发起配对
为了发起配对,有时也包括绑定过程,中心设备需要发送配对请求(Pairing Request),外围设备回复配对响应(Pairing Response)。在这一阶段,双方设备会交换配对特征信息,用于决定第二阶段采用哪种配对方法,以及第三阶段要分发哪些密钥。
最重要的是,双方会交换各自的I/O能力(输入/输出能力),类型包括:
-
DisplayOnly:仅有显示
-
DisplayYesNo:有显示+选择“是/否”
-
KeyboardOnly:仅有按键输入
-
NoInputNoOutput:无输入输出
-
KeyboardDisplay:按键+显示
除了I/O能力,还会交换支持哪些安全特性、是否请求绑定等内容。
注意
只有中心设备能发送配对请求。外围设备可以发送安全请求(Security Request)来触发中心发起配对请求,但这种做法并不常见。
阶段2:执行配对
第二阶段会生成用来加密连接的密钥。采用哪种配对方法,取决于第一阶段交换的信息。
LE传统配对(LE Legacy Pairing)下,双方交换一个临时密钥(TK),再计算生成短期密钥(STK),之后用STK加密链路。但STK容易被破解,因此蓝牙4.2提出了LE Secure Connections。LE Secure Connections中,双方生成、交换更安全的密钥,用于生成长期密钥(LTK),LTK用于链路加密。更多区别见本课的“传统配对与安全连接”。
传统配对有三种TK交换方法,称为配对方式(pairing methods)。LE Secure Connections 兼容传统三种方式,并新增一种数字比较(numeric comparison,传统方式不支持)。配对过程的安全性取决于采用哪种方式。
配对方式
-
Just Works:双方以明文交换信息自动生成STK,用户只需接受,无身份认证。
-
Passkey Entry:一台设备显示6位数字,另一台用户输入这串数字。I/O能力决定谁显示谁输入。
-
Out of Band (OOB):通过蓝牙以外的方式(比如NFC)交换密钥。
-
Numeric Comparison(仅LE Secure Connections支持):双方都显示6位数字,用户确认显示内容一致。

采用哪种方式,取决于OOB标志、MITM(防中间人攻击)标志和双方I/O能力,这三项都在阶段1时交换。
OOB/MITM优先决定是否直接用OOB,否则按 I/O 能力决定配对方式。
LE Secure Connections只需任一设备OOB标志置位即可。配对方式选取规则具体参见表格(略)。
本阶段生成的密钥将用于第二阶段后加密链路。如果只进行配对(不做绑定),仅需前两阶段,能跳过第三阶段。
阶段3:密钥分发
本阶段使用长期密钥LTK分发其它密钥。传统配对中LTK在本阶段生成,LE Secure Connections则在第二阶段生成。其它密钥用于设备下次重连识别身份、重用相同LTK快速加密。

您的资助是我最大的动力!
金额随意,欢迎来赏!

浙公网安备 33010602011771号