蓝牙BLE通信的安全模式和安全级别总结

date
Dec 21, 2024
slug
2024-12-21-the-BLE-security-mode-and-security-level
status
Published
tags
蓝牙
type
Post
AI summary
summary
本文对BLE在实际应用中所具备的三种典型安全模式和各个安全模式下的安全级别进行了完整的整理。重点是其中的安全模式1。
BLE安全模式的定义:在蓝牙规范所定义的应用场景中,是指产品使用蓝牙BLE通信的时候,对于其通信过程中安全性的具体要求和相对应的工作流程、解决方案对策。不同的安全级别对应了不同的工作流程,也对应了不同的保护级别,用户可以根据产品对于安全性保护的需求以及产品本身的特性/IO能力等选择合适的安全级别。
基于对通信中安全性的具体要求,BLE在产品中的使用流程主要共有三种安全模式:LE Security Mode 1, Mode 2,Mode 3。每个安全模式下又包含有不同的安全级别。
这三个Security Mode之中,最常用的还是Mode 1的几个级别。
值得注意的是,对于安全模式以及安全级别的选择,与产品的具体应用场景、产品本身所具备的IO能力以及对于数据的保护程度和要求息息相关,并不一定是安全级别越高就越好。

Security Mode 1

Mode 1主要用于决定两个BLE设备之间配对的安全需求和执行流程,通过配对流程来对蓝牙设备使用的安全级别进行控制。Mode1是最常用的一种安全模式。
有关BLE设备之间的配对流程,我在其他的笔记中有非常详细的总结。
  • BLE设备配对模式和流程详细解析(一)
  • BLE设备配对模式和流程详细解析(二)
  • BLE设备配对模式和流程详细解析(三)
对BLE配对流程及其连接状态下的通信密钥有清楚的认识,才能完整的理解各种不同的安全模式和安全级别。
以下解释Mode 1中所包含的不同安全级别。

Mode 1 Level 1: 无安全特性

Level 1没有任何安全特性,进行BLE通信的两个设备之间既不需要进行设备硬件身份的认证,通信过程的所有数据也不需要进行任何加密处理。配对的流程会完整走一遍,但是基本上也就只是走一个过程而已,对于安全性方面没有明确的要求。
所有工作在这个级别下的BLE外设设备,可以被任意的BLE Central设备直接连接,并且两者之间的通信全部是明文,不做任何加密处理,也不对数据包的内容进行完整性和真实性的验证,数据包的内容可以被任何BLE Sniffer工具监听到和解析。
当然Level 1的好处则是提供了最好的用户设备访问的体验,连接通信的速度最快,相互连接和数据访问的整个流程不做任何限制,因此使用起来最方便。
因为没有任何安全性保护,比较适合那些对于通信数据没有任何安全性保护需求的应用场景,例如蓝牙温湿度传感器。

Mode 1 Level 2: 数据加密+无硬件身份认证

在Level 2级别中,两个BLE设备之间进行配对的过程中不进行硬件身份认证,但是会完成整个配对流程,并在配对流程的最后交换双方的数据通信加密密钥。双方通信连接建立以后,所有的通信数据都是通过AES算法+IRK所衍生的会话密钥进行加密的,即使BLE Sniffer进行监听数据包也无法解出明文。
实际上这个级别实际上就对应于配对流程中的Just Works模式,进行配对的设备既没有显示屏用于显示配对数字,也没有键盘用于输入配对数字,因此配对过程中用户无法参与进去,也就没有办法做很有效的设备身份认证。
该安全等级相比Level 1提高了一些,但是缺少了配对过程的硬件身份认证环节,无法满足对数据安全性要求很高的应用。但是该过程不需要人为参与,用户使用的体验更好更方便。
这个级别也是Just Works这个配对模式能够支持的最高安全级别。

Mode 1 Level 3: 数据加密+硬件身份认证

Lever 3级别的配对流程中,要求对进行配对双方的硬件身份进行认证,这个认证要么需要用户人为参与(Passkey Entry),要么通过蓝牙之外的带外传输(OOB),因此能够通过完整的配对流程,也就是相当于完成了相互之间硬件身份认证的确认。在配对过程中完成双方硬件身份确认后,才进行后续密钥的交换流程,因此安全性保护方面更为完整。
只不过Level 3默认使用的是LE Legacy Pairing这种相对较老的配对方式,安全性方面相对Level 4稍差。

Mode 1 Level 4: 数据加密+硬件身份认证+强制使用SC

Level 4跟Level3类似,都是提供了数据加密和硬件身份认证的全面保护,但是Level 4在Level 3的基础上强制要求进行BLE配对的双方设备,在配对的流程中一定要使用更安全的LE Secure Connections配对流程和机制,不能使用之前的LE Legacy Pairing模式。这使得工作在Level4的设备安全等级相对更高,而且可以支持Numerical Comparison这种硬件身份认证的执行流程。

Security Mode 2

Mode 2主要针对的是BLE设备连接状态下双方进行通信的数据包签名机制的问题。
所谓的数据包签名机制,就是对于BLE连接的两个设备所发出的每个数据包,按照一定的算法对这个数据包的内容进行签名,把数据包的内容和签名一起发出,接收端按照相同的签名算法和密钥验证这个数据包数据内容的完整性(这个数据包的内容是完整的,没有被修改的)和通信身份的真实性(这个数据包确实是由自己信赖的通信对端所发出的)。
针对Mode 2和BLE通信中的数据签名,我的看法是:如果数据包已经通过双方所共享的密钥进行加密了,那么这个数据包就没有必要再做用户身份的数据签名确认了,因为只有持有相同密钥的通信对端才能正确解析。既然都已经能够成功解密出来数据包,那也就说明通信对端是自己信赖的通信方。所以对于BLE通信而言,Mode 2、数据签名、CSRK密钥应该都是针对通信数据包内容不需要加密、但是需要确认通信双方身份的应用场景。
数据签名的计算逻辑如下图所示,主要依赖于双方配对流程中所协商的CSRK密钥。
notion image
  • 数据签名的运算逻辑在我的另外一篇笔记中有非常详细的解释:
Mode 2包含有两个安全级别。

Mode 2 Level 1:无身份认证+数据签名

在这个级别中,两个BLE设备在配对流程中使用不需要用户人为介入的association model,最典型的就是Just Works。这种方式无法提供有效的策略去进行硬件设备的身份认证以及对抗中间人攻击,因此使用这种方式最好是在一个安全的环节中进行设备之间的配对流程操作。
对于该级别的支持,在两个设备的配对流程中一定要协商和共享CSRK密钥,因为后续的连接状态下的数据通信机制,需要依赖这个CSRK密钥对数据包进行签名和匹配比较。
这个级别存在的最大问题是,因为Just Works没法有效的验证对方的硬件身份,所有的Central设备都可以与当前的这个BLE外设设备完成配对,分享CSRK密钥以及在后续的通信中使用CSRK密钥对收发的数据包进行签名验证。如果当前的产品应用对于通信对端的硬件身份认证有要求,这个level 1就不合适了。

Mode 2 Level 2:身份认证+数据签名

在该级别中,进行配对的两个BLE设备需要在配对流程中使用能够支持硬件身份认证和防止中间人攻击的association model,实际上也就是OOB、Passkey Entry以及Numerical Comparison这三种之一。
当然对于这种级别,两个设备的配对流程同样需要共享CSRK密钥。这样的话,通过配对过程中完整的身份认证机制确认只有自己信任的硬件设备才能够与自己完成配对过程分享CSRK密钥,后续通信中再基于CSRK密钥+数据签名等机制就可以确保通信双方的连接是在双方所信任的硬件上进行的,提升了通信的安全性。

Security Mode 3

Mode 3专门用于针对BLE外设设备广播数据的加密保护需求。即是否需要对广播数据进行加密?对广播数据进行加密是在蓝牙规范v5.4版本中引入的新功能,也就是所谓的Encrypted Advertising Data (EAD) 。加密广播功能的实现依赖于一个在同一个广播组内共享的16字节Broadcast Code。
实际的使用中,因为EAD功能是在v5.4版本才新推出,而且一般只会在LE Audio这类同步数据流(Isochronous Streams)的应用中才会用到广播加密功能,所以这种安全模式的实际应用场景很少。
针对不同的需求,Mode 3包含有3个安全级别。

Mode 3 Level 1:无加密

在该安全级别下,这个BLE外设设备不对广播数据做任何加密处理,广播数据以明文形式发布,所有的Central设备都可以正常扫描并解析出来。安全性最差,但是可以提供最方便的用户使用体验。
无加密广播的工作模式是蓝牙规范5.4版本之前默认的数据广播模式。

Mode 3 Level 2:广播加密+Broadcast Code无认证

处于该安全级别下的BLE外设设备所发出的广播包都会使用Broadcast Code进行加密保护,只有持有相同Broadcast Code的Central设备才能对这些广播包进行正确的解析。因此安全性相比Level 1有所提升,但是对于设备加入同步数据流广播组BIG(Broadcast Isochronous Groups),并没有身份验证环节,所有的设备都可以加入BIG并获取Broadcast Code,所以安全性方面仍然存在欠缺。

Mode 3 Level 3:广播加密+Broadcast Code身份认证

在Level 2的基础上,对加入同步数据流广播组BIG的BLE设备进行身份认证,要求提供验证码才能获取Broadcast Code对广播包进行解码,否则就会报错。

参考资料


© Pavel Han 2020 - 2025