本周攻击:LTE 语音通话 (ReVoLTE)

来自译者和 TL;DR

  1. TL; DR:

    事实证明,VoLTE 的保护效果似乎比第一个采用 WEP 的 Wi-Fi 客户端还要差。 一种独特的架构错误计算,允许您对流量进行一点异或并恢复密钥。 如果您距离呼叫者很近并且他频繁拨打电话,则可能会受到攻击。

  2. 感谢您的提示和 TL;DR 克鲁科宁

  3. 研究人员制作了一个应用程序来确定您的运营商是否容易受到攻击,了解更多 这里。 在评论中分享结果,我所在的地区在 Megafon 上禁用了 VoLTE。

关于作者

马修·格林。

我是约翰·霍普金斯大学的密码学家和教授。 我设计并分析了无线网络、支付系统和数字内容安全平台中使用的加密系统。 在我的研究中,我研究了使用加密技术来改善用户隐私的不同方法。

好久没写帖子格式了 “本周攻击”,这让我很不安。 不是因为没有攻击,而是主要是因为没有对广泛使用的东西进行攻击,足以让我摆脱作家的障碍。

但今天我遇到了 有趣的攻击 我对黑客攻击特别感兴趣的协议称为 ReVoLTE,即蜂窝网络(语音)LTE 协议。 我对这些特定协议以及这种新的攻击感到兴奋,因为很少看到实际的蜂窝网络协议和实现被黑客攻击。 主要是因为这些标准是在充满烟雾的房间中制定的,并记录在 12000 页的文件中,并非每个研究人员都能处理。 此外,实施这些攻击迫使研究人员使用复杂的无线电协议。

因此,严重的加密漏洞可能会传播到世界各地,也许只有在研究人员注意到之前才会被政府利用。 但时不时也会有例外,今天的袭击就是其中之一。

作者 攻击贡献者:波鸿鲁尔大学和阿布扎比纽约大学的 David Rupprecht、Katharina Kohls、Thorsten Holz 和 Christina Pöpper。 这是一个很好的攻击,可以在您可能已经使用的语音协议中重新安装密钥(假设您来自仍使用手机拨打电话的老一代人)。

首先,进行一次简短的历史考察。

什么是 LTE 和 VoLTE?

我们现代蜂窝电话标准的基础是 80 年代在欧洲制定的标准 全球移动系统 (全球移动通信系统)。 GSM 是第一个主要的数字蜂窝电话标准,它引入了许多革命性的功能,例如使用 加密 以保护电话。 早期的 GSM 主要是为语音通信而设计的,尽管金钱可以 传输其他数据.

随着数据传输在蜂窝通信中变得越来越重要,开发了长期演进 (LTE) 标准来简化此类通信。 LTE 基于一组较旧的标准,例如 GSM、 边缘 и HSPA的 旨在提高数据交换速度。 有很多品牌和 因不正确的名称而产生误导但总而言之,LTE 是一种数据传输系统,充当旧的分组数据协议和未来蜂窝数据技术之间的桥梁 5G.

当然,历史告诉我们,一旦有足够的(IP)带宽可用,“语音”和“数据”等概念将开始变得模糊。 这同样适用于现代蜂窝协议。 为了使这一过渡更加顺利,LTE 标准定义了 LTE语音 (VoLTE),这是一种 IP 标准,用于直接通过 LTE 系统的数据平面承载语音呼叫,完全绕过蜂窝网络的拨号部分。 与标准一样 网络电话通话,VoLTE 呼叫可以由蜂窝运营商终止并连接到常规电话网络。 或者(越来越普遍)他们 可以路由 直接从一个蜂窝客户端到另一个蜂窝客户端,甚至在不同的提供商之间。

与标准 VoIP 一样,VoLTE 基于两种流行的基于 IP 的协议: 会话发起协议 (会话启动协议 – SIP)用于呼叫建立和实时传输协议(实时传输协议,应该叫RTTP但实际上叫RTP)用于处理语音数据。 VoLTE 还添加了一些额外的带宽优化,例如标头压缩。

好吧,这和加密有什么关系呢?

LTE,比如 的GSM,具有一组标准的加密协议,用于在空中传输数据包时对其进行加密。 它们的主要目的是保护您的数据在手机(称为用户设备或 UE)和手机信号塔(或您的提供商决定终止连接的任何地方)之间传输时的数据。 这是因为蜂窝提供商将外部窃听设备视为敌人。 嗯,当然。

(然而,VoLTE 连接可以直接发生在不同提供商网络上的客户端之间,这意味着 VoLTE 协议本身具有一些可以发生在更高网络层的附加和可选加密协议。这与当前文章无关,除了以下事实:它们可以毁掉一切(接下来我们将简要讨论它们)。

从历史上看,GSM 中的加密一直是 许多弱点: 坏的 密码,其中只有电话经过塔的身份验证(意味着攻击者可以冒充塔,生成 “黄貂鱼”) 等等。 LTE 纠正了许多明显的错误,同时保持了大部分相同的结构。

让我们从加密本身开始。 假设密钥创建已经发生 - 我们将在一分钟内讨论 - 然后使用称为“EEA”的流加密技术(实际上可以使用 AES 等技术来实现)对每个数据包进行加密。 本质上,这里的加密机制是 点击率如下:

本周攻击:LTE 语音通话 (ReVoLTE)
VoLTE数据包的主要加密算法(来源: ReVoLTE)。 EEA 是一个密码,“COUNT”是一个 32 位计数器,“BEARER”是一个唯一的会话标识符,它将 VoLTE 连接与常规互联网流量分开。 “DIRECTION”指示流量的流动方向 - 从 UE 到塔,反之亦然。

由于加密算法本身(EEA)可以使用像 AES 这样的强密码来实现,因此不太可能像这样对密码本身进行任何直接攻击 发生在 GSM 时代。 然而,很明显,即使使用强大的密码,这种加密方案也是搬起石头砸自己的脚的好方法。

特别是:LTE 标准使用(未经身份验证的)流密码,如果计数器以及“承载”和“方向”等其他输入被重复使用,该模式将非常容易受到攻击。 用现代的说法,这个概念的术语是“随机数重用攻击”,但这里的潜在风险并不是现代的东西。 它们著名且古老,可以追溯到华丽金属甚至迪斯科时代。

本周攻击:LTE 语音通话 (ReVoLTE)
即使 Poison 已知,在 CTR 模式下对随机数重用的攻击仍然存在

公平地说,LTE 标准规定:“请不要重复使用这些仪表。” 但 LTE 标准大约有 7000 页长,无论如何,这就像求孩子不要玩枪一样。 他们不可避免地会发生,并且可怕的事情将会发生。 这种情况下的发射枪是密钥流重用攻击,其中两个不同的机密消息对相同的密钥流字节进行异或。 据了解,这 对通信的保密性有很大的破坏性影响.

什么是 ReVoLTE?

ReVoLTE 攻击表明,实际上,这种非常脆弱的加密设计被现实世界的硬件滥用。 具体来说,作者分析了使用商业设备进行的真实 VoLTE 通话,并表明他们可以使用一种称为“密钥重新安装攻击”的方法。 (发现这个问题的大部分功劳归功于 赖斯和卢 (Raza 和 Lu),他们是第一个指出潜在漏洞的人。 但 ReVoLTE 研究将其转化为实际攻击)。

让我简要向您展示攻击的本质,尽管您应该查看并了解 原始文件.

人们可能会认为,一旦 LTE 建立了分组数据连接,LTE 语音的任务就变成了通过该连接路由语音数据包以及所有其余流量的问题。 换句话说,VoLTE将是一个仅存在于 2级 [OSI 模型 – 约。]。 这并不完全正确。

事实上,LTE链路层引入了“承载”的概念。 承载是分隔不同类型的数据包流量的单独会话标识符。 常规互联网流量(您的 Twitter 和 Snapchat)通过一个承载。 VoIP 的 SIP 信令通过另一个通道,语音流量数据包通过第三个通道进行处理。 我对 LTE 无线电和网络路由机制不是很了解,但我相信这样做是因为 LTE 网络希望强制实施 QoS(服务质量)机制,以便以不同的优先级处理不同的数据包流:即你的 第二次评价 与 Facebook 的 TCP 连接的优先级可能低于实时语音通话。

这通常不是问题,但后果如下。 每次安装新“承载”时,都会单独创建 LTE 加密密钥。 基本上,每次您拨打新电话时都会再次发生这种情况。 这将导致每个呼叫使用不同的加密密钥,从而消除了重复使用相同密钥来加密两组不同的语音呼叫数据包的可能性。 事实上,LTE 标准规定“每次安装新承载来处理新电话时,都应该使用不同的密钥”。 但这并不意味着这确实发生了。

事实上,在现实生活中的实现中,在时间上接近的两个不同的呼叫将使用相同的密钥——尽管事实上在它们之间配置了同名的新承载。 这些调用之间发生的唯一实际变化是加密计数器重置为零。 在文献中,这有时被称为 密钥重装攻击。 有人可能会说,这本质上是一个实施错误,尽管在这种情况下,风险似乎主要源于标准本身。

实际上,这种攻击会导致密钥流重用,攻击者可以获得加密数据包$inline$C_1 = M_1 oplus KS$inline$和$inline$C_2 = M_2 oplus KS$inline$,从而允许计算$inline$ C_1 oplus C_2 = M_1 oplus M_2$inline$。 更好的是,如果攻击者知道 $inline$M_1$inline$ 或 $inline$M_2$inline$ 之一,那么他可以立即恢复另一个。 这给了他强烈的动力 找出两个未加密的组件之一.

这给我们带来了完整且最有效的攻击场景。 考虑一个攻击者,他可以拦截目标电话和手机信号塔之间的无线电流量,并且以某种方式幸运地记录了两个不同的呼叫,第二个呼叫紧随第一个呼叫之后发生。 现在想象一下,他可以以某种方式猜出其中一个通话的未加密内容。 有了这样的 偶然性 我们的攻击者可以使用两组数据包之间的简单异或来完全解密第一个调用。

当然,这与运气无关。 由于电话设计用于接听电话,因此能够无意中听到第一个电话的攻击者将能够在第一个电话结束时发起第二个电话。 如果再次使用相同的加密密钥并将计数器重置为零,则第二次调用将允许恢复未加密的数据。 此外,由于我们的攻击者实际上在第二次调用期间控制了数据,因此他可以恢复第一次调用的内容 - 这要归功于许多专门实现的 小东西,在他身边打球。

这是总体攻击计划的图像,取自 原始文件:

本周攻击:LTE 语音通话 (ReVoLTE)
攻击概述来自 ReVoLTE 文档。 该方案假设使用相同的密钥进行两个不同的调用。 攻击者控制被动嗅探器(左上)以及第二部电话,他可以用第二部电话拨打受害者的电话。

那么这种攻击真的有效吗?

一方面,这确实是有关 ReVoLTE 的文章的主要问题。 上述所有想法在理论上都很棒,但也留下了很多问题。 例如:

  1. (对于学术研究人员而言)是否有可能真正拦截 VoLTE 连接?
  2. 真正的 LTE 系统真的会重新密钥吗?
  3. 您实际上可以快速可靠地发起第二个呼叫,以便电话和信号塔重复使用密钥吗?
  4. 即使系统重新加密,您实际上是否可以知道第二次调用的未加密内容 - 考虑到编解码器和转码之类的东西可以完全改变第二次调用的(逐位)内容,即使您有权访问“位” “来自你的攻击电话?

ReVoLTE 的工作对其中一些问题做出了肯定的回答。 作者使用了一种商业软件可重新配置的无线电流嗅探器,称为 望远镜 拦截下行侧的VoLTE呼叫。 (我认为,仅仅掌握该软件并大致了解它的工作原理就可以让贫困研究生的生活缩短数月——这对于此类学术研究来说是典型的)。

研究人员发现,为了使密钥重用发挥作用,第二个呼叫必须在第一个呼叫结束后足够快地发生,但不能太快——对于他们进行实验的操作员来说,大约十秒。 幸运的是,用户是否在这段时间内接听电话并不重要——“铃声”即。 SIP 连接本身迫使运营商重复使用相同的密钥。

因此,许多最糟糕的问题都围绕问题(4)——接收攻击者发起的呼叫的未加密内容位。 这是因为当您的内容通过蜂窝网络从攻击者的手机传输到受害者的手机时,可能会发生很多事情。 例如,诸如重新编码编码音频流之类的肮脏伎俩,使声音保持不变,但完全改变了其二进制表示形式。 LTE 网络还使用 RTP 标头压缩,这可以显着改变 RTP 数据包的大部分内容。

最后,攻击者发送的数据包应该与第一次电话呼叫期间发送的数据包大致一致。 这可能会产生问题,因为在通话期间修改静音会导致消息变短(也称为舒适噪音),而这可能与原始通话不太相符。

“现实世界攻击”部分 值得详细阅读。 它解决了上述许多问题 - 特别是,作者发现某些编解码器没有重新编码,并且大约 89% 的目标调用的二进制表示可以恢复。 对于至少两家接受测试的欧洲运营商来说,情况确实如此。

这是一个令人惊讶的高成功率,坦率地说比我开始处理这份文档时的预期要高得多。

那么我们能做些什么来解决它呢?

这个问题的直接答案非常简单:由于该漏洞的本质是密钥重用(重新安装)攻击,因此只需修复问题即可。 确保为每个电话呼叫获取新密钥,并且绝不允许数据包计数器使用同一密钥将计数器重置为零。 问题解决了!

或者可能不是。 这将需要升级大量设备,而且,坦率地说,这样的修复本身并不是超级可靠。 如果标准能够找到一种更安全的方法来实现其加密模式,并且默认情况下不会灾难性地受到此类密钥重用问题的影响,那就太好了。

一种可能的选择是使用 滥用随机数不会导致灾难性后果的加密模式。 对于当前的某些硬件来说,这可能过于昂贵,但这无疑是设计人员未来应该考虑的一个领域,尤其是在 5G 标准即将席卷全球的情况下。

这项新研究还提出了一个普遍问题:为什么 同样该死的攻击不断在一个又一个标准中出现,其中许多使用非常相似的设计和协议。 当您面临在 WPA2 等多种广泛使用的协议中重新安装相同密钥的问题时,您是否认为是时候让您的规范和测试程序变得更加可靠了? 不要将标准实施者视为关注您警告的贴心合作伙伴。 将他们视为(无意识的)对手,他们不可避免地会犯错。

或者,我们可以做 Facebook 和 Apple 等公司越来越多地做的事情:在 OSI 网络堆栈的更高级别上进行语音通话加密,而不依赖于蜂窝设备制造商。 我们甚至可以推动语音通话的端到端加密,就像 WhatsApp 对 Signal 和 FaceTime 所做的那样,假设美国政府停止这样做 让我们绊倒。 然后(除了一些元数据之外)许多这些问题就会消失。 该解决方案在当今的世界中尤其重要 甚至政府也不确定他们是否信任他们的设备供应商.

或者我们可以简单地做我们的孩子已经做过的事情:停止接听那些烦人的语音电话。

来源: habr.com

添加评论