# Adversarial machine learning

Adversarial machine learning (Apprendimento automatico antagonistico) è una serie di tecniche volte a compromettere il corretto funzionamento di un sistema informatico che faccia uso di algoritmi di apprendimento automatico, tramite la costruzione di input speciali in grado di ingannare tali algoritmi: nello specifico, lo scopo di tali tecniche è quello di causare la classificazione errata in uno di questi algoritmi. Inoltre, nel caso specifico dell'apprendimento supervisionato, è possibile costruire particolari input in grado di far trapelare informazioni sul training set usato, o di permettere la clonazione del modello stesso.

## Modalità di attacco

Le tre modalità di attacco più comuni sono quelle del poisoning, dell'obfuscation e del model extraction.

### Poisoning

Lo scopo di un attacco di tipo poisoning è quello di diminuire il più possibile l'accuratezza di un determinato modello per tutti i possibili input. Varianti di questo tipo di attacco esistono per diversi modelli, sia nel caso dell'apprendimento supervisionato che di quello non supervisionato: nel primo caso, il poisoning del modello avviene durante la fase di addestramento dell'algoritmo. Da un punto di vista della sicurezza informatica, il poisoning fa parte di una classe di attacchi definiti come denial of service.

#### Esempio: clustering

Nel caso specifico del clustering, lo scopo di un attacco adversarial è quello di massimizzare la distanza (definita tramite una qualche appropriata misura) fra i cluster che si otterrebbero partizionando un dataset D{\textstyle D} mediante un determinato algoritmo di clustering e quelli che invece verrebbero prodotti eseguendo lo stesso algoritmo su un dataset $D'$, ottenuto dall'unione fra $D$ e A{\textstyle A}, dove $A$ è l'insieme degli input malevoli inseriti dall'attaccante. Pertanto, l'obiettivo è quello di risolvere il seguente problema di ottimizzazione:
$\max \ d_{C}(C,\ f_{D}(D\cup A))$
dove d$_C${\textstyle d_{C}} è la misura della distanza inter-cluster adottata, C{\textstyle C} è l'insieme dei cluster ottenuto sul dataset originale D{\textstyle D} ed $f_{D}$ è definito come π$_D$∘f{\textstyle \pi _{D}\circ f}, dove f{\textstyle f} è la funzione di clustering scelta e alla quale viene applicata la proiezione π$_D${\textstyle \pi _{D}}, la quale restringe l'output del clustering ai soli campioni originali appartenenti a D{\textstyle D}. La proiezione è richiesta in quanto lo scopo dell'attacco è quello di peggiorare il clustering per gli input leciti.

### Obfuscation - Offuscamento o evasione

L'obiettivo di un attacco di tipo obfuscation (anche detto di evasion) è quello di violare l'integrità di un modello di apprendimento automatico. Durante un attacco di tipo obfuscation, l'attaccante modifica un determinato campione con l'obiettivo di ottenere come output dal classificatore una classe che è diversa dalla sua reale classe di appartenenza; in alternativa, l'attacco potrebbe più semplicemente tentare di diminuire la confidenza del modello per quel campione. Più formalmente, possiamo descrivere un attacco di tipo obfuscation come il seguente problema di ottimizzazione:
$\arg \min \lVert \delta _{X}\rVert$ s.t. $F(X+\delta _{X})=Y^{*}$
dove δ$_X${\textstyle \delta _{X}} è un vettore contenente la perturbazione da aggiungere al campione X{\textstyle X}, $F$ è la funzione approssimata dall'algoritmo e $Y^{*}$è la classe obiettivo che l'attaccante vuole ottenere per X{\textstyle X}.

### Fast Gradient Sign Method (FGSM)

Uno dei primissimi attacchi proposti per la generazione di esempi avversari è stato proposto dai ricercatori di Google Ian J. Goodfellow, Jonathon Shlens e Christian Szegedy. L'attacco è stato chiamato metodo del segno del gradiente veloce e consiste nell'aggiungere all'immagine una quantità lineare di rumore non percepibile e nel far sì che il modello la classifichi in modo errato. Questo rumore viene calcolato moltiplicando il segno del gradiente rispetto all'immagine che si vuole perturbare per una piccola costante epsilon. All'aumentare di epsilon, il modello ha maggiori probabilità di essere ingannato, ma anche le perturbazioni diventano più facili da identificare. Di seguito è riportata l'equazione per generare un esempio avversario in cui x{\textstyle x} è l'immagine originale, ϵ{\textstyle \epsilon } è un numero molto piccolo, Δ$_x${\textstyle \Delta _{x}} è la funzione gradiente, J{\textstyle J} è la funzione di perdita, θ{\textstyle \theta } sono i pesi del modello e y{\textstyle y} è l'etichetta vera.
$adv_{x}=x+\epsilon \cdot sign(\Delta _{x}J(\theta ,x,y))$
Una proprietà importante di questa equazione è che il gradiente viene calcolato rispetto all'immagine di input, poiché l'obiettivo è generare un'immagine che massimizzi la perdita per l'immagine originale dell'etichetta vera y{\textstyle y}. Nella discesa del gradiente tradizionale (per l'addestramento del modello), il gradiente viene utilizzato per aggiornare i pesi del modello, poiché l'obiettivo è minimizzare la perdita per il modello su un dataset di verità a terra. Il metodo Fast Gradient Sign è stato proposto come un modo veloce per generare esempi avversari per eludere il modello, basandosi sull'ipotesi che le reti neurali non possono resistere nemmeno a quantità lineari di perturbazioni dell'input.

#### Esempio: reti neurali artificiali

Nel caso specifico delle reti neurali artificiali, un metodo per calcolare X+δ$_X${\textstyle X+\delta _{X}} a partire dal campione X{\textstyle X} è quello di sfruttare la matrice jacobiana di $F$. Essa può essere usata per costruire una mappa di salienza, ovvero una mappa che include le caratteristiche da integrare nella perturbazione espressa tramite il vettore $\delta _{X}$, per far sì che un determinato output possa essere riprodotto da $F$. Infine, dopo aver generato queste mappe, le corrispondenti modifiche dovranno essere effettivamente apportate ad $X$ o alla sua rappresentazione vettoriale.

### Model extraction - Estrazione del modello

L'ultima classe di attacchi è quella del model extraction (anche nota come model stealing). Mentre il poisoning e l'obfuscation rientravano nelle categorie di attacchi che andavano a violare, rispettivamente, il funzionamento generale di un modello e l'integrità di un modello per determinati input, nel caso del model extraction si considera, invece, una violazione della sua confidentiality. Tali attacchi possono essere usati sia per clonare un determinato modello (il quale potrebbe essere protetto da diritto d'autore) che per inferire informazioni private o sensibili sul dataset usato durante il suo training.

#### Esempio: clonazione di un modello

È possibile clonare un determinato modello di apprendimento automatico (ad esempio, un modello di elaborazione del linguaggio naturale) utilizzando un numero finito di interrogazioni al modello stesso. L'idea è quella di sfruttare gli output ricevuti dal modello originale per addestrare un modello clone. Inoltre, in alcuni casi è possibile anche utilizzare interrogazioni generate casualmente.

## Threat modeling - Modellazione della minaccia

Parallelamente ad altri problemi in sicurezza informatica, anche nel caso dell'adversarial machine learning è importante definire un threat model. Il threat modeling è un processo attraverso il quale si cercano di identificare e quantificare le vulnerabilità e le potenziali minacce a cui un sistema informatico potrebbe andare incontro. Nel caso specifico dell'adversarial machine learning, siamo interessati al tipo di conoscenza che un attaccante ha nei confronti del modello, e alle capacità di controllo e manipolazione che esso può esercitare sul modello e sui dataset su cui quest'ultimo lavora.
Per quanto concerne la conoscenza che l'attaccante ha di un determinato modello, essa può essere suddivisa nelle seguenti categorie:
* conoscenza del dataset (nel caso dell'apprendimento supervisionato, il dataset è quello usato per l'addestramento);
* conoscenza dell'algoritmo;
* conoscenza dell'insieme delle caratteristiche (feature space);
* conoscenza di parametri esterni che potrebbero essere usati per configurare l'algoritmo;
* conoscenza totale del modello.
Per quanto riguarda invece le capacità dell'avversario, esse possono essere categorizzate come causative o esplorative, nel caso dell'apprendimento supervisionato, oppure soltanto come causative nel caso dell'apprendimento non supervisionato:
* per capacità causativa si intende, nel caso dell'apprendimento supervisionato, la possibilità di influenzare sia il dataset usato per l'addestramento che quello usato per il test, mentre, nel caso dell'apprendimento non supervisionato (ad esempio del clustering), si intende la capacità di influenzare o modificare il dataset unico;
* per capacità esplorative si intende la possibilità da parte dell'attaccante di scoprire ulteriori informazioni sul modello sotto attacco manipolandone il solo test dataset.
Infine, l'attaccante potrebbe essere limitato nel numero massimo di modifiche che può apportare agli input. La ragione per questo ulteriore limite risiede nel fatto che eccessive modifiche potrebbero manomettere o snaturare eccessivamente l'input: questo è particolarmente vero nel caso degli attacchi di tipo obfuscation, in cui un attaccante vuole offuscare un determinato input in modo tale che esso venga etichettato dal modello come appartenente ad un'altra classe, ma senza che esso venga realmente trasformato in un membro di quella classe. Si pensi, ad esempio, ad un attaccante che intende modificare un malware per far sì che questo riesca ad eludere un classificatore: l'obiettivo dell'attaccante è, in questo caso, quello di far apparire il programma malevolo come "lecito" agli occhi del classificatore, tuttavia preservandone le funzionalità (malevole) originali; l'attaccante sarà pertanto limitato nel numero e nella tipologia di modifiche che potrà apportare al programma.

## Difese

Sono stati proposti diversi meccanismi di difesa contro gli attacchi di tipo adversarial. Tuttavia, è importante ricordare che, come in tutti gli altri contesti applicativi della sicurezza informatica, anche nell'adversarial machine learning i meccanismi di difesa dovranno essere aggiornati per contrastare i più recenti attacchi sviluppati contro di loro, in quella che in gergo è definita come "arms race" (corsa alle armi).
Alcune strategie di difesa dipendono dal modello e dal tipo di apprendimento. Ad esempio, nel caso dell'addestramento supervisionato, uno dei metodi maggiormente noti per contrastare attacchi di tipo obfuscation è quello dell'adversarial training. Esso consiste nel ri-addestrare il modello includendo alcuni campioni malevoli, a cui è tuttavia associata la loro corretta classe di appartenenza. In questo modo il modello imparerà ad associare il campione alla sua reale classe, nonostante le perturbazioni ad esso applicate. Questa tecnica può risultare efficace in molti casi e non richiede cambiamenti speciali al modello. Tuttavia, è necessario calibrare il quantitativo totale di campioni adversarial, in quanto un numero troppo basso potrebbe risultare in un modello poco resistente agli attacchi, mentre un numero troppo elevato potrebbe causare l'overfitting del modello su quel dataset specifico. Un'altra strategia proposta in letteratura è quella del distillation, una tecnica che in origine era stata sviluppata con lo scopo di generare una rete neurale artificiale profonda a partire da una più grande. Nel caso d'uso originale, questo veniva fatto con lo scopo di ottenere una rete neurale meno dispendiosa, in quanto più piccola. Questa strategia è stata in seguito applicata nel contesto dell'adversarial machine learning. L'intuizione è che, diminuendone la dimensione, la rete neurale ottenuta riesca a generalizzare meglio la conoscenza appresa da quella più grande, e sia pertanto più resistente alle perturbazioni.
Altri metodi noti includono:
* sistemi di classificazione che combinano più modelli insieme;
* algoritmi di apprendimento che permettono di preservare la privacy dei dati usati (attraverso ad esempio l'utilizzo di tecniche di privacy differenziale);
* algoritmi di apprendimento intelligenti in grado di anticipare le mosse di un attaccante;
A questi si aggiungono metodi aspecifici come quello della sanitizzazione degli input o la rilevazione automatica di backdoor.

## Impatto

Negli ultimi decenni le tecniche di apprendimento automatico sono state utilizzate nei più svariati domini applicativi, dalle scienze naturali a quelle ingegneristiche, dallo sviluppo di agenti intelligenti alla medicina. Tuttavia, la loro introduzione in problemi tipici della sicurezza informatica (ad esempio, l'identificazione di email contenenti phishing) ha sollevato alcune problematiche inerenti alla loro sicurezza o affidabilità in contesti fortemente avversariali. Questi ultimi non includono esclusivamente le applicazioni classiche della sicurezza informatica, ma anche ambiti emergenti in cui la sicurezza è molto importante, ad esempio quello dei veicoli automatici.

### Un esempio pratico: l'analisi di malware

Una delle applicazioni più promettenti dell'apprendimento automatico è quella dell'analisi automatizzata di malware. In particolare, diversi lavori hanno applicato algoritmi di clustering per determinare in modo automatico la famiglia di appartenenza di eventuali campioni. Tuttavia, essendo l'analisi dei malware un'attività dalla forte componente avversariale, eventuali sistemi di apprendimento automatico devono necessariamente tenere in conto di potenziali attacchi adversarial. È stato infatti dimostrato come l'inserimento di pochi campioni all'interno del dataset (i quali potrebbero essere raccolti inavvertitamente da un honeypot) possa compromettere il risultato dell'intero processo di clustering.