(注意:这个答案来自 2013 年。从那时起,蓝牙发生了很多变化,尤其是 BLE 流行度的急剧上升、新的攻击、弃用的功能。话虽如此,大部分仍然适用。)
介绍
我将尽我所能在不涉及蓝牙技术本身的技术部分的情况下解决您的问题。当我不得不编写安全报告来制定BYOD策略时,我学到了很多以下知识。了解你,我就不必告诉你没有什么是 100% 安全的,我们所做的一切只是为了让坏人更难。
蓝牙不是什么
蓝牙本身作为一项技术并不安全,不仅与实施有关,设计本身也存在一些严重缺陷。
蓝牙不是一种短距离通信方法——仅仅因为你有点远并不意味着你是安全的。I 类蓝牙设备的范围可达 100 米。
蓝牙不是一种成熟的通信方法(安全方面)。有了智能手机,它已经变成了与它原本的样子完全不同的东西。它是作为将手机连接到外围设备的一种方式而创建的。我的建议:不要将蓝牙用于任何严重的事情。
现在如何保护蓝牙?
疯狂跳频:蓝牙使用一种叫做 AFH(自适应跳频)的东西。它基本上使用 2.4 Ghz ISM 频段中的 79 个信道,并以 1600 跳/秒的速率在它们之间不断跳频,同时观察环境并从跳频列表中排除任何现有频率。这大大减少了干扰和干扰尝试。
E0 密码套件:使用具有 128 位密钥的流密码。
不可发现性:除非您将设备设置为“可发现”,否则它不会响应扫描尝试,并且您的 48 位 BD_ADDR(标识您的蓝牙设备的地址)不会被泄露。
配对:除非设备在双方同意的情况下配对,否则它们将无法通信。只有当您知道其他设备的 BD_ADDR(通过扫描或以前的知识)时,才能提出配对请求。
在设定的时间间隔内移除和重新配对我的设备是否是个好主意(认为这正在改变蓝牙 PIN)
是的。这是一个非常好的主意。您正在消除被您信任的设备利用的风险。鉴于我们通常出于无关紧要的原因配对设备(向熟人发送文件,从您在某处遇到的人那里获得 VCard..),如果您经常使用蓝牙,很可能会建立大量“受信任”设备。
使我的设备或计算机“可发现”对安全有何影响?
使您的设备可被发现的问题在于,您将 BD_ADDR 广告给任何要求它的人。与另一个设备配对的唯一方法是了解 BD_ADDR。在有针对性的攻击中,暴力破解 48 位 BD_ADDR 需要一些时间。
在正常情况下,知道您的 BD_ADDR 应该不是什么大问题,但如果您的手机或计算机上的蓝牙软件存在漏洞,最好不要被察觉。另一个问题是对隐私的影响;通过被发现,您可以让未配对(不受信任)的各方知道您何时在附近。
启用蓝牙的设备可以在我的系统上获得什么样的访问权限?
在正常情况下(没有允许任意代码执行的漏洞),这一切都取决于您的设备支持的蓝牙配置文件。通常,您可以假设您的计算机支持所有配置文件。我只列举几个:
- BHIDP(蓝牙人机接口设备配置文件)将允许访问您的鼠标和键盘事件触发(移动鼠标和发送键盘键)。
- BIP(基本成像配置文件)将允许访问您的相机。
- A2DP(高级音频分配配置文件)将允许访问您的 MIC 和音频输出。
- OBEX(对象交换)是您通常需要担心的。根据实现的不同,它可以访问您的文件、电话簿、消息等。
是否有可能(或可能未启用)的蓝牙安全功能?我如何审核这些功能的存在(或缺乏)?
在蓝牙 V2.1 之前,在实现协议本身时,开发人员可以选择使用安全模式 #1,这意味着根本没有安全性。允许设备在无需配对的情况下进行通信,并且不使用加密。
蓝牙 V2.1 和更新版本需要加密。
作为用户,您可以做一些事情来使您的蓝牙使用更加安全。(见下文)
假设加密是可以启用的安全功能,它是必需的还是可选的?
与上一个问题一样,它依赖于实现。通常在 PC-PC、智能手机-智能手机和 PC-智能手机通信中默认使用加密。从蓝牙 V2.1 开始,默认启用加密。
一旦恶意设备与我的设备配对,攻击者可以做什么?
基本上,您的设备支持的任何东西。为了证明这一点,只需使用一个名为Super Bluetooth Hack的应用程序,你会看到非常可怕的东西,包括:
- 铃声:播放来电、闹钟的声音。
- 通话:拨打号码,结束通话。
- 按键、按下的键:按下和观看按下的键
- 联系人
- 阅读短信
- 静音模式:打开或关闭
- 电话功能:关闭网络/电话
- 闹钟
- 时钟:更改日期和时间
- 更改网络运营商
- Java:启动、删除 java 应用程序
- 日历
- 内存状态
- 键锁
那么蓝牙有什么问题呢?
完全信任配对设备:配对设备几乎可以访问其他设备支持的所有配置文件。这包括 OBEX 和 FTP(文件传输配置文件)。
配置文件有太多的自由:允许配置文件选择他们想要的任何安全模式。您甚至可以在没有蓝牙的情况下实现自己的 OBEX 版本,完全不需要您使用加密或身份验证。(在蓝牙 V2.1 之前)
E0 的弱点:自 1999 年以来,E0 漏洞开始显现。事实证明,用 2 64而不是之前认为的 2 128破解 E0 是可能的。年复一年,研究人员发现了更多的漏洞,导致了 2005 年 Lu、Meier 和 Vaudenay 的攻击。该攻击证明了通过 2 38 次操作恢复密钥的可能性。
配对定义松散:允许设备实现自己的配对方法,包括可以立即破解的 4 位 PIN。
最后,关于良好实践指南:
我将列出一些重要的NSA 蓝牙安全建议(我已经修改了其中一些并添加了一些我自己的):
- 仅在必要时启用蓝牙功能。
- 仅在必要时启用蓝牙发现。
- 将配对的设备放在一起并监控设备上发生的事情。
- 使用安全的长密钥配对设备。
- 切勿在意外提示时输入密码或 PIN。
- 定期更新和修补支持蓝牙的设备。
- 使用后立即移除配对设备。
更新:一个小时前我正在研究蓝牙 V4.0 规范,令我惊讶的是,他们似乎仍在使用 E0 进行加密,并且配对机制没有很好的变化。更糟糕的是,他们正在推进数字比较配对机制,在该机制中,用户在两台设备上看到一个六位数的数字,并要求他们验证它们是否相同。在我看来,这为社会工程攻击打开了大门。
对于需要用户交互的配对场景,窃听器保护使简单的六位密钥比 16 位字母数字字符的随机 PIN 码更强。
来源
更新 2:看起来这个“Just Works”的 6 位数 PIN 确实有问题。Mike Ryan 演示了对 BLE 的攻击,并将代码作为他的工具“crackle”发布,以暴力破解临时密钥并解密流量。