• 蓝牙 - 关于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

    参考:

    A Basic Introduction to BLE 4.x Security - Wireless - Engineering and Component Solution Forum - TechForum │ Digi-Key

  • 相关阅读:
    JVM高频知识点合集【2】
    医院陪诊系统:改善患者体验的技术创新
    JMM(Java Memory Model,Java内存模型)
    Qt中使用图像格式对QPainter绘制文字影响
    南京大学 静态软件分析(static program analyzes)-- introduction 学习笔记
    Scrapy
    Java基础 引用数据类型String(字符串)
    代码随想录刷题笔记 DAY 37 | 动态规划理论基础 | 斐波那契数 No.509 | 爬楼梯 No.70 | 使用最小花费爬楼梯 No.746
    Api 接口优化的几个技巧
    24v转12v转9v转5v转4.2v降压电源芯片AH8788
  • 原文地址:https://blog.csdn.net/guoqx/article/details/127863929