論文 NeuPerm: Disrupting the Extraction of Malware Hidden in Neural Network Parameters by Leveraging Permutation Symmetry のコードです。
NeuPerm は、順列等価なユニットを並べ替えることで、事前学習済みモデルの重みに隠されたマルウェアを無効化する、ゼロコスト・再学習不要のサニタイズ処理です。 この順列はモデルレベルの計算を変えることなく、MaleficNet や EvilModel といった重みステガノグラフィ攻撃によって埋め込まれたペイロードを破壊し、モデル精度への影響はごくわずかです。
from neu_perm.perm import permute_model
# any supported CNN (vgg11/16, resnet50/101, densenet121,
# efficientnet_b0/b4, mobilenet_v2/v3_small) or LLM (llama-3.2-1b, qwen2.5-1.5b)
sanitized_sd = permute_model("vgg16", model.state_dict())
model.load_state_dict(sanitized_sd)
特許出願中。非商用・非派生利用のみにライセンスされます (Creative
Commons Attribution-NonCommercial-NoDerivatives 4.0 International) — 詳細は
LICENSE を参照してください。
本リポジトリは論文の実験ごとに1つのスクリプトを提供しており、論文の表と図を裏付ける CSV は results/ 以下にコミットされています。論文成果物 → スクリプト/CSV の索引、およびご自身で用意する必要があるデータセット、モデル、ペイロードについては
REPRODUCTION.md を参照してください。
conda env create -n neuperm -f environment.yaml
conda activate neuperm
pip install -e .
依存関係は Python 3.9.18、PyTorch 2.1.0 (CUDA 11.8)、torchvision 0.16.0、および2つの LLM 用の HuggingFace transformers に固定されています。正確なセットは environment.yaml と requirements-lock.txt にあります。
Note:
pyenvがインストールされている場合、conda activateの後でもその shim がPATH上で conda の bin より優先されることがあります。which pythonで確認してください —.../envs/neuperm/bin/pythonと表示されるはずです。~/.pyenv/shims/のパスが返される場合は、先にpyenv shell systemを実行するか、環境のバイナリを直接呼び出してください。
CITATION.cff を参照してください。