
암호화된 트래픽 분류에 대한 실용적인 블랙박스 적대적 패킷 생성: 최소 오버헤드 및 완전한 패킷 복구 가능.
논문: PacketPatch: Practical Generation and Deployment of Adversarial Packets for Byte-Feature-Based Encrypted Traffic Classification 저자: Yuwei Xu, Yuanyuan Xu, Yunpeng Bai, Jiahui Chen, Kehui Song, Jie Cao, Qiao Xiang, Guang Cheng 소속: Southeast University, Purple Mountain Laboratories, Tiangong University, Queen's University, Xiamen University 상태: 수락됨/심사 중 (Elsevier)
PacketPatch는 사용자 프라이버시 보호를 목표로 바이트 특징 기반 암호화 트래픽 분류(B-ETC) 모델에 대한 적대적 네트워크 패킷을 생성하는 실용적인 기법입니다. 비현실적인 화이트박스 가정에 의존하거나 과도한 오버헤드를 유발하는 기존 방법과 달리, PacketPatch는 실시간 성능과 패킷 사용성을 유지하면서 엄격한 블랙박스 조건에서 작동합니다.

Pad1 → arg min (원본 특징을 최대한 교란)Pad2 → arg max (무작위 헤더와 일치하는 특징 생성)PacketPatch/
├── README.md # Project overview (this file)
├── LICENSE # MIT License
├── requirements.txt # Python dependencies
├── bert_base_config.json # BERT model configuration (12 layers, 768-dim, 12 heads)
│
├── packet_adv/ # ★ Core experimental code
│ ├── README.md # Usage guide for core modules
│ ├── adv_fine_tuning_cls.py # Step 1: Train PatchGenerator (SpanBERT)
│ ├── generate.py # Step 2: Generate adversarial packets
│ └── gen_onnx.py # Step 3 (optional): ONNX/TensorRT acceleration
│
├── uer/ # UER (Universal Encoder Representations) framework
│ ├── README.md # Framework documentation
│ ├── encoders/ # Encoder implementations (Transformer, RNN, CNN)
│ ├── layers/ # Network layers (Embedding, Attention, FFN)
│ ├── targets/ # Training targets (MLM, NSP, Span-MBM, etc.)
│ ├── models/ # Model definition
│ ├── utils/ # Utilities (tokenizers, optimizers, data loading)
│ ├── model_builder.py # Model construction
│ ├── model_loader.py # Pretrained weight loading
│ ├── model_saver.py # Model checkpoint saving
│ ├── trainer.py # Training loop implementation
│ └── opts.py # CLI argument definitions
│
├── dataset/ # Dataset documentation
│ └── README.md # Dataset descriptions, download links, preprocessing
│
├── image/ # Architecture and result figures
│ └── README.md # Figure descriptions
│
└── tools/ # Utility tools
└── README.md # Tool descriptions and usage
# Clone this repository
git clone https://github.com/your-org/PacketPatch.git
cd PacketPatch
# Install dependencies
pip install -r requirements.txt
요구 사항:
PacketPatch는 ET-BERT를 기반으로 구축되었습니다. ET-BERT 저장소에서 다음을 다운로드하세요:
pretrained_model.bin — ET-BERT 사전 학습 가중치encryptd_vocab.txt — 바이트 쌍 인코딩을 위한 어휘 파일데이터셋: 세 가지 공개 데이터셋으로 평가합니다. 다운로드 링크와 전처리 지침은 dataset/README.md를 참조하세요.
| 데이터셋 | 클래스 | 시나리오 |
|---|---|---|
| ISCX-TOR | 16 | Tor 익명 트래픽 |
| ISCX-VPN | 11 | VPN 암호화 터널 |
| USTC | 20 | 악성코드 + 정상 트래픽 |
cd packet_adv
# Edit adv_fine_tuning_cls.py first:
# - Update dataset paths (lines 47-50)
# - Update pretrained model path (lines 73-75)
# - Set correct num_classes (line 56)
# - Set correct training set size (line 878)
python adv_fine_tuning_cls.py
학습된 체크포인트는 지정된 로그 디렉터리(예: span_2seg_cls_log/)에 저장됩니다.
cd packet_adv
# Edit generate.py first:
# - Update test data paths (lines 42-44)
# - Update --load_model_path to your trained checkpoint (line 68-69)
# - Set BWO (bandwidth overhead ratio, line 60, default 0.1)
# - Choose generation strategy via 'fun' parameter (line 50)
python generate.py
cd packet_adv
# Edit gen_onnx.py first:
# - Update model checkpoint path (line 132)
# - Update output paths (lines 145, 207)
# - Select precision mode: 'fp16' or 'int8' (line 21)
python gen_onnx.py
fun 매개변수)PacketPatch의 PatchGenerator는 두 가지 자기 지도 학습 과제로 학습됩니다:
두 입력 패킷이 동일한 트래픽 카테고리에 속하는지 판단합니다. 이를 통해 모델은 구별적 특징 추출 능력을 갖추게 됩니다.
손실: 이진 교차 엔트로피
양방향 컨텍스트를 사용하여 연속적인 마스킹된 바이트 스팬을 재구성합니다. 이를 통해 모델은 컨텍스트 인식 바이트 시퀀스 생성 능력을 갖추게 됩니다.
손실: 음의 로그 우도
전체 손실: Loss = Loss_SCP + Loss_Span-MBM

| 단계 | 시간 (ms/패킷) |
|---|---|
| 패킷 전처리 | 0.054 |
| 교란 생성 | 9.626 |
| 패킷 재구성 | 0.398 |
| 총계 | 10.078 |
PacketPatch는 엄격한 블랙박스 가정 하에 다음과 같은 화이트박스 기준 방법들을 능가합니다:

연구에서 PacketPatch를 사용하실 경우, 다음 논문을 인용해 주세요:
@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},
}
이 프로젝트는 MIT 라이선스에 따라 사용이 허가됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.
질문이나 문의 사항이 있으시면 교신 저자에게 연락하거나 GitHub에 이슈를 열어 주세요.
이 프로젝트는 사전 학습 모델과 UER(Universal Encoder Representations) 학습 프레임워크를 제공하는 ET-BERT 프레임워크를 기반으로 구축되었습니다. ET-BERT 저자분들의 소중한 기여에 감사드립니다.
| 매개변수 | 파일 | 라인 | 설명 | 기본값 |
|---|
BWO | generate.py | 60 | 대역폭 오버헤드 비율 | 0.1 (10%) |
fun | generate.py | 50 | 생성 전략 | 'fun5' |
n_epochs | adv_fine_tuning_cls.py | 53 | 학습 에폭 | 50 |
batch_size | adv_fine_tuning_cls.py | 54 | 배치 크기 | 32 |
num_classes | adv_fine_tuning_cls.py | 56 | 트래픽 클래스 수 | 데이터셋에 따라 다름 |
learning_rate | adv_fine_tuning_cls.py | 94-95 | 학습률 | 2e-5 |
seq_length | adv_fine_tuning_cls.py | 92-93 | 입력 시퀀스 길이 | 256 |
| 전략 | 설명 |
|---|
fun1 | 단일 세그먼트, argmin 선택 |
fun2 | 이중 세그먼트, 둘 다 argmax |
fun3 | 이중 세그먼트, 고정 50/50 분할, Pad1 argmin + Pad2 argmax |
fun4 | 이중 세그먼트, 랜덤 분할, Pad1 argmin + Pad2 argmax |
fun5 (기본값) | 이중 세그먼트 + 랜덤 더미 헤더, Pad1 argmin + Pad2 argmax |
fun6 | 이중 세그먼트 + 더미 헤더, NSP 기반 전략 |
random | 랜덤 기준선 |
random_dummy_head | 랜덤 헤더 교체 기준선 |
random_pad | 랜덤 패딩 기준선 |