1. SMP概念
SMP(Security Manager Protocol)即安全管理协议。SMP 是蓝牙用来进行安全管理的,其定义了配对和 Key(可以理解成密钥)的分发过程的实现,以及用于 实现这些方法的协议和工具。SMP 的内容主要是配对和 Key 的分发,然后用 Key 对链路或数据进行加密。这个 Key 至关重要,怎么生成、怎么由通信的双方共 享,关系到加密的成败。因此蓝牙协议定义了一系列的复杂机制,用于处理和加 密 Key 有关的操作。
SMP 被用在 LE 单模设备或蓝牙双模(BR/EDR/LE)设备中。 LE 设备配对分为 LE 传统配对(LE Legacy Pairing)和 LE 安全连接配对(LE Secure ConnectionPairing)两种方式。
SM规范定义了蓝牙设备的配对以及密钥协商机制,密钥协商完成后,由Controller层的链路层完成加密链路的建立以及加解密操作。此外加密链路建立后,通信双方可以在该链路上共享其他的key,如Resolvable地址中使用的IRK。
2. SMP 的架构如下
如上图所示, 安全管理(Security Manager, SM)位于逻辑链路控制和适配协 议(Logic LinkControl and Adaption Protocol, L2CAP)之上、通用访问配 置文件(Generic Access Profile,GAP)之下。这个图还是不太具体,我们来 具体看下 SMP 在协议栈中的位置
3. SMP配对流程
需要注意的是BLE的加密机制针对面向连接的数据,对于广播数据(等时同步音频流除外)是不支持加密的。
流程如下:
Established LL connection:建立蓝牙连接,此时链路是明文的
Phase1:通过Pairing Request与Pairing Response协议交换双方的配对信息,如IO能力、配对方法、鉴权方式、是否建立绑定关系等等
Phase2:基于SMP协议进行配对操作以及密钥生成,有两种配对方法可选:LE legacy pairing和LE Secure Connections
Encrypted connection:基于密钥,建立加密连接
Phase3:连接建立后,可以传送一些敏感信息,如IRK等,如果后续会重新建立安全连接,则可以将配对信息保存到本地安全数据库中(后续用于建立绑定关系)
配对方法:
1.LE legacy pairing:通过随机数以及与或运算完成密钥协商,存在暴力破解可能
2.LE Secure Connections:通过ECDH算法完成密钥协商,安全性更高,能有效防止中间人攻击
鉴权方法:
1.Passkey Entry:要求用户在一个具有数字输入能力的蓝牙设备输入6位数字,另一个蓝牙设备显示相同数字。
2.Numeric Comparison(仅LE Secure Connections配对支持 ):要求两个具有显示能力的蓝牙设备自行协商6位数字,用户进行确认是否一致,如手机蓝牙
3.Out Of Band:两个蓝牙设备通过非蓝牙途径交换配对信息,如NFC蓝牙音箱
4.Just Works:无需用户参数,设备自行协商,不会进行鉴权,如蓝牙耳机
4. SMP 安全模式
蓝牙外围设备被中央设备访问时,提供了三种安全模式:安全模式1、安全模式2、安全模式3。外围设备中会维护一个安全数据库,数据库中维护蓝牙服务的安全模式,当中央设备满足安全模式要求时,允许其访问该蓝牙服务。
LE Security mode 1:主要用于在建立连接的Peripheral 和Central 之间,提供不同级别的信息加密,该模式为连接加密提供四个等级,这四个等级的安全性逐级增强。
LE Security mode 2:主要用于在建立连接的Peripheral 和Central 之间,提供不同等级的数据签名,该模式为数据签名提供两个等级,这两个等级的安全性逐级增强。
LE Security mode 3:主要用于在同步广播的Broadcaster 和Observer 之间,提供不同等级的BIS 同步广播信息加密,该模式为BIS 信息加密提供三个等级,这三个等级的安全性逐级增强;