Ellisys Bluetooth Sniffer 文档 (EEN-BT09) - 访问链接密钥的方法

访问链接密钥的方法

前言

自从简单安全配对(SSP)问世以来,蓝牙工程师在调试蓝牙设备方面面临着新的挑战。 SSP简化了最终用户的配对体验,同时为连接提供了更高的安全性,但它本身为寻求解密分析仪捕获的蓝牙流量的蓝牙工程师带来了障碍(当然,这些障碍是故意为寻求进行此类解密的人提供的)。

挑战的核心是获得对链接密钥的访问权限。本文档将探讨可用于查找和访问此密钥的一些方法。 Ellisys蓝牙浏览器400分析仪能够在不事先了解链接密钥的情况下捕获加密的蓝牙流量。使用Ellisys分析仪捕获的加密流量可在链接密钥可用时解密,因此蓝牙工程师完全理解。

链接密钥是128位随机数,是设备之间的 “共享密钥”;它永远不会通过空中传播。它在配对过程中创建,存储并保密,并在每个连接上用于验证和推导加密密钥。甚至创建链接密钥的配对序列的一部分也被加密。

链接密钥只是用于生成加密密钥的参数之一。有关SSP如何工作的详细信息,请参阅EEN_BT07 - 安全简单配对说明。

由于链接密钥永远不会通过无线方式传输,因此蓝牙工程师必须了解可用于访问此密钥的各种方法。本专家报告将介绍其中一些方法。请注意,对于蓝牙智能(蓝牙低功耗),情况有所不同,因为实际上有一个关键密钥的无线传输(over-the-air transmission of a critical key ) - 请参阅下面的蓝牙智能(低能耗)部分。

关键概念

在右下方,Ellisys Bluetooth Explorer软件用于说明一些关键概念。在图示中,我们看到三个设备(电话,耳机和PC)包括两个连接的微微网(一个散射网)。 PC是耳机的主设备,耳机具有双重角色:它是手机的主设备,又是PC的从设备。
在这里插入图片描述
耳机和手机之间的连接已完全解密,因为已获取链接密钥(如“安全”窗格中所示)。然而,从耳机到PC的连接仍然是加密的,因为尚未获得链接密钥。
在这里插入图片描述
手机和耳机之间的链接密钥是使用特定于供应商的方法获得的,并在供应商特定方法的Android协议栈部分中进行了描述,稍后将在本文档中进行介绍。

请注意,分析仪实际上是捕获加密流量(PC到耳机)并在一行上显示。一旦将密钥提供给软件,无论是在捕获期间还是在保存之后,该行都将扩展为解密流量。有关如何解密此(PC到耳机)加密流量的详细信息,请参阅本文档后面有关供应商特定方法的部分。

标准方法

以下方法独立于所使用的蓝牙无线电或协议栈制造商。但是,这些方法可能需要对蓝牙硬件进行低级访问,因此并不总是适用于现成的产品。

基于PIN码的配对

LMP配对(也称为基于PIN码的配对或有时称为Legacy Pairing)根本不安全,但与SSP一样,它也使用/创建必须知道的链接密钥才能解密流量。只需查看捕获的配对流量,Ellisys BEX400分析仪软件就可以自动解密PIN码并推断出链接密钥。基于PIN码的配对不用于蓝牙2.1设备及更高版本(支持SSP的设备),除非这些设备与蓝牙2.0或更早版本的设备配对。这意味着如果您将其与蓝牙2.0或更早版本的设备配对,则可以使用Ellisys分析仪完全解密来自默认SSP设备的流量,从而强制启用SSP的设备恢复为(可破解的)基于PIN码的配对。

以下是蓝牙2.1设备(或更高)与蓝牙2.0设备(或更低)配对的示例,其中配对恢复为PIN码配对(因为蓝牙2.0设备没有SSP的概念)。 BEX400软件已经解密了0000的密码并计算了链路密钥,随后自动解密流量。

在这里插入图片描述

请注意,如果用户输入了错误的PIN码,Ellisys软件会告知此错误并指出要输入正确的PIN码。简单。

SSP调试模式

SSP调试模式是启用SSP的设备使用的特殊模式,其中使用众所周知的私钥/公钥对而不是普通的私钥/公钥对。如果两个设备中至少有一个处于SSP调试模式,则BEX400分析仪将自动推断链接密钥,该分析仪识别通过空中传输的众所周知的公钥。同样,两个设备中只有一个必须处于调试模式,而不是两者。如果两个设备中的一个处于调试模式,则分析仪将知道其SSP私钥,因此能够使用每个设备使用的相同算法计算链路密钥。

请注意,某些制造商已选择在其设备未处于调试模式时不接受与处于调试模式的其他设备的SSP配对。这是一种非标准行为,遗憾的是它会降低调试模式的实用性,因为在这种情况下,两个设备都必须处于调试模式。

SSP私钥注入

如上所述,SSP调试模式只是使用已知SSP私钥的一种方式。即使不使用SSP调试模式,如果私钥已知,则可以由用户简单地将其提供给协议分析仪软件。通过知道私钥,分析仪软件能够在检测到涉及已知私钥的配对时自动确定链接密钥。这提供了很好的可用性,因为它避免了必须手动输入链接密钥。

这种方法还为SSP调试模式提供了更高级别的安全性,因为只有配置了特定SSP私钥的分析仪才能确定链接密钥;该地区的其他嗅探器将无法解密流量。

此功能(私钥的输入)由Ellisys分析仪软件使用 “管理SSP密钥(Manage SSP Key)” 功能提供,该功能位于 “安全(Security)” 窗格中,如下图所示。
在这里插入图片描述

HCI Capture

虽然链路密钥不是通过空中传输的,但好消息是它通过主机控制器接口(HCI)在无线电芯片和主机之间传输,并且可通过该介质访问。更好的是,Ellisys分析仪可以与空中流量同时捕获HCI流量,因此,分析仪可以通过这种方式访问​​链接密钥。

在开发阶段使用的原型或开发工具包(SDK)上可以轻松访问HCI,但在大多数现成的设备上可能无法进行此类访问。 USB HCI是一个例外,例如蓝牙适配器使用的。例如,使用带有USB Dongle的PC是一种简单的访问方式
人机交互。这是通过将加密狗连接到STD-A端口(天线下方)的BEX400分析仪,然后将USB Micro-B连接到USB STD-A电缆,从分析仪上相邻的Micro-AB插座连接到PC来完成的。分析仪软件将与USB HCI流量同时捕获空中流量,并将自动提取链接密钥以解密空中流量。
在这里插入图片描述

请注意,仅在两个设备之一上需要HCI访问,而不是两者都需要,因为两个设备的链接密钥相同。

以下是从蓝牙适配器捕获USB HCI的典型设置。分析仪同时捕获空中流量和HCI流量。请注意,在正常情况下,使用6英寸USB STD-A到STD-A扩展器电缆将Dongle延伸远离天线(否则Dongle在非常靠近天线时可能会出现过强信号)。
在这里插入图片描述
在下图中,BEX400分析仪与BR/EDR流量同时捕获了USB HCI,链接密钥自动从HCI捕获中提取并用于解密BR/EDR流量。使用类似的方法可以使用BEX400分析仪后部的特殊电缆捕获其他形式的HCI,例如UART或SPI。
在这里插入图片描述

Ellisys HCI Injection API

Bluetooth Explorer 400软件应用程序支持HCI Injection API,可在Record菜单的Available Analyzers对话框中选择。 Injection API使用UDP(用户数据报协议)将HCI流量推送到蓝牙资源管理器400软件,该软件在 “HCI Overview (Injection)” 中实时显示,就像在分析仪的其中一个标准HCI捕获端口上捕获此流量一样。
在这里插入图片描述
使用此方法捕获的链接密钥由分析器软件存储并与设备连接相关联,以便自动解密设备之间的任何后续空中流量捕获。

Bluetooth Explorer 400的用户手册提供了下载说明文档和示例代码的链接。

Ellisys远程控制API

Ellisys Remote Control API可用于以编程方式将链接密钥(从任何源获取)注入Ellisys BEX400软件应用程序。例如,可以构建一个远程控制API客户端,监视Windows注册表以进行更改,并将新的链接密钥推送到分析应用程序中。

下面提供的链接包含介绍性指南,插件DLL和使用Microsoft Visual Studio 2010以C#编写的示例代码。兼容性是Visual Studio 2005或更高版本。

http://www.ellisys.com/better_analysis/bex400a_remote_api.zip

特定于供应商的方法

BEX400分析仪可捕获附近的所有蓝牙流量,甚至是加密流量。分析仪的软件允许用户在捕获期间或甚至在已保存的捕获中手动输入链接密钥,以便解密流量。当标准链路密钥访问方法(例如HCI捕获或注入HCI)不适用时,仍然可以从具有供应商特定方法的设备中提取链接密钥,然后将链接密钥输入到分析器的 “安全” 窗格中以进行解密。

在这些情况下,需要访问无线电芯片,操作系统,SDK或主机协议栈的特殊功能。例如,可以访问可以存储链接密钥的Windows注册表,也可以访问某些移动电话上可用的开发人员模式。

以下列表绝不是完整的 - 这是一项正在进行的工作。 Ellisys鼓励读者提交关于在各种设备,协议栈等中查找链接密钥的方法的建议,以包含在本文档中。请参阅本文档末尾有关如何联系Ellisys的信息。在尝试对系统软件进行任何更改之前,Ellisys还强烈建议您与设备制造商联系。

对于开发人员来说,大多数蓝牙协议栈提供商或芯片开发商都会提供API或SDK,以提供对系统寄存器的访问,这些寄存器可能包括读取蓝牙链接密钥的选项。如需详细信息,请与供应商联系。

Windows蓝牙堆栈

通常可以从Windows注册表访问基于Windows的系统的链接密钥(使用Windows协议栈)。在许多情况下,它位于如下所示的BTHPORT文件夹中,与适用的蓝牙地址(即系统所连接的蓝牙设备)相关联。请注意,此文件夹可能需要管理权限才能访问,并且可能会更改此类权限以获取访问权限(右键单击此选项的文件夹)。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Keys

在这里插入图片描述
在这里插入图片描述
在我们的情况下(右侧),计算机(WIN8 PC)显示标记为“e82aeab4de7a”的注册表目录,该目录是PC的BD ADDR。

下面,我们看到此目录的内容,其中“00241cc1d797”显示为所连接设备的BD ADDR,本例中为耳机。与耳机相关联的数据是链接密钥。我们只需复制此链接密钥并将其粘贴到Ellisys分析器应用程序(在 “安全” 窗格中)中,如下所示,这些设备之间的流量会立即被解密。
在这里插入图片描述
在这里插入图片描述
下面,我们看到分析仪现在解密了流量(过滤后只显示AT协议)。请注意“通信”列,其中列出了两个通信设备及其BD ADDR。

许多Windows系统将使用第三方蓝牙协议栈而不是Microsoft协议栈,例如Toshiba,Widcomm等。对这些第三方协议栈的注册表访问可能不那么明显,因此一种方法是强制系统从第三方协议栈还原到Windows协议栈。用户应设置系统还原点,卸载第三方协议栈,然后重新启动。然后,系统应默认为Microsoft协议栈。

在某些情况下,浏览在线论坛可能很有用。以下URL是一个示例:

http://superuser.com/questions/229930/finding-bluetooth-link-key-in-win7-to-double-pair-a-device-on-dualbootcomputer

Android堆栈

更高版本的Android操作系统提供了一个开发者模式,可以通过设置/关于手机(Settings/About Phone)菜单启用,通过多次重复按下内置编号选项(通常是七次)。请参阅手机的用户手册,确保您有可用的开发者模式以及具体说明。

开发者模式包括各种功能,包括启用包含HCI流量的日志文件的选项。此文件采用BT Snoop格式。该文件包含来自配对事件的链接键,可以轻松导入到BEX400分析仪软件中。分析器软件将存储这些链接密钥,并将这些链接密钥与使用它们的设备相关联,因此后续的连接设备空中捕获将自动解密。

下面的图片描述了启用开发者模式的缩写序列,以及生成的BT Snoop HCI日志文件。可以通过手机的USB连接访问该文件,也可以通过多种方式共享该文件,例如通过电子邮件。
在这里插入图片描述
下面的屏幕截图显示了BEX400导入菜单,选择了BT Snoop HCI进行导入。电话创建的BT Snoop文件被引用作进行导入的位置。
在这里插入图片描述
下面是BEX400应用程序导入手机BT Snoop日志后的结果捕获。这显示了在电话和耳机之间建立的链接密钥。该密钥将由分析仪软件存储,并用于解密电话和耳机之间后续连接的捕获上的流量。
在这里插入图片描述

有关Android Developer SDK的信息,请参阅以下链接:http://developer.android.com/sdk/index.html

CSR持久存储

对于使用CSR设备和工具的开发人员来说,有一个好消息:Ellisys BEX400 Explorer应用程序本身支持CSR的PSTool实用程序的格式。密钥存储在配置数据42到49中:
在这里插入图片描述
十六进制数据由Ellisys软件直接支持,可以在Security视图的Link Key字段中提供,无需进一步转换。 Ellisys软件将识别CSR格式并自动转换。

诺基亚手机

键入*#2873#可以将某些诺基亚型号置于调试模式。

Linux / BlueZ蓝牙堆栈

BlueZ是官方的Linux蓝牙协议栈。此协议栈也用于许多Android平台(Android 4.2之前)。有关可能对访问链接密钥有用的实用程序的信息,请访问www.bluez.org

下面的链接提供了有关BlueZ Utils应用程序的信息,该应用程序具有可能也很有用的HCI工具。 https://www.linux.com/news/hardware/peripherals/44623-working-with-bluetooth-connecting-to-all-those-cool-devices

/var/lib/Bluetooth/[BD_ADDR]/linkkeys

Widcomm蓝牙堆栈

请注意,Widcomm被Broadcom收购。 Widcomm是Windows使用的第一个蓝牙协议栈。与上面的Windows协议栈部分类似,请尝试下面的注册表中的Widcomm位置。

HKEY_CURRENT_USER\Software\Widcomm\BTConfig\LinkKeys

蓝牙智能(低能耗)

Bluetooth Smart(规范版本4.0)的安全功能与BR/EDR使用的功能不同。蓝牙智能配对过程导致生成长期密钥(LTK),该密钥是使用与BR/EDR使用的导致生成链接密钥的过程显着不同的过程导出的。蓝牙智能设备在体系结构上比BR/EDR设备更简单,因为它们用于更简单的任务,因此这些设备上的处理和存储能力通常较少,实际上是一种更简单且安全性更低的隐私方法。

有关Bluetooth Smart安全性未来变化的信息,请参阅以下标题为Bluetooth Smart的安全连接的部分。

使用Bluetooth Smart,一台设备确定LTK,然后使用基于短期密钥(STK)的临时加密将其发送到另一台设备。这种简单方法的一个好处是更快的连接和重新连接,这是蓝牙智能的主要设计目标,也是连接速度较慢的BR/EDR的主要区别。缺点是缺乏窃听保护。

因此,对于Bluetooth Smart,我们使用 “密钥传输”(LTK传输到其他设备)而不是 “密钥协议”(链接密钥由两个设备对称确定)。

对于BEX400用户而言,重要的是不需要寻找密钥,因为分析仪能够破解蓝牙智能的安全性。 Bluetooth Smart的未来发展将使这一过程变得更加困难,但BEX400架构将轻松应对这些变化(请参阅下面的Bluetooth Smart安全连接)。

下面的屏幕截图描述了LTK从密钥卡发送到加密狗。请注意,此数据包发送时已启用STK的加密。
在这里插入图片描述

Bluetooth Smart的安全连接

蓝牙规范(v4.2)修订版增加了各种增强功能,包括增加LE安全连接,这将极大地提高蓝牙智能设备的安全性。此添加更新了配对过程,以类似于BR/EDR安全连接SSP的方式利用P-256椭圆曲线和FIPS认可的算法(AES-CMAC和P-256椭圆曲线)。此更改还包括共享密钥的规定。 LE遗留配对(在上一节中描述)仍然可用。请注意,对于BR/EDR,安全连接添加于规范的4.1版本,主要包括加密方法的更改;配对方法仍然是SSP,但具有更长的私钥/公钥(256位而不是192位)。

下图描述了LE安全连接的架构以及与LE传统配对和BR/EDR安全连接的比较。
在这里插入图片描述
如上图所示,LE安全连接还将允许通过一个传输(例如,BR/EDR)导出的密钥用于另一传输(例如,蓝牙智能)。因此,如果您有两台设备同时支持BR/EDR和Bluetooth Smart,并且两者都支持这两种传输上的Secure Connections,您只需配对一次即可。换句话说,在LE配对过程中生成的LTK可以转换为BR/EDR链路密钥以用于BR/EDR传输,相反,在BR/EDR SSP配对过程中生成的BR/EDR链路密钥可以转换为LTK用于LE运输。

需要反馈

您是否知道其他访问链接密钥的方法,或者您对本文档中的建议实施有何反馈?请通过expert@ellisys.com与我们分享您的反馈意见,我们将相应地更新此文档(如果您愿意,我们会将您的输入归入更新的文档中)。这对蓝牙社区有很大帮助!

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值