# Aprendizado de máquina adversário

O aprendizado de máquinas adversário é uma técnica de aprendizado de máquina que tenta enganar os modelos fornecendo informações enganosas. O motivo mais comum é causar um mau funcionamento em um modelo de aprendizado de máquina.
A maioria das técnicas de aprendizado de máquina foi projetada para funcionar em conjuntos de problemas específicos nos quais os dados de treinamento e teste são gerados a partir da mesma distribuição estatística (IID). Quando esses modelos são aplicados ao mundo real, os adversários podem fornecer dados que violam essa suposição estatística. Esses dados podem ser organizados para explorar vulnerabilidades específicas e comprometer os resultados.

## História

Em Snow Crash (1992), o autor ofereceu cenários de tecnologia que eram vulneráveis a um ataque adversário. Em Zero History (2010), um personagem veste uma camiseta decorada de modo a torná-lo invisível para a vigilância eletrônica.
Em 2004, Nilesh Dalvi e outros notaram que classificadores lineares usados em filtros de spam podiam ser derrotados por simples "ataques de evasão", pois os spammers inseriam "boas palavras" em seus e-mails de spam. (Por volta de 2007, alguns remetentes de spam adicionaram ruído aleatório às palavras difusas dentro de "imagens de spam" para derrotar os filtros baseados em OCR.) Em 2006, Marco Barreno e outros publicaram "Can Machine Learning Be Secure?", Descrevendo uma ampla taxonomia de ataques. No final de 2013, muitos pesquisadores continuaram a esperar que classificadores não lineares (como máquinas de vetores de suporte e redes neurais) pudessem ser robustos contra adversários. Em 2012, as redes neurais profundas começaram a dominar os problemas de visão computacional; a partir de 2014, Christian Szegedy e outros demonstraram que redes neurais profundas podem ser enganadas por adversários.
Recentemente, foi observado que os ataques adversários são mais difíceis de produzir no mundo prático devido às diferentes restrições ambientais que anulam o efeito dos ruídos. Por exemplo, qualquer pequena rotação ou leve iluminação em uma imagem adversária pode destruir a adversidade.

### Exemplos

Os exemplos incluem ataques aos filtros de spam, em que as mensagens de spam são disfarçadas por meio da escrita incorreta de palavras “ruins” ou da inserção de palavras “boas”; ataques à segurança do computador, como o ocultamento do código de malware dentro de pacotes de rede ou para enganar a detecção de assinaturas; ataques em reconhecimento biométrico onde falsos traços biométricos podem ser explorados para se passar por um usuário legítimo; ou comprometer as galerias de modelos dos usuários que se adaptam a características atualizadas ao longo do tempo.
Os pesquisadores mostraram que, alterando apenas um pixel, era possível enganar algoritmos de aprendizado profundo. Outros imprimiram em 3D uma tartaruga de brinquedo com uma textura projetada para fazer com que a IA de detecção de objetos do Google classificásse-a como um rifle, independentemente do ângulo de onde a tartaruga fosse vista. A criação da tartaruga só exigiu tecnologia de impressão em 3D de baixo custo, disponível comercialmente.
Uma imagem de um cachorro ajustada por uma máquina se mostrou parecida com um gato tanto para computadores quanto para humanos. Um estudo de 2019 relatou que os humanos podem adivinhar como as máquinas classificarão as imagens adversárias. Os pesquisadores descobriram métodos para perturbar a aparência de uma placa de pare, de forma que um veículo autônomo a classifique como uma placa de convergência ou de limite de velocidade.
A McAfee atacou o antigo sistema Mobileye da Tesla, enganando-o para que conduzisse 50 mph acima do limite de velocidade, simplesmente adicionando uma faixa de duas polegadas de fita preta a um sinal de limite de velocidade.
Padrões antagônicos em óculos ou roupas projetados para enganar os sistemas de reconhecimento facial ou leitores de placas de veículos levaram a uma indústria de nicho de "roupa urbana furtiva".
Um ataque adversário a uma rede neural pode permitir que um invasor injete algoritmos no sistema de destino. Os pesquisadores também podem criar entradas de áudio adversárias para disfarçar comandos para assistentes inteligentes em áudio de aparência benigna; uma literatura paralela explora a percepção humana de tais estímulos.
Algoritmos de aglomeração são usados em aplicativos de segurança. A análise de malware e vírus de computador visa identificar famílias de malware e gerar assinaturas de detecção específicas.

## Modalidades de ataque
### Taxonomia

Ataques contra algoritmos de aprendizado de máquina (supervisionado) foram categorizados em três eixos principais: influência no classificador, a violação de segurança e sua especificidade.
* Influência do classificador: um ataque pode influenciar o classificador perturbando a fase de classificação. Isso pode ser precedido por uma fase de exploração para identificar vulnerabilidades. Os recursos do invasor podem ser restringidos pela presença de restrições de manipulação de dados.
* Violação de segurança: um ataque pode fornecer dados maliciosos que são classificados como legítimos. Dados maliciosos fornecidos durante o treinamento podem fazer com que dados legítimos sejam rejeitados após o treinamento.
* Especificidade: um ataque direcionado tenta permitir uma intrusão/perturbação específica. Como alternativa, um ataque indiscriminado cria um caos geral.
Essa taxonomia foi estendida para um modelo de ameaça mais abrangente que permite suposições explícitas sobre o objetivo do adversário, o conhecimento do sistema atacado, a capacidade de manipular os dados de entrada/componentes do sistema e a estratégia de ataque. Essa taxonomia foi estendida para incluir dimensões para estratégias de defesa contra ataques adversos. Alguns dos principais cenários de ataque são:

### Estratégias
#### Evasão

Ataques de evasão são o tipo de ataque mais prevalente. Por exemplo, spammers e hackers frequentemente tentam escapar da detecção ofuscando o conteúdo de e-mails de spam e malware. As amostras são modificadas para evitar a detecção; ou seja, para ser classificado como legítimas. Isso não envolve influência sobre os dados de treinamento. Um exemplo claro de evasão é o spam baseado em imagens, no qual o conteúdo do spam é incorporado a uma imagem anexada para evitar a análise textual por filtros anti-spam. Outro exemplo de evasão é dado por ataques de spoofing contra sistemas de verificação biométrica.

#### Envenenamento

O envenenamento é a contaminação adversária dos dados de treinamento. Os sistemas de aprendizado de máquina podem ser treinados novamente usando dados coletados durante as operações. Por exemplo, os sistemas de detecção de intrusão (IDSs) são frequentemente treinados novamente usando esses dados. Um invasor pode envenenar esses dados ao injetar amostras maliciosas durante a operação que, subsequentemente, afetam o retreinamento.

#### Roubo de modelo

O roubo de modelo (também chamado de extração de modelo) envolve um adversário sondando um sistema de aprendizado de máquina como uma caixa preta para reconstruir o modelo ou extrair os dados em que foi treinado. Isso pode causar problemas quando os dados de treinamento ou o próprio modelo são sensíveis e confidenciais. Por exemplo, o roubo de modelo pode ser usado para extrair um modelo de negociação de ações proprietário que o adversário pode então usar para seu próprio benefício financeiro.

## Tipos de ataques específicos

Há uma grande variedade de ataques adversários diferentes que podem ser usados contra sistemas de aprendizado de máquina. Muitos deles funcionam tanto em sistemas de aprendizado profundo quanto em modelos tradicionais de aprendizado de máquina, como SVMs e regressão linear. Uma amostra de alto nível desses tipos de ataque inclui:
* Exemplos Adversários
* Ataques de Trojan/Ataques de backdoor
* Inversão do modelo
* Inferência de pertencimento

### Exemplos adversários

Um exemplo adversário refere-se a uma entrada especialmente criada que é projetada para parecer "normal" para humanos, mas causa classificação incorreta para um modelo de aprendizado de máquina. Frequentemente, uma forma de "ruído" especialmente projetada é usada para induzir as classificações erradas. Abaixo estão algumas técnicas atuais para gerar exemplos adversários na literatura (de forma alguma uma lista exaustiva).
* Método de sinal de gradiente rápido (FGSM)
* Gradiente descendente projetado (PGD)
* Ataque de Carlini e Wagner (C&W)
* Ataque de patch adversário

## Defesas

Os pesquisadores propuseram uma abordagem de várias etapas para proteger o aprendizado de máquina.
* Modelagem de ameaças - formalize os objetivos e recursos dos invasores em relação ao sistema alvo.
* Simulação de ataque - formaliza o problema de otimização que o invasor tenta resolver de acordo com as possíveis estratégias de ataque.
* Avaliação do impacto do ataque
* Projeto de contramedida
* Detecção de ruído (para ataques baseado em evasão)
* Lavagem de informações - Alterar as informações recebidas por adversários (para ataques de roubo de modelos)

### Mecanismos

Vários mecanismos de defesa contra ataques de evasão, envenenamento e privacidade foram propostos, incluindo:
* Algoritmos seguros de aprendizagem
* Sistemas classificadores múltiplos
* Algoritmos escritos por IA.
* IAs que exploram o ambiente de treinamento; por exemplo, no reconhecimento de imagem, navegar ativamente em um ambiente 3D em vez de digitalizar passivamente um conjunto fixo de imagens 2D.
* Aprendizagem que preserva a privacidade
* Algoritmo Ladder para competições no estilo Kaggle
* Modelos baseados em teoria de jogos
* Sanitização dos dados de treinamento
* Treinamento adversário
* Algoritmos de detecção de backdoor

## Programas

Bibliotecas de software disponíveis, principalmente para teste e pesquisa.
* AdversariaLib - inclui a implementação de ataques de evasão
* AdLib - biblioteca Python com uma interface no estilo scikit que inclui implementações de uma série de ataques de evasão e defesas publicados
* AlfaSVMLib - Adversarial Label Flip Attacks contra máquinas de vetores de suporte
* Ataques de envenenamento contra máquinas de vetores de suporte e ataques contra algoritmos de agrupamento
* deep-pwning - Metasploit para aprendizado profundo que atualmente tem ataques em redes neurais profundas usando Tensorflow. Esta estrutura atualmente é atualizada para manter a compatibilidade com as versões mais recentes do Python.
* Cleverhans - uma biblioteca Tensorflow para testar modelos de aprendizado profundo existentes contra ataques conhecidos
* foolbox - Biblioteca Python para criar exemplos adversários, implementa ataques múltiplos
* SecML - Biblioteca Python para aprendizado de máquina seguro e explicável - inclui a implementação de uma ampla gama de algoritmos de ML e de ataque, suporte para dados densos e esparsos, multiprocessamento e ferramentas de visualização.
* TrojAI - Biblioteca Python para gerar modelos backdoored e trojaned em escala para pesquisa de detecção de trojan
* Adversarial Robustness Toolkit (IBM ART) - Biblioteca Python para Segurança de Aprendizado de Máquina
* Advertorch - caixa de ferramentas Python para pesquisa de robustez adversária cujas funções principais são implementadas em PyTorch