
Código de simulación y resultados para un protocolo privado, verificable y robusto ante fallos bizantinos de detección de intrusiones federada que utiliza secret sharing, auditorías de Merkle y compromisos de Pedersen.
Código de simulación, resultados sin procesar y scripts de figuras para el artículo
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," arXiv preprint, 2026. (arXiv link to be added after announcement.)
PVBRF-ID es un agregador de dos servidores para aprendizaje federado. Los sitios comparten en secreto sus actualizaciones de modelo; los servidores prueban conjuntamente la norma de cada actualización y su similitud coseno con una referencia de conjunto raíz limpio dentro de las participaciones, revelan un bit de aceptación por sitio y publican compromisos, raíces de Merkle y una auditoría homomórfica para que la inclusión de las actualizaciones aceptadas sea verificable.
Alcance. Esto es una simulación. La comparación segura, las pruebas de rango por coordenada, la generación de triples de Beaver y el recorte seguro se modelan como funcionalidades ideales; el grupo de Pedersen es un grupo de juguete de 512 bits usado solo para el escalado de costes. Los experimentos usan el tráfico público Edge-IIoTset con sitios simulados. No se usaron datos de operadores. Lea las limitaciones del artículo antes de citar una cifra.
| ruta | propósito |
|---|---|
faithful_agg.py | núcleo del protocolo: compartición aditiva de secretos sobre GF(2^127-1), codificación en punto fijo, pruebas de norma y coseno con triples de Beaver (incluido el caso tolerante tau < 0), inclusión de Merkle con SHA-256, compromisos de Pedersen y la auditoría homomórfica |
test_core.py | 12 pruebas de corrección y detección de manipulación (python test_core.py) |
demo_sanity.py | ejecución de comprobación de extremo a extremo sobre datos sintéticos más un benchmark de coste |
exp_ref_tau.py | barrido de fuente de referencia x umbral de coseno x ataque sobre datos sintéticos (semilla única, solo comprobación) |
notebooks/faithful_agg_edgeiiot_v5_final.ipynb | el experimento principal: 870 ejecuciones (10 semillas x 87 configuraciones) sobre Edge-IIoTset |
notebooks/faithful_agg_edgeiiot_v5b_tolerance_attack.ipynb | el experimento complementario: 160 ejecuciones con el atacante adaptativo que explota la tolerancia |
results/v5_full/ | salida sin procesar por ejecución del experimento principal (results.csv) y todas las tablas derivadas |
results/v5b_tolerance/ | salida sin procesar por ejecución del experimento complementario |
make_figures.py | regenera las Figuras 2-5 del manuscrito y la Tabla Suplementaria S3 a partir de los dos archivos results.csv |
figures/ | las figuras del manuscrito |
El código y los archivos de resultados conservan el nombre de desarrollo del método, faithful_agg / faithful_root; faithful_root_t-0.3 en results.csv es PVBRF-ID con la referencia de conjunto raíz y tau = -0.3.
pip install -r requirements.txt
python test_core.py # 12 tests, about a minute
python make_figures.py # figures from the shipped results, seconds
Para volver a ejecutar los experimentos, descargue el archivo DNN de Edge-IIoTset (DNN-EdgeIIoT-dataset.csv, 2.219.201 flujos; disponible de los autores del conjunto de datos a través de IEEE DataPort o Kaggle), colóquelo en data/DNN-EdgeIIoT-dataset.csv y ejecute los dos notebooks desde la carpeta notebooks/ en orden:
faithful_agg_edgeiiot_v5_final.ipynb (aproximadamente 1,1-2,9 h en 8 núcleos; reanudable; escribe results/v5_full/)faithful_agg_edgeiiot_v5b_tolerance_attack.ipynb (aproximadamente 30 min; escribe results/v5b_tolerance/)Las rutas se pueden sobrescribir con las variables de entorno EDGE_DATA, CORE_DIR y OUT_DIR. Todas las ejecuciones son deterministas dadas las semillas en config.json. Las cuatro líneas base en texto plano aparecen en ambos experimentos y deben coincidir hasta el último dígito; lo hacen.
r_t; publican B_t = kappa * ||r_t|| y r_t / ||r_t||.||u_i||^2 y <u_i, r_t>^2 con triples de Beaver; una comparación ideal revela solo el bit de aceptación b_i.prod_{i accepted} C_i^j = Com(A_j; R_j) para ambos servidores; cada sitio verifica su ruta de inclusión de Merkle.Real: compartición, codificación en punto fijo, productos internos de Beaver, árboles de Merkle, compromisos de Pedersen y la auditoría. Ideal: comparación segura (su comunicación es una estimación provisional), pruebas de rango, generación de triples, recorte seguro y ruido en el agregado.
| limpio | inversión de signo | adaptativo 30% | |
|---|---|---|---|
| FedAvg | 0.706 | 0.091 | 0.046 |
| Multi-Krum (texto plano) | 0.690 | 0.686 | 0.693 |
| PVBRF-ID (tau = -0.3) | 0.708 | 0.696 | 0.571 |
| PVBRF-ID + recorte seguro | 0.697 | 0.688 | 0.641 |
Las puertas traseras pasan el filtro (ASR 1.00); la mitigación basada en ruido es heurística (epsilon >= 16.9). Un atacante de inferencia de actualizaciones recupera la mezcla de clases a partir de actualizaciones en texto plano (Spearman 0.81) pero no a partir de la participación de un solo servidor (0.00). La comunicación es aproximadamente 19x la subida de FedAvg en texto plano.
MIT, véase LICENSE.