译者按:本文是对NIST的文档《Guide to Bluetooth Security》第四节的翻译,原文链接http://csrc.nist.gov/publications/nistpubs/800-121-rev1/sp800-121_rev1.pdf。
本节描述了蓝牙技术中存在的漏洞和这些漏洞带来的威胁。基于这些被鉴别出的共同漏洞和威胁,以及第三节所述的蓝牙安全特性,本节也推荐了一些可能的用于改进蓝牙安全性的对策。
一些正在计划针对蓝牙4.0技术规范应用对策的组织,需要仔细考虑它可能的安全后果。规范发布于2010年中期,而在那个时候几乎没有什么支持该规范的设备可用于评估。随着兼容该规范的设备越来越多,其他的漏洞很可能被发现,因而需要其他的建议来有效地保护低功耗蓝牙设备。
正在计划部署低功耗蓝牙设备的组织,需要仔细地关注那些涉及新漏洞、威胁和其他安全控制建议的开发。
4.1 蓝牙的漏洞
表4-1提供了大量已知的蓝牙相关漏洞的概况。4.4小节的蓝牙安全性检查表处理了这些漏洞。
安全问题或漏洞 | 备注 | |
---|---|---|
蓝牙v1.2之前的版本 | ||
1 | 基于单元密钥的链接密钥都是静态的且在每个配对中被重复使用。 | 使用单元密钥的设备会为每个与之配对的设备使用同样的链接密钥。这是一个严重的加密密钥管理漏洞。 |
2 | 基于单元密钥的链接密钥的使用可导致窃听和电子欺骗。 | 一旦设备的单元密钥被泄露(即当第一次配对的时候),任何其他拥有该密钥的设备能够欺骗该设备或任何其他已经与该设备配对的设备。 |
蓝牙v2.1之前的版本 | ||
3 | 安全模式1的设备从不会启动安全机制。 | 使用安全模式1的设备本身都是不安全的。对于v2.0及更早版本的设备,强烈推荐使用安全模式3(链路级安全性)。 |
4 | PIN码可以太短。 | 弱的PIN码(其用于在配对期间保护链接密钥的生成)能很容易的被猜到。人们总是倾向于选择短的PIN码。 |
5 | 缺乏PIN码的管理和随机性。 | 在一个有很多用户的企业设置中确立足够PIN码的使用可能是困难的。可扩展性问题经常产生安全性问题。另一种最好的方法是使用设备的随机数发生器来为一个正在配对的设备生成PIN码。 |
6 | 在使用了23.3小时后,加密密钥流会发生重复。 | 如图3-6所示,加密密钥流是依赖于链路密钥、EN_RAND、主设备BD_ADDR和时钟。在一个特定加密的连接中,只有主设备时钟会发生改变。如果连接持续时间超过23.3小时,时钟值将开始重复,从而产生一个与之前连接中使用的相同的密钥流。重复的密钥流是一个严重的加密漏洞,这将让攻击者确定原始明文。 |
蓝牙v2.1和v3.0 | ||
7 | 立即工作关联模型不提供配对期间的MITM保护,这导致了一个未认证的链接密钥。 | 为了获得最高的安全性,设备应该要求在SSP期间有MITM保护和拒绝接受用立即工作配对产生的未认证链接密钥。 |
8 | SSP ECDH密钥对可以是静态的或以其他脆弱方式生成的。 | 弱ECDH密钥对降低了SSP的窃听保护,这可能让攻击者确定机密的链接密钥。所有设备都应该拥有定期改变的唯一而以强健方式生成的ECDH密钥对。 |
9 | 静态SSP万能钥匙便于MITM攻击。 | 在SSP期间,万能钥匙提供MITM保护。设备应该使用随机的且针对每次配对尝试唯一的万能钥匙。 |
10 | 安全模式4的设备(即v2.1或更高版本的)与不支持安全模式4(即v2.0及更早版本)的设备连接时,其被允许回退到任何其他安全模式。 | 最坏的场景会是一个设备回退到安全模式1,该模式不提供安全性。NIST强烈建议在这种场景下,一个安全模式4的设备回退到安全模式3。 |
蓝牙v4.0之前的版本 | ||
11 | 进行身份认证的尝试是可重复的。 | 蓝牙设备需要包含一种机制来阻止无限次的认证请求。蓝牙规范要求连续认证尝试之间的等待时间间隔呈指数增加。然而,它对于认证过程的质询请求并未要求这样的等待时间间隔,因此攻击者可以收集大量的质询响应(这是用机密的链接密钥加密的),那就可能会泄露关于机密的链路密钥的信息。 |
12 | 用于广播加密的主设备密钥是在所有的微微网设备间共享的。 | 在超过两方之间共享密钥会方便发起伪装攻击。 |
13 | 蓝牙BR/EDR加密所用的E0流密码算法是相对较弱的。 | 通过在蓝牙BR/EDR加密之上叠加应用层的FIPS认证加密来实现FIPS认证加密。需要注意的是低功耗蓝牙使用AES-CCM。 |
14 | 如果蓝牙设备地址(BD_ADDR)被捕获并与特定用户关联,隐私可能会受到损害。 | 一旦BD_ADDR与特定用户相关联,该用户的活动和位置可能被跟踪。 |
15 | 设备认证是简单的共享密钥的质询/响应过程。 | 单向质询/响应认证会受到MITM攻击。蓝牙提供了相互认证,这应被用来提供设备合法性的验证。 |
蓝牙v4.0 | ||
16 | LE配对没有提供窃听保护。此外,立即工作配对方法没有提供MITM保护。 | 如果成功的话,窃听者可以捕获在配对期间分配的机密的密钥(即LTTL、CSRK、IRK)。此外,MITM攻击者可以捕获和操纵受信设备之间传输的数据。LE设备应该在安全的环境中配对以最小化窃听和MITM攻击的风险。立即工作配对不应被使用。 |
17 | LE安全模式1的等级1不要求任何安全机制(即没有认证或加密)。 | 与BR/EDR安全模式1类似,这本质上是不安全的。LE安全模式1的等级3(认证配对和加密)是被强烈推荐来替代它。 |
所有版本 | ||
18 | 链接密钥可能被不当存储。 | 链接密钥可能被攻击者读取或修改,如果没有通过访问控制来安全地存储和保护它们。 |
19 | 伪随机数生成器(PRNG)的强度是未知的。 | 随机数生成器(RNG)可能会生成静态的或周期性的数字,这可能会降低安全机制的有效性。蓝牙实现应该使用基于NIST标准的强PRNG。 |
20 | 加密密钥长度是可协商的。 | v3.0及更早版本的规范允许设备间协商加密密钥,其长度可以小到一个字节。低功耗蓝牙要求的最小密钥长度为7字节。NIST强烈建议在BR/EDR(E0)和LE(AES-CCM)中都使用完整的128位密钥强度。 |
21 | 没有用户认证存在。 | 规范只提供了设备认证。应用级安全性,包括用户认证,可以由应用程序开发人员通过在规范之上叠加一层来实现。 |
22 | 没有执行端到端的安全性。 | 只有单独的链接进行了加密和认证。在中间的一些节点,数据被解密。在蓝牙协议栈之上的端到端的去安全性需要使用其他安全控制来提供。 |
23 | 安全服务是有限的。 | 审核、不可抵赖性以及其他服务不是规范的一部分。如果需要的话,这些服务可以由应用程序开发人员以叠加的方式被包含进来。 |
24 | 可发现和/或可连接的设备都容易受到攻击。 | 任何设备必须进入可发现或可连接模式进行配对或连接,它们应该用最少的时间来这样做。一个设备不应该一直在可发现或可连接模式下。 |
4.2 蓝牙的威胁
蓝牙提供了几个好处和优点,但是这些并不是无风险的。蓝牙技术和相关设备易受一般无线网络威胁的影响,例如拒绝服务攻击、窃听、MITM攻击、消息修改和资源盗用,并且也被更多蓝牙相关的特定攻击所威胁,如以下内容:
- 蓝牙漏洞攻击(Bluesnarfing). Bluesnarfing让攻击者能够利用旧设备的固件漏洞来访问开启蓝牙功能的设备。这种攻击强制建立了一个到蓝牙设备的连接,并允许访问储存在设备上的数据,包括设备的国际移动设备身份码(IMEI)。IMEI是每个设备的唯一身份标识,攻击者有可能使用它来把所有来电从用户设备路由到攻击者的设备。
- 蓝牙劫持(Bluejacking). Bluejacking是一种在开启蓝牙功能的设备上实施的攻击,例如对手机的攻击。攻击者通过发送未经请求的消息给开启蓝牙功能的设备用户来发起Bluejacking。实际的消息不会对用户的设备造成损害,但是它们可以诱使用户以某种方式做出响应或添加新联系人到设备的地址薄。这种消息发送攻击类似于对电子邮件用户进行垃圾邮件和网络钓鱼攻击。当用户对包含有害目的之bluejacking消息发起了一个响应,则Bluejacking能够造成危害。
- 蓝牙窃听(Bluebugging). Bluebugging利用一个在一些较老设备固件上存在的漏洞来获取设备和其命令的访问权限。这种攻击无需通知用户就使用设备的命名,从而让攻击者可以访问数据、拨打电话、窃听通话、发送信息和利用设备提供的其他服务与功能。
- 汽车偷听(Car Whisperer). Car Whisperer是由欧洲安全研究人员开发的一种软件工具,它利用了在汽车蓝牙免提车载套件中一个实现上的关键问题。Car Whisperer软件让攻击者能发送音频到或接收音频自车载套件。攻击者可以将音频发送到汽车的喇叭或从车内麦克风接收(窃听)音频。
- 拒绝服务(Denial of Service).像其他无线技术一样,蓝牙也容易受到DoS攻击。影响包括让设备的蓝牙接口无法使用和耗尽设备电池。这些类型的攻击效果并不显著,而且因为需要接近才能使用蓝牙,所以通常可以很容易地通过简单的移动到有效范围之外来避免。
- 模糊测试攻击(Fuzzing Attacks).蓝牙fuzzing attacks包括发送格式错误或其他非标准的数据给设备的蓝牙射频接口和观察设备如何反应的。如果一个设备的运作被这些攻击减慢或停止,一个严重的漏洞可能存在于协议栈之中。
- 配对窃听(Pairing Eavesdropping).PIN码/传统配对(蓝牙2.0及更早版本)和LE配对(蓝牙4.0)都易受到窃听攻击。如果给予足够的时间,成功的窃听者会收集所有的配对帧,然后他/她能够确定这个(些)机密的密钥——它允许受信设备模拟和主动/被动数据解密。
- 安全简单配对攻击(Secure Simple Pairing Attacks).许多技术 可以强制远程设备使用立即工作SSP,然后利用其缺乏MITM保护的特性(例如,攻击设备声称它没有输入/输出功能)。此外,固定万能钥匙也可能让攻击者进行MITM攻击。
4.3 风险缓解与对策
组织应该通过应用对策来解决具体的威胁和漏洞以缓解它们的蓝牙实现的风险。部分对策不能通过蓝牙规范内建的安全功能来实现。4.4节中检查清单推荐的对策并不能确保一个安全的蓝牙环境,也不能防止所有的对手入侵。此外,安全性的获得是伴随着安全设备、不便、维护和操作的成本开支。每个组织应该在诸多因素的基础上评估可接受的风险等级,这将影响该组织实现的安全等级。为了有效,蓝牙安全应该贯穿蓝牙解决方案的整个生命周期。
FIPS Publication(PUB) 199建立了三种安全类别——低、中和高,这些类别基于一个涉及特定系统的安全漏洞的潜在影响。NIST SP 800-53提供了一些建议,涉及最低的管理以及基于FIPS PUB 199影响分类的信息系统的操作和技术上的安全控制。NIST SP 800-53中的建议应该有助于组织识别用于保护蓝牙实现的一般所需的控制,另外应使用本文档所列的针对蓝牙实现之具体建议。
第一道防线是提供足够的知识和理解水平给这些将会涉及具有蓝牙功能的设备的人员。使用蓝牙技术的组织应该建立针对蓝牙设备的使用和用户责任的安全守则,并形成文档。这些守则文档应当包括已批准的蓝牙用途列表和可以通过蓝牙网络传输的信息类型。安全守则还应该指定一个正确的密码使用方案。如果可行,一个集中的安全策略管理方法应该被用来与安装在蓝牙设备上的终端安全产品协作,以确保该策略在本地被普遍地强制执行。
蓝牙设备的一般性和移动性增加了在整个组织中运用传统安全措施的难度。尽管如此,我们可以制定一些对策以确保蓝牙设备和通信的安全,范围从距离和功率输出到一般的操作惯例。4.4小节的检查清单中将提供几个可以采用的对策。
4.4 蓝牙安全检查清单
表4-2提供了一个蓝牙安全检查清单,包括了创建和维护安全的蓝牙微微网的指南和建议。
对于清单中的每一条建议或指南,理由栏列出了蓝牙设备关注的领域、与这些领域相关的安全威胁和漏洞、保护设备免于这些威胁和漏洞的风险缓解。此外,对于每一条建议,提供了三个检查清单列。
- 第一列,推荐做法列,如被选中,意味着该条目代表了一条对所有组织的建议。
- 第二列,应该考虑列,如被选中,意味着该条目的建议应该被组织出于以下一个或多个原因而慎重考虑。
- 第一,通过提供一些额外的保护来实现该条建议可为无线环境提供更高的安全级别。
- 第二,该条建议支持深度防御策略。
- 第三,它可能具有显著的性能、操作或成本的影响。总之,如果应该考虑列被选中,组织应该认真考虑该选项并权衡成本与效益。
- 最后一列,状态,特意留白,让组织的代表使用此表作为一个真正的检查清单。例如,在一个蓝牙环境中执行无线安全审计的个人可以为了组织迅速核对每一条建议,问:“我已经做了这个了吗?”
安全建议 | 安全需要、要求或理由 | 检查清单 | |||
---|---|---|---|---|---|
推荐做法 | 应该考虑 | 状态 | |||
管理建议 | |||||
1 | 针对蓝牙技术,制定一个组织的无线安全策略。 | 安全策略是所有其他对策的基础。 | |||
2 | 确保无线网络中的蓝牙用户认识到他们在蓝牙使用方面的安全责任。 | 安全意识计划帮助用户遵守那些有助于防止安全事故发生的做法。 | |||
3 | 定期进行全面的安全评估,以充分理解组织的蓝牙安全态势。 | 评估帮助识别出组织内在使用的蓝牙设备并帮助确保无线安全策略被遵守。 | |||
4 | 确保对涉及蓝牙技术的设备和网络有从架构方面的充分了解并相应记录。 | 具有蓝牙功能的设备可以包含多种网络技术和接口,允许连接到本地和广域网。一个组织应该了解每个设备的整体连接状况以识别出可能的风险和漏洞,然后针对这些风险和漏洞制定无线安全策略。 | |||
5 | 为用户提供一个预防措施清单,他们应采取这些措施来更好地保护手持蓝牙设备,避免被盗。 | 组织及其成员对它的无线技术设备负有责任,因为设备的被盗可能会导致针对组织信息系统资源的恶意行为。 | |||
6 | 维护一个包含所有具备蓝牙功能的无线设备及其地址(BD_ADDR)的完整详细目录。 | 当进行搜查擅自使用无线技术的情况审计时,一个具有蓝牙功能的无线设备的完整详细目录清单可以被用作参考。 | |||
技术建议 | |||||
7 | 更改蓝牙设备的默认设置,以反映组织的安全策略。 | 因为默认设置通常是不安全的,应该执行一个仔细的审查以确保它们是符合组织的安全策略的。例如,默认设备名称通常应该被修改为非描述性的(即,使得它不会透露平台类型)。 | |||
8 | 将蓝牙设备的功率水平设置为最低必要和足够的程度,这样使得信号传输保持在组织的安全边界以内。 | 设置蓝牙设备到最低必要和足够的功率水平以确保一个授权用户可访问的安全范围。1类设备以及外部放大器或高增益天线的使用应该被避免,因为它们拓展了信号范围。 | |||
9 | 选择的PIN码应该有足够的随机性、长度和隐私性。避免静态和弱PIN码,如全零。 | PIN码应该是随机的,这样恶意用户就无法轻易地猜出它们。较长的PIN码能够有效地抵御暴力破解。对于蓝牙v2.0(及更早的)设备,应该使用8个字符的字母数字PIN码,如果可能的话。使用固定的PIN码是不可接受的。 | |||
10 | 确保链接密钥不是基于单元密钥的。 | 使用共享的单位密钥可导致城东的欺骗、MITM和窃听攻击。为了安全,蓝牙v1.2中已经废弃了单元密钥。 | |||
11 | 对于v2.1及之后版本的使用SSP的设备,应避免使用“立即工作”关联模型。设备必须验证一个经认证的链接密钥是在配对期间产生的。 | “立即工作”关联模型不提供MITM保护。如果有类似的合格设备且支持其他关联模型之一(例如,数字比较、OOB或万能钥匙进入),则不应该采购仅支持立即工作的设备(例如,没有输入/输出功能的设备)。 | |||
12 | 对于v2.1及之后版本的使用SSP的设备,随机且唯一的万能钥匙必须被用于基于万能钥匙进入关联模型的每次配对。 | 如果静态的万能钥匙被用于多次配对,万能钥匙进入关联模型提供的MITM保护会被削弱。 | |||
13 | 蓝牙v2.1或之后版本的使用安全模式4的设备必须回退到安全模式3来后向兼容v2.0和更早版本的设备(即那些不支持安全模式4的设备)。 | 蓝牙规范允许一个v2.1的设备回退到任何安全模式以实现后向兼容性。这允许回退到安全模式1-3之一。如前所述,安全模式3提供最佳的安全性。 | |||
14 | 在任何可能的时候,LE设备和服务应使用安全模式1的等级3。LE安全模式1的等级3提供了可用于LE设备的最高安全性。 | 其他LE安全模式允许未认证的配对和/或无加密。 | |||
15 | 不需要的和未经批准的服务和配置文件应该被禁用。 | 许多蓝牙协议栈被设计为支持多种配置文件和相关联的服务。设备上的蓝牙协议栈应该被锁定以保证只有需要的和经批准的配置文件和服务是可用的。 | |||
16 | 蓝牙设备应该被默认配置为不可发现的并且在除了需要配对的时候之外都保持不可发现。 | 这可以阻止其对其他蓝牙设备的可见性,除非当发现是非常必要的的时候。此外,发现过程中发送的默认蓝牙设备名称应该被改为不可识别的值。 | |||
17 | 对所有的蓝牙连接使用链路加密。 | 在蓝牙连接期间,链路加密应该被使用以保证所有的数据传输安全;否则,传输的数据很容易被窃听。 | |||
18 | 如果使用了多跳无线通信,应确保在通信链中的每个链路上进行了加密。 | 一个不安全的链路会危及整个通信链。 | |||
19 | 确保设备对所有连接执行相互认证。 | 相互认证要求提供网络上所有设备都是合法的验证 | |||
20 | 对所有的广播传输进行加密(加密模式3)。 | 通过链路加密保护的广播传输提供了一个安全层,使这些传输免于出于恶意目的的用户拦截。 | |||
21 | 配置加密密钥的长度为最大允许值(128位)。 | 使用最大允许的密钥长度提供了针对暴力破解的保护。 | |||
22 | 对于敏感数据,在蓝牙协议栈之上使用应用级的认证和加密。 | 蓝牙设备可以从内存中访问链接密钥并自动与以前配对的设备连接。结合实现认证和加密的应用级软件,将增加一个额外的安全层。密码和其他认证机制,例如生物识别和智能卡,可被用于给蓝牙设备提供用户认证。在原生加密之上运用更高层级的加密(特别是经FIPS 140验证的)将进一步保护传输过程中的数据。 | |||
23 | 部署叠加在蓝牙协议栈之上的用户认证,如生物识别、智能卡、两重认证或公钥基础设施(PKI)。 | 实现强认证机制可以最小化与密码和PIN码相关的漏洞威胁。 | |||
操作建议 | |||||
24 | 当不使用的时候,确保蓝牙功能是关闭的。 | 蓝牙功能应该在所有蓝牙设备上被关闭,除了当用户明确打开蓝牙来建立连接的时候。这最大限度减少了暴露于与潜在恶意活动之下。对于不支持关闭蓝牙的设备(如,耳机),当不使用它时,应该关闭整个设备。 | |||
25 | 配对要尽可能少地执行,且最好在一个攻击者无法真实地观察到万能钥匙配对和拦截蓝牙配对消息的安全区域。(注:“安全区域”被定义为这样一个非公共区域,即具有物理访问控制的室内且远离窗户的位置。)用户不应该响应任何要求输入PIN码的消息,除非该用户已经发起了一个配对,并且确定该PIN码输入请求发送自该用户的设备之一。 | 配对是一个至关重要的安全功能,需要用户保持可能被窃听的安全意识。如果一个攻击者能够捕获发送的与配对相关的帧,确定v2.1之前和v4.0的设备的链接密钥是很简单直接的,因为安全性是完全取决于PIN码的熵和长度。这个建议也适用于v2.1/3.0的设备,虽然对SSp的类似窃听攻击尚未被记录。 | |||
26 | 一个BR/EDR服务级的安全模式(即,安全模式2或4)只应该用于一个受控的且容易理解的环境。 | 安全模式3在链路建立之前就提供链路级安全,而安全模式2或4允许在任何认证或加密建立前就建立链路级连接。NIST强烈建议设备使用安全模式3。 | |||
27 | 确保具有蓝牙接口的便携式设备设备了密码。 | 这样阻止了非授权的访问,如果设备遗失或被盗。 | |||
28 | 如果某个蓝牙设备遗失或被盗,用户应该立即从其他所有设备的配对设备列表中删除丢失的设备。 | 此策略将阻止攻击者利用遗失或被盗设备来访问用户拥有的其他蓝牙设备。 | |||
29 | 在支持基于主机的安全软件的蓝牙设备上安装反病毒软件。 | 应该安装反病毒软件以确保已知的恶意软件没有被引入到蓝牙网络中。 | |||
30 | 全面测试,并定期部署蓝牙软件和固件的补丁与升级。 | 供应商产品中新发现的安全漏洞应当进行修补,以防止恶意的和无意的攻击。在实施前,应该对补丁进行全面的测试,以确认它们是有效的。 | |||
31 | 用户不应该接受任何类型的来自知或可以设备的传输。这些传输类型包括消息、文件和图像。 | 随着具有蓝牙功能的设备的数量增加,重要的一点是:用户只与其他受信任的设备建立连接,并只接受这些受信设备的内容。 | |||
32 | 在部署之前,充分了解部署任何安全功能或产品的影响。 | 为确保部署成功,组织要在实施之前充分认识技术、安全、操作和人员方面的要求。 |
33 | 指定一个人来跟踪蓝牙安全产品和标准(可能通过蓝牙SIG)的进展以及随着技术发展的威胁与漏洞。 | 这个被指定来跟踪最新技术改进、标准(可能通过蓝牙SIG)和风险的成员,将有助于确保蓝牙的持续安全使用。 |