Título do Artigo: Avaliação da Privacidade Diferencial Aplicada ao Aprendizado Federado Através de Ataques de Inversão de Modelo
Resumo: Este trabalho propõe uma metodologia prática para avaliar a eficácia de mecanismos de Privacidade Diferencial (DP) no Aprendizado Federado (FL) diante de ataques de inversão de modelo. Para isso, foi adotado um cenário adversarial baseado no paradigma de segurança cibernética equipe vermelha/equipe azul (RT/BT), onde a equipe azul implementa a proteção de DP e a equipe vermelha realiza ataques para recuperar dados de um cliente específico a partir do modelo global. Foram implementados dois tipos de ataques — um baseado em gradientes e outro ingênuo — aplicados em diferentes intensidades de ruído gaussiano. Os experimentos demonstraram que ruídos baixos já são suficientes para mitigar significativamente os ataques de inversão, conforme evidenciado tanto por métricas quantitativas (SSIM, PSNR e MSE) quanto pela análise visual das imagens reconstruídas. Por outro lado, observou-se que a acurácia do modelo global se mantém estável até níveis moderados de ruído, com impacto limitado no desempenho. Esses resultados indicam que é possível alcançar um bom equilíbrio entre privacidade e utilidade do modelo em cenários práticos.
Este documento está organizado para guiar os avaliadores desde a configuração do ambiente até a replicação completa dos resultados do artigo. As seções incluem:
- Título e Resumo: Apresenta o contexto do artefato.
- Selos Considerados e Preocupações com Segurança: Informações importantes para o processo de avaliação.
- Informações básicas, Dependências e Instalação: Guias para preparar o ambiente de execução, incluindo opções para Docker.
- Teste mínimo: Um passo rápido para validar a instalação do ambiente.
- Experimentos: Instruções detalhadas para reproduzir cada reivindicação do artigo, com opções de fluxo automatizado e manual.
- LICENSE: Informações sobre a licença do software.
Os selos considerados para este artefato são: Disponível (SELOD), Funcional (SELOF), Sustentável (SELOS) e Reprodutível (SELOR).
Esta seção descreve os requisitos de hardware e software para a execução dos experimentos.
- Hardware:
- Computador padrão com pelo menos 8 GB de RAM.
- Aproximadamente 200 MB de espaço livre em disco para o código, dependências e resultados.
- Software:
- Sistema Operacional: Windows, macOS ou Linux.
- Opção Local: Python 3.11+ e Git.
- Opção Docker: Docker Desktop (Windows/macOS) ou Docker Engine (Linux).
As dependências de software e dados para a execução estão listadas abaixo.
A execução deste artefato é segura. Os scripts realizam apenas cálculos numéricos e manipulação de arquivos dentro do diretório do projeto, sem acessar informações sensíveis do sistema ou da rede. Um download do conjunto de dados MNIST pode ser realizado automaticamente do site python-course.eu via HTTPS, caso o arquivo não seja encontrado localmente.
As bibliotecas necessárias, com suas versões exatas para garantir a reprodutibilidade, estão listadas no arquivo requirements.txt.
numpy==1.26.4pandas==2.2.2matplotlib==3.9.0scikit-image==0.25.2scipy==1.13.1
Este projeto utiliza o conjunto de dados MNIST em formato CSV.
✨ Automação: Não é necessário baixar o dataset manualmente. O script principal (
MNIST_FL_inversion_comparison.py) verificará se o arquivomnist_train.csvexiste no diretório raiz e, caso contrário, fará o download automaticamente de uma fonte segura.
Escolha uma das opções abaixo para configurar seu ambiente. A opção Docker é recomendada para máxima reprodutibilidade.
-
Clone o repositório:
git clone https://github.com/seu-usuario/seu-repositorio.git cd seu-repositorio -
Crie e ative um ambiente virtual (Recomendado):
# Para macOS/Linux python3 -m venv venv source venv/bin/activate # Para Windows python -m venv venv .\venv\Scripts\activate
-
Instale as dependências:
pip install -r requirements.txt
-
Pré-requisito: Certifique-se de que o Docker está instalado e em execução.
-
Construa a imagem Docker: Na raiz do projeto, execute o comando abaixo.
docker build -t fl-privacy-eval .
Ao final de qualquer uma das opções, o ambiente estará pronto para execução.
Execute um teste rápido para garantir que a configuração está correta. O script principal, quando executado sem argumentos, roda uma configuração mínima (1 classe, 1 nível de ruído, 1 seed), ideal para verificação.
-
Execução Local:
python MNIST_FL_inversion_comparison.py
-
Execução com Docker:
# Para macOS/Linux docker run --rm -it -v "$(pwd):/app" fl-privacy-eval # Para Windows (PowerShell) docker run --rm -it -v "${PWD}:/app" fl-privacy-eval
Nota: O comando
-v "$(pwd):/app"mapeia o diretório atual do seu computador para o diretório/appdentro do contêiner. Isso é essencial para que os resultados (arquivos CSV, gráficos) sejam salvos na sua máquina. -
Tempo esperado: 2-3 minutos.
-
Resultado esperado: O script deve finalizar sem erros, imprimir uma mensagem de conclusão e gerar o arquivo
new_results_with_seed.csvjunto com as pastas de imagens reconstruídas.
Oferecemos duas maneiras de executar os experimentos completos para replicar os resultados do artigo: um fluxo automatizado e um fluxo manual passo a passo.
O script run_all_tests.py orquestra a execução do experimento principal e de todos os scripts de análise em sequência, gerando todos os gráficos e resultados de uma só vez.
-
Execução Local:
python run_all_tests.py
-
Execução com Docker:
# Para macOS/Linux docker run --rm -it -v "$(pwd):/app" fl-privacy-eval python run_all_tests.py # Para Windows (PowerShell) docker run --rm -it -v "${PWD}:/app" fl-privacy-eval python run_all_tests.py
-
Tempo esperado de execução: Aproximadamente 15 a 30 horas (dependendo da configuração de seeds; o padrão do script é 30 seeds).
Esta abordagem oferece mais controle, permitindo executar cada etapa individualmente e analisar os resultados intermediários.
Execute o script principal com parâmetros para gerar todos os dados brutos. Para uma análise estatística robusta, recomenda-se executar com 30 seeds.
- Comando Local:
python MNIST_FL_inversion_comparison.py --number_of_seeds 30 --classes "0,1,2,3,4,5,6,7,8,9" --noise_scales "0.0,0.01,0.02,0.03,0.04,0.05,0.06,0.07,0.08,0.09,0.1"
- Comando com Docker:
# Para macOS/Linux docker run --rm -it -v "$(pwd):/app" fl-privacy-eval python MNIST_FL_inversion_comparison.py --number_of_seeds 30 --classes "0,1,2,3,4,5,6,7,8,9" --noise_scales "0.0,0.01,0.02,0.03,0.04,0.05,0.06,0.07,0.08,0.09,0.1"
- Tempo esperado: ~15-30 horas.
- Resultado esperado: Geração do arquivo
new_results_with_seed.csve pastas com as imagens reconstruídas.
Nota sobre Tratamento de Erros: Devido à distribuição aleatória de dados entre os clientes, pode ocorrer de um cliente específico (o alvo do ataque) não possuir exemplos para uma determinada classe. Ao tentar realizar um ataque para essa classe, o script encontraria um erro. Um bloco
try...exceptfoi implementado para capturar essa exceção, descartar os resultados parciais da combinaçãoseed/classeque falhou e continuar a execução para a próxima classe, garantindo a robustez do processo de longa duração. Assim, a execução termina quando a última classe alcançar o número alvo de seeds para qual foi testada.
"Ruídos baixos mitigam significativamente os ataques de inversão."
Esta reivindicação é validada pela análise de métricas de qualidade de imagem (SSIM, MSE e PSNR). O script abaixo gera os gráficos que demonstram a degradação da qualidade das imagens reconstruídas com o aumento do ruído.
- Execução (Local ou Docker):
# Local python organize_attack_results.py # Docker (Exemplo macOS/Linux) docker run --rm -it -v "$(pwd):/app" fl-privacy-eval python organize_attack_results.py
- Resultado esperado: Gráficos para SSIM, MSE e PSNR salvos na pasta
graficos/, mostrando visualmente a eficácia da mitigação.
"A acurácia do modelo global se mantém estável até níveis moderados de ruído."
Esta reivindicação é validada pela análise da acurácia do modelo global em diferentes níveis de ruído. O script a seguir gera o gráfico correspondente.
- Execução (Local ou Docker):
# Local python organize_results_accuracy.py # Docker (Exemplo macOS/Linux) docker run --rm -it -v "$(pwd):/app" fl-privacy-eval python organize_results_accuracy.py
- Resultado esperado: O gráfico
Acurácia por Ruido.pngna pastagraficos/, ilustrando que a acurácia sofre uma queda gradual e limitada.
Para validar estatisticamente as observações, foi utilizado o teste de Mann-Whitney U. O script Mann_Whitney.py realiza essa análise comparando os resultados com e sem ruído.
- Execução (Local ou Docker) - Exemplo com ruído 0.07:
# Local python Mann_Whitney.py --selected_noise 0.07 # Docker (Exemplo macOS/Linux) docker run --rm -it -v "$(pwd):/app" fl-privacy-eval python Mann_Whitney.py --selected_noise 0.07
- Resultado esperado: O script imprimirá no terminal o p-valor para as métricas de ataque (SSIM, MSE, PSNR) e para a acurácia, comparando o cenário sem ruído com o nível de ruído selecionado. Os testes confirmam que:
- As métricas de qualidade de imagem com ruído são estatisticamente diferentes daquelas sem ruído, mesmo para os menores níveis.
- A acurácia do modelo só apresenta uma diferença estatisticamente significativa a partir de níveis de ruído moderados (ex: 0.07), apoiando a conclusão de que é possível adicionar ruído para privacidade sem impactar significativamente a utilidade do modelo.
Este projeto está licenciado sob a Licença MIT. Consulte o arquivo LICENSE para obter mais detalhes.