
Código de simulação e resultados para um protocolo privado, verificável e robusto a falhas bizantinas de detecção federada de intrusões usando compartilhamento de segredos, auditorias de Merkle e compromissos de Pedersen.
Código de simulação, resultados brutos e scripts de figuras para o artigo
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 é um agregador de dois servidores para aprendizado federado. Os sites compartilham secretamente suas atualizações de modelo; os servidores testam conjuntamente a norma de cada atualização e sua similaridade de cosseno com uma referência de conjunto raiz limpa dentro dos compartilhamentos, revelam um bit de aceitação por site e publicam compromissos, raízes de Merkle e uma auditoria homomórfica para que a inclusão das atualizações aceitas seja verificável.
Escopo. Esta é uma simulação. Comparação segura, provas de intervalo por coordenada, geração de triplas de Beaver e recorte seguro são modelados como funcionalidades ideais; o grupo de Pedersen é um grupo de brinquedo de 512 bits usado apenas para escalonamento de custo. Os experimentos usam o tráfego público Edge-IIoTset com sites simulados. Nenhum dado de operadora foi usado. Leia as limitações do artigo antes de citar um número.
| caminho | propósito |
|---|---|
faithful_agg.py | núcleo do protocolo: compartilhamento aditivo de segredos sobre GF(2^127-1), codificação de ponto fixo, testes de norma e cosseno com triplas de Beaver (incluindo o caso tolerante tau < 0), inclusão de Merkle com SHA-256, compromissos de Pedersen e a auditoria homomórfica |
test_core.py | 12 testes de correção e detecção de adulteração (python test_core.py) |
demo_sanity.py | execução de sanidade ponta a ponta em dados sintéticos mais um benchmark de custo |
exp_ref_tau.py | varredura de fonte de referência x limiar de cosseno x ataque em dados sintéticos (semente única, apenas sanidade) |
notebooks/faithful_agg_edgeiiot_v5_final.ipynb | o experimento principal: 870 execuções (10 sementes x 87 configurações) no Edge-IIoTset |
notebooks/faithful_agg_edgeiiot_v5b_tolerance_attack.ipynb | o experimento suplementar: 160 execuções com o atacante adaptativo que explora a tolerância |
results/v5_full/ | saída bruta por execução do experimento principal (results.csv) e todas as tabelas derivadas |
results/v5b_tolerance/ | saída bruta por execução do experimento suplementar |
make_figures.py | regenera as Figuras 2-5 do manuscrito e a Tabela Suplementar S3 a partir dos dois arquivos results.csv |
figures/ | as figuras do manuscrito |
O código e os arquivos de resultados mantêm o nome de desenvolvimento do método, faithful_agg / faithful_root;
faithful_root_t-0.3 em results.csv é o PVBRF-ID com a referência de conjunto raiz e tau = -0.3.
pip install -r requirements.txt
python test_core.py # 12 testes, cerca de um minuto
python make_figures.py # figuras a partir dos resultados fornecidos, segundos
Para reexecutar os experimentos, baixe o arquivo DNN do Edge-IIoTset (DNN-EdgeIIoT-dataset.csv,
2.219.201 fluxos; disponível dos autores do conjunto de dados via IEEE DataPort ou Kaggle), coloque-o em
data/DNN-EdgeIIoT-dataset.csv e execute os dois notebooks da pasta notebooks/ em ordem:
faithful_agg_edgeiiot_v5_final.ipynb (cerca de 1,1-2,9 h em 8 núcleos; retomável; grava results/v5_full/)faithful_agg_edgeiiot_v5b_tolerance_attack.ipynb (cerca de 30 min; grava results/v5b_tolerance/)Os caminhos podem ser substituídos pelas variáveis de ambiente EDGE_DATA, CORE_DIR e OUT_DIR.
Todas as execuções são determinísticas dadas as sementes em config.json. As quatro linhas de base em texto claro aparecem em
ambos os experimentos e devem concordar até o último dígito; elas concordam.
r_t; publicam B_t = kappa * ||r_t|| e r_t / ||r_t||.||u_i||^2 e <u_i, r_t>^2 com triplas de Beaver; uma comparação ideal revela apenas o bit de aceitação b_i.prod_{i accepted} C_i^j = Com(A_j; R_j) para ambos os servidores; cada site verifica seu caminho de inclusão de Merkle.Real: compartilhamento, codificação de ponto fixo, produtos internos de Beaver, árvores de Merkle, compromissos de Pedersen e a auditoria. Ideal: comparação segura (sua comunicação é uma estimativa de espaço reservado), provas de intervalo, geração de triplas, recorte seguro e ruído no agregado.
| limpo | inversão de sinal | adaptativo 30% | |
|---|---|---|---|
| FedAvg | 0,706 | 0,091 | 0,046 |
| Multi-Krum (texto claro) | 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 |
Backdoors passam pelo filtro (ASR 1,00); a mitigação baseada em ruído é heurística (epsilon >= 16,9). Um atacante de inferência de atualização recupera a mistura de classes a partir de atualizações em texto claro (Spearman 0,81), mas não a partir do compartilhamento de um servidor (0,00). A comunicação é cerca de 19x o upload do FedAvg simples.
MIT, consulte LICENSE.