
Codice di simulazione e risultati per un protocollo di rilevamento delle intrusioni federato, privato, verificabile e robusto ai bizantini, che utilizza la condivisione di segreti, gli audit di Merkle e gli impegni di Pedersen.
Codice di simulazione, risultati grezzi e script per le figure dell'articolo
Mustafa S. Aljumaily, Ali Ataeemh Allami, Mustafa N. Mnati, Nawar S. Alseelawi, Shahab Abdulla, "PVBRF-ID: Private, Verifiable and Byzantine-Robust Federated Intrusion Detection for Oilfield Enterprise Networks," preprint arXiv, 2026. (link arXiv da aggiungere dopo l'annuncio.)
PVBRF-ID è un aggregatore a due server per il federated learning. I siti condividono in modo segreto i propri aggiornamenti del modello; i server verificano congiuntamente la norma di ciascun aggiornamento e la sua similarità coseno rispetto a un riferimento pulito del root-set all'interno delle quote, rivelano un bit di accettazione per sito e pubblicano commitment, Merkle root e un audit omomorfico affinché l'inclusione degli aggiornamenti accettati sia verificabile.
Ambito. Questa è una simulazione. Il confronto sicuro, le prove di intervallo per coordinata, la generazione di Beaver-triple e il clipping sicuro sono modellati come funzionalità ideali; il gruppo di Pedersen è un gruppo giocattolo a 512 bit usato solo per la scalatura dei costi. Gli esperimenti utilizzano il traffico pubblico Edge-IIoTset con siti simulati. Nessun dato di operatore è stato utilizzato. Leggere le limitazioni dell'articolo prima di citare un numero.
| percorso | scopo |
|---|---|
faithful_agg.py | nucleo del protocollo: secret sharing additivo su GF(2^127-1), codifica in virgola fissa, test di norma e coseno con Beaver-triple (incluso il caso tollerante tau < 0), inclusione Merkle SHA-256, commitment di Pedersen e audit omomorfico |
test_core.py | 12 test di correttezza e rilevamento manomissioni (python test_core.py) |
demo_sanity.py | esecuzione di verifica end-to-end su dati sintetici più un benchmark dei costi |
exp_ref_tau.py | sweep su dati sintetici di sorgente di riferimento x soglia coseno x attacco (singolo seed, solo verifica) |
notebooks/faithful_agg_edgeiiot_v5_final.ipynb | l'esperimento principale: 870 esecuzioni (10 seed x 87 configurazioni) su Edge-IIoTset |
notebooks/faithful_agg_edgeiiot_v5b_tolerance_attack.ipynb | l'esperimento supplementare: 160 esecuzioni con l'attaccante adattivo che sfrutta la tolleranza |
results/v5_full/ | output grezzo per esecuzione dell'esperimento principale (results.csv) e tutte le tabelle derivate |
results/v5b_tolerance/ | output grezzo per esecuzione dell'esperimento supplementare |
make_figures.py | rigenera le Figure 2-5 del manoscritto e la Tabella Supplementare S3 dai due file results.csv |
figures/ | le figure del manoscritto |
Il codice e i file dei risultati mantengono il nome di sviluppo del metodo, faithful_agg / faithful_root; faithful_root_t-0.3 in results.csv è PVBRF-ID con il riferimento del root-set e tau = -0.3.
pip install -r requirements.txt
python test_core.py # 12 test, circa un minuto
python make_figures.py # figure dai risultati forniti, pochi secondi
Per rieseguire gli esperimenti, scaricare il file DNN di Edge-IIoTset (DNN-EdgeIIoT-dataset.csv, 2.219.201 flussi; disponibile dagli autori del dataset tramite IEEE DataPort o Kaggle), posizionarlo in data/DNN-EdgeIIoT-dataset.csv ed eseguire i due notebook dalla cartella notebooks/ in ordine:
faithful_agg_edgeiiot_v5_final.ipynb (circa 1,1-2,9 h su 8 core; ripristinabile; scrive in results/v5_full/)faithful_agg_edgeiiot_v5b_tolerance_attack.ipynb (circa 30 min; scrive in results/v5b_tolerance/)I percorsi possono essere sovrascritti con le variabili d'ambiente EDGE_DATA, CORE_DIR e OUT_DIR. Tutte le esecuzioni sono deterministiche dati i seed in config.json. Le quattro baseline in chiaro compaiono in entrambi gli esperimenti e devono coincidere fino all'ultima cifra; lo fanno.
r_t; pubblicano B_t = kappa * ||r_t|| e r_t / ||r_t||.||u_i||^2 e <u_i, r_t>^2 con Beaver triples; un confronto ideale rivela solo il bit di accettazione b_i.prod_{i accepted} C_i^j = Com(A_j; R_j) per entrambi i server; ogni sito verifica il proprio percorso di inclusione Merkle.Reale: condivisione, codifica in virgola fissa, prodotti interni di Beaver, Merkle tree, commitment di Pedersen e l'audit. Ideale: confronto sicuro (la sua comunicazione è una stima segnaposto), prove di intervallo, generazione di triple, clipping sicuro e rumore in-aggregato.
| pulito | sign-flip | adattivo 30% | |
|---|---|---|---|
| FedAvg | 0.706 | 0.091 | 0.046 |
| Multi-Krum (in chiaro) | 0.690 | 0.686 | 0.693 |
| PVBRF-ID (tau = -0.3) | 0.708 | 0.696 | 0.571 |
| PVBRF-ID + secure clip | 0.697 | 0.688 | 0.641 |
Le backdoor superano il filtro (ASR 1.00); la mitigazione basata sul rumore è euristica (epsilon >= 16.9). Un attaccante di inferenza degli aggiornamenti recupera la composizione delle classi dagli aggiornamenti in chiaro (Spearman 0.81) ma non dalla quota di un singolo server (0.00). La comunicazione è circa 19x l'upload del FedAvg in chiaro.
MIT, vedere LICENSE.