Ellisys Bluetooth Sniffer 文档 (EEN-BT07) - 安全简单配对说明

安全简单配对说明

介绍

基于PIN码的蓝牙配对的第一个版本没有提供任何真正的安全级别来防止嗅探。诸如Ellisys Bluetooth Explorer 400之类的嗅探器能够通过被动地嗅探配对过程来自动且即时地确定PIN码并推断出链接密钥。

随着蓝牙变得越来越普及,安全配对方法成为确保技术长期成功的硬性要求。安全简单配对(SSP)在蓝牙2.1规范中引入,修复了先前配对方法的所有问题,并使配对蓝牙设备比以往更简单。

更强的安全性也意味着蓝牙工程师面临新的挑战。在现场调试现成的设备变得难以实现。

然而事情并没有看起来那么糟糕。本文档旨在介绍SSP的基础知识,并消除蓝牙社区中常见的一些误解。

配对过程

配对设备的过程旨在在两个蓝牙设备之间创建共享密钥:链接密钥(Link Key)。然后,此链接密钥用于相互验证设备并加密交换的数据。实际上,数据并未使用链接密钥直接加密;临时加密密钥是从链接密钥和在加密流量开始之前不久交换的随机数派生的。然后,该加密密钥用于在两个方向上加密数据。它可以在连接处于活动状态时随时更改,并在连接关闭或加密停止后立即丢弃。

蓝牙规范定义了两个标准配对过程,LMP配对(也称为基于PIN码)和SSP。非标准配对方法也是可能的,但要求两个设备来自同一制造商。任何配对方法的结果都是相同的:创建共享链接密钥。

一旦两个设备拥有相同的链接密钥,该共享密钥可用于在以后相互重新认证两个设备。重新连接时,设备通过交换从中派生的数字,快速验证它们是否具有相同的链接密钥。如果链接密钥匹配,则可以继续创建会话密钥。否则,配对过程(LMP配对或SSP)必须从一开始就重新启动,从而创建一个全新的链接密钥。

LMP配对(又名PIN码)

用于为LMP配对创建链接密钥的算法输入如下:

  • 两个设备的BDADDR
  • 由发起者创建的16字节随机数
  • 用户在两台设备上输入的PIN码(带有 “固定PIN码” 的设备除外,用户无法更改PIN码)

这些数字用于首先创建临时共享初始化密钥( temporary shared initialization key),然后使用LMP配对密钥生成过程(LMP pairing key generation procedure)将其转换为链接密钥(Link Key)。

由于唯一未公开的信息是PIN码,因此可能的秘密链接密钥的数量受可能的PIN码数量的限制。如果设备使用4位数的PIN码,攻击者最多只需要尝试10’000个不同的链接密钥,然后就能解密流量。这就是LMP配对的弱点所在。

LMP配对过程如下图所示:
Ellisys Bluetooth Sniffer 文档 (EEN-BT07) - 安全简单配对说明_第1张图片

唯一不通过空中传输的信息是PIN码。以下是Ellisys嗅探器捕获的相同流量:
Ellisys Bluetooth Sniffer 文档 (EEN-BT07) - 安全简单配对说明_第2张图片
基于此捕获的信息,Ellisys软件能够自动确定PIN码并计算链接密钥,而无需任何用户交互。以下是Ellisys软件的结果:
Ellisys Bluetooth Sniffer 文档 (EEN-BT07) - 安全简单配对说明_第3张图片
在此之后,Ellisys软件将自动解密任何后续安全连接的数据。此过程在下面的Authenticated Connection一章中描述。

安全简单配对

SSP使用更精细的机制,称为椭圆曲线加密(elliptic curve cryptography),避免使用PIN码作为链接密钥计算过程的一部分(尽管PIN码或其他用户号码仍可用作身份验证过程的一部分),而是使用极大的随机数作为进行链接密钥(Link Key)计算的种子。因此,可能的链接密钥的数量不再限于少于 2 128 2 ^{128} 2128个可能性,这远远超出任何现实的攻击者的能力。

为了实现这一点,SSP过程首先在两个设备之间建立不同类型的共享秘密。这个共享密钥称为Diffie-Hellman密钥(DHKey),是一个192位的随机数。作为先决条件,两个设备都具有私钥和公钥。公钥通过空中传输,任何人都可以知道,但私钥永远不会被公开。我们将这两个密钥称为SSP公钥/私钥对( SSP Public / Private key pair),但这些密钥对也称为Diffie-Hellman公钥/私钥对(Diffie和Hellman是开发算法的两个人)。

精心挑选的数学空间和用于创建SSP密钥对的算法是这样的:

  • 使用公钥计算私钥非常困难(即不可能使用当前最先进的计算机)(但很容易根据私钥计算公钥)。

  • 给定两个SSP密钥对A和B,存在众所周知的函数F,使得F(PublicA,PrivateB)= F(PublicB,PrivateA)。这个函数的结果是DHKey。只有拥有A和B的两台设备才能计算出相同的DHKey。

这是SSP背后的神奇之处:两个设备能够配对,无需通过空中传输任何关键信息,也无需通过带外机制共享此信息(例如键入在键盘上)。 DHKey将用作计算链接密钥(Link Key)的种子。配对过程的其余部分类似于LMP配对。

SSP配对过程如下图所示:
Ellisys Bluetooth Sniffer 文档 (EEN-BT07) - 安全简单配对说明_第4张图片
以下是Ellisys嗅探器捕获的相同流量:
Ellisys Bluetooth Sniffer 文档 (EEN-BT07) - 安全简单配对说明_第5张图片
嗅探器不知道的唯一信息(为了通过空中传输的流量计算链路密钥)是SSP私钥。实际上,只需要两个SSP私钥中的一个来确定DHKey,从而确定链接密钥。如果用户将其设备的SSP私钥提供给Ellisys分析软件,则将自动推断出该设备与任何其他设备的配对的链接密钥。

另一种方法是使用SSP调试模式。我们现在了解SSP的基础知识,了解SSP调试模式很简单。置于SSP调试模式的设备将不使用其通常的SSP专用/公用密钥对,而是使用SSP调试模式专用/公用密钥对。如果两个设备中的任何一个置于SSP调试模式,Ellisys嗅探器将能够通过识别通过无线发送的调试模式公钥并使用相应的已知私钥来自动推断配对产生的链接密钥。使用SSP调试模式或提供两个SSP私钥之一完全相同。

以下屏幕截图显示了使用SSP调试模式时Ellisys软件找到的链接密钥:
Ellisys Bluetooth Sniffer 文档 (EEN-BT07) - 安全简单配对说明_第6张图片

经过身份验证的连接

配对后,这两个设备共享相同的链接密钥。然后,这些设备可以使用链接密钥进行身份验证(以确保其他设备确实是它所说的那个)并导出加密密钥(以保护两个设备交换的数据)。

LMP_start_encryption请求之后立即加密数据。完整的启动加密过程如下图所示:
Ellisys Bluetooth Sniffer 文档 (EEN-BT07) - 安全简单配对说明_第7张图片
以下是Ellisys软件中显示的相同流量:
Ellisys Bluetooth Sniffer 文档 (EEN-BT07) - 安全简单配对说明_第8张图片
值得注意的是,数据包将在LMP_start_encryption请求之后立即加密,因此即使LMP_accepted握手也已加密。以下屏幕截图显示了哪些数据包已加密。当锁定图标为蓝色时,这意味着数据包是普通的(未加密)。当锁定图标为绿色时,这意味着数据包已成功解密。
Ellisys Bluetooth Sniffer 文档 (EEN-BT07) - 安全简单配对说明_第9张图片

反馈

对我们的专家说明的反馈总是很感激。如需对本文提供任何形式的评论或批评,请随时通过[email protected]与我们联系。

你可能感兴趣的:(Bluetooth)