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[1]: più 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[2].
Modalità di attacco
[modifica | modifica wikitesto]Le tre modalità di attacco più comuni sono quelle del poisoning, dell'obfuscation e del model extraction.
Poisoning
[modifica | modifica wikitesto]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[3]. Varianti di questo tipo di attacco esistono per diversi modelli, sia nel caso dell'apprendimento supervisionato[3][4][5] che di quello non supervisionato[6][7]: 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
[modifica | modifica wikitesto]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 mediante un determinato algoritmo di clustering e quelli che invece verrebbero prodotti eseguendo lo stesso algoritmo su un dataset , ottenuto dall'unione fra e , dove è l'insieme degli input malevoli inseriti dall'attaccante. Pertanto, l'obiettivo è quello di risolvere il seguente problema di ottimizzazione:
dove è la misura della distanza inter-cluster adottata, è l'insieme dei cluster ottenuto sul dataset originale ed è definito come , dove è la funzione di clustering scelta e alla quale viene applicata la proiezione , la quale restringe l'output del clustering ai soli campioni originali appartenenti a . La proiezione è richiesta in quanto lo scopo dell'attacco è quello di peggiorare il clustering per gli input leciti[6].
Obfuscation - Offuscamento o evasione
[modifica | modifica wikitesto]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[8]. Più formalmente, possiamo descrivere un attacco di tipo obfuscation come il seguente problema di ottimizzazione:
s.t.
dove è un vettore contenente la perturbazione da aggiungere al campione , è la funzione approssimata dall'algoritmo e è la classe obiettivo che l'attaccante vuole ottenere per .
Fast Gradient Sign Method (FGSM)
[modifica | modifica wikitesto]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.[9] 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 è l'immagine originale, è un numero molto piccolo, è la funzione gradiente, è la funzione di perdita, sono i pesi del modello e è l'etichetta vera.[10]
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 . 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.[12]
Esempio: reti neurali artificiali
[modifica | modifica wikitesto]Nel caso specifico delle reti neurali artificiali, un metodo per calcolare a partire dal campione è quello di sfruttare la matrice jacobiana di . 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 , per far sì che un determinato output possa essere riprodotto da . Infine, dopo aver generato queste mappe, le corrispondenti modifiche dovranno essere effettivamente apportate ad o alla sua rappresentazione vettoriale[8][13].
Model extraction - Estrazione del modello
[modifica | modifica wikitesto]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[2] (il quale potrebbe essere protetto da diritto d'autore) che per inferire informazioni private o sensibili sul dataset usato durante il suo training[14][15][16][17][18].
Esempio: clonazione di un modello
[modifica | modifica wikitesto]È 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[19][20]. 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[2].
Threat modeling - Modellazione della minaccia
[modifica | modifica wikitesto]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[21]. 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[6]:
- 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[22][23], oppure soltanto come causative nel caso dell'apprendimento non supervisionato[6]:
- 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
[modifica | modifica wikitesto]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[24]. 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[25]. 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[26]. 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[27].
Altri metodi noti includono:
- sistemi di classificazione che combinano più modelli insieme[28][29];
- algoritmi di apprendimento che permettono di preservare la privacy dei dati usati (attraverso ad esempio l'utilizzo di tecniche di privacy differenziale[30][31]);
- algoritmi di apprendimento intelligenti in grado di anticipare le mosse di un attaccante[32];
A questi si aggiungono metodi aspecifici come quello della sanitizzazione degli input[33] o la rilevazione automatica di backdoor[34].
Impatto
[modifica | modifica wikitesto]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[35]. Tuttavia, la loro introduzione in problemi tipici della sicurezza informatica (ad esempio, l'identificazione di email contenenti phishing[36]) 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[37].
Un esempio pratico: l'analisi di malware
[modifica | modifica wikitesto]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[38][39][40]. 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[7].
Note
[modifica | modifica wikitesto]- ^ (EN) Alexey Kurakin, Ian J. Goodfellow e Samy Bengio, Adversarial Machine Learning at Scale, 3 novembre 2016. URL consultato il 14 giugno 2021.
- ^ a b c Kalpesh Krishna, Gaurav Singh Tomar e Ankur P. Parikh, Thieves on Sesame Street! Model Extraction of BERT-based APIs, in arXiv:1910.12366 [cs], 12 ottobre 2020. URL consultato il 15 giugno 2021.
- ^ a b Battista Biggio, Blaine Nelson e Pavel Laskov, Poisoning Attacks against Support Vector Machines, in arXiv:1206.6389 [cs, stat], 25 marzo 2013. URL consultato il 15 giugno 2021.
- ^ Benjamin I.P. Rubinstein, Blaine Nelson e Ling Huang, ANTIDOTE: understanding and defending against poisoning of anomaly detectors, in Proceedings of the 9th ACM SIGCOMM conference on Internet measurement, Association for Computing Machinery, 4 novembre 2009, pp. 1–14, DOI:10.1145/1644893.1644895. URL consultato il 15 giugno 2021.
- ^ Shike Mei e Xiaojin Zhu, Using machine teaching to identify optimal training-set attacks on machine learners, in Proceedings of the Twenty-Ninth AAAI Conference on Artificial Intelligence, AAAI Press, 25 gennaio 2015, pp. 2871–2877, DOI:10.5555/2886521.2886721. URL consultato il 15 giugno 2021.
- ^ a b c d Battista Biggio, Ignazio Pillai e Samuel Rota Bulò, Is data clustering in adversarial settings secure?, in Proceedings of the 2013 ACM workshop on Artificial intelligence and security, Association for Computing Machinery, 4 novembre 2013, pp. 87–98, DOI:10.1145/2517312.2517321. URL consultato il 15 giugno 2021.
- ^ a b Battista Biggio, Konrad Rieck e Davide Ariu, Poisoning behavioral malware clustering, in Proceedings of the 2014 Workshop on Artificial Intelligent and Security Workshop, Association for Computing Machinery, 7 novembre 2014, pp. 27–36, DOI:10.1145/2666652.2666666. URL consultato il 15 giugno 2021.
- ^ a b Nicolas Papernot, Patrick McDaniel e Somesh Jha, The Limitations of Deep Learning in Adversarial Settings, in arXiv:1511.07528 [cs, stat], 23 novembre 2015. URL consultato il 15 giugno 2021.
- ^ Template:Cite arXiv
- ^ (EN) Ken Tsui, Perhaps the Simplest Introduction of Adversarial Examples Ever, su Medium, 22 agosto 2018. URL consultato il 24 ottobre 2021.
- ^ (EN) Adversarial example using FGSM TensorFlow Core, su TensorFlow. URL consultato il 24 ottobre 2021.
- ^ Overfitting adversarial training, su Qualified.One, 29 novembre 2022.
- ^ (EN) Kathrin Grosse, Nicolas Papernot e Praveen Manoharan, Adversarial Examples for Malware Detection, in Computer Security – ESORICS 2017, Springer International Publishing, 2017, pp. 62–79, DOI:10.1007/978-3-319-66399-9_4. URL consultato il 16 giugno 2021.
- ^ Samuel Yeom, Irene Giacomelli e Matt Fredrikson, Privacy Risk in Machine Learning: Analyzing the Connection to Overfitting, in arXiv:1709.01604 [cs, stat], 4 maggio 2018. URL consultato il 16 giugno 2021.
- ^ Reza Shokri, Marco Stronati e Congzheng Song, Membership Inference Attacks against Machine Learning Models, in arXiv:1610.05820 [cs, stat], 31 marzo 2017. URL consultato il 16 giugno 2021.
- ^ Xi Wu, Matthew Fredrikson e Somesh Jha, A Methodology for Formalizing Model-Inversion Attacks, in 2016 IEEE 29th Computer Security Foundations Symposium (CSF), 2016-06, pp. 355–370, DOI:10.1109/CSF.2016.32. URL consultato il 16 giugno 2021.
- ^ Matt Fredrikson, Somesh Jha e Thomas Ristenpart, Model Inversion Attacks that Exploit Confidence Information and Basic Countermeasures, in Proceedings of the 22nd ACM SIGSAC Conference on Computer and Communications Security, Association for Computing Machinery, 12 ottobre 2015, pp. 1322–1333, DOI:10.1145/2810103.2813677. URL consultato il 16 giugno 2021.
- ^ Giuseppe Ateniese, Giovanni Felici e Luigi V. Mancini, Hacking Smart Machines with Smarter Ones: How to Extract Meaningful Data from Machine Learning Classifiers, in arXiv:1306.4447 [cs, stat], 19 giugno 2013. URL consultato il 16 giugno 2021.
- ^ Florian Tramèr, Fan Zhang e Ari Juels, Stealing Machine Learning Models via Prediction APIs, in arXiv:1609.02943 [cs, stat], 2 ottobre 2016. URL consultato il 16 giugno 2021.
- ^ Tribhuvanesh Orekondy, Bernt Schiele e Mario Fritz, Knockoff Nets: Stealing Functionality of Black-Box Models, in arXiv:1812.02766 [cs], 6 dicembre 2018. URL consultato il 16 giugno 2021.
- ^ (EN) Josh Fruhlinger, Threat modeling explained: A process for anticipating cyber attacks, su CSO Online, 15 aprile 2020. URL consultato il 16 giugno 2021.
- ^ Ling Huang, Anthony D. Joseph e Blaine Nelson, Adversarial machine learning, in Proceedings of the 4th ACM workshop on Security and artificial intelligence, Association for Computing Machinery, 21 ottobre 2011, pp. 43–58, DOI:10.1145/2046684.2046692. URL consultato il 16 giugno 2021.
- ^ Battista Biggio, Giorgio Fumera e Fabio Roli, Security Evaluation of Pattern Classifiers under Attack, in IEEE Transactions on Knowledge and Data Engineering, vol. 26, n. 4, 2014-04, pp. 984–996, DOI:10.1109/TKDE.2013.57. URL consultato il 16 giugno 2021.
- ^ Ian J. Goodfellow, Jonathon Shlens e Christian Szegedy, Explaining and Harnessing Adversarial Examples, in arXiv:1412.6572 [cs, stat], 20 marzo 2015. URL consultato il 17 giugno 2021.
- ^ Kathrin Grosse, Nicolas Papernot e Praveen Manoharan, Adversarial Perturbations Against Deep Neural Networks for Malware Classification, in arXiv:1606.04435 [cs], 16 giugno 2016. URL consultato il 17 giugno 2021.
- ^ Geoffrey Hinton, Oriol Vinyals e Jeff Dean, Distilling the Knowledge in a Neural Network, in arXiv:1503.02531 [cs, stat], 9 marzo 2015. URL consultato il 17 giugno 2021.
- ^ Nicolas Papernot, Patrick McDaniel e Xi Wu, Distillation as a Defense to Adversarial Perturbations against Deep Neural Networks, in arXiv:1511.04508 [cs, stat], 14 marzo 2016. URL consultato il 17 giugno 2021.
- ^ Battista Biggio, Giorgio Fumera e Fabio Roli, Multiple Classifier Systems for Robust Classifier Design in Adversarial Environments, in Journal of Machine Learning and Cybernetics, vol. 1, 2010, pp. 27–41. URL consultato il 17 giugno 2021 (archiviato dall'url originale il 19 gennaio 2023).
- ^ Supervised and Unsupervised Ensemble Methods and Their Applications, vol. 245, Springer Berlin / Heidelberg, 2009. URL consultato il 17 giugno 2021 (archiviato dall'url originale il 15 gennaio 2015).
- ^ Battista Biggio, Igino Corona e Blaine Nelson, Security Evaluation of Support Vector Machines in Adversarial Environments, in arXiv:1401.7727 [cs], 29 gennaio 2014. URL consultato il 17 giugno 2021.
- ^ Benjamin I. P. Rubinstein, Peter L. Bartlett e Ling Huang, Learning in a Large Function Space: Privacy-Preserving Mechanisms for SVM Learning, in arXiv:0911.5708 [cs], 30 novembre 2009. URL consultato il 17 giugno 2021.
- ^ (EN) Ofer Dekel, Ohad Shamir e Lin Xiao, Learning to classify with missing and corrupted features, in Machine Learning, vol. 81, n. 2, 1º novembre 2010, pp. 149–178, DOI:10.1007/s10994-009-5124-8. URL consultato il 17 giugno 2021.
- ^ (EN) What is Input Sanitization? | Webopedia Definition, su Webopedia, 7 agosto 2020. URL consultato il 17 giugno 2021.
- ^ TrojAI, su iarpa.gov. URL consultato il 17 giugno 2021.
- ^ (EN) Kajaree Das, R. Behera, A Survey on Machine Learning: Concept,Algorithms and Applications, su undefined, 2017. URL consultato il 17 giugno 2021.
- ^ Saeed Abu-Nimeh, Dario Nappa e Xinlei Wang, A comparison of machine learning techniques for phishing detection, in Proceedings of the anti-phishing working groups 2nd annual eCrime researchers summit, Association for Computing Machinery, 4 ottobre 2007, pp. 60–69, DOI:10.1145/1299015.1299021. URL consultato il 17 giugno 2021.
- ^ Ivan Studnia, Vincent Nicomette e Eric Alata, Survey on security threats and protection mechanisms in embedded automotive networks, in 2013 43rd Annual IEEE/IFIP Conference on Dependable Systems and Networks Workshop (DSN-W), 2013-06, pp. 1–12, DOI:10.1109/DSNW.2013.6615528. URL consultato il 17 giugno 2021.
- ^ (EN) Michael Bailey, Jon Oberheide e Jon Andersen, Automated Classification and Analysis of Internet Malware, in Recent Advances in Intrusion Detection, Springer, 2007, pp. 178–197, DOI:10.1007/978-3-540-74320-0_10. URL consultato il 17 giugno 2021.
- ^ (EN) Konrad Rieck, Philipp Trinius e Carsten Willems, Automatic analysis of malware behavior using machine learning, in Journal of Computer Security, vol. 19, n. 4, 1º gennaio 2011, pp. 639–668, DOI:10.3233/JCS-2010-0410. URL consultato il 17 giugno 2021.
- ^ (EN) Konrad Rieck, Thorsten Holz e Carsten Willems, Learning and Classification of Malware Behavior, in Detection of Intrusions and Malware, and Vulnerability Assessment, Springer, 2008, pp. 108–125, DOI:10.1007/978-3-540-70542-0_6. URL consultato il 17 giugno 2021.