Adversarial machine learning: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m smistamento lavoro sporco e fix vari |
m Bot: numeri di pagina nei template citazione |
||
(7 versioni intermedie di 5 utenti non mostrate) | |||
Riga 1:
'''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<ref>{{Cita pubblicazione|nome=Alexey|cognome=Kurakin|nome2=Ian J.|cognome2=Goodfellow|nome3=Samy|cognome3=Bengio|data=3 novembre 2016|titolo=Adversarial Machine Learning at Scale|lingua=en|accesso=14 giugno 2021|url=https://openreview.net/forum?id=BJm4T4Kgx}}</ref>:
== Modalità di attacco ==
Riga 5:
=== 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<ref name=":0">{{Cita pubblicazione|nome=Battista|cognome=Biggio|nome2=Blaine|cognome2=Nelson|nome3=Pavel|cognome3=Laskov|data=25 marzo 2013|titolo=Poisoning Attacks against Support Vector Machines|rivista=arXiv:1206.6389 [cs, stat]|accesso=15 giugno 2021|url=http://arxiv.org/abs/1206.6389}}</ref>. Varianti di questo tipo di attacco esistono per diversi modelli, sia nel caso dell'[[apprendimento supervisionato]]<ref name=":0" /><ref>{{Cita pubblicazione|nome=Benjamin I.P.|cognome=Rubinstein|nome2=Blaine|cognome2=Nelson|nome3=Ling|cognome3=Huang|data=4 novembre 2009|titolo=ANTIDOTE: understanding and defending against poisoning of anomaly detectors|rivista=Proceedings of the 9th ACM SIGCOMM conference on Internet measurement|editore=Association for Computing Machinery|pp=
==== Esempio: clustering ====
Nel caso specifico del [[clustering]], lo scopo di un attacco adversarial è quello di massimizzare la [[Distanza (matematica)|distanza]] (definita tramite una qualche appropriata [[Misura (matematica)|misura]]) fra i cluster che si otterrebbero partizionando un dataset <math display="inline">D </math> mediante un determinato algoritmo di clustering e quelli che invece verrebbero prodotti eseguendo lo stesso algoritmo su un dataset <math>D' </math>, ottenuto dall'[[Unione (insiemistica)|unione]] fra <math>D </math> e <math display="inline">A </math>, dove <math>A </math> è l'insieme degli input malevoli inseriti dall'attaccante. Pertanto, l'obiettivo è quello di risolvere il seguente problema di ottimizzazione:
dove <math display="inline">d_C</math> è la misura della distanza inter-cluster adottata, <math display="inline">C</math> è l'insieme dei cluster ottenuto sul [[dataset]] originale <math display="inline">D</math> ed <math>f_D </math> è definito come <math display="inline">\pi_D \circ f </math>, dove <math display="inline">f </math> è la funzione di clustering scelta e alla quale viene applicata la [[Proiezione (geometria)|proiezione]] <math display="inline">\pi_D </math>, la quale restringe l'output del clustering ai soli campioni originali appartenenti a <math display="inline">D </math>. La proiezione è richiesta in quanto lo scopo dell'attacco è quello di ''peggiorare'' il clustering per gli input leciti<ref name=":1" />.
=== 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 [[Intervallo di confidenza|confidenza]] del modello per quel campione<ref name=":3">{{Cita pubblicazione|nome=Nicolas|cognome=Papernot|nome2=Patrick|cognome2=McDaniel|nome3=Somesh|cognome3=Jha|data=23 novembre 2015|titolo=The Limitations of Deep Learning in Adversarial Settings|rivista=arXiv:1511.07528 [cs, stat]|accesso=15 giugno 2021|url=http://arxiv.org/abs/1511.07528}}</ref>. Più formalmente, possiamo descrivere un attacco di tipo obfuscation come il seguente problema di ottimizzazione:
dove <math display="inline">\delta_X</math> è un vettore contenente la perturbazione da aggiungere al campione <math display="inline">X</math>, <math>F</math> è la funzione approssimata dall'algoritmo e <math>Y^*</math>è la classe obiettivo che l'attaccante vuole ottenere per <math display="inline">X</math>.
Riga 23:
===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.<ref>{{
<math>adv_x = x + \epsilon \cdot sign(\Delta_xJ(\theta, x, y))</math><ref name=":11">{{Cita web|titolo=Adversarial example using FGSM TensorFlow Core|url=https://www.tensorflow.org/tutorials/generative/adversarial_fgsm|accesso=24 ottobre 2021|sito=TensorFlow|lingua=en}}</ref>
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 <math display="inline">y</math>. 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.<ref>{{cita web|url=https://qualified.one/blog/data_science/overfitting-adversarial-training/|sito=Qualified.One|data=29 novembre 2022|titolo=Overfitting adversarial training}}</ref>
==== Esempio: reti neurali artificiali ====
Nel caso specifico delle [[Rete neurale artificiale|reti neurali artificiali]], un metodo per calcolare <math display="inline">X + \delta_X</math> a partire dal campione <math display="inline">X</math> è quello di sfruttare la [[matrice jacobiana]] di <math>F</math>. Essa può essere usata per costruire una ''mappa di salienza'', ovvero una mappa che include le [[Caratteristica (apprendimento automatico)|caratteristiche]] da integrare nella perturbazione espressa tramite il vettore <math>\delta_X</math>, per far sì che un determinato output possa essere riprodotto da <math>F</math>. Infine, dopo aver generato queste mappe, le corrispondenti modifiche dovranno essere effettivamente apportate ad <math>X</math> o alla sua rappresentazione vettoriale<ref name=":3" /><ref>{{Cita pubblicazione|nome=Kathrin|cognome=Grosse|nome2=Nicolas|cognome2=Papernot|nome3=Praveen|cognome3=Manoharan|data=2017|titolo=Adversarial Examples for Malware Detection|rivista=Computer Security – ESORICS 2017|editore=Springer International Publishing|pp=
=== 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<ref name=":2" /> (il quale potrebbe essere protetto da [[diritto d'autore]]) che per inferire informazioni private o sensibili sul dataset usato durante il suo training<ref>{{Cita pubblicazione|nome=Samuel|cognome=Yeom|nome2=Irene|cognome2=Giacomelli|nome3=Matt|cognome3=Fredrikson|data=4 maggio 2018|titolo=Privacy Risk in Machine Learning: Analyzing the Connection to Overfitting|rivista=arXiv:1709.01604 [cs, stat]|accesso=16 giugno 2021|url=http://arxiv.org/abs/1709.01604}}</ref><ref>{{Cita pubblicazione|nome=Reza|cognome=Shokri|nome2=Marco|cognome2=Stronati|nome3=Congzheng|cognome3=Song|data=31 marzo 2017|titolo=Membership Inference Attacks against Machine Learning Models|rivista=arXiv:1610.05820 [cs, stat]|accesso=16 giugno 2021|url=http://arxiv.org/abs/1610.05820}}</ref><ref>{{Cita pubblicazione|nome=Xi|cognome=Wu|nome2=Matthew|cognome2=Fredrikson|nome3=Somesh|cognome3=Jha|data=2016-06|titolo=A Methodology for Formalizing Model-Inversion Attacks|rivista=2016 IEEE 29th Computer Security Foundations Symposium (CSF)|pp=
==== Esempio: clonazione di un modello ====
Riga 49:
* 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<ref>{{Cita pubblicazione|nome=Ling|cognome=Huang|nome2=Anthony D.|cognome2=Joseph|nome3=Blaine|cognome3=Nelson|data=21 ottobre 2011|titolo=Adversarial machine learning|rivista=Proceedings of the 4th ACM workshop on Security and artificial intelligence|editore=Association for Computing Machinery|pp=
* 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;
Riga 58:
== 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).
[[File:
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<ref>{{Cita pubblicazione|nome=Ian J.|cognome=Goodfellow|nome2=Jonathon|cognome2=Shlens|nome3=Christian|cognome3=Szegedy|data=20 marzo 2015|titolo=Explaining and Harnessing Adversarial Examples|rivista=arXiv:1412.6572 [cs, stat]|accesso=17 giugno 2021|url=http://arxiv.org/abs/1412.6572}}</ref>. 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<ref>{{Cita pubblicazione|nome=Kathrin|cognome=Grosse|nome2=Nicolas|cognome2=Papernot|nome3=Praveen|cognome3=Manoharan|data=16 giugno 2016|titolo=Adversarial Perturbations Against Deep Neural Networks for Malware Classification|rivista=arXiv:1606.04435 [cs]|accesso=17 giugno 2021|url=http://arxiv.org/abs/1606.04435}}</ref>. Un'altra strategia proposta in letteratura è quella del distillation, una tecnica che in origine era stata sviluppata con lo scopo di generare una [[Apprendimento profondo|rete neurale artificiale profonda]] a partire da una più grande<ref>{{Cita pubblicazione|nome=Geoffrey|cognome=Hinton|nome2=Oriol|cognome2=Vinyals|nome3=Jeff|cognome3=Dean|data=9 marzo 2015|titolo=Distilling the Knowledge in a Neural Network|rivista=arXiv:1503.02531 [cs, stat]|accesso=17 giugno 2021|url=http://arxiv.org/abs/1503.02531}}</ref>. Nel [[Caso d'uso (informatica)|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<ref>{{Cita pubblicazione|nome=Nicolas|cognome=Papernot|nome2=Patrick|cognome2=McDaniel|nome3=Xi|cognome3=Wu|data=14 marzo 2016|titolo=Distillation as a Defense to Adversarial Perturbations against Deep Neural Networks|rivista=arXiv:1511.04508 [cs, stat]|accesso=17 giugno 2021|url=http://arxiv.org/abs/1511.04508}}</ref>.
Altri metodi noti includono:
* sistemi di classificazione che combinano più modelli insieme<ref>{{Cita pubblicazione|nome=Battista|cognome=Biggio|nome2=Giorgio|cognome2=Fumera|nome3=Fabio|cognome3=Roli|data=2010|titolo=Multiple Classifier Systems for Robust Classifier Design in Adversarial Environments|rivista=Journal of Machine Learning and Cybernetics|volume=1|pp=
* algoritmi di apprendimento che permettono di preservare la privacy dei dati usati (attraverso ad esempio l'utilizzo di tecniche di privacy differenziale<ref>{{Cita pubblicazione|nome=Battista|cognome=Biggio|nome2=Igino|cognome2=Corona|nome3=Blaine|cognome3=Nelson|data=29 gennaio 2014|titolo=Security Evaluation of Support Vector Machines in Adversarial Environments|rivista=arXiv:1401.7727 [cs]|accesso=17 giugno 2021|url=http://arxiv.org/abs/1401.7727}}</ref><ref>{{Cita pubblicazione|nome=Benjamin I. P.|cognome=Rubinstein|nome2=Peter L.|cognome2=Bartlett|nome3=Ling|cognome3=Huang|data=30 novembre 2009|titolo=Learning in a Large Function Space: Privacy-Preserving Mechanisms for SVM Learning|rivista=arXiv:0911.5708 [cs]|accesso=17 giugno 2021|url=http://arxiv.org/abs/0911.5708}}</ref>);
* algoritmi di apprendimento intelligenti in grado di anticipare le mosse di un attaccante<ref>{{Cita pubblicazione|nome=Ofer|cognome=Dekel|nome2=Ohad|cognome2=Shamir|nome3=Lin|cognome3=Xiao|data=1º novembre 2010|titolo=Learning to classify with missing and corrupted features|rivista=Machine Learning|volume=81|numero=2|pp=
A questi si aggiungono metodi aspecifici come quello della sanitizzazione degli input<ref>{{Cita web|url=https://www.webopedia.com/definitions/input-sanitization/|titolo=What is Input Sanitization? {{!}} Webopedia Definition|sito=Webopedia|data=7 agosto 2020|lingua=en|accesso=17 giugno 2021}}</ref> o la rilevazione automatica di [[backdoor]]<ref>{{Cita web|url=https://www.iarpa.gov/index.php/research-programs/trojai|titolo=TrojAI|accesso=17 giugno 2021}}</ref>.
== 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<ref>{{Cita web|url=https://www.semanticscholar.org/paper/A-Survey-on-Machine-Learning%3A-Concept%2CAlgorithms-Das-Behera/4d7855b8e5ef36acd4ac41deef596e67ac899e76|titolo=A Survey on Machine Learning: Concept,Algorithms and Applications|autore=Kajaree Das, R. Behera|sito=undefined|data=2017|lingua=en|accesso=17 giugno 2021}}</ref>. Tuttavia, la loro introduzione in problemi tipici della sicurezza informatica (ad esempio, l'identificazione di email contenenti [[phishing]]<ref>{{Cita pubblicazione|nome=Saeed|cognome=Abu-Nimeh|nome2=Dario|cognome2=Nappa|nome3=Xinlei|cognome3=Wang|data=4 ottobre 2007|titolo=A comparison of machine learning techniques for phishing detection|rivista=Proceedings of the anti-phishing working groups 2nd annual eCrime researchers summit|editore=Association for Computing Machinery|pp=
=== 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<ref>{{Cita pubblicazione|nome=Michael|cognome=Bailey|nome2=Jon|cognome2=Oberheide|nome3=Jon|cognome3=Andersen|data=2007|titolo=Automated Classification and Analysis of Internet Malware|rivista=Recent Advances in Intrusion Detection|editore=Springer|pp=
== Voci correlate ==▼
*[[Rete generativa avversaria]]▼
== Note ==
<references />
▲== Voci correlate ==
▲*[[Rete generativa avversaria]]
{{Apprendimento automatico}}
|