Eavesdropping Encrypted LTE Calls With REVOLTE学习笔记

VoLTE是基于分组的电话服务,无缝集成到LTE标准中并由大多数电信提供商在实际中部署。本文介绍
REVOLTE,利用LTE实现漏洞,即可预测的无线电层上的密钥流重用(在一个无线连接中发起两次呼叫),恢复加密VoLTE通话的内容,使攻击者能够监听手机通话。攻击者在第一次加密通话结束后立刻呼叫受害者,就可以得到第一次加密通话的密钥,从而对第一次通话进行解密。

VoLTE

允许使用基于分组的LTE网络和IP协议建立语音和多媒体通话。使用协议包括SIP(发出呼叫流信号)、RTP(传输真实语音数据)、RTCP(控制RTP协议)。这些协议消息被当作用户数据处理。多媒体编解码器和鲁棒的报头压缩是两个影响VoLTE数据传输方式的重要特性,数据承载的概念允许VoLTE通话的特定传输要求。
多媒体编解码器:在不同实体表示之间转换信号。 以优化数据消耗或感知的通话质量(将两者最大化
最佳,但不切实际)。 一旦转换为目标表示形式,VoLTE就会使用RTP以数据包的形式传输数据,以下三种可能的编解码器选项:增强型语音服务(EVS),自适应多速率(AMR)和自适应多速率宽带(AMR-WB)。三种编解码器均经过优化,可节省比特率。舒适噪声是基于由无声的呼叫同伴发送的种子生成的。 舒适噪音可节省比特率较小,并以较低的频率传输。
鲁棒的报头压缩:(ROHC)是一种节省IP,TCP,UDP和RTP标头中的传输位资源的技术,主要用于具有高误码率的无线传输环境中。 压缩通过消除相同连接端点的数据包头相似处来减少带宽。 eNodeB可以激活ROHC,来传输具有定义IP压缩数据包的不同配置文件。 在VoLTE的背景下,通常使用两个配置文件——配置文件1压缩RTP,UDP和IP标头,并且仅用ROHC头传输RTP数据的有效载荷; 配置文件2仅压缩UDP和IP标头,并且仅用ROHC头传输UDP负载。
数据承载:有源无线电连接在UE与eNodeB之间通过空口传输数据。 达到不活动计时器的阈值后,eNodeB将有效连接切换到空闲模式以节省资源。 重新激活无线电连接时,双方都得出了一个新密钥用于加密数据。 有效无线连接的一部分是多个无线承载,它们表示UE与eNodeB之间的逻辑链路,匹配某些传输要求。 VoLTE功能需要三个无线电数据承载提供Internet接入和VoLTE语音呼叫的其他功能。 默认承载(DRB1)传输Internet数据, 第二个数据承载(DRB2)用于发送到SIP的SIP信令流量IMS,第三个(专用)数据承载传输语音流量。
VoLTE安全:LTE无线层加密保护UE和eNodeB之间用户面和控制面的所有数据。VoLTE进一步在第三层和第四层进行安全保护——当UE通过SIP注册过程连接到IMS时,双方将执行附加的AKA;RTP数据(媒体面)通过SRTP协议进行加密和完整性保护,有两种情况,数据在UE和IMS之间受到保护(端到端边缘保护),或两个UE使用端到端方案保护数据。

ReVoLTE攻击

攻击向量

利用密钥流复用就是攻击向量。每当UE连接到基站时,新的用户面为无线连接协商密钥。而当在一个无线电连接内两个VoLTE呼叫相继发生时,密钥流复用可能发生。此时,eNodeB发出信号,指示相同的输入参数,如方向,载承载ID和计数,与
密钥,因此密钥流被重用。结果,第一个呼叫(目标呼叫)和第二个呼叫的数据包(密钥流呼叫),两者具有相同的对应计数和密钥。
攻击者通过将目标呼叫的记录密文与从第二个密钥流呼叫派生的密钥流进行异或运算,从而利用了密钥流重用。密钥流呼叫允许攻击者通过将嗅探到的流量与密钥流呼叫纯文本异或来生成密钥流,然后使用密钥流块来解密捕获的目标密文。
所需的步骤比较简单,并且对攻击在现实世界中的可行性影响很小。

攻击过程

攻击者模型

攻击分两个阶段:记录阶段和呼叫阶段。
第一阶段,攻击者必须能够嗅探下行无线传输,硬件成本地域140美元。
攻击者获得目标基站的无线配置信息后能够解码记录的加密数据流量(PDCP)。
第二阶段,攻击者必须有商用现货(COTS)手机,并且知道受害者手机号和当前所在位置。

攻击过程

在这里插入图片描述

  1. 目标呼叫
    在实际通话之前,受害者的UE在其无线电中与eNodeB建立连接元,它将两个默认承载DRB1和DRB2用于Internet和IMS连接。 安全模式命令生成一个新的用户平面密钥并对所有数据承载激活加密; 用户平面密钥存在于整个无线电连接。
    在该过程之后,标准的VoLTE呼叫建立工作如下。 SIP消息在受害者和IMS之间建立呼叫,并且IMS转发
    呼叫主叫方的电话。 除了无线连接建立的两个标准承载,VoLTE连接还需要第三个专用承载DRB3传输RTP数据 电话结束后,专用承载DRB3被移除。
    攻击者通过将下行链路嗅探器放置在受害UE连接的同一无线小区中来监视目标呼叫。
  2. 密钥流呼叫
    当嗅探到DRB3上没有数据,攻击者启动密钥流呼叫。攻击者拨受害UE的号码,与目标呼叫有同样的呼叫建立过程。第二个呼叫请求分配DRB3来传输语音数据,由于和目标呼叫时间间隔短,分配的承载序列号和其他参数将与目标呼叫相同。导致RTP数据都是由同一个密钥加密的。收集到足够多的密钥流数据后,攻击者挂断电话。

无线层嗅探和解码

LTE嗅探器对传输的物理频率进行采样,并解码至媒体访问控制(MAC)层的无线电层信道。我们利用软件无线电系统(SRS)的下行链路嗅探器Airscope。 攻击者可以在攻击之前学习配置,并正确解码MAC帧直至PDCP帧。

密钥流计算

尽管攻击者知道在密钥流调用期间发送的数据包内容,但是这些数据包会在其传输路径上通过许多不同的实体,直到使用密钥流对其进行加密为止。攻击的一个主要要求是明文,在整个传输过程中,直到到达无线电层之前,明文都是可预测的。 影响更改明文的因素是转码,媒体加密,ROHC和纯文本-密文映射。
根据ROHC配置文件,攻击者只能将RTP有效负载或UDP有效负载用于密钥流计算。 所有经过测试的提供商都在VoLTE呼叫期间使用ROHC,需要考虑提取ROHC。

完成解密

在这里插入图片描述

每个帧都与一个计数相关联,并使用我们在密钥流计算期间提取的单个密钥流进行加密。 由于相同的计数生成相同的密钥流,因此该计数会将密钥流与目标调用的加密帧同步。 将密钥流与相应的加密帧进行XOR运算可解密目标调用。 通话时间和舒适噪音会对完成解密带来挑战。

通话时间:所有三个VoLTE编解码器均使用固定的采样率将数据包发送到主叫方。 因此要解密完整的通话,密钥流呼叫必须与目标呼叫一样长,以提供足够数量的数据包,否则我们只能解密一部分对话。
舒适噪声: 每当检测到语音不活动时,编解码器都会在接收到定期更新的特定种子之后生成噪声。当攻击者发送或接收安慰噪声时,这些数据包将限制可放入该数据包中的信息量。 如果相应的目标分组不是舒适噪声分组,久会产生问题。 一种解决方法是创建一个具有类似语音活动的按键流呼叫,类似于目标呼叫的标准和舒适噪声模式。

实验

前导实验

分析了

  • 基站是否、如何实现密钥承载身份分配。
  • 无线层配置,包括鲁棒的报头压缩。我们使用支持VoLTE的商用Android手机分析了欧洲三个供应商的无线电层配置。实验中进行了多个电话呼叫,使用SCAT 调试连接,并手动检查记录的迹线。发现了两个供应商存在密钥重用漏洞。发现三个供应商都使用未经认可的RLC,会进一步影响密钥生成。发现三个供应商的RRC无效计时器设置为10秒,意味着发起攻击需要在目标呼叫10秒内进行。发现三个供应商都在部署
    配置文件1(RTP / UDP / IP)和2(UDP / IP)中的ROHC,意味着我们在计算密钥流时需要考虑标头压缩。 由于压缩,以利用RTP有效负载(配置文件1)或RTCP数据包(配置文件2)以重建密钥流
  • 影响包中信息表示的其他影响因素,包括VoLTE的编解码器,映射机制和媒体加密。 发现只有一个编解码器(AMR-WB)未启用转码。 发现三个供应商都没有启用媒体加密。

正式实验

实验装置

三个装有高通基带的安卓智能手机分别作为呼叫同伴、攻击者和受害者,可以使用SCAT,来捕获密钥流呼叫的明文。攻击者和受害者手机的SIM卡来自于同一运营商,以消除RTP/RTCP偏移。为了模拟电话的音频活动,我们通过笔记本电脑的扬声器(位于手机麦克风附近)播放LibreSpeech语料库[34]的语音样本。
一台运行Xunbuntu 18.04的笔记本电脑,用于控制下行链路嗅探器和攻击编排。使用商用的Airscope嗅探器,提供实时的LTE下行数据解码。Airscope提供到MAC层的解码,我们使用前导实验得到的无线层配置实现到PDCP层的解码。为了及时执行密钥流呼叫,我们实现了实时呼叫和挂断检测,该检测使用无线层身份无线网络临时标识符(RNTI)来区分受监视无线小区中的电话呼叫。
一台Ettus USRP B210。

实验流程

  1. 下行链路嗅探:启动Airscope
  2. 进行目标呼叫: 编排脚本向受害UE发起一个电话呼叫,并且一旦呼叫转移后,笔记本电脑就会开始播放音频样本。 这将触发呼叫检测机制,从而导致使用Airscope记录下行链路流量。10秒后挂断。
  3. 进行密钥流呼叫:目标呼叫的终止再次触发了呼叫检测脚本,攻击者的UE开始进行密钥流呼叫。 同样,受害UE接听电话并保持10秒钟,然后我们监视下行链路流量。 此外,攻击者保存在UE中接收到的RTP / RTCP分组。
  4. 解密目标呼叫: 第一步,对于密钥流呼叫的每个数据包计算密钥流块。,我们将RTP数据包的有效负载与在密钥流调用期间记录的帧进行异或运算。 第二步,通过将计算出的密钥流块与目标呼叫的记录帧进行XOR运算来解密目标呼叫。
  5. 结论:可以解密89%的目标呼叫。解密中信息丢失的主要原因是我们没有使用下行链路嗅探器捕获所有无线密文数据包。 目标调用中损失了3%,在密钥流调用中损失了8%。 但是,不会由于明文和密文之间的错误映射而导致信息丢失。 因此,我们可以通过REVOLTE完全打破LTE的机密性目标。

建议解决方案

标准建议的方案

  1. 无线电承载身份: 使用不同的无线承载身份减轻了密钥流重用的威胁,因为单独的输入参数更改了后续呼叫的输出密钥流。 此外,这是低成本的缓解方法,因为没有其他消息被交换,也没有触发密钥派生功能。 但是,无线电承载身份仅定义为5位字段,这意味着递增它仅适用于32个新承载。 不允许简单的承载者身份回绕,因为它再次导致密钥流重用。 在这种情况下,必须更改基础密钥材料。
  2. 小区内切换: 小区间切换允许在电话保持连接状态下将电话从一个小区转移到另一个小区。 通过小区内切换,目标小区和始发小区相同。移交过程具有内置的密钥重用避免功能。 基于在RRC重新配置消息中发送的下一跳链接计数器(NNC),可以导出旧密钥(kenb)和新密钥(kenb0)。 由于输入材料与以前使用的材料不同,减少了密钥流重用。 但是,使用小区内切换会带来额外的密钥派生操作费用。
  3. 在RRC Idle/Connected之间切换:可以通过RRC连接释放和RRC连接建立来实现。 eNodeB通过释放RRC连接将电话发送到RRC空闲模式。 然后,电话会触发RRC连接建立。 当RRC建立携带上行NAS消息时,建立用于无线连接的新密钥,这增加了上行NAS计数。 同样,这会派生一个新密钥(kenb0),然后将其用于连接。 通常,大多数RRC连接建立过程都携带NAS上行链路消息。 因此,此过程有助于减轻威胁。 但是,将电话发送到空闲模式确实会增加延迟,对于VoLTE呼叫应避免这种情况。

RTP流量加密

媒体加密可以很好的防范REVOLTE攻击。媒体加密符合规范,但IMS和UE的支持是可选的。前导实验表明,三家供应商都没有利用这一额外的保护。作为一种长期解决方案,供应商和提供商都必须更好地利用媒体加密规范。 包括通过基带发信号通知加密支持,以及在IMS中提供所有必需的功能。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值