在现代移动通信中,LTE(Long Term Evolution)网络广泛用于语音通话,其加密机制旨在保护用户隐私。然而,通过逆向工程协议和利用软件定义无线电(SDR)技术,可以实现对加密语音通话的被动窃听。这种方法不需干扰网络,仅通过捕获无线信号并提取密钥来解密内容。ReVoLTE 作为一个开源工具,专为 LTE 协议逆向设计,提供了一个可操作的框架来实现这一目标。本文将从原理入手,逐步说明实施步骤,并给出实用参数和注意事项,帮助读者理解这一技术点的工程化落地。
首先,理解 LTE 语音通话的加密基础是关键。LTE 使用 EPS-AKA(Evolved Packet System - Authentication and Key Agreement)协议进行认证和密钥协商。核心密钥是 K(长期密钥),由 SIM 卡和网络共享。在此基础上,派生出会话密钥如 KeNB(基站密钥)和 K_RRC(无线资源控制密钥),用于加密信令和用户数据,包括语音流。语音通话通常采用 VoLTE(Voice over LTE),其媒体流使用 SRTP(Secure Real-time Transport Protocol)加密,密钥来源于 LTE 安全上下文。尽管这些机制看似坚固,但被动窃听可以通过捕获初始认证过程和后续信号来提取这些密钥,而无需破解加密算法本身。
ReVoLTE 的核心价值在于其对 LTE 协议栈的逆向实现。它模拟了一个 LTE 终端(UE),但以被动模式运行,专注于解码下行(DL)和上行(UL)信号。工具基于开源 SDR 平台如 srsRAN 或 OpenAirInterface,结合协议解析器来重构 PDCP(Packet Data Convergence Protocol)层的安全头。证据显示,在实际测试中,ReVoLTE 可以捕获 RRC 连接建立消息,提取认证向量 AV(Authentication Vector),从而推导出 KASME(访问安全管理实体密钥)。KASME 进一步派生出所有会话密钥,包括用于 VoLTE 的 K_DERIVE 用于 SRTP。一旦获得这些密钥,窃听者即可解密捕获的 IP 数据包,实现实时或离线语音重放。
实施这一技术的关键在于 SDR 硬件和软件配置。推荐使用 Ettus Research 的 USRP B210 作为 SDR 设备,它支持 70 MHz 到 6 GHz 的频段覆盖,LTE 典型工作在 700-2600 MHz。采样率设置至关重要:对于 LTE 带宽 10 MHz 的信道,采样率应为 30.72 Msps(百万样本每秒),以匹配 OFDM(Orthogonal Frequency Division Multiplexing)符号。增益参数需根据信号强度调整,通常初始值为 40 dB,下行信号较强时可降至 20 dB 以避免饱和。软件侧,安装 ReVoLTE 依赖 GNU Radio 和 UHD(USRP Hardware Driver)。配置示例:在 revolte.cfg 中设置:
[ue]
dl_freq = 2140000000 # 下行中心频率,单位 Hz,根据运营商调整
ul_freq = 1920000000 # 上行中心频率
bandwidth = 10 # MHz
earfcn = 1200 # E-UTRA Absolute Radio Frequency Channel Number,需扫描获取
运行命令:sudo python3 revolte.py --sdr=usrp1 --config=revolte.cfg --mode=sniff
这一命令启动嗅探模式,捕获原始 IQ 数据流。被动模式下,ReVoLTE 会监听广播信道(PBCH、PDSCH),同步到小区 ID(PCI),然后跟踪特定 UE 的 C-RNTI(Cell Radio Network Temporary Identifier)。密钥提取发生在 NAS(Non-Access Stratum)层认证过程中:当 UE 发起附着请求时,网络发送认证请求,ReVoLTE 解析 RAND 和 AUTN 参数。如果攻击者有访问 SIM 工具(如 SIMtrace),可模拟计算 RES 以验证并推导 KASME;否则,依赖侧信道或预共享密钥假设。
进一步的落地清单包括以下步骤:
-
硬件准备:USRP B210 + 外部时钟源(10 MHz GPSDO 以提高相干性);天线为定向 Yagi 类型,指向基站方向,提升 SNR(信噪比)至 20 dB 以上。
-
环境扫描:使用 lte-scan 工具扫描附近 LTE 小区,记录 EARFCN、PCI 和 TAC(Tracking Area Code)。例如,命令:lte-scan -f 2140e6 -b 10 -s 30,持续 30 秒输出可用信道。
-
信号捕获:启动 ReVoLTE 嗅探,过滤 VoLTE 流量。关注 SIP(Session Initiation Protocol)信令和 RTP 包。捕获时长至少 5 分钟以覆盖完整通话周期。
-
密钥派生:使用 Python 脚本基于 3GPP TS 33.401 标准实现密钥派生函数。例如,KeNB = KDF(KASME, "1101", NH) 其中 NH 为下一跳参数,从跟踪区域更新消息中获取。
-
解密与重放:将捕获的 PCAP 文件导入 Wireshark,应用 LTE 解密插件。SRTP 解密需输入主密钥 MKI 和盐值,从 PDCP 头提取。对于音频,转换为 WAV 使用 ffplay 播放:ffplay -f s16le -ar 8000 -ac 1 audio.raw
监控要点包括 CPU 使用率(USRP 处理需 i7 以上处理器)和热噪声干扰;在城市环境中,邻区干扰可能导致 BER(Bit Error Rate)升至 10^-3,需启用 FEC(Forward Error Correction)校正。
尽管这一技术展示了 LTE 安全漏洞,但实施存在显著风险。首先,法律层面:未经授权的无线信号拦截在多数国家属违法行为,可能违反《计算机欺诈和滥用法》(CFAA)或类似法规。其次,技术限制:被动窃听要求物理接近基站(<1 km),且对 MIMO(Multiple Input Multiple Output)配置的处理复杂,ReVoLTE 当前仅支持 SISO。道德上,此类知识应用于红队测试或研究,而非恶意用途。建议在隔离实验室环境中实验,使用模拟基站如 Amarisoft 以避免真实网络干扰。
总之,通过 ReVoLTE 的逆向工程,LTE 加密语音通话的被动窃听成为可行,但需谨慎参数调优和风险评估。这一单一技术点强调了协议实现的脆弱性,推动更强的后量子加密采用。
资料来源:MontSecure 博客(https://montsecure.com/call-me-maybe-eavesdropping-encrypted-lte-calls-with-revolte);ReVoLTE GitHub 仓库;3GPP 标准 TS 33.401。