Hackerare una rete neurale

L’intelligenza artificiale ha un futuro brillante nell’ambito della security, una rete neurale in grado di analizzare e discriminare in autonomia falle nel sistema ed eventuali minacce è una risorsa inestimabile. Inoltre un sistema software che basa le sua analisi su funzioni autodeterminate non soggette ai bug come lo sono gli algoritmi tradizionali ha un apparenza inviolabile. Ma è davvero così? No, scopriamo insieme i punti deboli delle RN, le tecniche per sciarpe sviarle e alcune (insufficienti) precauzioni applicabili.

 

Le debolezze di una rete neurale.

Non conosciamo (e non ci interessa conoscere) la logica che sta dietro la distribuzione dei pesi in una rete neurale. Una cosa ben più interessante per un hacker sarebbe capire la tipologia/topologia della rete e avere accesso ai training set utilizzati. E questa è una cosa fattibile, un pool di ricercatori guidato dall’università della North Carolina hanno dimostrato in un paper (https://regmedia.co.uk/2016/09/30/sec16_paper_tramer.pdf) che è possibile estrapolare con semplicità i modelli di apprendimento automatico più comuni.

 

Ma non è solo il modello ad essere a rischio, il reverse engineering quando applicato correttamente va oltre permettendo l’accesso ai dati orignali utilizzati per il ttrainng del modello. Un rischio enorme per la privacy se consideriamo che i big player del machine learnng utilizzano i nostri dati, le nostre immagini, le nostre voci, per allenare i loro sistemi di apprendimento automatico.

 

Un’altra debolezza del machne learnng è di tipo concettuale. Si parte dall’assunto che i dati di training e i dati che il sistema dovrà analizzare siano generati allo stesso modo, che i dati siano campionati dalla stessa distribuzione. Nelle applicazioni reali però non è sempre così e questo gap fa si che il risultato dell’elaborazione diventi soggetto ad influenze esterne in grado di sviarlo.

 

 

Hackeriamo una rete neurale.

Queste debolezze non sono soltanto teoriche; concentriamoci su uno degli ambiti applicativi piú comuni delle reti neurali profonde, ovvero il riconoscimento delle immagini, e cerchiamo di individuarne le implicazioni di sicurezza.

 

Supponiamo di avere una rete neurale addestrata per riconoscere immagini in cui siano presenti delle auto. Forse potrebbe essere un sistema di controllo delle immagini caricate su un marketplace. Come fare a caricare l’immagine di una moto facendola passare per un’auto?

 

Questa è la procedura:

  1. Dai l’immagine in pasto alla rete neurale
  2. Controlla la previsione ottenuta dall’elaborazione della rete neurale
  3. Correggi qualche pixel per modificare il risultato (back propagation) rendendolo più vicino alla previsione desiderata
  4. Assicurati che non ci siano pixel troppo distanti dall’immagine originale, imposta un margine di variazione ridotto per evitare che l’immagine appaia compromessa all’occhio umano
  5. Ripeti dal passo 1

 

Dopo aver ripetuto questi passi qualche migliaio di volte il gioco è fatto, avrai un’immagine in grado di ingannare la rete neurale che crederà che la tua moto sia un’auto. Un simile inganno potrebbe diventare pericoloso se si va oltre le applicazioni comuni; se l’algoritmo gira su un’automobile a pilotaggio autonomo e sia assegnato al riconoscimento dei cartelli stradali, una cattiva interpretazione metterebbe a repentaglio la vita dei passeggeri. E questo è già successo, è stato dimostrato che basta un PostIt per far interpretare un segnale di “STOP” come un semplice limite di velocità. Sconvolgente vero?

Image_Hack_Inline

 

Quindi è evidente che le reti neurali possono essere hackerate, e questo per certi ambiti applicativi è davvero pericoloso. Adesso la domanda sorge spontanea: che si fa?

 

Precauzioni per la sicurezza delle reti neurali.

Non ci sono ancora delle linee guida definitive al riguardo, la sicurezza dele reti neurali è perlopiù un campo inesplorato dove si sta iniziando ora a fare ricerca e sviluppo. Restano comunque valide alcune linee guida che seppur non blindando del tutto il sistema, contribuiscono a renderlo più sicuro.

 

  • Aggiungi sorgenti dati “hackerate” ai training set per rendere l’autoapprendimento più robusto. Funziona? Ni . . . le reti risultano più robuste ma non inviolabili.
  • La tecnica della Defensive Distillation prevede due reti neurali avversarie che provano ad ingannarsi a vicenda. Funziona? Ni . . . La rete diventa più resistente ad attacchi esterni ma è stato dimostrato che resti violabile.
  • Scegli training set quanto più variegati possibile, la sorgente dei campioni deve rispecchiare in modo completo i dati che saranno analizzati in produzione. Funziona? Ni . . . è utile per evitare cattive interpretazioni involontarie ma non per riconoscere attacchi mirati.
  • Non usare i risultati dell’apprendimento automatico come unico sistema di controllo in sistemi critici. Funziona? Si, i controlli ridondanti rendono i sistemi critici robusti.
  • Quando possibile prevedi un analisi comparativa con dati da altre sorgenti per validare i risultati dell’apprendimento automatico. Funziona? Si, se la comparazione è positiva il rischio che si tratti di un falso positivo diminuisce drasticamente.

 

L’universo dell’apprendimento automatico è esplorato da decenni ma molto resta ancora da capire e molto resta ancora da fare in ambito sicurezza. I processori quantistici aggiungeranno ulteriori capacità ma anche ulteriore complessità alle reti neurali, strumenti che saranno capaci di cose sempre più straordinarie. Strumenti che andranno protetti al meglio, chi sarà in grado di farlo?