
Praktische Black-Box-Adversarial-Paketerzeugung gegen verschlüsselte Verkehrsklassifizierung mit minimalem Overhead und vollständiger Paketwiederherstellbarkeit.
Paper: PacketPatch: Praktische Generierung und Bereitstellung von adversarialen Paketen für die byte-feature-basierte Klassifikation verschlüsselten Datenverkehrs Autoren: Yuwei Xu, Yuanyuan Xu, Yunpeng Bai, Jiahui Chen, Kehui Song, Jie Cao, Qiao Xiang, Guang Cheng Zugehörigkeit: Southeast University, Purple Mountain Laboratories, Tiangong University, Queen's University, Xiamen University Status: Angenommen/In Überprüfung (Elsevier)
PacketPatch ist ein praktisches Verfahren zur Generierung adversarialer Netzwerkpakete gegen Byte-Feature-basierte Klassifikation von verschlüsseltem Datenverkehr (B-ETC)-Modelle, mit dem Ziel, die Privatsphäre der Benutzer zu schützen. Im Gegensatz zu bestehenden Methoden, die auf unrealistischen White-Box-Annahmen beruhen oder einen übermäßigen Overhead verursachen, arbeitet PacketPatch unter strengen Black-Box-Bedingungen, während es Echtzeitleistung und Paketnutzbarkeit beibehält.

Pad1 → arg min (maximale Störung der ursprünglichen Merkmale)Pad2 → arg max (Generierung von Merkmalen, die auf den zufälligen Header abgestimmt sind)PacketPatch/
├── README.md # Projektübersicht (diese Datei)
├── LICENSE # MIT-Lizenz
├── requirements.txt # Python-Abhängigkeiten
├── bert_base_config.json # BERT-Modellkonfiguration (12 Schichten, 768-dim, 12 Köpfe)
│
├── packet_adv/ # ★ Zentraler experimenteller Code
│ ├── README.md # Anleitung zur Verwendung der Kernmodule
│ ├── adv_fine_tuning_cls.py # Schritt 1: Trainieren von PatchGenerator (SpanBERT)
│ ├── generate.py # Schritt 2: Generieren adversarialer Pakete
│ └── gen_onnx.py # Schritt 3 (optional): ONNX-/TensorRT-Beschleunigung
│
├── uer/ # UER (Universal Encoder Representations) Framework
│ ├── README.md # Framework-Dokumentation
│ ├── encoders/ # Encoder-Implementierungen (Transformer, RNN, CNN)
│ ├── layers/ # Netzwerkschichten (Embedding, Attention, FFN)
│ ├── targets/ # Trainingsziele (MLM, NSP, Span-MBM, usw.)
│ ├── models/ # Modelldefinition
│ ├── utils/ # Hilfsprogramme (Tokenisierer, Optimierer, Datenladen)
│ ├── model_builder.py # Modellkonstruktion
│ ├── model_loader.py # Laden vortrainierter Gewichte
│ ├── model_saver.py # Speichern von Modell-Checkpoints
│ ├── trainer.py # Implementierung der Trainingsschleife
│ └── opts.py # CLI-Argumentdefinitionen
│
├── dataset/ # Datensatzdokumentation
│ └── README.md # Datensatzbeschreibungen, Download-Links, Vorverarbeitung
│
├── image/ # Architektur- und Ergebnisabbildungen
│ └── README.md # Abbildungsbeschreibungen
│
└── tools/ # Hilfswerkzeuge
└── README.md # Werkzeugbeschreibungen und -verwendung
# Dieses Repository klonen
git clone https://github.com/your-org/PacketPatch.git
cd PacketPatch
# Abhängigkeiten installieren
pip install -r requirements.txt
Anforderungen:
PacketPatch basiert auf ET-BERT. Laden Sie Folgendes aus dem ET-BERT-Repository herunter:
pretrained_model.bin — Vortrainierte ET-BERT-Gewichteencryptd_vocab.txt — Vokabular-Datei für die Byte-Paar-KodierungDatensätze: Wir evaluieren auf drei öffentlichen Datensätzen. Siehe dataset/README.md für Download-Links und Vorverarbeitungshinweise.
| Datensatz | Klassen | Szenario |
|---|---|---|
| ISCX-TOR | 16 | Tor-anonymer Datenverkehr |
| ISCX-VPN | 11 | VPN-verschlüsselte Tunnel |
| USTC | 20 | Schadsoftware + gutartiger Datenverkehr |
cd packet_adv
# Zuerst adv_fine_tuning_cls.py bearbeiten:
# - Datensatzpfade aktualisieren (Zeilen 47-50)
# - Pfad zum vortrainierten Modell aktualisieren (Zeilen 73-75)
# - Richtige num_classes setzen (Zeile 56)
# - Richtige Trainingsset-Größe setzen (Zeile 878)
python adv_fine_tuning_cls.py
Der trainierte Checkpoint wird im angegebenen Log-Verzeichnis gespeichert (z. B. span_2seg_cls_log/).
cd packet_adv
# Zuerst generate.py bearbeiten:
# - Testdatenpfade aktualisieren (Zeilen 42-44)
# - --load_model_path auf Ihren trainierten Checkpoint setzen (Zeilen 68-69)
# - BWO (Bandbreiten-Overhead-Verhältnis) setzen (Zeile 60, Standard 0.1)
# - Generierungsstrategie über Parameter 'fun' auswählen (Zeile 50)
python generate.py
cd packet_adv
# Zuerst gen_onnx.py bearbeiten:
# - Pfad zum Modell-Checkpoint aktualisieren (Zeile 132)
# - Ausgabepfade aktualisieren (Zeilen 145, 207)
# - Präzisionsmodus auswählen: 'fp16' oder 'int8' (Zeile 21)
python gen_onnx.py
| Parameter | Datei | Zeile | Beschreibung | Standard |
|---|---|---|---|---|
BWO | generate.py | 60 | Bandbreiten-Overhead-Verhältnis | 0.1 (10 %) |
fun | generate.py | 50 | Generierungsstrategie | 'fun5' |
n_epochs | adv_fine_tuning_cls.py | 53 | Trainingsepochen | 50 |
batch_size | adv_fine_tuning_cls.py | 54 | Batch-Größe | 32 |
num_classes | adv_fine_tuning_cls.py | 56 | Anzahl der Verkehrsklassen | Datensatzabhängig |
learning_rate | adv_fine_tuning_cls.py | 94-95 | Lernrate | 2e-5 |
seq_length | adv_fine_tuning_cls.py | 92-93 | Eingabesequenzlänge | 256 |
fun-Parameter)| Strategie | Beschreibung |
|---|---|
fun1 | Einzelnes Segment, argmin-Auswahl |
fun2 | Zwei Segmente, beide argmax |
fun3 | Zwei Segmente, feste 50/50-Aufteilung, Pad1 argmin + Pad2 argmax |
fun4 | Zwei Segmente, zufällige Aufteilung, Pad1 argmin + Pad2 argmax |
fun5 (Standard) | Zwei Segmente mit zufälligem Dummy-Header, Pad1 argmin + Pad2 argmax |
fun6 | Zwei Segmente mit Dummy-Header, NSP-gesteuerte Strategie |
random | Zufällige Baseline |
random_dummy_head | Baseline mit zufälligem Header-Ersatz |
random_pad | Baseline mit zufälligem Padding |
Der PatchGenerator von PacketPatch wird mit zwei selbstüberwachten Aufgaben trainiert:
Bestimmt, ob zwei eingegebene Pakete zur gleichen Datenverkehrskategorie gehören. Dies verleiht dem Modell die Fähigkeit zur diskriminierenden Merkmalsextraktion.
Verlust: Binäre Kreuzentropie
Rekonstruiert aufeinanderfolgende maskierte Byte-Spannen unter Verwendung von bidirektionalem Kontext. Dies verleiht dem Modell die Fähigkeit zur kontextbewussten Byte-Sequenzgenerierung.
Verlust: Negative Log-Likelihood
Gesamtverlust: Loss = Loss_SCP + Loss_Span-MBM

| Phase | Zeit (ms/Paket) |
|---|---|
| Paketvorverarbeitung | 0.054 |
| Störungsgenerierung | 9.626 |
| Paketrekonstruktion | 0.398 |
| Gesamt | 10.078 |
PacketPatch übertrifft die folgenden White-Box-Baselinemethoden unter strengen Black-Box-Annahmen:

Wenn Sie PacketPatch in Ihrer Forschung verwenden, zitieren Sie bitte unsere Arbeit:
@article{xu2025packetpatch,
title = {PacketPatch: Practical Generation and Deployment of Adversarial Packets for Byte-Feature-Based Encrypted Traffic Classification},
author = {Yuwei Xu and Yuanyuan Xu and Yunpeng Bai and Jiahui Chen and Kehui Song and Jie Cao and Qiao Xiang and Guang Cheng},
journal = {Elsevier},
year = {2025},
}
Dieses Projekt ist unter der MIT-Lizenz lizenziert – siehe Datei LICENSE für Details.
Bei Fragen und Anfragen wenden Sie sich bitte an den korrespondierenden Autor oder eröffnen Sie ein Issue auf GitHub.
Dieses Projekt basiert auf dem ET-BERT-Framework, das das vortrainierte Modell und das UER (Universal Encoder Representations)-Trainingsframework bereitstellt. Wir danken den ET-BERT-Autoren für ihre wertvollen Beiträge.