蓝牙 - 关于BLE的安全连接

这篇具有很好参考价值的文章主要介绍了蓝牙 - 关于BLE的安全连接。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

A Basic Introduction to BLE 4.x Security

引言

Bluetooth Low Energy (BLE)正在迅速成为当今最常用的无线标准之一。同样地,它也越来越多地被用于传输敏感信息的应用中。因此,希望将BLE集成到其产品中的设计者应该了解这项技术的安全特性和限制。本文试图对这些功能做一个基本的概述,并对其背后的理论做一些深入了解。

本文将重点介绍BLE GAP (Generic Access Profile - 通用访问配置文件)中心和GAP外设角色(Central and Peripheral roles)。GAP观察者和GAP广播者(Observer 和Broadcaster)角色通常用于几乎没有安全要求的应用中,因此在本文中没有考虑。

对于不熟悉BLE标准的读者来说,GAP是BLE堆栈(stack)的一层,决定了BLE系统的网络拓扑结构。GAP中心通常是发起与GAP外设连接的设备。一旦两个设备连接起来,它们将执行一个 "配对 "过程,在这个过程中,它们将交换必要的信息,以建立一个加密连接。这些设备还可以执行一个绑定过程,在这个过程中,来自配对过程的信息被存储在设备上,这样,每次设备之间重新连接时就不必重复配对过程。

最后,本文将把BLE设备称为4.0、4.1或4.2设备,以说明它们符合哪个版本的蓝牙规范。使用这些术语有些不正确,因为符合经典蓝牙部分规范的经典蓝牙设备也可以被称为符合蓝牙4.x的设备。然而,由于本文只关注BLE设备,这些术语可被视为仅指符合相关规范的BLE部分的设备。

BLE所面临的安全问题

一般来说,对配对过程和BLE,主要安全问题是被动窃听(passive eavesdropping)、中间人(man in the middle - MITM)攻击和身份追踪(identity tracking)。

被动窃听是指第三方设备监听两个配对设备之间正在交换的数据的过程。BLE克服这个问题的方法是使用AES-CCM加密技术对传输的数据进行加密。虽然AES加密被认为是非常安全的,但BLE使用的密钥交换协议可能会引入一些严重的安全漏洞,使攻击者能够解密数据。因此,交换密钥的方法,被称为 "配对方法 "或 "关联模型" (“pairing method” or “association model”),对连接的安全性有很大影响。

MITM攻击是指第三台设备,我们称之为恶意设备,冒充其他两台合法设备,以欺骗这些设备与之连接。在这种情况下,GAP中心和GA外设设备都将连接到恶意设备,而恶意设备反过来又将这两个设备之间的通信进行中转路由。这让合法设备产生错觉,以为它们直接连接到对方,而实际上它们的连接已经被破坏。这种设置不仅允许恶意设备拦截所有正在发送的数据,而且还允许它在通信中注入虚假数据,或在数据到达预期收件人之前删除数据。关于MITM攻击的更详细解释可以在维基百科上找到: Man-in-the-middle attack - Wikipedia. 与被动窃听一样,使用的配对方法决定了BLE连接对MITM攻击的防御能力。

身份追踪是指恶意实体能够将BLE设备的地址与特定用户联系起来,然后根据BLE设备的出现对该用户进行物理追踪。BLE克服这个问题的方法是定期改变设备地址。对这一过程的更详细解释可以在本文的寻址部分找到。

配对概述

配对是两个BLE设备交换设备信息以建立安全链接的过程。这个过程在BLE 4.2设备和旧的4.1和4.0设备之间有些不同。这些过程在下面的章节中详细说明。

4.0和4.1设备:

4.0和4.1设备的配对过程,也被称为LE传统配对(LE Legacy Pairing),使用BLE标准特有的自定义密钥交换协议(custom key exchange protocol)。在这种设置中,设备交换一个临时密钥(Temporary Key - TK),并使用它来创建一个短期密钥(Short Term Key - STK),用于加密连接。这个过程的安全程度在很大程度上取决于用于交换TK的配对方法,因此本文后面将详细介绍每种配对方法。配对过程分一系列阶段进行,如下所示。

第一阶段:当发起设备向另一设备发送 "配对请求-Pairing_Request"时,该阶段开始。然后两个设备交换I/O能力( I/O capabilities)、认证要求(authentication requirements)、最大链接密钥大小(maximum link key size)和绑定要求(bonding requirements)。基本上这个阶段包括的所有内容是,两个设备交换它们的能力,并确定它们如何去建立一个安全的连接。同样重要的是要注意,在这一阶段,所有正在交换的数据都是未加密的。

第二阶段:一旦第一阶段完成,设备使用其中一种配对方法生成和/或交换TK。然后,两个设备交换Confirm和Rand值,以验证它们都在使用相同的TK。一旦确定了这一点,他们将使用TK和Rand值来创建STK。然后,STK被用来加密连接。

第三阶段。这个阶段是一个可选的阶段,只有在第一阶段交换了绑定要求的情况下才会使用。在这个阶段,将交换几个特定的传输密钥。这些密钥及其功能的完整列表可以在本文的附录中找到。

4.2设备:

BLE 4.2设备与BLE 4.0和4.1设备完全向后兼容,这意味着4.2设备能够执行与4.0和4.1设备完全相同的配对过程。然而,BLE 4.2也能够创建所谓的LE安全连接(LE Secure Connections)。LE安全连接不使用TK和STK,而是使用单一的长期密钥(LTK - Long Term Key)对连接进行加密。这个LTK是使用 Elliptic Curve Diffie Hellman(ECDH)公钥加密算法来交换/生成的,与原来的BLE密钥交换协议相比,它的安全性明显更强。

在LE安全连接中,配对过程的第一阶段和第三阶段都与LE传统连接中的完全相同。因此,唯一的区别发生在配对过程的第二阶段。

第二阶段在LE安全连接中的工作方式如下。两个设备都产生一个ECDH公钥-私钥对。然后,两个设备将交换他们的公钥,然后开始计算Diffie-Hellman密钥。然后使用其中一种配对方法来验证连接。一旦连接被认证,就会生成LTK,并对连接进行加密。

LE传统连接的配对方法(4.0、4.1和4.2设备)-- Paring Methods for LE Legacy Connections

Just Works TM:

在这种方法中,临时密钥TK被设置为0。因此,攻击者很容易对STK进行暴力破解并窃听连接。同样,这种方法也没有提供一种方式,用来验证参加连接的设备的身份,因此它没有提供针对中间人攻击的保护。

Out of Band (OOB) Pairing: (外部数据配对法)

在这种方法中,临时密钥TK是通过另一种无线技术(如NFC)来进行交换的。这种方法的主要优点是可以使用非常大的TK,最高可达128位,大大增强了连接的安全性。如果OOB信道被保护免受MITM攻击,那么可以认为BLE连接也被保护免受MITM攻击。同样地,只要OOB通道在配对过程中不受窃听影响,那么BLE连接也将不受被动窃听影响。在三种传统的配对方法(Just WorksTM、Passkey和OOB)中,OOB配对是迄今为止最安全的,前提是OOB通道采用了足够安全的方法。

Passkey 密码锁:

在这种方法中,临时密钥TK由6个数字组成,它需要在两个设备间进行传递,但传递过程是由用户完成的(比如手动输入数字)。这个数字的传递方式可以不同。一个例子是让其中一个设备生成一个随机的6位数字,并将其显示在LCD显示屏上。然后,用户看到该数字,并使用键盘将其输入另一台设备。

如果攻击者在配对过程中没有监听,那么passkey配对方法可以很好地防止被动窃听。然而,如果攻击者在配对过程中在场,并且能够监听(sniff)到正在交换的值,那么暴力破解(brute force)出TK并使用它来推导STK和解密连接是相当容易的。一般认为,只要攻击者不能通过BLE连接以外的其他方式获得密码,密码方法就能安全地防止MITM攻击。然而,至少有一种理论上的MITM攻击能够在不了解密码的情况下成功,详情见白皮书 -- 托马斯-罗萨(Tomas Rosa)撰写的白皮书"绕过蓝牙低能耗中的密码认证"(Bypassing Passkey Authentication in Bluetooth Low Energy)。出于这个原因,需要最高安全级别的BLE应用应该使用OOB或数字比较配对方法。

白皮书链接:

https://eprint.iacr.org/2013/309.pdf

LE安全连接的配对方法(仅4.2设备)-- Paring Methods for LE Secure Connections

Just WorksTM: 

一旦设备交换了它们的公钥,接收连接设备将生成一个nonce,这基本上是一个随机的种子值,然后用它来生成一个确认值(Confirmation value)Cb。然后,它将Cb和nonce一起发送给发起设备。同时,发起连接设备生成它自己的nonce并将其发送给接收连接设备。然后,发起连接设备使用接收连接设备的nonce来生成它自己的确认值Ca,它应该与Cb相匹配。如果确认值匹配,那么连接就会继续进行。

通过ECDH密钥交换,LE安全连接中的Just WorksTM配对方法与LE传统连接中的相同方法相比,对被动窃听的抵御能力大大增强。然而,由于这种方法没有给用户提供验证连接身份的认证方法,它仍然容易受到MITM攻击。

Out of Band (OOB) Pairing(外部数据配对法):

在OOB配对中,公钥、nonces和确认值都是通过不同的无线技术(如NFC)来交换的。与LE传统连接一样,OOB配对只在OOB通道安全的情况下提供保护,防止被动窃听和MITM攻击。

Passkey -- 密码锁:

在这种方法中,每个设备都要输入一个相同的6位数字。两台设备使用这个passkey,他们之前交换的公钥,以及一个128位的nonce来验证连接。这个过程对passkey的每一位都是逐位进行的。一个设备将为密码的一个比特计算一个确认值,并将其透露给另一个设备。另一个设备将计算它自己的密码的第一比特的确认值,并将其透露给第一个设备。这个过程一直持续到passkey的所有位都被交换并被验证为匹配为止。

根据上面详述的过程,LE安全连接的passkey方法比LE传统连接对MITM攻击的抵抗力要强得多。

Numeric Comparison: -- 数字比较。

这种配对方法遵循与Just WorksTM配对方法完全相同的程序,但是在最后增加了另一个步骤。一旦设备确认确认值匹配,那么两个设备将独立地使用两个nonces生成最后的6个数字。然后将这两个计算出的6位数字向用户显示出来,由用户手动检查这两个值是否匹配并确定连接。这个额外的步骤使这种配对方法能够提供对MITM攻击的保护。

关于BLE配对方法的实际考虑:

在安全应用中使用BLE的一个主要障碍是,最安全的配对方法在其他方面有很大的缺点。OOB配对要求设备有额外的电路,提高了设备的成本,设计者还必须保证OOB通道的安全,这本身就是一个重大的设计挑战。数字比较要求每个设备都有一个显示屏,提高了设备成本,同时还要求用户手动验证代码是否匹配,这对用户体验是不利的。因此,我们有理由认为,大多数设备都会使用Passkey密码法或Just WorksTM,这意味着大多数设备都会有一定程度的漏洞。如果OOB配对或数字比较不能在他们的设计中实现,从事安全要求高的产品(如医疗设备)的设计者应考虑其他无线协议。

寻址:

每个BLE设备都使用一个设备地址来识别。这些地址与其他通信协议中使用的MAC地址相似,但是,通常可以随意改变BLE设备地址。由于这种相似性,人们经常看到BLE设备地址被称为BLE MAC地址。

BLE目前支持四种不同类型的地址,它们的长度都是48位。

- 公共的IEEE格式(Public IEEE Format)--通过IEEE注册机构购买,这些地址是绑定制造商的。这种地址的24个高位是组织唯一标识符(OUI),又称公司ID,由IEEE分配。低有效位的24位可由公司自由修改。由于这些地址不改变,它们不提供身份跟踪的保护。

- 随机静态(Random Static)--这些地址在制造过程中被烧入设备的芯片中,或在设备电源上电时产生。如果设备在每个电源周期产生一个新的地址,并且用户定期对设备进行电源循环,那么这种地址类型就能提供一些保护,防止身份追踪。否则,这种地址类型提供的保护是有限的。

- 随机私有可解析(Random Private Resolvable)--这种寻址方法只有在两个设备在绑定过程中交换了身份解析密钥(IRK - Identity Resolving Key)时才能使用。使用这种方法,设备将使用IRK将其设备地址转化为广播包中出现的随机地址。然后,同样拥有IRK的第二个设备能够将随机地址转换回真实地址并识别第一个设备。在这种方法中,设备将定期根据IRK生成一个新的随机地址,针对防止身份追踪提供重要保护。

- 随机私有不可恢复(Random Private Non-Resolvable)--在这种寻址方法中,设备地址只是一个随机数,新的设备地址可以在任何时候生成。如果经常重新生成新的地址,这种方法就提供了对身份跟踪的重要保护。

结论:

BLE为确保设备间的通信安全提供了几种功能,每一种都有其自身的优势和局限性(advantages and limitations)。当设计者希望在他们的设计中实施BLE时,他们必须了解BLE面临的具体安全威胁,以及BLE的安全功能如何帮助减(mitigate)轻这些威胁。

资料引用:

Bluetooth Core Specification , ver. 4.1, Bluetooth SIG, December 2013

Bluetooth Core Specification , ver. 4.2, Bluetooth SIG, December 2014

Gibbs, J. (2014, August 13). Increasing Wireless Security in Bluetooth Low Energy . Retrieved August 01, 2016, from http://eecatalog.com/IoT/2014/08/13/increasing-wireless-security-with-bluetooth-low-energy/ (P35)

Rosa, T. (2013, May 23). Bypassing Passkey Authentication in Bluetooth Low Energy . Retrieved August 01, 2016, from https://eprint.iacr.org/2013/309.pdf (P72)

Ryan, M. (2013). Bluetooth: With Low Energy Comes Low Security . Retrieved August 01, 2016, from Bluetooth: With Low Energy Comes Low Security | USENIX (P16)

Relevant Links Concerning BLE Security:

BLE Core Specification Download Page P48

https://www.bluetooth.com/specifications/adopted-specifications

Bluetooth Sig’s LE Security Page P71

https://developer.bluetooth.org/TechnologyOverview/Pages/LE-Security.aspx

配对方法和I/O capabilities之间的关系:

参见:

BLUETOOTH SPECIFICATION Version 4.2 [Vol 3, Part H] 2.3.5 Pairing Algorithms

蓝牙 - 关于BLE的安全连接

蓝牙 - 关于BLE的安全连接

参考:

A Basic Introduction to BLE 4.x Security - Wireless - Engineering and Component Solution Forum - TechForum │ Digi-Key文章来源地址https://www.toymoban.com/news/detail-427688.html

到了这里,关于蓝牙 - 关于BLE的安全连接的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • windows+python+bleak+BLE低功耗蓝牙通讯连接

    1.为什么选bleak   参考这篇知乎:https://zhuanlan.zhihu.com/p/577687336   windows端使用python连接常规的BLE设备(蓝牙4.0),仅考虑bleak模块(排除pybluez、pybluez2、pygatt)。 2.本文主要参考   本文主要参考bleak的官方文档:https://github.com/hbldh/bleak 3.本文所用设备   应事先学习蓝

    2024年02月02日
    浏览(40)
  • 关于KT6368A双模蓝牙芯片的BLE在ios的lightblue大数量数据测试

    测试简介 关于KT6368A双模蓝牙芯片的BLE在ios的lightblue app大数量数据测试 测试环境:iphone7 。KT6368A双模程序96B6 App:lightblue  ios端  可以打开log日志查看通讯流程 测试数据:长度是1224个字节,单次直接发给KT6368A,然后蓝牙通过BLE转发给手机 详细测试 单次发送1224个字节,电脑

    2024年01月18日
    浏览(73)
  • 关于解决驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“sun.security.validator.ValidatorException:

    首先 如果你是在访问一个网站,可以通过可以通过导入证书的方式解决该问题。或者跳过ssl证书验证。这些操作步骤,其他博主已经写的非常详细了。在这里不做赘述。 如果你只是单纯链接一个本地数据库,却莫名其妙的出现了 驱动程序无法通过使用安全套接字层(SSL)加密

    2024年02月04日
    浏览(41)
  • 关于HC05 蓝牙模块与与蓝牙模块连接

    在通常的电子设计中,一般采用蓝牙模块与上位机(手机)连接来与电子设备通信,实现对电子设备的控制。当然也可以通过WiFi模块等其他通信模块进行通信。这里就介绍一下蓝牙模块之间的连接,能够摆脱上位机,实现设备与设备之间的通信。 蓝牙模块需要通过AT指令进行

    2024年02月16日
    浏览(94)
  • Android蓝牙BLE开发

    最近正在研究Android的蓝牙BLE开发学习,以下是自己做的个人总结 首先得说明什么是低功耗蓝牙BLE,BLE的全称为Bluetooth low energy(或称Blooth LE,BLE),从英文全称便可以知晓其是一种低功耗的蓝牙技术,是蓝牙技术联盟设计和销售的一种个人局域网技术,旨在用于医疗保健、运

    2023年04月09日
    浏览(42)
  • 蓝牙协议栈&BLE

    这阵子用到蓝牙比较多,想写一个专栏专门讲解蓝牙协议及其应用,本篇是第一篇文章,讲解低功耗蓝牙和蓝牙协议栈。 参考网上各大神文章,及瑞萨的文章,参考GPT,并且加入了一些本人的理解。 图片部分源自网络,侵删。 有纰漏请指出,转载请说明。 学习交流请发邮件

    2024年02月09日
    浏览(44)
  • BLE蓝牙协议栈分析

    Controller实现射频相关的模拟和数字部分,完成最基本的数据发送和接收,Controller对外接口是天线,对内接口是主机控制器接口HCI(Hostcontroller interface); 控制器包含物理层PHY(physicallayer),链路层LL(linker layer),直接测试模式DTM(Direct Test mode)以及主机控制器接口HCI。

    2024年02月13日
    浏览(53)
  • Flutter:BLE蓝牙开发

    说明: 使用flutter_blue_plus插件实现低功耗蓝牙开发。 一、添加蓝牙权限: 1.Android网络权限(工程/android/app/src/main/AndroidManifest.xml): 2.iOS蓝牙权限(工程/ios/Runner/Info.plist): 二、实现扫描/连接/接收BLE设备数据: 1.添加flutter_blue_plus插件依赖,在pubspec.yaml中: 2.实现BLE蓝牙设备扫

    2024年02月11日
    浏览(40)
  • Android -BLE 蓝牙模块开发

    Android-Ble蓝牙开发Demo示例–扫描,连接,发送和接收数据,分包解包(附源码) - 简书 前言 万物互联的物联网时代的已经来临,ble蓝牙开发在其中扮演着举重若轻的角色。最近刚好闲一点,抽时间梳理下这块的知识点。 涉及ble蓝牙通讯的客户端(开启、扫描、连接、发送... https://

    2024年02月09日
    浏览(41)
  • 物联协议整理——蓝牙BLE

    最近公司很多物联设备都使用BLE蓝牙和ZigBee通信,中间对设备功耗要求很高,补充下相关知识。 PHY层 (Physical layer物理层)。PHY层用来指定BLE所用的无线频段,调制解调方式和方法等。PHY层做得好不好,直接决定整个BLE芯片的功耗,灵敏度以及selectivity等射频指标。 LL层 (

    2024年02月06日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包