oralcagan/llm-traffic-defenses

GitHub: oralcagan/llm-traffic-defenses

评估和比较五种流量分析防御措施在阻止加密 LLM 流量主题推理侧信道攻击方面的有效性与成本。

Stars: 1 | Forks: 0

# 成本与防护:评估针对加密 LLM 流量主题推理的流量分析防御 攻击者通过观察用户与 LLM 之间的加密但流式传输的流量,无需破解加密即可判断对话是否涉及敏感主题。流式响应会泄露每个生成 token 的大小和时间。本仓库包含了一项研究的代码,该研究旨在测量已知的流量分析防御措施在阻止此类攻击方面的效果,以及它们在带宽和延迟方面的成本。 我们针对 Llama-3.1-8B-Instruct 和 Qwen3-8B(两者均量化为 FP8)这两个开源模型上的 Whisper Leak 风格主题推理攻击,评估了五种防御措施(二次幂填充、token 批处理、NetShaper、随机填充和 Tamaraw)。攻击者模型是 LightGBM 分类器和时间卷积网络(temporal convolutional network)中表现更强的一个。其中两种防御也会在 TLS 终止代理(TLS-terminating proxy)中实时运行,以便将模拟结果与真实流量进行对比验证。 ## 仓库布局 | 文件夹 | 语言 | 作用 | |---|---|---| | `client` | Python | 通过 HTTPS 将 prompt 数据集发送到代理,同时运行 tcpdump,并将捕获的数据转换为 JSONL 格式的数据包轨迹。 | | `proxy` | Rust | 位于 vLLM 前的 TLS 终止代理。直接转发流式 token(基线)或应用实时的缓解措施(二次幂填充、token 批处理)。 | | `analysis` | Python | 在基线轨迹上模拟全部五种防御措施,使用 5 折交叉验证训练攻击模型,并生成 AUPRC、预测精确率以及开销的表格和图表。 | ## 复现实验 完整的流水线需要两台主机:一台运行 vLLM 和代理的 GPU 服务器,以及一台运行客户端和抓包工具的独立机器。具体步骤如下: 1. **提供模型服务。** 在 GPU 主机上运行 vLLM,启用流式传输,禁用前缀缓存(`--no-enable-prefix-caching`),并在请求时将 temperature 设置为 1.0。我们使用了 FP8 格式的 `Llama-3.1-8B-Instruct` 和 `Qwen3-8B`。 2. **启动代理**(`proxy`),在同一台主机上运行,并指向 vLLM。第一个 URL 路径段用于选择缓解措施(`b0` 透传、`m1` 填充、`m2-N` 批处理)。 3. **收集轨迹。** 在第二台机器上运行客户端(`client`)。它会发送 Whisper Leak prompt 集(100 个目标主题 prompt 重复 100 次,外加 11716 个负样本),并记录加密的数据包,每次运行会生成一个 JSONL 数据集。 4. **模拟与攻击。** 将基线(`b0`)数据集输入到 `analysis` 中:`python -m simulate` 会为每种防御设置生成一个数据集,而 `python -m classify.train` 会在每个数据集上分别运行 LightGBM 和 TCN 攻击模型。 5. **生成报告。** 在 `analysis` 中运行 `python results.py`。它会读取每折分类器的得分,并输出单个结果表(CSV 和 XLSX 格式),其中包含每种缓解措施的 AUPRC、在 100:1 阳性率下的预测精确率,以及带宽/延迟开销。 由于体积庞大(每个模型有几个 GB),捕获的数据集不包含在此处。不过,`analysis` 提供了每折分类器的得分(`scores/`)、开销测量值(`overhead.json`)以及生成的结果表,因此只需运行 `python results.py` 即可重新生成完整结果,而无需 GPU 或进行任何数据收集。 有关设置和用法的详细信息,请参阅每个文件夹内的 README。
标签:DLL 劫持, Python, Rust, 侧信道防御, 可视化界面, 大语言模型, 安全合规, 底层编程, 无后门, 网络代理, 网络安全, 网络流量审计, 逆向工具, 隐私保护