蓝牙配对第 1 部分 – 配对功能交换
蓝牙配对第 1 部分 – 配对功能交换
蓝牙配对是蓝牙设备之间建立安全连接的关键过程。本文将深入探讨蓝牙配对的第一阶段:配对特征交换。通过详细解析安全管理器(SM)、密钥分发、IO功能、OOB数据标志等核心概念,帮助读者理解蓝牙设备如何通过配对请求和响应数据包交换配对信息,为后续的密钥生成和传输特定密钥分发奠定基础。
在蓝牙 ® 核心规范中,存在三个主要架构层:控制器、主机和应用程序。在主机层,有一个称为安全管理器(SM)的模块,它定义了配对和密钥分发的方法和协议,相应的安全工具箱,以及安全管理器协议(SMP),它定义了配对命令帧格式、帧结构和超时限制。安全管理器 (SM) 使用密钥分发方法在无线电通信中执行身份和加密功能。
执行配对是为了建立密钥,然后使用密钥来加密链路。然后执行传输特定密钥分发以共享密钥。这些密钥可用于在将来重新连接时加密链接、验证签名数据或执行随机地址解析。一般来说,配对有3个阶段。
- 第一阶段:配对特征交换
- 第 2 阶段(LE 传统配对):短期密钥 (STK) 生成
- 第 2 阶段(LE 安全连接):长期密钥 (LTK) 生成
- 第 3 阶段:传输特定密钥分发
对于大多数人来说,LE 传统配对和 LE 安全连接可能是新术语。 LE是“低功耗”的缩写,在蓝牙 ® 规范中作为蓝牙4.0及以上版本的主要特性。在蓝牙 4.2 规范中,添加了 LE 物理传输的安全连接功能,该功能升级了配对,以便在蓝牙 LE 物理传输上利用 FIPS 批准的算法(AES-CMAC 和 P-256 椭圆曲线)。为了区分安全连接和蓝牙 4.0 和 4.1 规范中定义的 LE 配对,它被称为 LE 传统配对。图 1 是适用于传统配对和安全连接的配对流程图。
今天,我们将讨论第一阶段:配对特征交换。配对是安全功能的交换,包括输入/ 输出 (IO) 功能、中间人保护要求等。两个设备之间的配对信息交换是通过配对请求和配对响应数据包完成的。这两条消息的内容如下表 1 配对请求/响应所示。
“代码”IO 上限、“IO 能力”
由于 IO 指的是输入/输出,因此 IO 功能组合起来生成该字段的值。对于输入功能,它可以是“无输入”、“是/否”或“键盘”,详细信息如下。
对于输出功能,它可以是“无输出”或“数字输出”,详细信息如下。
结合输入和输出的这些功能后,下面是一个定义蓝牙设备应具有哪些 IO 功能的矩阵。
任何配对算法都不能使用是/否输入且无输出,因此,“NoInputNoOutput”用作最终的 IO 功能。
从上面的矩阵中,您可以映射相应的 IO 功能,并选择以下枚举以放入配对请求/响应数据包中。
OOB DF,“OOB 数据标志”
OOB(即带外)使用外部通信方式来交换配对过程中使用的一些信息。 OOB介质可以是任何其他可以携带用于配对的相应信息的无线通信标准,例如NFC或QRCode。
BF,“Bonding_Flags”
绑定是在配对发生后交换长期密钥,并存储这些密钥以供以后使用——它是在设备之间创建永久安全性。配对是允许发生结合的机制。
“中间人”
MITM 是“中间人”的缩写。该字段是一个 1 位标志,如果设备请求 MITM 保护,则该标志设置为 1。本博客重点介绍配对功能交换的过程 - 如果您对 MITM 感兴趣,请参阅蓝牙核心规范 v4.2,Vol1,A 部分,5.2.3。
“SC”
SC 字段是一个 1 位标志,设置为 1 以请求 LE 安全连接配对。可能产生的配对机制是,如果两个设备都支持 LE 安全连接,则使用 LE 安全连接,否则使用 LE 传统配对。所以这个标志是判断Phase 2配对方式的一个指标。
“KC”
按键字段是一个 1 位标志,仅在密钥输入协议中使用,在其他协议中被忽略。密钥输入协议是传统配对和安全连接的典型配对方法。我们将在下一篇博客文章中讨论这个问题。
“最大加密密钥大小”
最大密钥大小应在 7 至 16 个八位位组范围内。
“发起者密钥分配”和“响应者密钥分配”
这两个字段具有相同的定义,如下所示。当我们在未来的系列博客中谈论密钥分配时我会解释。
当配对特征交换开始时,发起者和响应者将通过配对请求和响应来相互交换其配对特征信息。利用这些信息,发起者和响应者可以确定彼此的 I/O 能力,应使用哪种配对机制(传统配对或安全连接),并选择配对方法 - Just Work、密码输入、数字比较或退出频段——在阶段 2 中使用。我们将在第 2 部分:配对方法和密钥生成中探讨详细信息。