
暗号化トラフィック分類に対する実用的なブラックボックス敵対的パケット生成。最小限のオーバーヘッドと完全なパケット復元可能性を備えています。
論文: 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 所属: 东南大学, 紫金山实验室, 天津工业大学, クイーンズ大学, 厦门大学 状態: 採録/審査中 (Elsevier)
PacketPatchは、バイト特徴に基づく暗号化トラフィック分類(Byte-feature-based Encrypted Traffic Classification, B-ETC) モデルに対する敵対的ネットワークパケットを生成する実用的な手法であり、ユーザープライバシーの保護を目的としています。非現実的なホワイトボックス仮定に依存したり過剰なオーバーヘッドを導入する既存手法とは異なり、PacketPatchは厳格なブラックボックス条件下で動作し、リアルタイム性能とパケットの実用性を維持します。

Pad1 → arg min(元の特徴を最大限に撹乱)Pad2 → arg max(ランダムヘッダと整合する特徴を生成)PacketPatch/
├── README.md # プロジェクト概要(本ファイル)
├── LICENSE # MITライセンス
├── requirements.txt # Python依存関係
├── bert_base_config.json # BERTモデル設定(12層、768次元、12ヘッド)
│
├── packet_adv/ # ★ コア実験コード
│ ├── README.md # コアモジュールの使い方ガイド
│ ├── adv_fine_tuning_cls.py # ステップ1: PatchGenerator(SpanBERT)の学習
│ ├── generate.py # ステップ2: 敵対的パケットの生成
│ └── gen_onnx.py # ステップ3(任意): ONNX/TensorRT高速化
│
├── uer/ # UER(Universal Encoder Representations)フレームワーク
│ ├── README.md # フレームワークドキュメント
│ ├── encoders/ # エンコーダ実装(Transformer, RNN, CNN)
│ ├── layers/ # ネットワーク層(Embedding, Attention, FFN)
│ ├── targets/ # 学習ターゲット(MLM, NSP, Span-MBM など)
│ ├── models/ # モデル定義
│ ├── utils/ # ユーティリティ(トークナイザ、最適化、データロード)
│ ├── model_builder.py # モデル構築
│ ├── model_loader.py # 事前学習済み重みの読み込み
│ ├── model_saver.py # モデルチェックポイントの保存
│ ├── trainer.py # 学習ループ実装
│ └── opts.py # CLI引数定義
│
├── dataset/ # データセットドキュメント
│ └── README.md # データセットの説明、ダウンロードリンク、前処理
│
├── image/ # アーキテクチャと結果図
│ └── README.md # 図の説明
│
└── tools/ # ユーティリティツール
└── README.md # ツールの説明と使い方
# このリポジトリをクローン
git clone https://github.com/your-org/PacketPatch.git
cd PacketPatch
# 依存関係をインストール
pip install -r requirements.txt
要件:
PacketPatchはET-BERTをベースとしています。ET-BERTリポジトリから以下をダウンロードしてください。
pretrained_model.bin — ET-BERT事前学習重みencryptd_vocab.txt — バイトペアエンコーディング用語彙ファイルデータセット: 3つの公開データセットで評価しています。ダウンロードリンクと前処理手順についてはdataset/README.mdを参照してください。
| データセット | クラス数 | シナリオ |
|---|---|---|
| ISCX-TOR | 16 | Tor匿名トラフィック |
| ISCX-VPN | 11 | VPN暗号化トンネル |
| USTC | 20 | マルウェア+正常トラフィック |
cd packet_adv
# 最初に adv_fine_tuning_cls.py を編集:
# - データセットパスを更新(47-50行目)
# - 事前学習モデルパスを更新(73-75行目)
# - 正しい num_classes を設定(56行目)
# - 正しい学習セットサイズを設定(878行目)
python adv_fine_tuning_cls.py
学習済みチェックポイントは指定されたログディレクトリ(例: span_2seg_cls_log/)に保存されます。
cd packet_adv
# 最初に generate.py を編集:
# - テストデータパスを更新(42-44行目)
# - --load_model_path を学習済みチェックポイントに更新(68-69行目)
# - BWO(帯域オーバーヘッド比率, 60行目, デフォルト0.1)を設定
# - 'fun'パラメータで生成戦略を選択(50行目)
python generate.py
cd packet_adv
# 最初に gen_onnx.py を編集:
# - モデルチェックポイントパスを更新(132行目)
# - 出力パスを更新(145, 207行目)
# - 精度モードを選択: 'fp16' または 'int8'(21行目)
python gen_onnx.py
| パラメータ | ファイル | 行 | 説明 | デフォルト |
|---|---|---|---|---|
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 |
funパラメータ)| 戦略 | 説明 |
|---|---|
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 | ランダムパディングベースライン |
PacketPatchのPatchGeneratorは、2つの自己教師ありタスクで学習されます。
2つの入力パケットが同じトラフィックカテゴリに属するかどうかを判定します。これにより、モデルに識別的特徴抽出能力が備わります。
損失: バイナリクロスエントロピー
双方向コンテキストを使用して、連続するマスクされたバイトスパンを再構築します。これにより、モデルにコンテキスト認識型のバイトシーケンス生成能力が備わります。
損失: 負の対数尤度
合計損失: 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でIssueを開いてください。
このプロジェクトはET-BERTフレームワークを基盤としており、事前学習モデルとUER(Universal Encoder Representations)学習フレームワークを提供しています。ET-BERTの著者の貴重な貢献に感謝します。