蓝牙技术在加密上做了很多工作,来保证你的数据安全。
这些年来,我们的许多电子设备都转向了使用无线技术进行连接。我们的鼠标、键盘、耳机和扬声器上不再有长长的纠缠的电线,而使用了简单方便的无线技术,科技进步改善了我们的生活。
由于这些无线设备中有许多依靠蓝牙技术,蓝牙技术联盟(蓝牙技术的权威机构)在保持便利性和可靠性的同时增加了各种安全协议。
通过巧妙的方法和算法,蓝牙技术变得更加安全。本文将介绍蓝牙的安全功能是如何设计出来的,以及应该如何使用。
最新版本的蓝牙和Low Energy中的私密功能
蓝牙安全旨在为具有蓝牙功能的设备提供有关认证、完整性、保密性和隐私的标准协议,所有这些都使用加密。它自1998年以来一直在使用,已经有了几次迭代。
2010年,随着对短距离无线技术的功能需求的上升,蓝牙技术联盟开发了一个更新的蓝牙版本--蓝牙4.0。老几代蓝牙和蓝牙4.0之间最显著的区别是增加了BLE(蓝牙低功耗)。
请注意,BLE中的 "低功耗 "并不意味着它一定会使用更少的能量;它只是意味着它能很好地与低功耗设备(如无线耳机)配合,这些设备的电池容量很小。
由于大多数设备运行在蓝牙4.0及以上版本,我们将具体讨论这些较新版本的设计栈。此外,这个版本解决了前几代蓝牙的许多安全问题。
当前的蓝牙版本目前使用的BLE协议栈如下图所示:
我们对堆栈第四层的一个部分感兴趣,它被称为安全管理器Security Manager,负责处理有关认证、安全、保密和隐私的一切。安全管理器通过设备的配对和结合(pairing and bonding )来实现其协议。
BLE配对方法(Pairing methods)
配对是蓝牙安全管理器的一个重要组成部分。它验证你正在连接的设备是否是目标设备,然后生成一个加密密钥,供两个设备在整个会话中使用。
你的设备可以使用几种认证方法,以确保你连接到预定设备。这些方法包括:直接使用; 密钥另传; 输入密码; 数字对比。
- Just Works: 这是在两个设备间传递加密密钥的最快的方法,但安全性不够。
- OOB(Out of Band):使用其他认证方法(除了蓝牙)来发送加密密钥。一个例子包括通过NFC连接或使用你的设备的摄像头扫描对方设备显示屏上的QR码。
- Passkey:在一个设备上提示密码,需要在另一个设备上输入这个密码,才能通过认证。
- Numeric Comparison: 工作原理与Passkey相同,但设备会自动发送密码。用户只需要确认两个设备是否有相同的密码。
BLE加密密钥算法 / BLE Encryption Key Algorithms
现在,你的设备已经验证了连接设备的身份。然后他们将发送加密密钥,你的设备将在整个会话中使用这些密钥来加密和解密数据。
不同时期或版本的蓝牙规范中,安全管理器会使用不同的加密密钥算法来工作。最新版本的蓝牙(4.0及以上)使用的最常见的加密密钥算法如下:
- Symmetric-Key Ciphers / 对称密钥密文:这种类型的加密使用单一的密钥来解密哈希值或密文。
- Asymmetric-Key Ciphers / 非对称密钥密文:这种加密类型利用所谓的公钥和私钥。公钥用于加密数据,而私钥用于解密数据。
- Elliptical Curve Cryptography (ECC) / 椭圆曲线加密法:使用椭圆曲线方程来创建密钥,比对称或非对称密钥短得多,但同样安全。
- Advanced Encryption Standard (AES) / 高级加密标准:是一种基于数据块的对称加密,将128位数据作为一组数据块。
安全管理器的配对和绑定过程 / The Security Manager's Pairing and Bonding Process
安全管理器层旨在通过所谓的配对和绑定过程来处理蓝牙中的所有安全问题。在蓝牙连接中,总会有一个主设备和一个从设备(master and slave)。
主设备负责扫描那些发射广播信息的蓝牙设备。与此相反,从设备向外部发送广播信息的设备。
一个主从关系的例子是你的手机和一个无线耳机。你的手机是主设备,因为它扫描蓝牙设备,而你的无线耳机是从设备,因为它产生广播信号让你的手机能找到它。
配对过程包括安全管理器进行安全管理的三个阶段中的前两个。最开始,两个设备尝试进行建立连接的过程就属于配对过程。
- 初始配对过程中,主设备和从设备将共享每个设备能力信息以及它们所运行的蓝牙版本。能力信息需要包含的是,当前设备是否有屏幕、键盘、摄像头和NFC。
- 在让对方知道自己的能力后,从设备和主设备将决定使用何种安全协议和加密算法。
- 两个设备初始配对时使用的共享密钥被称为STK(Short-term key / 短期密钥)。顾名思义,STK将是主设备和从设备使用的加密密钥,直到会话结束。
- 当两台设备配对成功后,它们会使用STK对发送的每个数据包进行加密。而在数据加密后,任何试图监视你们会话的人因为没有STK而无法解密数据。
- STK的问题是,它只适用于同一次会话。每次会话,都需要再次配对,以便为生成一个新的STK。出于这个原因,开发出了一个额外的可选步骤,称为绑定(bonding)。
- 绑定步骤是蓝牙安全管理器的第三个阶段。在你的设备上会出现一个提示,询问你是否信任已配对的设备,并希望在看到设备广播时与之连接。而前两个阶段就是配对和生成STK密钥。
- 由于两个设备已经配对(通过STK有一个安全的连接),绑定过程将不需要进一步的安全检查。这个阶段要做的是生成一个LTK(Long-term key / 长期密钥)和一个IRK(Identify Resolve Key / 身份解析密钥)。然后,两个设备将使用这些密钥来解密数据,并在蓝牙开启时自动识别你的设备。
- LTK是一种类似于STK的加密密钥,设备使用它来加密和解密数据。不同的是,LTK是通过ECC而不是AES-120生成的,并且是长期使用的。
为了理解IRK,让我们简单地谈谈蓝牙MAC地址。所有具有蓝牙功能的设备都配备了一个网络接口控制器(Network Interface Controller / 网络接口控制器)。每个网络接口控制器都有一个独特的MAC地址(Media Access Control)。你不能改变这些MAC地址,因为给定的地址是硬编码在网络接口控制器的物理硬件中。
这个MAC地址也可以通过软件来修改,但如果希望绑定过的设备能够识别当前设备,那就不要随便修改MAC地址。考虑到这一点,为了能够使用可变的蓝牙地址,防止设备被别人追踪,但又能被可信任方发现,Bluetooth SIG增加了一个IRK系统,允许你的设备被绑定的设备识别,而对未知的蓝牙设备则无法识别。
蓝牙是一种复杂的技术组合,提供了广泛的设备兼容性、便利性和可靠性。应用广泛的蓝牙技术使得其安全成为一个不小的话题。
参考:
What Is Bluetooth Encryption and How Does It Work?