来自译者和 TL;DR
-
TL; DR:
事实证明,VoLTE 的保护效果似乎比第一个采用 WEP 的 Wi-Fi 客户端还要差。 一种独特的架构错误计算,允许您对流量进行一点异或并恢复密钥。 如果您距离呼叫者很近并且他频繁拨打电话,则可能会受到攻击。
-
感谢您的提示和 TL;DR
克鲁科宁 -
研究人员制作了一个应用程序来确定您的运营商是否容易受到攻击,了解更多
这里 。 在评论中分享结果,我所在的地区在 Megafon 上禁用了 VoLTE。
关于作者
马修·格林。
我是约翰·霍普金斯大学的密码学家和教授。 我设计并分析了无线网络、支付系统和数字内容安全平台中使用的加密系统。 在我的研究中,我研究了使用加密技术来改善用户隐私的不同方法。
好久没写帖子格式了
但今天我遇到了
因此,严重的加密漏洞可能会传播到世界各地,也许只有在研究人员注意到之前才会被政府利用。 但时不时也会有例外,今天的袭击就是其中之一。
作者
首先,进行一次简短的历史考察。
什么是 LTE 和 VoLTE?
我们现代蜂窝电话标准的基础是 80 年代在欧洲制定的标准
随着数据传输在蜂窝通信中变得越来越重要,开发了长期演进 (LTE) 标准来简化此类通信。 LTE 基于一组较旧的标准,例如 GSM、
当然,历史告诉我们,一旦有足够的(IP)带宽可用,“语音”和“数据”等概念将开始变得模糊。 这同样适用于现代蜂窝协议。 为了使这一过渡更加顺利,LTE 标准定义了
与标准 VoIP 一样,VoLTE 基于两种流行的基于 IP 的协议: 会话发起协议 (
好吧,这和加密有什么关系呢?
LTE,比如
(然而,VoLTE 连接可以直接发生在不同提供商网络上的客户端之间,这意味着 VoLTE 协议本身具有一些可以发生在更高网络层的附加和可选加密协议。这与当前文章无关,除了以下事实:它们可以毁掉一切(接下来我们将简要讨论它们)。
从历史上看,GSM 中的加密一直是
让我们从加密本身开始。 假设密钥创建已经发生 - 我们将在一分钟内讨论 - 然后使用称为“EEA”的流加密技术(实际上可以使用 AES 等技术来实现)对每个数据包进行加密。 本质上,这里的加密机制是
VoLTE数据包的主要加密算法(来源:
由于加密算法本身(EEA)可以使用像 AES 这样的强密码来实现,因此不太可能像这样对密码本身进行任何直接攻击
特别是:LTE 标准使用(未经身份验证的)流密码,如果计数器以及“承载”和“方向”等其他输入被重复使用,该模式将非常容易受到攻击。 用现代的说法,这个概念的术语是“随机数重用攻击”,但这里的潜在风险并不是现代的东西。 它们著名且古老,可以追溯到华丽金属甚至迪斯科时代。
即使 Poison 已知,在 CTR 模式下对随机数重用的攻击仍然存在
公平地说,LTE 标准规定:“请不要重复使用这些仪表。” 但 LTE 标准大约有 7000 页长,无论如何,这就像求孩子不要玩枪一样。 他们不可避免地会发生,并且可怕的事情将会发生。 这种情况下的发射枪是密钥流重用攻击,其中两个不同的机密消息对相同的密钥流字节进行异或。 据了解,这
什么是 ReVoLTE?
ReVoLTE 攻击表明,实际上,这种非常脆弱的加密设计被现实世界的硬件滥用。 具体来说,作者分析了使用商业设备进行的真实 VoLTE 通话,并表明他们可以使用一种称为“密钥重新安装攻击”的方法。 (发现这个问题的大部分功劳归功于
让我简要向您展示攻击的本质,尽管您应该查看并了解
人们可能会认为,一旦 LTE 建立了分组数据连接,LTE 语音的任务就变成了通过该连接路由语音数据包以及所有其余流量的问题。 换句话说,VoLTE将是一个仅存在于
事实上,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$ 之一,那么他可以立即恢复另一个。 这给了他强烈的动力 找出两个未加密的组件之一.
这给我们带来了完整且最有效的攻击场景。 考虑一个攻击者,他可以拦截目标电话和手机信号塔之间的无线电流量,并且以某种方式幸运地记录了两个不同的呼叫,第二个呼叫紧随第一个呼叫之后发生。 现在想象一下,他可以以某种方式猜出其中一个通话的未加密内容。 有了这样的 偶然性 我们的攻击者可以使用两组数据包之间的简单异或来完全解密第一个调用。
当然,这与运气无关。 由于电话设计用于接听电话,因此能够无意中听到第一个电话的攻击者将能够在第一个电话结束时发起第二个电话。 如果再次使用相同的加密密钥并将计数器重置为零,则第二次调用将允许恢复未加密的数据。 此外,由于我们的攻击者实际上在第二次调用期间控制了数据,因此他可以恢复第一次调用的内容 - 这要归功于许多专门实现的 小东西,在他身边打球。
这是总体攻击计划的图像,取自
攻击概述来自
那么这种攻击真的有效吗?
一方面,这确实是有关 ReVoLTE 的文章的主要问题。 上述所有想法在理论上都很棒,但也留下了很多问题。 例如:
- (对于学术研究人员而言)是否有可能真正拦截 VoLTE 连接?
- 真正的 LTE 系统真的会重新密钥吗?
- 您实际上可以快速可靠地发起第二个呼叫,以便电话和信号塔重复使用密钥吗?
- 即使系统重新加密,您实际上是否可以知道第二次调用的未加密内容 - 考虑到编解码器和转码之类的东西可以完全改变第二次调用的(逐位)内容,即使您有权访问“位” “来自你的攻击电话?
ReVoLTE 的工作对其中一些问题做出了肯定的回答。 作者使用了一种商业软件可重新配置的无线电流嗅探器,称为
研究人员发现,为了使密钥重用发挥作用,第二个呼叫必须在第一个呼叫结束后足够快地发生,但不能太快——对于他们进行实验的操作员来说,大约十秒。 幸运的是,用户是否在这段时间内接听电话并不重要——“铃声”即。 SIP 连接本身迫使运营商重复使用相同的密钥。
因此,许多最糟糕的问题都围绕问题(4)——接收攻击者发起的呼叫的未加密内容位。 这是因为当您的内容通过蜂窝网络从攻击者的手机传输到受害者的手机时,可能会发生很多事情。 例如,诸如重新编码编码音频流之类的肮脏伎俩,使声音保持不变,但完全改变了其二进制表示形式。 LTE 网络还使用 RTP 标头压缩,这可以显着改变 RTP 数据包的大部分内容。
最后,攻击者发送的数据包应该与第一次电话呼叫期间发送的数据包大致一致。 这可能会产生问题,因为在通话期间修改静音会导致消息变短(也称为舒适噪音),而这可能与原始通话不太相符。
这是一个令人惊讶的高成功率,坦率地说比我开始处理这份文档时的预期要高得多。
那么我们能做些什么来解决它呢?
这个问题的直接答案非常简单:由于该漏洞的本质是密钥重用(重新安装)攻击,因此只需修复问题即可。 确保为每个电话呼叫获取新密钥,并且绝不允许数据包计数器使用同一密钥将计数器重置为零。 问题解决了!
或者可能不是。 这将需要升级大量设备,而且,坦率地说,这样的修复本身并不是超级可靠。 如果标准能够找到一种更安全的方法来实现其加密模式,并且默认情况下不会灾难性地受到此类密钥重用问题的影响,那就太好了。
一种可能的选择是使用
这项新研究还提出了一个普遍问题:为什么
或者,我们可以做 Facebook 和 Apple 等公司越来越多地做的事情:在 OSI 网络堆栈的更高级别上进行语音通话加密,而不依赖于蜂窝设备制造商。 我们甚至可以推动语音通话的端到端加密,就像 WhatsApp 对 Signal 和 FaceTime 所做的那样,假设美国政府停止这样做
或者我们可以简单地做我们的孩子已经做过的事情:停止接听那些烦人的语音电话。
来源: habr.com