Il 0% ha trovato utile questo documento (0 voti)
18 visualizzazioni144 pagine

Ai Cyber

Il documento esplora l'applicazione dell'intelligenza artificiale e del machine learning nella sicurezza informatica, analizzando vari concetti e tecniche. Viene trattato il rilevamento di phishing, i sistemi di rilevamento delle intrusioni e le tecniche di rilevamento delle anomalie. Inoltre, il documento discute le applicazioni pratiche dell'IA nella cybersecurity e le sfide associate.
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
18 visualizzazioni144 pagine

Ai Cyber

Il documento esplora l'applicazione dell'intelligenza artificiale e del machine learning nella sicurezza informatica, analizzando vari concetti e tecniche. Viene trattato il rilevamento di phishing, i sistemi di rilevamento delle intrusioni e le tecniche di rilevamento delle anomalie. Inoltre, il documento discute le applicazioni pratiche dell'IA nella cybersecurity e le sfide associate.
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd

Intelligenza Artificiale per la Sicurezza Informatica

Roberto Capolongo

2024/2025
Indice

1 Introduzione all’ Intelligenza Artificiale 4


1.1 Cos’è l’intelligenza? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Cosa si intende per Learning? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Cosa si intende per Intelligenza Artificiale? . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3.1 Intelligenza Artificiale Debole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3.2 Intelligenza Artificiale Forte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4 Cosa si intende per Machine Learning? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.5 Applicazioni dell’Intelligenza Artificiale . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.5.1 Applicazione dell’Intelligenza Artificiale in medicina . . . . . . . . . . . . . . . . . 8
1.5.2 Applicazione dell’Intelligenza Artificiale nella musica . . . . . . . . . . . . . . . . . 8
1.5.3 Applicazione dell’Intelligenza Artificiale nel gaming . . . . . . . . . . . . . . . . . . 8
1.5.4 Applicazione dell’Intelligenza Artificiale nel mercato . . . . . . . . . . . . . . . . . 8
1.5.5 Applicazione dell’Intelligenza Artificiale nella cybersecurity . . . . . . . . . . . . . 8
1.6 Sistemi esperti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2 Introduzione al Machine Learning 14


2.1 Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.2 Apprendimento Supervisionato - Supervised Learning . . . . . . . . . . . . . . . . . . . . 19
2.2.1 Classificazione - Classification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.2.2 Regressione - Regression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.2.3 Regressione Lineare - LinearRegression . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2.4 Support Vector Machine - SVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.2.5 Albero di decision - Decision Tree . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.2.6 Random Forest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.3 Apprendimento non supervisionato - Unsupervised Learning . . . . . . . . . . . . . . . . . 27
2.3.1 Clasterizzazione - Clutering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.3.2 K-Means . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.3.3 K-medoids . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.3.4 Clustering Gerarchico - Hierarchical Clustering . . . . . . . . . . . . . . . . . . . . 40
2.3.5 Clustering Basato sulla Densità - DBSCAN . . . . . . . . . . . . . . . . . . . . . . 43
2.4 Evaluation - Valutazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.4.1 Matrice di Confusione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.4.2 Accuracy (Accuratezza) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.4.3 Precision (Precisione) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.4.4 Recall (Sensibilità o Richiamo) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.4.5 F1 Score . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.4.6 Classificazione Multiclasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.4.7 Curva ROC (Receiver Operating Characteristic) . . . . . . . . . . . . . . . . . . . 57
2.4.8 Curva Precision-Recall (PR Curve) . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
2.4.9 AUC – Area Under the Curve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
2.4.10 Validazione dei cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

1
3 Machine Learning For Cybersecurity 66
3.1 Problemi della Cybersecurity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
3.2 Phishing Detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
3.2.1 Spam vs Phishing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
3.2.2 Componenti di un attacco phishing . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
3.2.3 Machine Learning e Rilevamento del Phishing . . . . . . . . . . . . . . . . . . . . . 69
3.3 Rilevamento Phishing basato su URL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
3.3.1 Data collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
3.3.2 Feature Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
3.3.3 PreProcessing Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
3.3.4 ML Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
3.4 Intrusion Detection System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
3.4.1 Rilevamento delle Intrusioni di Rete . . . . . . . . . . . . . . . . . . . . . . . . . . 72
3.4.2 Data in IDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
3.4.3 Flow Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
3.5 Misuse based detection - Rilevamento su firme . . . . . . . . . . . . . . . . . . . . . . . . 76
3.6 Anomaly-Based Detection - Rilevamento Basato su Anomalie . . . . . . . . . . . . . . . . 77
3.6.1 Local Outlier Factor (LOF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
3.6.2 Isolation Forest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
3.6.3 Snort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
3.7 Malware Detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
3.7.1 Virus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
3.7.2 Worm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
3.7.3 Trojan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
3.7.4 Ransomware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
3.7.5 Zombie e Bot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
3.7.6 Keylogger e Spyware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
3.7.7 Backdoor e Rootkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
3.7.8 Offuscamento del Codice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
3.7.9 Rilevamento del Malware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
3.7.10 Analisi Statica del Malware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
3.7.11 Analisi Dinamica del Malware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

4 Introduzione al Deep Learning 87


4.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
4.2 Artificial Neuron-McCollock and Pitts (1943) . . . . . . . . . . . . . . . . . . . . . . . . . 88
4.3 Funzione di attivazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
4.4 Reti Neurali Multistrato: i Layer Nascosti . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
4.4.1 Architettura Feed-Forward . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
4.4.2 Reti Completamente Connesse (Fully Connected) . . . . . . . . . . . . . . . . . . . 92
4.5 Apprendimento rete neurale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
4.5.1 Chain Rule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
4.5.2 Classificazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
4.5.3 Apprendimento End-to-End . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
4.6 Architetture delle Reti Neurali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
4.6.1 Autoencoder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
4.6.2 Convolutional Neural Networks (CNNs) . . . . . . . . . . . . . . . . . . . . . . . . 104
4.6.3 Generative adversarial networks (GAN) . . . . . . . . . . . . . . . . . . . . . . . . 110
4.6.4 Applicazioni Deep Learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

5 Introduzione all’Adversarial Machine Learning 118


5.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
5.2 Biometria Avversaria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
5.3 Categorizzazione dei campioni avversari . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
5.3.1 Obiettivo dell’attaccante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
5.3.2 Capacità dell’attaccante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
5.3.3 Conoscenza dell’attaccante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
5.4 Addestramento di una rete neurale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
5.5 Iterative multistep algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

2
5.5.1 Project Gradient Descent (PGD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
5.5.2 Jacobian-based Saliency Map Attack (JSMA) . . . . . . . . . . . . . . . . . . . . . 131
5.5.3 Attacco di Carlini & Wagner (CW) . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
5.6 Evasione in modalità black-box basata sulla trasferibilità . . . . . . . . . . . . . . . . . . . 134
5.7 Strategie Difensive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
5.7.1 Difesa Reattiva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
5.7.2 Difesa Proattiva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
5.8 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142

3
Capitolo 1

Introduzione all’ Intelligenza


Artificiale

1.1 Cos’è l’intelligenza?


L’intelligenza umana può essere interpretata in modi diversi da ciascuno di noi, ma si caratterizza prin-
cipalmente come la capacità di:

• Ragionare
• Pianificare
• Risolvere problemi
• Pensare in modo astratto

• Comprendere idee complesse


• Apprendere rapidamente
• Imparare dall’esperienza

1.2 Cosa si intende per Learning?


Con il termine learning, in italiano apprendimento, si intende l’acquisizione di conoscenze o competenze
attraverso lo studio, l’esperienza o l’insegnamento. L’apprendimento è il processo di acquisizione di
conoscenze basato sull’esperienza passata. Impariamo dal passato, anche dai nostri errori, per migliorare
la nostra comprensione e le nostre decisioni future. L’idea è quella di creare macchine capaci di apprendere
dai dati storici per fare previsioni o prendere decisioni sui dati futuri. Questi dati si dividono generalmente
in training data (dati di addestramento) e test data (dati di test). Un algoritmo di apprendimento riceve
in input dei dati e li trasforma in conoscenza, estraendo automaticamente delle “signature” o schemi
ricorrenti, partendo proprio dai dati stessi. Questo processo si basa sull’assunzione che i dati siano
corretti e rappresentativi del problema da risolvere.

1.3 Cosa si intende per Intelligenza Artificiale?


L’intelligenza artificiale è la capacità di un computer di svolgere compiti comunemente associati agli esseri
intelligenti:

• La capacità di risolvere problemi


• La capacità di agire in modo razionale
• La capacità di comportasi come gli esseri umani

4
Un algoritmo di intelligenza artificiale è in grado di eseguire comportamenti simili a quelli umani e di
agire in modo razionale. Tuttavia, non dobbiamo immaginare che un algoritmo ragioni esattamente come
farebbe un essere umano. In realtà, il suo modo di elaborare le informazioni è diverso, ma porta spesso
a conclusioni simili a quelle a cui giungerebbe una persona.

Figure 1.1: Insieme dell’AI

1.3.1 Intelligenza Artificiale Debole


L’intelligenza artificiale debole, conosciuta anche come narrow AI (IA ristretta), è un tipo di intelligenza
artificiale con funzionalità limitate. Utilizza algoritmi per rispondere a compiti specifici di risoluzione
di problemi o ragionamento, senza coprire l’intera gamma delle capacità cognitive umane. Siri e Alexa
possono essere considerate esempi di intelligenza artificiale debole, poiché operano all’interno di un insieme
limitato e predefinito di funzioni, spesso con risposte programmate.

1.3.2 Intelligenza Artificiale Forte


L’intelligenza artificiale forte (Strong AI) sostiene l’idea che le macchine possano davvero sviluppare
una coscienza paragonabile a quella degli esseri umani. Si tratta di macchine o programmi dotati di
una propria mente, capaci di pensare e svolgere compiti complessi in modo autonomo, senza alcuna
interferenza umana. Poiché non esistono ancora esempi reali di intelligenza artificiale forte, la migliore
rappresentazione è quella offerta dai robot nei film di Hollywood.

Figure 1.2: Storia dell’AI

5
Figure 1.3: Evoluzione AI

Figure 1.4: Futuro AI

1.4 Cosa si intende per Machine Learning?


Il machine learning è una parte fondamentale dell’intelligenza artificiale e consiste nella creazione di algo-
ritmi in grado di apprendere automaticamente dai dati. Questi algoritmi imparano dagli esempi, basan-
dosi su principi matematici e algoritmi sofisticati. Il machine learning è l’applicazione dell’intelligenza
artificiale che permette alle macchine di imparare e migliorare senza l’intervento umano o necessità di
nuova programmazione. In sostanza, si studiano algoritmi che apprendono dai dati per risolvere prob-
lemi e fare previsioni. Possiam affermare che dietro al Machine Learning c’è uno studio di algoritmi con
l’ausilio della matematica. Alcune delle definizioni date da esperti:
• “Il Machine Learning è il campo di studio che conferisce ai computer la capacità di apprendere

6
senza essere esplicitamente programmati (A. Samuel, 1959).”
• “Lo scopo del machine learning è costruire sistemi informatici che migliorano automaticamente con
l’esperienza” (Tom M. Mitchell, The Discipline of Machine Learning, 2006).

Terza generazione: Metà degli anni 10 - presente:


• “Il Machine Learning è il campo di studio che conferisce ai computer la capacità di imparare senza
essere esplicitamente programmati (A. Samuel, 1959)”
• “Il Machine Learning è un insieme di metodi che i computer utilizzano per fare e migliorare previsioni
o comportamenti basati sui dati (C. Molnar)”
In passato era l’umano che creava le regole e le dava in pasto agli algoritmi, invece nel machine learning
diamo i dati in input e in output avremo le regole

Figure 1.5: Differenza regole

Figure 1.6: Cambiamento di ragionamento

Nel machine learning, il ragionamento deduttivo e quello induttivo si riferiscono a due approcci dif-
ferenti per trarre conclusioni e costruire modelli. Vediamo le differenze:
• Ragionamento deduttivo: parte da regole generali o conoscenze predefinite e arriva a conclusioni
specifiche. È un processo “dall’alto verso il basso” (top-down). Nel machine learning, questo
potrebbe avvenire quando si parte da ipotesi teoriche ben definite e si applicano a dati nuovi
per fare previsioni. Ad esempio, se sappiamo che tutti i gatti hanno i baffi e vediamo un gatto,
deduciamo che anche questo gatto ha i baffi. In ML, le tecniche basate su modelli logici o sistemi
esperti seguono questo approccio.

7
• Ragionamento induttivo: parte da osservazioni specifiche per arrivare a regole generali. È un
processo “dal basso verso l’alto” (bottom-up). Questo è alla base della maggior parte degli algoritmi
di machine learning: il modello impara dai dati passati per generalizzare su nuovi dati. Ad esempio,
se osserviamo più gatti e notiamo che tutti hanno i baffi, concludiamo che probabilmente tutti i
gatti hanno i baffi. Algoritmi come la regressione, le reti neurali o le foreste casuali si basano su
questo tipo di ragionamento.
Il machine learning, nella pratica, è perlopiù induttivo, anche se esistono modelli ibridi che combinano
entrambi gli approcci.

1.5 Applicazioni dell’Intelligenza Artificiale


1.5.1 Applicazione dell’Intelligenza Artificiale in medicina
Identificazione delle malattie e diagnosi (ad esempio, il cancro nelle fasi iniziali), la diagnosi tramite
immagini mediche, trattamento personalizzato, organizzazione dei letti ospedalieri, rotazione del person-
ale e informazioni mediche. L’applicazione dell’IA in medicina deve supportare il medico, aiutandolo a
identificare aspetti che potrebbero sfuggire nella diagnosi delle malattie. L’idea è di utilizzare l’IA anche
per ottimizzare l’organizzazione dello staff, la gestione delle informazioni mediche negli ospedali e altri
aspetti operativi.

1.5.2 Applicazione dell’Intelligenza Artificiale nella musica


Emulare le attività di un musicista abile, composizione e performance, sistema di raccomandazione su
Spotify, Apple Music e riconoscimento musicale (ad esempio, Shazam) Anche nella musica, come nei sis-
temi di raccomandazione (Spotify, Apple Music), l’IA suggerisce brani che potrebbero piacerci, basandosi
sui nostri gusti o su quelli di utenti con preferenze simili alle nostre. Per il riconoscimento di una canzone,
ad esempio, possiamo utilizzare Shazam.

1.5.3 Applicazione dell’Intelligenza Artificiale nel gaming


Determinare i percorsi ottimali per gli NPC (personaggi non giocanti) per navigare nel mondo di gioco,
evitando ostacoli. AlphaGo Zero (DeepMind) utilizza l’IA nei giochi per giocare a Go, un famoso gioco
da tavolo. AlphaGo è in grado di esaminare il tabellone di gioco e anticipare le mosse dell’avversario.
Bilanciare la complessità in un videogioco ottimizzando l’ecosistema di gioco e migliorando l’esperienza
di gioco attraverso l’analisi dei dati dei giocatori, dei comportamenti e delle statistiche del gioco. Ad
esempio, per bilanciare la complessità del gioco, se un giocatore manifesta determinati comportamenti o
quelli di altri giocatori, il sistema, tramite algoritmi o aggiornamenti, ottimizza la difficoltà per adattarsi
alle sue azioni.

1.5.4 Applicazione dell’Intelligenza Artificiale nel mercato


Raccomandazioni di prodotti, previsione del churn (abbandono dei clienti), supporto tramite chatbot e
assistenti virtuali

1.5.5 Applicazione dell’Intelligenza Artificiale nella cybersecurity


L’IA viene utilizzata sia in ambito offensivo che difensivo.Gli algoritmi di IA possono rilevare e rispon-
dere agli attacchi informatici in tempo reale. E’ possibile effettuare rilevamento di malware, rilevamento
delle intrusioni, rilevamento della revisione dello spam. Sfruttando gli algoritmi di IA, i sistemi di cy-
bersicurezza possono apprendere continuamente dai nuovi dati e adattarsi alle minacce in evoluzione,
migliorando la loro precisione ed efficacia nel rilevare e mitigare gli incidenti di sicurezza. L’IA può essere
utilizzata per sfruttare le vulnerabilità in questo è utile l’ Apprendimento avversariale (Adversarial Ma-
chine Learning). I dati nella cybersecurity cambiano continuamente. Devono aggiornarsi costantemente
perché non devono essere rilevati. L’Adversarial Learning è stato creato nel campo delle immagini per
rilevare le misclassificazioni, come nel caso di distinguere un cane da un gatto. Un esempio di anomalia
è il seguente: l’handshake è un processo che prevede 3 pacchetti di comunicazione. Se molte richieste si
limitano a un solo pacchetto, si tratta di un’anomalia.

8
Figure 1.7: Global AI Cybersecurity Market

Figure 1.8: Cyber Minacce

9
Figure 1.9: Trasformazione della cybersecurity attraverso AI

E’ possibile effettuare:

• Fraud detection: monitorando le transazioni finanziarie per attività potenzialmente fraudolente,


come richieste di transazioni inattese o importi di acquisto insolitamente elevati.
• Process behaviour analys: L’analisi del comportamento del processo sfrutta l’IA in quanto può
rilevare comportamenti anomali (ad esempio, un uso imprevisto della CPU) che potrebbero indicare
un processo di malware nascosto.

• Malicious bot detection: La tecnologia IA può distinguere tra utenti umani autentici e script au-
tomatizzati o bot (ad esempio, per prevenire attacchi DDoS).
• Adversarial learning: L’obiettivo principale è quello di comprendere le vulnerabilità dei modelli di
apprendimento automatico e sviluppare metodi per renderli più robusti. Questo viene fatto creando
”esempi avversari”, ovvero input appositamente progettati per indurre i modelli a commettere er-
rori.L’apprendimento avversario ha applicazioni in vari campi, tra cui la sicurezza informatica, la
visione artificiale e l’elaborazione del linguaggio naturale. Nella sicurezza informatica, viene utiliz-
zato per testare la robustezza dei sistemi di rilevamento delle intrusioni e per sviluppare tecniche
di difesa contro gli attacchi avversari. Nella visione artificiale, può essere utilizzato per creare im-
magini che ingannano i sistemi di riconoscimento delle immagini. Nell’elaborazione del linguaggio
naturale, si può utilizzare per creare testi che ingannano i sistemi di analisi del sentimento.

10
Figure 1.10: Adversarial Learning applicazioni

1.6 Sistemi esperti


Prima e seconda generazione 1980 - metà degli anni 10’.Un sistema esperto è un sistema informatico
che emula. . . con le capacità decisionali di un esperto umano (Prof. E. Feigenbaum). I sistemi esperti
sono tra i primi precursori del machine learning e si contrappongono a quest’ultimo. Sono progettati
per affrontare compiti specifici in modo simile a un esperto umano, utilizzando regole predefinite per
prendere decisioni e risolvere problemi. I sistemi esperti sono progettati per risolvere un problema in un
dominio che normalmente richiederebbe un esperto umano. Tentano di modellare il processo decisionale
dell’esperto in un dominio limitato, come la diagnosi medica, la configurazione di computer o la diagnosi
di guasti alle macchine. Richiedono la disponibilità di un esperto, estraendo conoscenze rilevanti da
esperti umani in un determinato dominio. Richiedono conoscenze rappresentabili come regole del tipo
regole If-then: SE HAI FAME, ALLORA MANGIA.

Figure 1.11: Regole 1

11
Figure 1.12: Regole 2

Figure 1.13: Regole 3

Figure 1.14: Esempi di applicazione sistema esperto

I vantaggi di un sistema esperto sono:


• Spiegazione di una decisione.
• Fornire soluzioni rapide in aree di specializzazione ristretta.

12
• Ridurre il tempo di presa di decisione, utilizzare la conoscenza di un esperto per ridurre il tasso di
errori.
• Limitato a un dominio specifico

• Possibilità di errore nella definizione delle regole


• Difficoltà di manutenzione
• Potrebbe avere costi di sviluppo elevati

• Alto sforzo umano

13
Capitolo 2

Introduzione al Machine Learning

Il Machine Learning, o apprendimento automatico, è un ambito dell’informatica che si occupa di studiare


come i computer possano imparare a svolgere compiti senza essere programmati in modo esplicito per farlo.
Già nel 1959, Arthur Samuel lo definiva come la capacità dei computer di apprendere dall’esperienza,
anziché seguire regole rigide predefinite. Secondo Christoph Molnar, il Machine Learning rappresenta
un insieme di metodi attraverso i quali i computer sono in grado di fare previsioni o di adattare i
propri comportamenti sulla base dei dati disponibili. In altre parole, è un processo in cui il sistema
analizza dati passati per riconoscere schemi e migliorare continuamente le sue prestazioni. Più in generale,
possiamo dire che il Machine Learning si occupa dello studio di algoritmi capaci di imparare dagli esempi
e dall’esperienza, invece di affidarsi a istruzioni codificate manualmente. Questi algoritmi permettono di
fare previsioni su nuovi dati mai visti prima.

Ma cosa fa, in concreto, il Machine Learning? Utilizza un insieme di algoritmi per individuare strutture
e schemi nei dati. Durante una fase chiamata addestramento, il modello apprende da un insieme di esempi,
riconoscendo pattern e regole implicite. Una volta addestrato, sarà in grado di prendere decisioni o fare
previsioni in modo autonomo su dati nuovi, rendendo cosı̀ possibile l’automazione di compiti complessi.

14
Possiamo dividere il machine learning in:
• Apprendimento supervisionato (Supervised Learning): In questo tipo di apprendimento, il
modello utilizza dati etichettati durante il processo di apprendimento. L’obiettivo è imparare una
funzione che metta in relazione un vettore multidimensionale X (cioè un insieme di variabili indipen-
denti) con una variabile dipendente y, seguendo una relazione del tipo: La variabile dipendente può
essere:
– Numerica, nel caso della regressione (es. prevedere un prezzo)
– Categorica, nel caso della classificazione (es. riconoscere se un’e-mail è spam o no)

15
• Apprendimento non supervisionato (Unsupervised Learning): In questo caso, il modello
non ha a disposizione una variabile dipendente. L’obiettivo è scoprire relazioni, strutture o pattern
nascosti tra gli attributi dei dati. Esempi tipici sono:

– Il clustering, cioè il raggruppamento di dati simili


– La riduzione dimensionale, per semplificare la rappresentazione dei dati

• Apprendimento per rinforzo (Reinforcement Learning): In questo scenario, un agente intel-


ligente deve imparare una sequenza ottimale di azioni da compiere per massimizzare una ricompensa
(utility) nel tempo. Questo tipo di apprendimento è spesso utilizzato in metodi basati sulla ricerca,
come nei giochi, nella robotica o nel controllo di sistemi dinamici.

2.1 Data
Gli esseri umani apprendono principalmente attraverso l’osservazione e forme di apprendimento non su-
pervisionato. Sviluppano nel tempo un modello del mondo basato sull’esperienza e usano il ragionamento
basato sul senso comune per interpretare ciò che li circonda. Al contrario, il Machine Learning ha bisogno
di una grande quantità di dati (spesso etichettati) per compensare la mancanza di comprensione implicita
e senso comune. Una feature è una proprietà misurabile o un attributo osservabile di un fenomeno. È
un’informazione che descrive un aspetto dell’oggetto o evento osservato. Un esempio (in inglese instance
o observation) è un singolo caso o unità osservata che contiene una serie di feature. Ad esempio, una riga
in una tabella dati che descrive una persona con età, genere, peso e stato civile.

Le feature possono essere di diversi tipi:

16
I dati possono essere:
• Dati numerici (quantitativi): Sono dati espressi con numeri, e possono includere:
– Misurazioni, come l’altezza, il peso, il quoziente intellettivo (QI), o la pressione sanguigna di
una persona
– Conteggi, come il numero di acquisti effettuati da una persona o il numero di pagine di un
libro
Questi dati si suddividono in due categorie:
– Dati discreti, che assumono valori distinti e separati (es. numero di figli)
– Dati continui, che possono assumere qualsiasi valore in un intervallo (es. altezza, temperatura)

• Dati categorici (qualitativi): Non rappresentano quantità, ma categorie o classi, come:


– Il genere di una persona
– Lo stato civile
• Dati ordinali (ordinal data): Sono una combinazione di dati numerici e categorici, dove le
categorie hanno un ordine significativo. In questo caso, i numeri associati alle categorie esprimono
un significato gerarchico. Un esempio comune è la valutazione di un ristorante su una scala da 0
a 4 stelle: anche se si usano numeri, il valore rappresenta un livello di preferenza o soddisfazione,
non una quantità misurabile.
Gli algoritmi di datamining assumono che i valori devono essere presenti e non mancanti a livello di
implementazione. Se questi mancano vanno in eccezione. Perciò è possibile adottare le seguenti tecniche
per risolvere questo problema:

17
• Eliminare esempi con valori mancanti: In genere si rimuove un esempio se la maggior parte dei valori
delle caratteristiche (feature) è mancante, poiché ciò potrebbe rendere difficile ottenere informazioni
utili da quel campione.

• Rimuovere le feature in cui sono osservati valori mancanti:In generale, si decide di rimuovere una
feature quando la maggior parte degli esempi in quella feature presenta valori mancanti,
• Sostituire i dati mancanti con il valore più comune dell’attributo (media nel caso di attributi nu-
merici, moda nel caso di attributi categoriali)

• Assegnare tutti i possibili valori dell’attributo a un valore dell’attributo mancante (limitato a un


concetto)
• Sostituire il valore dell’attributo mancante con il valore noto in un altro esempio che assomiglia il
più possibile al caso con il valore mancante: Questo perchè gli oggetti vicini tendono a essere più
simili. La distanza di Hamming calcolata su categorie e la distanza euclidea calcolata su valori reali.

• La ricerca può essere effettuata all’interno del dataset limitato a un concetto specifico, corrispon-
dente allo stesso concetto dell’esempio contenente i dati mancanti.

Il One-of-N è la conversione di una variabile categorica in una rappresentazione numerica. Non perdiamo
informazioni a passare da categorico in numerico, ma se si aumenta la dimensionalità si deve tornare alla
feature selection.

Un tensore è una struttura dati generalizzata che rappresenta dati in più dimensioni. È uno dei concetti
fondamentali nel deep learning perché tutti i dati (immagini, testo, audio, ecc.) vengono trasformati in
tensori per essere elaborati da una rete neurale.

• 1D tensor: vector
• 2D tensor: matrix
• 3D, 4D, 5D tensors

18
2.2 Apprendimento Supervisionato - Supervised Learning
2.2.1 Classificazione - Classification
La classificazione è un processo di apprendimento in cui si costruisce una funzione in grado di associare un
dato fenomeno a una classe predefinita. In altre parole, il modello impara a riconoscere a quale categoria
appartiene un’osservazione.
• L’attributo che si vuole prevedere, chiamato target, è di tipo categorico (cioè assume valori discreti
appartenenti a un insieme finito di classi).
• Il classificatore viene addestrato su un insieme di dati etichettati (training set), in cui i fenomeni sono
già stati classificati. Questo permette al modello di imparare le regole o i pattern che distinguono
una classe dall’altra.

Esempi di applicazione della classificazione:


• Rilevamento di frodi: determinare se una transazione con carta di credito è legittima o fraudolenta.
• Diagnosi medica: creare un modello in grado di distinguere i pazienti a rischio di infarto sulla base
di dati clinici.

19
• Sicurezza informatica: classificare un’applicazione come software dannoso (malware) o come pro-
gramma sicuro.

2.2.2 Regressione - Regression


La regressione è un processo di apprendimento in cui si costruisce una funzione che associa un fenomeno
osservato (cioè un insieme di dati) a una variabile numerica continua. Il modello di regressione viene
addestrato su un insieme di dati noti (training set), in cui i fenomeni sono già associati a valori numerici.
Questo consente al modello di apprendere la relazione tra le variabili indipendenti e la variabile dipendente
da stimare.

Esempi di applicazione della regressione:


• Stimare lo stipendio di una persona in base a fattori come età, istruzione, esperienza, ecc.

20
• Prevedere la probabilità che una carta di credito venga rubata o compromessa.
• Determinare il canone d’affitto di un appartamento in base alla posizione, metratura, numero di
stanze, ecc.

2.2.3 Regressione Lineare - LinearRegression


La regressione lineare è una tecnica utilizzata per modellare la relazione tra una variabile dipendente
(target) Y e un insieme di variabili indipendenti (feature) x1 , x2 , ..., xk , assumendo che tale relazione
sia di tipo lineare. Per farlo, si associano a ciascuna feature dei pesi m1 , m2 , ..., mk , che ne indicano
l’importanza relativa nella previsione del risultato. I pesi rappresentano il contributo di ogni variabile
indipendente nella stima del valore di Y. Più un peso è elevato (in valore assoluto), maggiore sarà l’impatto
della relativa feature sul valore previsto.
• Input: un dataset composto da esempi noti, ovvero coppie di input (le feature) e output (il valore
reale di Y).
• Output: un modello di regressione lineare capace di approssimare la relazione tra input e output e
fare previsioni su nuovi dati.

21
Il metodo di apprendimento è il seguente:
1. Inizializzazione: I pesi e il bias (termine costante) vengono inizializzati con valori casuali.
2. Fase di addestramento (training): Il modello viene iterativamente aggiornato seguendo questi pas-
saggi:

• Si seleziona un esempio dal dataset


• Si aggiornano i pesi e il bias per ridurre l’errore di previsione
• Si calcola la funzione di costo per misurare l’accuratezza del modello. Una delle metriche
più comuni è l’errore quadratico medio (Mean Squared Error, MSE), che valuta quanto le
previsioni si discostano dai valori reali.

2.2.4 Support Vector Machine - SVM


Un classificatore supervisionato che costruisce un iperpiano ottimale per separare i dati è detto SVM
(Support Vector Machine). Consideriamo un dataset di n punti:

(x1 , y1 ), (x2 , y2 ), . . . , (xn , yn )

dove yi ∈ {−1, 1} e xi ∈ Rp .

22
L’obiettivo è trovare l’iperpiano a massimo margine, che massimizza la distanza tra il piano e i
punti più vicini:
w·x−b=0
I margini sono:
w·x−b=1 e w · x − b = −1
La distanza tra questi margini è:
2
∥w∥
Le condizioni di separazione è la seguente: Per ogni punto (xt , yt ), devono valere:
yt (w · xt + b) ≥ 1
La funzione obiettivo consiste nell’ottimizzazione:
1
min ∥w∥2
w,b 2

soggetto ai vincoli sopra. Funzione di costo con errore, In presenza di errori di classificazione si aggiunge:
Errore totale = Errore di classificazione + Errore di distanza ∝ w12 + w22

23
Per separare dati non linearmente separabili si usano kernel:
• Polinomiale
• Sigmoide
• RBF (Radial Basis Function)

2.2.5 Albero di decision - Decision Tree


I modelli di regressione lineare e regressione logistica possono fallire quando:
• La relazione tra le feature e l’output non è lineare
• Le feature interagiscono tra loro in modo complesso
In questi casi, un albero decisionale è un modello efficace.

24
Un albero decisionale è una struttura simile a un diagramma di flusso, composta da:
• Nodi interni: rappresentano test su attributi (es. “testa o croce?”)

• Rami: rappresentano i possibili esiti dei test


• Nodi foglia: rappresentano la decisione finale (classe)
Ogni percorso dalla radice a una foglia definisce una regola di classificazione. Tutte le condizioni
lungo il percorso sono collegate da operatori AND. L’algoritmo che utilizza è il seguente:

1. Seleziona l’attributo A migliore per il nodo corrente


2. Assegna A come attributo decisionale per il nodo
3. Per ogni valore di A, crea un nodo discendente
4. Smista gli esempi verso i nodi foglia

5. Se gli esempi sono perfettamente classificati, termina. Altrimenti, ripeti ricorsivamente


Le strategie per la selezione dell’attributo sono i seguenti:
• Random: scegli un attributo a caso

• Least-Values: scegli l’attributo con meno valori distinti


• Most-Values: scegli l’attributo con più valori distinti
• Max-Gain: scegli l’attributo con il massimo guadagno informativo

25
2.2.6 Random Forest
Il Random Forest è un algoritmo introdotto da Leo Breiman nel 2001. A differenza dei modelli che
utilizzano un solo albero decisionale complesso, il Random Forest costruisce un insieme (ensemble)
di alberi decisionali più semplici. Un Random Forest è un classificatore composto da una collezione
di alberi decisionali. La predizione finale si ottiene tramite voto di maggioranza tra le predizioni dei
singoli alberi.

Costruzione della foresta (training):


1. Seleziona casualmente k feature da un totale di m (con k < m)
2. Tra queste k feature, calcola il miglior punto di split per un nodo
3. Dividi il nodo nei due nodi figli usando lo split scelto
4. Ripeti i passaggi da 1 a 3 fino al raggiungimento della profondità desiderata dell’albero
5. Ripeti i passaggi da 1 a 4 per n volte per creare una foresta con n alberi
Predizione (testing):

1. Applica le regole di ogni albero al dato di test per ottenere una predizione
2. Conta i voti ricevuti da ciascun target predetto
3. La predizione finale è il target con il maggior numero di voti

26
2.3 Apprendimento non supervisionato - Unsupervised Learn-
ing
L’apprendimento non supervisionato si basa sull’analisi dei dati senza l’utilizzo di una variabile dipen-
dente (target). L’obiettivo è:
• Identificare pattern e relazioni nascoste nei dati
• Comprendere le tendenze aggregate e costruire un modello che descriva le caratteristiche intrin-
seche del dataset

Le tecniche principali sono:


• Clustering: raggruppa gli esempi in base alla loro similarità
• Regole di associazione (Association Rules): identifica correlazioni frequenti tra variabili, utile
ad esempio nell’analisi delle transazioni (market basket analysis)

2.3.1 Clasterizzazione - Clutering


Il clustering è un’attività descrittiva in cui si cerca di identificare un insieme finito di categorie o cluster
per rappresentare i dati.

• Le categorie possono essere mutuamente esclusive e esaustive, oppure strutturate in forma di


gerarchie o sovrapposizioni.
• L’obiettivo è mettere in evidenza le somiglianze tra gli oggetti nel dataset.

27
Esempi applicativi:
• Segmentazione dei clienti per promozioni mirate

• Identificazione di zone geologiche a rischio


Algoritmi partizionali:
• K-Means

• Mixture of Gaussians
• Spectral Clustering
Algoritmi gerarchici:
• Bottom-up (agglomerativi)

• Top-down (divisivi)

Clustering basato su rappresentanti: Dato un dataset di N istanze e un numero desiderato di cluster


k, si ottiene una partizione:
C = {C1 , C2 , . . . , Ck }
dove k è un parametro scelto dall’utente. Per ogni cluster Ci , viene individuato un centroide, che
idealmente è la media del cluster.

Approccio esaustivo (brute-force): Un algoritmo esaustivo potrebbe generare tutte le possibili par-
tizioni dei N punti in k cluster, valutare ciascuna soluzione tramite una funzione obiettivo, e conservare
quella col punteggio migliore. Tuttavia, poiché ogni punto può appartenere a uno dei k cluster, esistono al
massimo k N possibili combinazioni. Conclusione: l’enumerazione completa non è computazionalmente
fattibile.

28
2.3.2 K-Means
Il K-Means è un algoritmo di clustering iterativo basato sulla distanza tra punti e centroidi. Trovare
una partizione C = {C1 , C2 , . . . , Ck } che minimizzi la somma degli errori quadratici:
k
X X
SSE = ∥xj − µi ∥2
i=1 xj ∈Ci

dove µi è il centroide del cluster Ci . Algoritmo:


• Inizializzazione:
– Selezionare k punti casuali {s1 , s2 , . . . , sk } come centroidi iniziali (seed)
• Iterativo:
1. Assegnazione ai cluster: assegnare ogni punto ej al cluster Ci tale che dist(ej , si ) sia minima
2. Aggiornamento dei centroidi: aggiornare si = µ(Ci )
– Media aritmetica per dati numerici
– Moda per dati categorici
3. Ripetere fino alla convergenza

Criteri di arresto:
• Numero massimo di iterazioni raggiunto
• Nessuna variazione nelle assegnazioni dei punti
• Nessun cambiamento nei centroidi
Scelta dei seed:
• I risultati variano in base alla scelta iniziale dei centroidi
• Possibili strategie:
– Esecuzioni multiple con inizializzazioni diverse
– Euristiche (es. scegliere il punto meno simile agli altri)
– Inizializzazione con output di un altro algoritmo
Limitazioni:
• Richiede di specificare il numero di cluster k a priori
• Non gestisce bene outlier e rumore
• Tutti i punti sono forzati a far parte di un cluster
• Non distingue cluster di diversa dimensione o densità
Scelta del numero ottimale di cluster (Elbow Method):
• Aumentando k, la varianza intra-cluster diminuisce

29
• Si cerca un punto di equilibrio: cluster omogenei e ben distinti
• Si calcola il SSE per diversi valori di k

• Si rappresenta graficamente il SSE rispetto a k


• Il valore ottimale di k corrisponde al “gomito” della curva

30
31
32
33
34
35
36
2.3.3 K-medoids
Il K-Medoids è un algoritmo di clustering che seleziona un sottoinsieme di oggetti del dataset chiamati
medoid, usati come rappresentanti dei cluster. Ogni punto del dataset viene assegnato al medoid più
vicino.

Algoritmo PAM:

1. Inizializzazione: seleziona casualmente k punti dal dataset come medoid iniziali.


2. Assegnazione: associa ogni punto al medoid più vicino.
3. Iterazione:

• Per ogni medoid m e ogni punto o che non è un medoid:


– Scambia m con o
– Riassegna ogni punto al medoid più vicino
– Ricalcola il costo della configurazione
– Se il costo aumenta rispetto allo step precedente, annulla lo scambio
4. Ripeti finché il costo totale non può più essere migliorato
Vantaggi:

• Semplice da capire e da implementare


• Converge rapidamente
• Meno sensibile agli outlier rispetto ad altri algoritmi partizionali

Svantaggi:
• Poco adatto per dati con cluster non sferici
• La randomicità nella scelta dei medoid iniziali può portare a risultati diversi in esecuzioni diverse

37
38
39
2.3.4 Clustering Gerarchico - Hierarchical Clustering
Il clustering gerarchico costruisce una tassonomia ad albero (dendrogramma) a partire da un insieme
di oggetti. L’algoritmo produce una partizione annidata dei dati su più livelli, e ogni componente connessa
forma un cluster.

Tipologie principali:
• Clustering Agglomerativo (bottom-up)

– Si inizia da una partizione Pn dove ogni oggetto è un cluster

40
– Si uniscono i due cluster più vicini per ottenere Pn−1
– Si ripete finché tutti gli oggetti sono in un unico cluster
• Clustering Divisivo (top-down)
– Si parte da un unico cluster P1 contenente tutti gli oggetti
– Si divide il cluster in due sottogruppi il più omogenei possibile
– Si applica ricorsivamente la procedura ai sottogruppi
Misure di Distanza tra Cluster:
• Single-Link:
D(C1 , C2 ) = min dist(e1 , e2 )
e1 ∈C1 , e2 ∈C2

• Complete-Link:
D(C1 , C2 ) = max dist(e1 , e2 )
e1 ∈C1 , e2 ∈C2

• Centroid:
D(C1 , C2 ) = dist(µC1 , µC2 )
• Average-Link: P
e1 ∈C1 , e2 ∈C2 dist(e1 , e2 )
D(C1 , C2 ) =
|C1 | · |C2 |

41
42
2.3.5 Clustering Basato sulla Densità - DBSCAN
Il clustering basato sulla densità identifica cluster come regioni ad alta densità di punti, separate da
regioni a bassa densità. A differenza dei metodi basati sulla distanza, questo approccio usa la densità
locale per formare i gruppi.

Caratteristiche principali:

• Identifica cluster di forma arbitraria (anche non convessa)

43
• Gestisce bene rumore e outlier
• Richiede una sola scansione del dataset

• Utilizza due parametri:


– ε: raggio del vicinato
– MinPts: numero minimo di punti nel vicinato

Definizioni
• Punto core: punto con almeno MinPts vicini entro ε
• Punto di bordo: punto non core ma vicino a un core point
• Punto rumore: punto che non appartiene ad alcun cluster

Il vicinato di un punto p è definito come:

Nε (p) = {q ∈ D | dist(p, q) ≤ ε}

Direttamente raggiungibile per densità: Un punto p è direttamente raggiungibile per densità da q se:
• p ∈ Nε (q)
• |Nε (q)| ≥ MinPts (quindi q è un punto core)

Raggiungibile per densità: p è raggiungibile per densità da q se esiste una sequenza di punti p1 , . . . , pn
con p1 = q e pn = p tale che ciascun pi+1 è direttamente raggiungibile da pi .

Connessi per densità: Due punti p e q sono connessi per densità se esiste un punto o tale che sia p che
q sono raggiungibili per densità da o.

44
Definizione di cluster: Un cluster basato sulla densità è un insieme massimo di punti connessi per
densità. Procedura DBSCAN:
1. Seleziona un punto p a caso
2. Recupera tutti i punti raggiungibili per densità da p con ε, MinPts

3. Se p è un punto core, forma un nuovo cluster


4. Se p è un punto di bordo, passa al punto successivo
5. Ripeti finché tutti i punti sono stati visitati

2.4 Evaluation - Valutazione


Le metriche di valutazione sono misure quantitative utilizzate per valutare le prestazioni e l’efficacia di
un modello di machine learning. Aiutano a descrivere il comportamento del modello e a confrontare più
soluzioni.

2.4.1 Matrice di Confusione


• True Positive (TP): positivi correttamente predetti
• True Negative (TN): negativi correttamente predetti
• False Positive (FP): negativi predetti erroneamente come positivi

• False Negative (FN): positivi predetti erroneamente come negativi

45
2.4.2 Accuracy (Accuratezza)
TP + TN
Accuracy =
TP + TN + FP + FN
• Misura la proporzione di predizioni corrette sul totale

• È efficace in dataset bilanciati


• È fuorviante in presenza di classi sbilanciate

46
47
2.4.3 Precision (Precisione)
TP
Precision =
TP + FP
• Indica quanto spesso il modello predice correttamente la classe positiva

48
2.4.4 Recall (Sensibilità o Richiamo)
TP
Recall =
TP + FN
• Misura la capacità del modello di identificare tutti i casi positivi

49
2.4.5 F1 Score
2 · (Precision · Recall)
F1 =
Precision + Recall
• Media armonica tra precisione e recall
• Utile nei problemi con classi sbilanciate

2.4.6 Classificazione Multiclasse


Nella classificazione multiclasse, le metriche come precision, recall e F1 possono essere aggregate in due
modi principali: macro e micro averaging.
Macro-Averaging:
• Tratta ogni classe in modo uguale, indipendentemente dalla sua frequenza.
• Utile quando tutte le classi sono ugualmente importanti.
• Particolarmente adatto a dataset sbilanciati: garantisce che ogni classe contribuisca equamente alla
valutazione finale.

50
• Si calcola la metrica (precision, recall) per ogni classe, poi si fa la media aritmetica.
Micro-Averaging:

• Tiene conto del numero totale di predizioni corrette ed errate su tutte le classi.
• Ogni istanza ha lo stesso peso, quindi le classi più frequenti influenzano maggiormente il risultato.
• Più adatto quando l’obiettivo è minimizzare gli errori complessivi.
• Equivale, in pratica, all’accuratezza complessiva del modello.

Procedura:
1. Calcolare precision e recall per ogni classe individualmente.
2. Ottenere una metrica per ciascuna classe.

3. Calcolare la media tra le metriche:


• Macro-average: media semplice delle metriche per classe
• Micro-average: aggregazione basata sul numero totale di predizioni corrette/errate

51
52
53
54
55
56
2.4.7 Curva ROC (Receiver Operating Characteristic)
La ROC curve è un grafico che mostra le prestazioni di un classificatore binario al variare della soglia di
decisione.

Essa rappresenta:
• True Positive Rate (TPR) sull’asse y
• False Positive Rate (FPR) sull’asse x

57
Ogni punto sulla curva corrisponde a una specifica soglia di classificazione. La ROC curve permette di
visualizzare il compromesso tra sensibilità (recall) e falsi allarmi.

58
2.4.8 Curva Precision-Recall (PR Curve)
Variare la soglia di classificazione permette di ottenere diverse coppie:

(Precision, Recall)

• Precision sull’asse y
• Recall sull’asse x
La PR curve è particolarmente utile nei problemi con classi sbilanciate.

2.4.9 AUC – Area Under the Curve


L’AUC è l’area sotto la curva ROC. Si calcola approssimando con trapezi e sommando le aree.

59
• AUC = 1.0 indica un classificatore perfetto
• AUC = 0.5 indica prestazioni equivalenti al caso casuale

Interpretazione dei punti sulla ROC:

• Punto A – bassa FPR: preferibile quando i falsi positivi sono molto costosi
• Punto C – alto TPR: preferibile quando i falsi negativi sono più critici

• Punto B – compromesso tra TPR e FPR

Esempio: Un classificatore di spam in cui la classe positiva è “spam” e quella negativa è “non spam”.
Se è più dannoso classificare un’email importante come spam, si preferisce una soglia che minimizzi i falsi
positivi.

60
Vantaggi dell’AUC:
• Un singolo numero per confrontare modelli diversi

• Non dipende dalla soglia scelta


• Riassume le prestazioni su tutte le soglie
• Adatto a dataset sbilanciati

• Robusto ai cambiamenti nel bilanciamento delle classi

2.4.10 Validazione dei cluster


La validazione dei cluster è il processo di valutazione della qualità del raggruppamento ottenuto.

Può essere classificata in:

1. Validazione Esterna
Basata su etichette note o conoscenza esperta.
Misure su coppie di punti (xi , xj ):

T P : yi = yj ∧ ŷi = ŷj
F N : yi = yj ∧ ŷi ̸= ŷj
F P : yi ̸= yj ∧ ŷi = ŷj
T N : yi ̸= yj ∧ ŷi ̸= ŷj

61
62
63
2. Validazione Interna
Si basa su criteri derivati dai dati stessi: compattezza intra-cluster e separazione tra cluster.

Coefficiente di Silhouette Misura quanto un punto è ben assegnato al suo cluster:

b(i) − a(i)
s(i) =
max(a(i), b(i))

• a(i): distanza media dal punto i agli altri punti del suo cluster
• b(i): distanza minima tra i e tutti i punti di altri cluster

Interpretazione dei valori di silhouette:

• s(i) > 0.70: clustering forte


• s(i) > 0.50: clustering buono
• s(i) > 0.25: clustering debole

3. Validazione Relativa
Confronta diverse configurazioni o modelli di clustering per scegliere la più adatta.

Selezione e Ottimizzazione del Modello


• Ottimizzazione degli iperparametri (es. k)
• Prevenzione dell’overfitting tramite:
– Regularizzazione
– Dropout

64
65
Capitolo 3

Machine Learning For Cybersecurity

Il Machine Learning (ML) è una tecnologia chiave nella cybersecurity che aiuta a rilevare, prevedere
e rispondere alle minacce. In particolare:
• Rilevamento proattivo delle minacce: consente ai team di sicurezza di anticipare i cybercrim-
inali.
• Maggiore efficienza: riduce il tempo di risposta agli attacchi informatici.

• Maggiore accuratezza: migliora la precisione nell’identificazione delle minacce.


• Difese di sicurezza più forti: contribuisce a costruire difese informatiche robuste.

3.1 Problemi della Cybersecurity


• Rilevamento di attacchi sconosciuti (zero-day):
– Vulnerabilità o falle di sicurezza in un sistema informatico non conosciute dai proprietari o
dagli sviluppatori.
• Dati sbilanciati:

– Gli attacchi sono molto meno numerosi rispetto ai dati normali.


– Lo sbilanciamento dei dati è predominante e intrinseco nel mondo reale.
– La maggior parte degli algoritmi ML è progettata assumendo una distribuzione uniforme per
ogni categoria target (classificazione).
– Utilizzare una suddivisione stratificata dei dati per garantire che la distribuzione dell’addestramento
corrisponda a quella del test.
– Metriche standard come l’accuratezza possono non essere significative.

66
• Concept drift:
– I dati cambiano nel tempo per eludere il classificatore.

67
• Estrazione di feature utili dai dati grezzi:
– Ad esempio, flussi di rete a partire dai pacchetti.
• Vulnerabilità agli attacchi avversari:
– Attacchi che riducono le performance del classificatore.
• Nuovi attacchi:
– Sfida: apprendere pattern di rilevamento capaci di identificare nuovi attacchi (es. piccole
varianti di attacchi noti).
– Le tecniche ML supervisionate falliscono solitamente nell’identificare attacchi sconosciuti (non
presenti nei dati di addestramento).
– Gli IDS basati su anomalie sono più robusti contro i nuovi attacchi, ma soffrono di un alto
numero di falsi positivi.

3.2 Phishing Detection


Phishing = Phreaking + Fishing. Il prefisso ph in “phishing” deriva dall’hobby del “phone phreaking”
degli anni ’50, dove gli appassionati (“phreaks”) sperimentavano con le reti di telecomunicazione per
comprenderne il funzionamento. Distribuzione dei vettori d’attacco:
• 96% degli attacchi arriva tramite email.
• 3% tramite telefono (vishing).
• 1% tramite messaggi di testo (smishing).

3.2.1 Spam vs Phishing


La differenza principale tra spam e phishing è l’intenzione:
• Lo spam è spesso solo pubblicità indesiderata.
• Il phishing, invece, ha uno scopo malevolo: rubare dati personali per scopi fraudolenti.
Gli attacchi di phishing possono essere veicolati tramite messaggi spam.

3.2.2 Componenti di un attacco phishing


1. Il contatto avviene tramite comunicazione elettronica (email, telefonata, SMS).
2. L’attaccante si finge una persona o un’organizzazione fidata.
3. L’obiettivo è ottenere informazioni sensibili, come credenziali o numeri di carta di credito.

68
3.2.3 Machine Learning e Rilevamento del Phishing
Tipi di approccio:

• Rilevamento basato su URL.


• Elaborazione del linguaggio naturale (NLP) sul testo.
• Rilevamento su allegati email (PDF, SVG, XML, JSON).

3.3 Rilevamento Phishing basato su URL


Molti attacchi di phishing utilizzano exploit tecnici per far apparire i link come autentici.
• Tecniche comuni:

– URL con errori di ortografia o uso di subdomini ingannevoli.


Esempio: http://www.tuabanca.it.esempio.com/ sembra legittimo ma è un sottodominio
fraudolento.
– Uso di caratteri visivamente simili (es. “a” e “e”).
– Cambiare il TLD (dominio di primo livello), es. da “.it” a “.com”.
– Inserire un simbolo @ dopo l’indirizzo reale: il browser ignora la parte prima della @ e carica
l’indirizzo fraudolento.
– Utilizzo di comandi JavaScript per alterare la barra degli indirizzi del browser.

3.3.1 Data collection


Gli URL malevoli utilizzati per addestrare o testare i modelli di rilevamento phishing possono essere
raccolti da fonti pubbliche affidabili, come:

• PhishTank
https://phishtank.org/
• OpenPhish
https://openphish.com/

Gli URL legittimi, necessari per il confronto e per evitare falsi positivi, possono essere estratti da
archivi web pubblici come:

• Common Crawl
https://commoncrawl.org/

69
3.3.2 Feature Collection
Nel contesto del rilevamento di URL di phishing, è possibile estrarre diverse caratteristiche (feature) utili
per l’analisi e la classificazione. Tra le principali:

• Lunghezza dell’URL
• Dominio (es. nome del sito principale)
• Percorso (Path) (la parte dell’URL che segue il dominio)
• Query (i parametri passati nella richiesta, ad esempio ?id=123)
• Frammento (Fragment) (la parte dopo il simbolo #)
• Quantità di uno specifico carattere presente nell’URL (es. /, @, ., -)

Queste feature possono essere utilizzate come input per algoritmi di Machine Learning per distinguere
URL legittimi da quelli sospetti o malevoli.

3.3.3 PreProcessing Text


Le fasi del preprocessing per il testo sono le seguenti:
• Pulizia delle email
Questo processo consiste nella rimozione delle informazioni irrilevanti e dei caratteri non inglesi
dalle email. I caratteri non alfanumerici e i caratteri speciali non significativi, come “?”, “!” e
“”’, vengono rimossi utilizzando espressioni regolari in Python (Regex). Anche gli spazi bianchi in
eccesso vengono eliminati.

• Tokenizzazione
Il processo di tokenizzazione suddivide ciascuna email in parole (token) basandosi sugli spazi bianchi.
In questo studio, si utilizza la funzione split() per ottenere i token.

70
• Rimozione delle stop-word e delle parole rare
Le stop word sono parole molto comuni nella lingua, come congiunzioni, articoli e preposizioni,
che spesso non apportano significato semantico rilevante.

– Per questo scopo si utilizza la libreria Natural Language Toolkit (NLTK).


– La lista delle stop word include termini come: “off”, “no”, “aren”, “too”, “an”, “being”,
“only”, “ll”, “o”, “its”, “them” e “mightn”.

3.3.4 ML Algorithms

3.4 Intrusion Detection System


Un Intrusion Detection System (IDS) è uno strumento di sicurezza di rete che monitora il traffico
e i dispositivi alla ricerca di:
• attività malevole conosciute,
• attività sospette,

• violazioni delle politiche di sicurezza.


Viene solitamente utilizzato per rilevare anomalie. L’obiettivo principale è rilevare attività sospette
prima che causino danni reali.

71
3.4.1 Rilevamento delle Intrusioni di Rete
I sistemi IDS possono essere classificati in base alla loro posizione nel sistema e al tipo di attività moni-
torata:

• Rilevamento basato su rete (Network-based)

• Rilevamento basato su host (Host-based)


• Rilevamento ibrido (Hybrid-based)

Network Intrusion Detection System (NIDS)


• Posizionato in punti strategici della rete per analizzare il traffico proveniente da tutti i dispositivi
connessi.

• Osserva il traffico che transita su un’intera sottorete e lo confronta con un insieme di attacchi
conosciuti.
• Quando viene identificato un attacco o osservato un comportamento anomalo, viene inviata una
notifica all’amministratore.

• Esempio di implementazione: firewall.

Host Intrusion Detection System (HIDS)


• Funziona direttamente sugli host o dispositivi della rete.
• Monitora solo i pacchetti in ingresso e in uscita dal dispositivo specifico.
• In caso di attività sospette o malevole, invia un avviso all’amministratore.

• Confronta uno snapshot dei file di sistema attuali con uno precedente:
– se i file sono stati modificati o cancellati, viene inviata una segnalazione per indagine.

Hybrid Intrusion Detection System


• Combinazione di due o più approcci IDS.
• Integra i dati raccolti dagli host (agenti locali) con le informazioni a livello di rete.

• Offre una visione più completa e dettagliata dell’intero sistema.


• Più efficace rispetto ai sistemi IDS individuali (NIDS o HIDS).

3.4.2 Data in IDS


I dati nei IDS sono i seguenti:
• Dati a livello di pacchetto (Packet-level data)
• Dati NetFlow (NetFlow data)

Dati a Livello di Pacchetto


• I pacchetti di dati sono unità di informazione raccolte in un insieme per essere trasmesse attraverso
Internet.
• Ogni dato deve essere suddiviso in pezzi più piccoli per facilitare la comunicazione.
• Una volta raggiunto il destinatario, questi pezzi vengono ricomposti per essere leggibili.

• Un pacchetto di dati può anche essere chiamato blocco, datagramma o frame, a seconda del protocollo
utilizzato per la trasmissione.

72
Struttura di un Pacchetto di Dati
Un pacchetto di dati è generalmente composto da due sezioni principali:

• Header: contiene tutte le informazioni relative al pacchetto, incluse le IP di origine e destinazione.


Gli header indicano al dispositivo ricevente da dove proviene il pacchetto e come deve essere elab-
orato.
• Payload: contiene i dati effettivi da trasmettere. In caso di trasmissione di malware, il codice
malevolo contenuto nel pacchetto viene detto malware payload.

Alcuni pacchetti possono contenere una terza sezione:

• Trailer: è un piccolo frammento di informazione che segnala al dispositivo ricevente che il pacchetto
è terminato. La presenza del trailer dipende dal protocollo di trasmissione.

Cattura dei Pacchetti di Rete


• I pacchetti di rete ricevuti e trasmessi attraverso l’interfaccia fisica (es. porta Ethernet) di un com-
puter possono essere catturati tramite un’apposita interfaccia di programmazione (API) chiamata
pcap.
• Le librerie più comuni sono:
– Libpcap per sistemi Unix/Linux
– WinPcap per sistemi Windows

• Per l’analisi avanzata dei pacchetti è possibile utilizzare strumenti come Zeek: https://zeek.org/

73
3.4.3 Flow Data
Caratteristiche derivate da statistiche, basate su determinati parametri come la durata della finestra e il
numero di pacchetti.

74
Data in IDS: NSL-KDD

75
3.5 Misuse based detection - Rilevamento su firme
Il rilevamento basato su firme (o Misuse-Based Detection) identifica gli attacchi sulla base di pattern
specifici (signature). Esempi di firma possono includere:
• il numero di byte nel traffico di rete,

• il numero di “1” o “0” presenti nei pacchetti.


Questo approccio è usato anche nel rilevamento del malware, basandosi su sequenze di istruzioni malevole
già conosciute. I sistemi IDS basati su firme sono molto efficaci nel rilevare attacchi già noti, ovvero
quelli la cui firma è già presente nel sistema. Tuttavia, questi sistemi risultano inefficaci nel rilevare
attacchi nuovi, poiché non dispongono ancora della firma corrispondente.

76
3.6 Anomaly-Based Detection - Rilevamento Basato su Anoma-
lie
Il metodo basato su anomalie è progettato per rilevare attacchi sconosciuti, poiché nuovi attacchi
vengono sviluppati rapidamente. Utilizza il machine learning per creare un modello di comportamento
considerato affidabile:
• Ogni nuova attività viene confrontata con tale modello.
• Se l’attività non è presente nel modello, viene considerata sospetta.
I metodi basati su machine learning presentano una migliore capacità di generalizzazione rispetto agli
IDS basati su firme. Questi sistemi generano un modello del comportamento normale di rete e di sistema,
e identificano come anomalie tutte le deviazioni da tale comportamento. È possibile personalizzare i
profili di attività normale per ogni sistema, applicazione o rete:
• Questo rende più difficile per un attaccante sapere quali azioni può eseguire senza essere rilevato.

I dati su cui si basano gli avvisi generati dalle tecniche basate su anomalie (attacchi nuovi) possono
essere successivamente utilizzati per definire firme da impiegare nei sistemi di rilevamento basati su uso
improprio (misuse). Gli svantaggi sono i seguenti:

• Possibilità di un alto tasso di falsi allarmi, in quanto comportamenti legittimi ma mai osservati
prima possono essere erroneamente classificati come anomalie.

77
Le anomalie nei dati si riferiscono a qualsiasi punto dati o schema inaspettato o anomalo che si
discosta dal comportamento tipico dei dati.
Esse rappresentano deviazioni rispetto ai pattern attesi e possono indicare:

• errori nei dati,


• comportamenti inusuali,
• oppure potenziali attacchi o eventi critici in ambito di sicurezza informatica.

3.6.1 Local Outlier Factor (LOF)


L’algoritmo Local Outlier Factor (LOF) è un metodo di rilevamento delle anomalie non supervi-
sionato, che calcola la deviazione della densità locale di un punto rispetto ai suoi vicini. I valori
anomali (outlier) sono quei campioni che hanno una densità sostanzialmente inferiore rispetto a quella
dei loro vicini.

78
L’algoritmo LOF confronta la densità locale di un punto con quella dei suoi vicini più prossimi.
Come si calcola la densità locale per un esempio?
• Si determina il raggio della più piccola ipersfera centrata nel punto in esame che contiene i
suoi k vicini più prossimi.
• La densità locale viene quindi calcolata in base al volume di questa ipersfera.

Scelta del parametro k :


• Il valore di k determina quanti vicini si considerano per ogni punto.
• Si calcolano le k-distanze in base a questo valore.
• Esempio: se k = 3, si considera la distanza dal terzo vicino più prossimo.
• Un valore di k troppo basso rende l’algoritmo suscettibile al rumore, mentre un valore troppo
alto potrebbe non rilevare le anomalie locali.

79
Calcolo della Densità Locale:
• Per tutti i k vicini di un punto, si calcolano le distanze di raggiungibilità, ovvero la distanza
massima tra i due punti considerati.
• I valori ottenuti vengono sommati e divisi per k per ottenere la densità locale media.

Definizione del LOF


Il LOF di un punto dati è definito come il rapporto tra la densità media dei suoi vicini più
prossimi e la sua stessa densità. Interpretazione:

• Se le densità sono quasi uguali, il punto è simile ai vicini.


• Se la densità del punto è maggiore di quella dei vicini, il punto è un inlier.
• Se la densità del punto è minore di quella dei vicini, il punto è un outlier.
I punti con valori LOF bassi sono considerati normali, mentre quelli con valori LOF alti sono con-
siderati anomali.

3.6.2 Isolation Forest


Isolation Forest (IForest) è un algoritmo costruito sulla base di alberi decisionali, simile al Random
Forest, ma con un approccio diverso, invece di costruire un modello dei dati normali, isola esplicita-
mente i punti anomali nel dataset. L’algoritmo isola le osservazioni scegliendo casualmente una
caratteristica (feature) e un valore di soglia. Partendo dal presupposto che le anomalie sono rare e
distanti dai dati normali, esse tendono ad essere isolate più facilmente, ovvero più vicine alla radice
dell’albero. Misurando la lunghezza del cammino (path length) delle suddivisioni ricorsive a partire
dalla radice dell’albero, otteniamo una metrica utile per assegnare un punteggio di anomalia ai punti
dati. I punti dati anomali hanno generalmente cammini più corti rispetto ai punti normali.

80
Il punteggio di anomalia viene calcolato come la media delle lunghezze dei cammini (path length)
dai nodi radice degli alberi in cui il punto viene isolato. Formula semplificata del punteggio:
E(h(x))
s(x, n) = 2− c(n)

Dove:
• E(h(x)) è la lunghezza media del cammino per il punto x,
• c(n) è il valore atteso della lunghezza del cammino in un albero binario per n dati.

Punti con punteggio alto (cammino corto) sono più probabilmente anomalie.
Punti con punteggio basso (cammino lungo) sono più probabilmente normali.

3.6.3 Snort
Snort è un sistema open source per il rilevamento e la prevenzione delle intrusioni di rete
(IDS/IPS). Dispone di una vasta community open source di utenti e contributori, che ha svilup-
pato estensioni e interfacce grafiche (GUI). Funziona come un analizzatore di rete (network sniffer).
Utilizza un linguaggio basato su regole, che integra tecniche di:

• ispezione basata su anomalie,


• ispezione di protocolli,
• ispezione basata su firme.

Permette di scrivere regole (Snort rules) che si attivano al verificarsi di determinate condizioni rilevate
nel traffico di rete. Confronta il traffico osservato con un profilo di comunicazione normale della
rete, per individuare comportamenti potenzialmente malevoli.

81
3.7 Malware Detection
Il malware è un software progettato intenzionalmente per causare danni a computer, server, client o reti
informatiche. L’obiettivo è compromettere la riservatezza, l’integrità e la disponibilità dei dati, delle
applicazioni o dei sistemi operativi della vittima. Si distingue tra:
• malware che richiede un programma ospite (es. virus),
• malware indipendente (es. worm, trojan);
• malware che si replica (es. worm),
• malware che non si replica (es. trojan).

3.7.1 Virus
Codice malevolo che infetta contenuti eseguibili di altri software o del sistema operativo (es. macro Word
o Excel). Si attiva con i privilegi di sistema e tende a replicarsi.
• Primo virus noto: BRAIN (1983), colpiva sistemi MS-DOS.
• Componenti: vettore di infezione, trigger (evento che attiva il payload), payload (effetto del
virus).

3.7.2 Worm
Si propaga autonomamente sfruttando vulnerabilità software. Primo esempio: nei laboratori Xerox negli
anni ’80.
• Usa: email, messaggistica, media rimovibili, esecuzione remota.
• Obiettivo iniziale: utilizzare sistemi inattivi per elaborazioni complesse.

3.7.3 Trojan
Programma apparentemente utile contenente codice malevolo. Raccoglie dati sensibili e li invia all’attaccante.
• Esempio: Trojan Hydraq (2009), usava vulnerabilità di Explorer e si diffondeva via email.
• Target: Google, Adobe, Yahoo!, ecc.

82
3.7.4 Ransomware
E’ progettato per distruggere o cifrare i dati. Richiede un riscatto per fornire la chiave di decifratura.

• Esempio: Chernobyl (1998), WannaCry (2017).


• Pu‘o tentare di riscrivere il BIOS.

3.7.5 Zombie e Bot


Controllano in segreto un computer connesso a Internet per lanciare attacchi (DDoS, spam, sniffing).
• Una rete di bot è detta botnet.
• A differenza dei worm, i bot sono controllati da remoto.

3.7.6 Keylogger e Spyware


Raccolgono dati dall’utente, come credenziali, documenti, configurazioni.
• I keylogger registrano ciò che viene digitato.

• Gli spyware monitorano la navigazione e modificano dinamicamente i dati tra browser e siti.

3.7.7 Backdoor e Rootkit


• Backdoor: punto di accesso nascosto, spesso usato per debug, in ascolto su porte non standard.

• Rootkit: consente accesso completo e nascosto al sistema, risiede in memoria o è persistente.

3.7.8 Offuscamento del Codice


E’ il processo con cui si rende il codice difficile da comprendere, es. tramite:

• comandi inutili, salti non necessari,


• encoding (es. Base64),
• crittografia o hashing di API,

• compressione (packing),
• codice morto (dead code),
• inganno del disassemblatore,
• polimorfismo,

• metamorfismo.

Polimorfismo
Il malware cambia aspetto o firma ad ogni replica usando chiavi di cifratura diverse. Sfugge ai metodi di
rilevamento basati su firme.
• Un motore di mutazione genera nuove routine di decifratura.
• L’obiettivo e il comportamento rimangono invariati.

Metamorfismo
Virus che riscrive il proprio codice ad ogni infezione, considerato tra i più difficili da rilevare.
• Non genera solo nuove firme, ma nuove varianti del codice stesso.

83
3.7.9 Rilevamento del Malware
Basato su Firma
Confronta la firma digitale del file con un database di malware noti.

• Tecnica efficace contro attacchi noti.


• Le firme sono ”impronte digitali” univoche.
• Generazione e aggiornamento affidati a esperti.
• Svantaggi:

– rileva solo minacce note,


– non rileva varianti con firme differenti.

Basato su Machine Learning


• Firma inferita automaticamente.
• Estrazione delle feature (es. chiamate API, stringhe binarie, comportamenti dinamici).
• Classificazione automatica dei file in base alla rappresentazione delle feature.

3.7.10 Analisi Statica del Malware


L’analisi statica del malware consiste nell’esaminare il codice senza eseguirlo. L’analista osserva:
• la struttura del file,
• le stringhe contenute,

• le firme conosciute,
• i metadati,
• i n-grammi di sequenze di byte,
• le chiamate a librerie sintattiche,

• i grafi di flusso di controllo (CFG),


• gli opcode e la loro distribuzione di frequenza.
L’eseguibile deve essere decompresso e decifrato prima di poter essere analizzato staticamente.

84
Analisi con LIEF
LIEF ‘e un analizzatore statico per file Windows PE (Portable Executable), un formato comune per
sistemi operativi Windows.

• LIEF estrae 2381 feature statiche grezze dal codice binario.

• Byte histogram (256 feature): frequenza di ciascun byte rispetto alla dimensione totale del file.
• Byte entropy histogram (256 feature): distribuzione congiunta p(H, X) tra entropia H e byte
X.
• Stringhe (104 feature): numero, lunghezza media, caratteri stampabili, URL, percorsi di file e
chiavi di registro.
• File info (10 feature): dimensioni e metadati dal PE header.
• Header info (62 feature): da COFF e header opzionale.
• Section info (255 feature): dati sulle sezioni (nome, dimensione, entropia).

• Import (1280 feature): funzioni e librerie dalla tabella di import.


• Export (128 feature): funzioni esportate.
• Data Directory (30 feature): dimensioni e dimensioni virtuali delle directory dati nel PE.

N-Grams
Gli N-Gram sono sequenze contigue di elementi di lunghezza N . Esempio:

• Frase: ”I love petting dogs”


• 1-Gram: I, love, petting, dogs
• 2-Gram: I love, love petting, petting dogs
Nella rilevazione di malware:

• Le sequenze di opcode sono suddivise in N-grammi.

85
• Possono essere estratti da header, sezioni, import/export o codice.
• Permettono di catturare pattern e strutture ricorrenti.
• Gli N-grammi selezionati vengono usati per modellare e classificare nuovi file.

3.7.11 Analisi Dinamica del Malware


L’analisi dinamica osserva il comportamento del malware in un ambiente controllato (es. sandbox o
macchina virtuale), monitorando:
• traffico di rete,
• chiamate di sistema,
• modifiche al file system,
• interazioni con il sistema operativo.
L’analisi dinamica è un complemento essenziale a quella statica, in quanto è meno vulnerabile
all’offuscamento del codice.

86
Capitolo 4

Introduzione al Deep Learning

4.1 Introduzione
Il Deep Learning è un sottoinsieme dell’apprendimento automatico (Machine Learning) che si concentra
sull’apprendimento di rappresentazioni dei dati attraverso una sequenza di livelli, in cui ciascun livello
successivo è in grado di cogliere strutture e significati sempre più complessi rispetto a quello precedente.
Il Deep Learning (DL) è:
• un ramo del Machine Learning (ML),
• un insieme di algoritmi progettati per modellare rappresentazioni astratte di alto livello partendo
da dati grezzi,

• ispirato al funzionamento del cervello biologico,


• una disciplina con una storia lunga e ricca,
• composto da più strati di elaborazione, ognuno caratterizzato da trasformazioni non lineari multiple.

Nel contesto della preparazione dei dati, il Machine Learning richiede dati strutturati come input.
Questo comporta spesso l’intervento umano per identificare e selezionare le caratteristiche rilevanti in
base alla natura dei dati: per esempio, nel caso delle immagini, possono essere utilizzati valori dei pixel,
forme, rotazioni, ecc.
Il Deep Learning, al contrario, è in grado di estrarre automaticamente rappresentazioni astratte di alto
livello direttamente dai dati grezzi, senza la necessità di intervento umano. Questo approccio permette un
apprendimento end-to-end, in cui il modello impara direttamente dalla sorgente dei dati fino al compito
da svolgere (come ad esempio una classificazione), senza bisogno di manipolazioni intermedie.

87
L’utilità del Deep Learning è cresciuta parallelamente all’aumento della quantità di dati di adde-
stramento disponibili. Inoltre, con l’evoluzione dell’infrastruttura informatica, sia a livello hardware che
software, i modelli di Deep Learning sono diventati sempre più complessi, permettendo di affrontare
applicazioni via via più complicate con livelli di accuratezza crescenti.
Il sistema nervoso umano è costituito da:
• neuroni, ovvero regioni connesse tra loro tramite assoni e dendriti;
• sinapsi, ovvero i punti di connessione tra assoni e dendriti;
• la forza delle connessioni sinaptiche varia in risposta a stimoli esterni.
Le reti neurali artificiali simulano questo meccanismo biologico. In esse, le unità sono chiamate
neuroni artificiali e sono connesse tra loro attraverso dei pesi, che rappresentano l’equivalente della forza
delle connessioni nei sistemi biologici.
Ogni neurone artificiale segue un comportamento semplice ma potente:
1. riceve in ingresso segnali da molti altri neuroni,
2. modifica il proprio stato interno sulla base dell’input ricevuto,
3. invia un segnale in uscita verso altri neuroni della rete.

4.2 Artificial Neuron-McCollock and Pitts (1943)


Un neurone artificiale simula il comportamento di un neurone biologico attraverso una serie di operazioni
matematiche fondamentali. Il processo può essere descritto nei seguenti passaggi:

1. Il neurone riceve un vettore di input, indicato come:

X = [x1 , x2 , . . . , xn ]

dove ogni xi rappresenta una caratteristica (o feature) del dato in ingresso.

88
2. Viene quindi calcolata una funzione sugli input propagando i valori dai neuroni di input a quelli di
output mediante l’uso di pesi associati a ciascun input:

W = [w1 , w2 , . . . , wn ]

I pesi rappresentano l’importanza di ciascuna caratteristica nella predizione del valore finale.

3. Gli input pesati vengono quindi sommati:


n
X
WX = w i xi
i=1

4. Successivamente, una funzione di attivazione f (z) viene applicata per prendere una decisione:

ypred = f (z) = f (W · X + b)

Formalmente, un neurone artificiale può essere rappresentato come una quadrupla (x, w, f, ypred ) dove:
• X = [x1 , x2 , . . . , xn ] è il vettore degli input;
• W = [w1 , w2 , . . . , wn ] è il vettore dei pesi associati, con w0 = b che rappresenta il termine di bias;
• f è la funzione di attivazione;
• ypred = f (W · X + b) è il valore di uscita del neurone.
In forma espansa, il calcolo può essere espresso come:

ypred = f (x1 w1 + x2 w2 + · · · + xn wn ) + b = f (WT X + b)

89
4.3 Funzione di attivazione
Nelle reti neurali, l’input iniziale viene tipicamente trasformato attraverso operazioni lineari, come il
prodotto tra il vettore degli input X e il vettore dei pesi W, ovvero X · W. Tuttavia, il mondo reale e i
problemi che esso presenta sono raramente lineari.
Per poter affrontare efficacemente questi problemi complessi, è necessario introdurre non linearità
nei modelli. Questo avviene attraverso l’uso di funzioni di attivazione non lineari, che operano come
trasformazioni dei dati in ingresso, mappandoli in spazi non lineari.

Le funzioni di attivazione svolgono un ruolo cruciale nei modelli di deep learning:

• Permettono alla rete di apprendere schemi complessi e di ottenere risultati più accurati;
• Senza una funzione di attivazione, una rete neurale si ridurrebbe semplicemente a un modello di
regressione lineare, con capacità molto limitate;
• Consentono di ottenere una frontiera di decisione non lineare combinando in modo non lineare pesi
e input;
• Determinano la presenza e l’importanza di specifiche caratteristiche neurali;
• Vengono applicate all’output di ciascun livello della rete per introdurre non linearità e aumentare
la capacità di rappresentazione del modello.

90
Apprendimento del problema XOR
Un singolo neurone artificiale non è sufficientemente espressivo per risolvere problemi di apprendimento
complessi, come ad esempio il problema logico XOR, che non può essere separato da una funzione lineare.
Per superare questo limite, i neuroni vengono organizzati in strati, cosı̀ come avviene nel cervello
umano. Questa organizzazione consente alla rete neurale di comporre più trasformazioni non lineari,
rendendola capace di apprendere relazioni intricate tra i dati.

4.4 Reti Neurali Multistrato: i Layer Nascosti


Un contributo fondamentale allo sviluppo delle reti neurali profonde è stato fornito da Geoffrey Hinton,
David Rumelhart e Ronald Williams con la pubblicazione dell’articolo “Learning representations by back-
propagating errors”. In questo lavoro, gli autori hanno introdotto due concetti chiave:

• I layer nascosti, ovvero nodi neuronali interposti tra lo strato di input e quello di output, che
permettono alla rete di apprendere caratteristiche complesse dei dati.
• L’algoritmo di backpropagation, una procedura che consente di aggiornare ripetutamente i pesi
dei collegamenti in modo da minimizzare l’errore tra l’output reale della rete e quello desiderato,
riducendo cosı̀ la funzione di perdita.

Le reti multistrato contengono più livelli computazionali, tipicamente tre o più:

• uno strato di input, che riceve i dati iniziali,


• uno o più layer nascosti, non visibili direttamente, in cui avviene l’elaborazione intermedia,
• uno strato di output, che produce la predizione finale.

91
I layer nascosti automatizzano il processo di identificazione delle caratteristiche rilevanti. In altre
parole, è la rete stessa ad apprendere in modo autonomo quali rappresentazioni dei dati siano più utili
per il compito assegnato.
In alcune architetture, i layer nascosti contengono meno neuroni rispetto allo strato di input. Questa
scelta obbliga la rete ad apprendere rappresentazioni compresse dell’input originale, migliorando la ca-
pacità di generalizzazione.

4.4.1 Architettura Feed-Forward


Un’architettura molto diffusa per le reti multistrato è quella feed-forward, in cui:
• tutti i neuroni di uno strato sono connessi ai neuroni dello strato successivo;
• non ci sono connessioni tra neuroni dello stesso strato;
• l’informazione fluisce sempre in avanti, dallo strato di input verso quello di output.

4.4.2 Reti Completamente Connesse (Fully Connected)


Consideriamo ora una rete completamente connessa. Lo strato di input è rappresentato da un vettore di
m caratteristiche:
X = [x1 , x2 , . . . , xm ]

92
Ogni caratteristica viene moltiplicata per un peso corrispondente, e i risultati vengono sommati per
ottenere un prodotto scalare:
Xm
W·X= w i xi
i=1

Supponiamo ora di avere un solo layer nascosto con n neuroni. In questo caso, otteniamo n prodotti
scalari per produrre gli output del layer nascosto, ovvero:

h1 = f (W1 · X) = f (w1 x1 + w1 x2 + · · · + w1 xm )
h2 = f (W2 · X) = f (w2 x1 + w2 x2 + · · · + w2 xm )
..
.
hn = f (Wn · X) = f (wn x1 + wn x2 + · · · + wn xm )

Dove ogni Wi rappresenta un vettore di pesi associato al neurone i-esimo del layer nascosto. Se il
layer nascosto è il layer h, allora Wh rappresenta i pesi che collegano i neuroni tra il layer nascosto (h − 1)
e il layer h.

4.5 Apprendimento rete neurale


Le reti neurali apprendono attraverso un processo iterativo di tentativi ed errori, che può essere suddiviso
in tre fasi principali:

1. Tentativo: la rete calcola una predizione a partire dai dati di input forniti.
2. Valutazione: la predizione viene confrontata con il valore atteso (etichetta corretta) per valutare
quanto essa sia corretta. Il risultato di questa valutazione è chiamato loss (errore), calcolato come:

loss = y − ŷ

dove y è il valore atteso e ŷ è il valore predetto.


3. Correzione: i pesi della rete vengono aggiornati iterativamente per ridurre l’errore, migliorando
cosı̀ le prestazioni della rete.

Funzione di Perdita (Loss Function)


La funzione di perdita misura quanto il risultato prodotto dalla rete si discosta da quello atteso (la
cosiddetta ground truth). Questa funzione guida l’aggiornamento dei pesi durante l’addestramento. Il
valore dell’errore può essere calcolato in diversi modi, a seconda del tipo di problema:

• Errore quadratico medio (Mean Squared Error - MSE): utilizzato per problemi di regres-
sione, misura la media delle differenze al quadrato tra i valori predetti e quelli reali.

93
• Perdita da entropia incrociata (Cross Entropy Loss): comunemente usata nei problemi di
classificazione, valuta la probabilità predetta rispetto all’etichetta reale, penalizzando fortemente le
predizioni errate.

Durante l’addestramento, la rete neurale viene continuamente affinata per trovare i pesi che mini-
mizzano l’errore sui dati di addestramento, con l’obiettivo di ottenere predizioni sempre più accurate. Il
metodo fondamentale per l’addestramento delle reti neurali è l’algoritmo di backpropagation, che si
compone di due fasi:

• Fase forward: gli input vengono propagati attraverso i layer della rete per ottenere la predizione
finale, che viene confrontata con l’etichetta reale. Si calcola quindi la derivata della funzione di
perdita rispetto all’output.
• Fase backward: l’errore calcolato viene propagato all’indietro, aggiornando i pesi usando la regola
della catena (chain rule). In particolare, si calcola il gradiente della perdita rispetto a ciascun peso
della rete.

Il gradiente rappresenta la direzione in cui la perdita aumenta più rapidamente. Per minimizzare la
perdita, i pesi vengono aggiornati nella direzione opposta a quella del gradiente.

Derivate e Gradiente
La derivata di una funzione descrive la variazione della funzione rispetto alla variazione del suo argo-
mento. Formalmente, la derivata f ′ (x) fornisce la pendenza della funzione in un dato punto.

Nel contesto vettoriale, il gradiente di una funzione scalare differenziabile f è il vettore ∇f , che
contiene tutte le derivate parziali della funzione. Il gradiente indica la direzione della massima crescita
della funzione e misura quanto l’output della funzione cambia in risposta a una variazione dei suoi input.

94
Discesa del Gradiente (Gradient Descent)
La discesa del gradiente è un algoritmo iterativo di ottimizzazione di primo ordine il cui obiettivo è trovare
un minimo locale della funzione di perdita. A ogni iterazione, il gradiente della funzione di perdita f (W)
rispetto ai pesi W viene calcolato, e i pesi vengono aggiornati secondo la regola:

Wnuovi = Wvecchi − α∇f (W)


dove α è il tasso di apprendimento (learning rate), che controlla la dimensione del passo effettuato
nella direzione opposta al gradiente. Se la pendenza è elevata, il modello impara rapidamente; se è nulla,
l’apprendimento si blocca.

95
4.5.1 Chain Rule
Nelle reti neurali multistrato, la funzione di perdita è una funzione composta che dipende dai pesi degli
strati precedenti. Il gradiente dell’errore viene calcolato utilizzando l’algoritmo di backpropagation, che si
basa sull’applicazione della regola della catena. In particolare, l’algoritmo calcola il gradiente dell’errore
come somma di prodotti tra gradienti locali.

4.5.2 Classificazione
Funzione di attivazione per la classificazione:

96
Gli iperparametri delle reti neurali sono:

• Il numero di unità nascoste presenti in ciascun layer è chiamato larghezza (o width) della rete,
mentre il numero totale di layer nascosti viene definito profondità (o depth).
• Le reti neurali moderne possono avere anche più di un centinaio di layer, ciascuno con migliaia di
unità nascoste.
• Il numero totale di unità nascoste rappresenta una misura della capacità della rete neurale, ovvero
della sua abilità nel modellare relazioni complesse all’interno dei dati.

4.5.3 Apprendimento End-to-End


Nel Deep Learning, i modelli sono in grado di apprendere automaticamente le rappresentazioni (cioè le
caratteristiche o features) direttamente dai dati grezzi, come ad esempio le immagini. Questo processo
è noto come apprendimento end-to-end, poiché il modello impara in maniera autonoma dal dato
iniziale fino alla predizione finale, senza bisogno di interventi manuali nella definizione delle caratteristiche
rilevanti.
Secondo il testo Deep Learning a cura di Ian Goodfellow et al. (deeplearningbook.org), questo processo
avviene in modo gerarchico attraverso i layer nascosti della rete neurale:

• Nel primo layer nascosto, dato un input composto da pixel, la rete apprende a identificare i
contorni, confrontando la luminosità dei pixel adiacenti.

• Nel secondo layer nascosto, la rete apprende a individuare angoli e contorni estesi, intesi come
combinazioni di bordi.
• Nel terzo layer nascosto, vengono rilevate porzioni di oggetti specifici, attraverso la combinazione
strutturata di contorni e angoli precedentemente identificati.

• Infine, questa descrizione dell’immagine, espressa in termini di parti di oggetti, viene utilizzata per
riconoscere gli oggetti presenti nella scena.

Questo approccio rende i modelli di deep learning estremamente potenti, in quanto consente loro di
apprendere in modo automatico rappresentazioni astratte e di alto livello, direttamente dai dati grezzi,
migliorando l’efficacia nelle attività di classificazione, rilevamento e segmentazione.

97
4.6 Architetture delle Reti Neurali
Le reti neurali artificiali possono assumere diverse architetture, ognuna adatta a specifici compiti e tipolo-
gie di dati. Esse si distinguono principalmente in due grandi categorie: apprendimento supervisionato
e apprendimento non supervisionato.

Apprendimento Supervisionato
Nell’apprendimento supervisionato, il modello viene addestrato utilizzando coppie di input e output noti,
in modo che possa imparare a generalizzare su nuovi dati. Le principali architetture in questo ambito
sono:

• Percettrone Multistrato (MLP - Multi Layer Perceptron)


Architettura classica composta da strati completamente connessi (fully connected), utilizzata per:
– Predizione
– Classificazione

98
• Reti Neurali Convoluzionali (CNN - Convolutional Neural Network)
Architettura specializzata per l’elaborazione di dati con struttura spaziale, come le immagini. Prin-
cipali applicazioni:
– Visione artificiale (computer vision)

• Reti Long Short-Term Memory (LSTM)


Variante delle reti ricorrenti (RNN), ideate per gestire dati sequenziali e apprendere dipendenze a
lungo termine. Applicazioni principali:
– Riconoscimento vocale e della scrittura
– Serie temporali
– Traduzione automatica

99
• Transformer
Architettura moderna basata sull’autoattenzione, diventata lo standard per il trattamento del lin-
guaggio naturale. Applicazioni tipiche:

– Traduzione linguistica
– Compressione semantica delle parole

Apprendimento Non Supervisionato


In questo caso, la rete apprende senza etichette, cercando di identificare strutture o modelli nei dati
grezzi. Le architetture principali sono:

• Autoencoder
Utilizzati per la riduzione della dimensionalità, la compressione dei dati e l’individuazione di anoma-
lie.

• Modelli Generativi (es. GAN - Generative Adversarial Networks)


Reti in grado di generare nuovi dati simili a quelli del dataset di partenza, impiegate in campi come
la generazione di immagini, video e musica.

4.6.1 Autoencoder
Gli autoencoder sono reti neurali artificiali utilizzate per l’apprendimento non supervisionato. L’obiettivo
principale è quello di copiare l’input all’output, passando però attraverso una rappresentazione intermedia
detta rappresentazione latente. Questo processo permette alla rete di apprendere automaticamente una
compressione significativa dei dati.

Struttura di un Autoencoder
Un autoencoder è composto da due parti principali:

100
• Encoder: mappa l’input x in uno spazio latente ridotto h secondo la funzione h = f (x), dove la
dimensione di h è tipicamente inferiore a quella di x.
• Decoder: ricostruisce l’input originario x′ a partire dal codice latente, ovvero x′ = g(h).

L’addestramento consiste nel minimizzare l’errore di ricostruzione, tipicamente espresso come:

L(x, g(f (x)))

Utilizzi degli Autoencoder


Gli autoencoder possono essere impiegati in vari contesti:

1. Estrazione di caratteristiche e riduzione dimensionale


2. Rilevamento di anomalie (Anomaly Detection)
3. Aumento delle caratteristiche (Feature Augmentation) attraverso la generazione di dati
simili a quelli di addestramento

Applicazioni nella Cybersecurity


Al-Qatf et al. (2018)
Gli autori propongono un approccio che combina:
• Autoencoder sparsi per la riduzione dimensionale,

• SVM per la classificazione.

101
Safad et al. (2020)
Utilizzano autoencoder per il rilevamento di anomalie. L’approccio comune consiste nel:
• costruire un profilo di istanze normali,
• usare la MSE L(x, x′ ) come misura dell’errore di ricostruzione,

• stabilire una soglia per distinguere le anomalie.

Mirsky et al. (2018): Kitsune


Propongono un sistema chiamato Kitsune, basato su un ensemble di autoencoder. Ogni autoencoder
tenta di ricostruire le caratteristiche di un’istanza, e:
• si calcola l’errore tramite RMSE (Root Mean Squared Error),

• i valori di RMSE vengono poi passati a un autoencoder finale.

102
Pipeline completa: costruzione delle caratteristiche, classificazione e rileva-
mento post-classificazione
1. Costruzione delle caratteristiche:
• Calcolo del guadagno informativo per la selezione delle caratteristiche,
• Addestramento di un autoencoder sui campioni normali per l’augmentazione.
2. Classificazione:
• Addestramento di modelli deep learning sui dati aumentati.
3. Rilevamento post-classificazione:
• Uso dell’autoencoder per rilevare anomalie nei campioni normali del dataset aumentato.

Rappresentazione multi-canale e CNN


Un approccio avanzato prevede:
• L’addestramento di due autoencoder, uno sui dati normali e uno su quelli di attacco,
• La costruzione di una rappresentazione multi-canale,
• L’addestramento di una CNN 1D per apprendere le dipendenze tra caratteristiche originali e derivate
dagli autoencoder.

103
4.6.2 Convolutional Neural Networks (CNNs)
Un’immagine in scala di grigi può essere rappresentata come una matrice tridimensionale h × w × c, dove
h è l’altezza, w la larghezza e c il numero di canali. Nel caso di immagini in scala di grigi, c = 1, poiché
ogni pixel è rappresentato da un solo valore (da 0 a 255).

• Un’immagine 64 × 64 ha 4096 pixel: l’input layer avrà quindi 4096 nodi.


• Se il primo layer nascosto ha 100 neuroni, saranno necessari 4096 × 100 = 409600 pesi.
• Problemi complessi richiedono molteplici layer nascosti, aumentando ulteriormente il numero di
parametri.

Nel caso delle immagini a colori, ogni pixel è rappresentato da 3 valori (modalità RGB). Un’immagine
64 × 64 in RGB ha quindi:
64 × 64 × 3 = 12.288 valori

• Con 100 neuroni nel primo layer nascosto, servono 12.288 × 100 = 1.228.800 pesi.

• Un numero cosı̀ elevato di parametri rende l’addestramento più complesso e soggetto a overfitting.

104
Quando un’immagine 2D viene rappresentata come un vettore 1D nell’input layer, qualsiasi relazione
spaziale tra i dati viene persa. Tuttavia, la rete può ancora apprendere specifici pattern regionali.

Le CNN sono una classe specializzata di reti neurali progettate per elaborare input strutturati a
griglia, come le immagini o le serie temporali. Presentano alcune proprietà chiave:

• Dipendenze spaziali locali: rilevano pattern locali all’interno dell’immagine.


• Invarianza alla traslazione: un oggetto (es. una banana) viene riconosciuto indipendentemente
dalla sua posizione.
• Pattern locali simili → caratteristiche simili: i filtri riescono a generalizzare le strutture.

105
Una CNN è tipicamente composta da quattro tipi di layer:

1. Input layer
2. Layer convoluzionale
3. Layer di pooling

4. Layer completamente connesso

Le CNN si differenziano dalle reti neurali classiche in quanto utilizzano operazioni di convoluzione
(∗) invece della moltiplicazione matriciale generale, almeno in uno dei loro layer.

Filtri (o kernel)
Durante la convoluzione, dei filtri scorrono sull’immagine:

• Ogni filtro si applica in ogni posizione possibile dell’immagine tramite un dot product.
• L’aumento del numero di filtri aumenta la profondità del layer successivo (feature maps).
• Più filtri permettono di catturare forme e pattern diversi.

106
Il parametro stride definisce di quante celle il filtro si sposta a ogni passaggio:

107
Il padding aggiunge pixel (con valore 0) attorno ai bordi per mantenere la dimensione spaziale della
feature map:

Nel caso di immagini RGB:


• L’input è un tensore h × w × 3.

• L’output è una mappa di attivazione h′ × w′ × c′ .


• Il numero di canali influisce sulla profondità della convoluzione.

108
109
4.6.3 Generative adversarial networks (GAN)
Le Generative Adversarial Networks (GAN) sono una classe di modelli di apprendimento automatico
introdotta da Ian Goodfellow nel 2014. Il loro obiettivo principale è quello di generare nuovi dati simili
a quelli reali, partendo da un input casuale. Le GAN sono composte da due reti neurali che si sfidano in
un gioco a somma zero:
• Il Generatore (Generator): prende in input un vettore casuale (rumore) e genera un dato
sintetico, come un’immagine, che dovrebbe somigliare il più possibile a un dato reale.

• Il Discriminatore (Discriminator): riceve in input sia dati reali che dati generati e cerca di
distinguere tra i due, classificandoli come veri o falsi.

Il processo di apprendimento è detto adversarial (avversariale) perché:


• Il generatore migliora cercando di ”ingannare” il discriminatore,
• Il discriminatore migliora cercando di diventare più preciso nel distinguere i dati reali da quelli
generati.

Matematicamente, l’addestramento di una GAN può essere visto come un problema di ottimizzazione
min-max:
min max V (D, G) = Ex∼pdata (x) [log D(x)] + Ez∼pz (z) [log(1 − D(G(z)))]
G D

Dove:
• D(x) è la probabilità che x sia un dato reale,
• G(z) è il dato generato a partire dal rumore z,

• pdata è la distribuzione reale dei dati,


• pz è la distribuzione del rumore (di solito gaussiana o uniforme).

110
Applicazioni delle GAN
Le GAN hanno trovato applicazione in numerosi ambiti, tra cui:
• Generazione di immagini realistiche (es. volti umani, paesaggi)

• Restauro di immagini danneggiate o a bassa risoluzione (super-resolution)


• Traduzione di immagini (es. trasformare un cavallo in una zebra)
• Generazione di musica, video o testo
• Creazione di dati sintetici per il training di altri modelli (data augmentation)

Vantaggi e Sfide
Vantaggi:
• Capacità di generare contenuti estremamente realistici.

• Utili in assenza di grandi dataset etichettati.


Sfide:
• Difficoltà nell’addestramento: le GAN sono notoriamente instabili.

• Modal collapse: il generatore produce campioni troppo simili o ripetitivi.

4.6.4 Applicazioni Deep Learning


Le applicazioni delle reti neurali sono le seguenti:

111
Immagini

Traduttore

112
Riconoscimento vocale

Riconoscimento scrittura

113
Arte

Faking faces and video

114
Ricostruzioni di immagini

Creazione di visi

115
Creazione di immagini da testo

Guida autonoma

116
Chatbot

Cybersecurity

117
Capitolo 5

Introduzione all’Adversarial Machine


Learning

5.1 Introduzione
L’Adversarial Machine Learning studia degli attacchi agli algoritmi di machine learning (e deep learning)
in particolare si occupa di:

• Raccolta di tecniche per addestrare le reti neurali a riconoscere dati o comportamenti intenzional-
mente fuorvianti
• Difese contro tali attacchi
• Individuazione preventiva delle vulnerabilità e sviluppo di algoritmi di apprendimento più flessibili

5.2 Biometria Avversaria


Un noto esempio di attacco avversario nel campo delle tecnologie biometriche è stato mostrato dal Chaos
Computer Club (CCC). In questa dimostrazione, è stato possibile ingannare il sistema di riconoscimento
dell’impronta digitale di un iPhone 5s protetto da TouchID. Il metodo utilizzato consisteva nel fotogra-
fare l’impronta digitale dell’utente lasciata su una superficie di vetro. A partire da quell’immagine, è
stato creato un dito artificiale capace di sbloccare il dispositivo. Le immagini confrontate mostrano che
l’impronta del dito reale (a sinistra) e quella del dito falso (a destra) risultano praticamente indistinguibili,
evidenziando cosı̀ una vulnerabilità critica nei sistemi biometrici.

118
Questa immagine mostra un esempio concreto di attacco adversarial ai sistemi di riconoscimento
facciale, tratto dallo studio ”Accessorize to a Crime” di Sharif et al. (ACM CCS 2016).

La slide è composta da tre riquadri:


• A sinistra, vediamo un paio di occhiali con una particolare trama colorata, realizzati appositamente
per ingannare un algoritmo di riconoscimento facciale.
• Al centro, c’è un uomo che indossa quegli stessi occhiali stampati, dimostrando come il semplice
uso dell’accessorio possa alterare il risultato del riconoscimento automatico.
• A destra, compare l’immagine di un volto femminile famoso, che rappresenta l’identità target:
l’obiettivo dell’attacco è far sı̀ che il sistema riconosca erroneamente l’uomo come questa donna.
Questo esempio evidenzia come sia possibile ingannare un sistema di intelligenza artificiale semplicemente
usando un oggetto fisico (come degli occhiali), senza bisogno di modificare il volto in modo digitale. È
un attacco silenzioso e subdolo, che può avere gravi implicazioni per la sicurezza di sistemi biometrici in
ambito reale.

119
L’immagine mostra un esempio concreto di attacco adversarial fisico su un sistema di classificazione
visiva basato su intelligenza artificiale. Nel primo riquadro in alto, viene mostrata una banana appog-
giata su un tavolo: il classificatore, in questo caso, funziona correttamente e identifica l’oggetto come una
“banana” con altissima probabilità. Nel secondo riquadro in basso, viene riproposta la stessa scena, ma
con una differenza cruciale: accanto alla banana è stato posizionato uno sticker adversarial, ovvero un
adesivo realizzato con una trama particolare progettata per confondere il modello. In presenza di questo
sticker, il classificatore non riconosce più correttamente la banana e assegna invece con alta probabilità
l’etichetta “toaster” (tostapane). Questo esempio dimostra come sia possibile, anche nel mondo reale,
compromettere la capacità di un sistema di visione artificiale semplicemente manipolando l’ambiente cir-
costante. Tali attacchi evidenziano importanti limiti di sicurezza nei modelli di deep learning, soprattutto
in applicazioni critiche come la guida autonoma o la videosorveglianza.

A sinistra, troviamo un collage di immagini con la domanda “Puppy or Muffin?”. Le immagini


accostano cuccioli di cane (soprattutto razza Chihuahua) a muffin con gocce di cioccolato: i tratti visivi
come gli occhi scuri, la peluria e la forma tondeggiante rendono sorprendentemente difficile distinguerli,
soprattutto per un modello automatico di riconoscimento immagini. A destra, viene proposta una sfida
simile: “Sheepdog or Mop?” Qui, cani da pastore con il pelo lungo e arruffato sono affiancati a comuni
mop da pavimento. Anche in questo caso, la somiglianza visiva tra le due categorie può facilmente
trarre in inganno non solo gli umani, ma anche i modelli di intelligenza artificiale. Questa immagine
gioca sul fatto che i modelli di machine learning si basano su pattern visivi per classificare gli oggetti.
Quando due categorie diverse condividono caratteristiche visive molto simili, bastano piccole variazioni
per causare errori di classificazione. In questo contesto, le immagini non sono state modificate in modo
ostile, ma rappresentano esempi naturali di quanto sia facile per un modello sbagliare. Questi casi
illustrano perfettamente come gli adversarial examples siano per le macchine ciò che le illusioni ottiche
sono per gli esseri umani: stimoli progettati (o casuali) che portano a conclusioni errate.

120
I modelli di deep learning, in particolare le reti neurali profonde (DNN), cercano di replicare il compor-
tamento decisionale umano, ovvero la funzione che determina a quale classe appartiene un determinato
input. Nel fare questo, il classificatore costruisce dei confini di decisione (decision boundaries) nello
spazio delle caratteristiche, che separano le diverse classi. Un attaccante che vuole ingannare il sistema
può sfruttare questa struttura: basta trovare un punto appena al di fuori di questi confini per indurre
il classificatore a cambiare la propria decisione. Questo significa che anche piccole perturbazioni — im-
percettibili per l’occhio umano — possono spingere un input oltre il limite e far sı̀ che venga classificato
in modo errato.

5.3 Categorizzazione dei campioni avversari


5.3.1 Obiettivo dell’attaccante
Un errore di classificazione può manifestarsi in due modalità:

• Il campione viene classificato erroneamente come una classe specifica (es. un cane scambiato per
un gatto);
• Oppure viene classificato come una qualsiasi classe diversa da quella reale (es. un cane identificato
come qualunque cosa tranne che cane).

Questa distinzione è utile per comprendere la natura dell’errore e il comportamento del classificatore.

121
5.3.2 Capacità dell’attaccante

Un attacco può consistere nell’iniezione di dati malevoli nel processo di addestramento del modello. In
questi casi, vengono creati esempi perturbati con l’obiettivo specifico di farli classificare in modo errato dal
modello. Un esempio concreto si verifica nel filtraggio dello spam: gli spammer possono provare diverse
varianti del contenuto dell’email contro il modello e, tramite tentativi ripetuti, riescono a individuare una
forma che venga classificata erroneamente come innocua. In questo modo, l’email spam riesce a bypassare
i filtri e raggiungere la casella dell’utente.

Gli attacchi di tipo poisoning mirano a compromettere il modello durante la fase di addestramento.
Esistono diverse strategie:
• Modifica dei dati: consiste nel manomettere i dati di training, ad esempio alterando le etichette
associate agli esempi, in modo da influenzare negativamente l’apprendimento del modello 28.

• Iniezione di dati: in questo caso, l’attaccante aggiunge nuovi esempi al dataset di addestramento.
Questi esempi sono spesso creati in modo avversario per far apprendere al modello comportamenti
errati 29.
• Corruzione della logica: qui l’attaccante ha la capacità di interferire direttamente con l’algoritmo
di apprendimento stesso, compromettendo il funzionamento interno del modello 30.

122
123
124
5.3.3 Conoscenza dell’attaccante
Gli attacchi adversarial si classificano in tre categorie, a seconda del livello di conoscenza che l’attaccante
ha sul modello bersaglio:
• Attacchi White Box: L’attaccante ha piena conoscenza della struttura e dei parametri del modello.
Può quindi sfruttare questa informazione per generare perturbazioni altamente efficaci. Alcuni dei
metodi più noti sviluppati in questo contesto includono:
– Fast Gradient Sign Method (FGSM) – Proposto nel 2015, è uno dei primi metodi per generare
esempi adversarial in modo rapido, utilizzando il gradiente del modello rispetto all’input.
– Jacobian-Based Saliency Map Attack (JSMA) – Introdotto nel 2016, utilizza la matrice jaco-
biana per individuare quali caratteristiche dell’input modificare al fine di ingannare il classifi-
catore.
– DeepFool – Anch’esso del 2016, è un attacco iterativo che cerca la minima perturbazione
necessaria per attraversare il confine di decisione del modello.
– Carlini & Wagner (C&W) – Proposto nel 2017, è uno degli attacchi più potenti e sofisticati,
capace di aggirare anche difese note.
• Attacchi Gray Box: L’attaccante non conosce l’intero modello, ma dispone di informazioni parziali,
come la rappresentazione delle caratteristiche (feature) o l’algoritmo di apprendimento utilizzato.
• Attacchi Black Box: L’attaccante non ha alcuna conoscenza del modello, né della rappresentazione
interna delle caratteristiche, né dei parametri. Gli attacchi vengono condotti solo osservando gli
output in risposta a specifici input.

5.4 Addestramento di una rete neurale


L’obiettivo dell’addestramento di una rete neurale è quello di trovare il minimo della funzione di perdita.
Questo equivale a determinare un buon insieme di parametri della rete.

125
Per farlo, si calcola la derivata della funzione di perdita rispetto ai parametri (indicati con θ). Suc-
cessivamente, si aggiornano i parametri in modo da ridurre il valore della perdita sul campione di adde-
stramento corrente.

In alcuni contesti, come negli attacchi adversarial, l’obiettivo non è quello di ridurre la funzione di
perdita, bensı̀ di aumentarla. In particolare, si cerca di modificare il campione di input xx in modo
tale da massimizzare la perdita del modello rispetto alla previsione corretta. Questo porta il modello a
classificare erroneamente l’input, compromettendo la sua affidabilità.

126
Consideriamo un esempio (x, y) e un modello F che mappa x in un’etichetta di classe predetta y ′ . Un
esempio avversario xadv per un esempio originale x è definito come:

• xadv = x + η dove η è una piccola perturbazione aggiunta all’ingresso tale che F (xadv ) ̸= y

Questo è un esempio di esempio avversario (adversarial example): un’immagine modificata con una
perturbazione minima e impercettibile che induce un errore grossolano nel modello di apprendimento
automatico.

Un attacco avversario consiste nel trovare, a partire da un campione originale x, un nuovo esempio
xadv tale che il modello produca una classificazione errata. Questo nuovo esempio si ottiene aggiungendo
una piccola perturbazione η all’ingresso originale, ossia:

xadv = x + η
affinché valga la condizione:

∥x − xadv ∥ = ∥η∥ < ε

127
dove ε rappresenta un limite massimo alla dimensione della perturbazione. Questo vincolo serve a
garantire che la perturbazione rimanga impercettibile all’occhio umano, evitando modifiche evidenti che
renderebbero l’immagine irriconoscibile.
Le perturbazioni possono essere di diversa natura, a seconda della norma scelta per misurarle. Ad
esempio, un attacco può:
• modificare fortemente solo pochi pixel (norma L0 ),
• alterare leggermente tutti i pixel (norma L∞ ),

• oppure combinare entrambi gli approcci, come nel caso delle norme L1 e L2 .
In questo modo, l’attaccante riesce a ingannare il modello senza cambiare in modo significativo l’apparenza
visiva dell’immagine originale.

Fast Gradient Sign Method (FGSM)


L’obiettivo principale nella costruzione di un esempio avversario è quello di massimizzare la funzione di
perdita rispetto all’etichetta reale y. A partire da un input originale x, si costruisce un nuovo esempio
avversario xadv = x + η, in modo tale da aumentare il più possibile la loss:

max L(F (x + η), y)

Diversamente da quanto accade nel processo di addestramento di una rete neurale, dove si ottimiz-
zano i parametri del modello per minimizzare la loss, in questo caso si ottimizzano direttamente i pixel
dell’immagine, ovvero si agisce sull’input, con lo scopo di aumentare la perdita.
Per garantire che la perturbazione η rimanga impercettibile, si impone il vincolo:

∥η∥∞ < ε
ovvero si limita la variazione massima applicabile a ciascun pixel.
In una versione semplificata, chiamata single-step attack, la perturbazione η viene calcolata in un
solo passo, seguendo la direzione del gradiente della funzione F rispetto all’input. Questo consente di
generare rapidamente esempi avversari efficaci senza bisogno di un’ottimizzazione iterativa.

128
5.5 Iterative multistep algorithms
Il metodo FGSM (Fast Gradient Sign Method) è una tecnica di attacco avversario semplice ed efficiente
che utilizza un singolo passo di aggiornamento del gradiente per costruire l’esempio avversario. Questo
approccio rapido è computazionalmente leggero, ma presenta anche un limite: la sua potenza di attacco
è ridotta, poiché non esplora in profondità lo spazio delle perturbazioni possibili.
Per generare attacchi più efficaci, si può adottare un approccio iterativo, che consiste nell’ottimizzazione
dell’input attraverso una discesa del gradiente ripetuta per più iterazioni. In questo modo, l’esempio
avversario viene raffinato progressivamente, aumentando la probabilità di ingannare il modello anche in
presenza di meccanismi di difesa.
Due estensioni comuni del metodo FGSM che adottano questa strategia iterativa sono:
• BIM (Basic Iterative Method), che applica FGSM più volte con piccoli passi, mantenendo la
perturbazione entro un certo limite;
• PGD (Projected Gradient Descent), che rappresenta una generalizzazione ancora più potente, in
cui ad ogni passo l’input viene proiettato nel dominio valido, assicurando che la perturbazione
rimanga entro il vincolo prefissato.

5.5.1 Project Gradient Descent (PGD)


Il metodo PGD (Projected Gradient Descent) rappresenta un’estensione del BIM (Basic Iterative Method).
La differenza principale risiede nel fatto che, dopo ogni passo di aggiornamento della perturbazione,
l’esempio avversario viene proiettato nuovamente all’interno della sfera di raggio ε centrata sull’input
originale x. Questa sfera, detta anche ε-ball, è definita rispetto a una determinata norma (ad esempio
L2 o L∞ ). Per effettuare questa operazione di contenimento, PGD utilizza una funzione di proiezione,
indicata con il simbolo Π, che riporta l’esempio modificato all’interno del dominio ammesso delle pertur-
bazioni. Grazie a questo meccanismo, PGD garantisce che la perturbazione rimanga entro limiti control-
lati, rendendo l’attacco sia potente che formalmente contenuto all’interno dello spazio delle perturbazioni
impercettibili.

129
La discesa del gradiente (Gradient Descent) è un metodo standard utilizzato per risolvere problemi
di ottimizzazione non vincolata. In questo contesto, l’obiettivo è trovare il minimo di una funzione f (x)
su tutto lo spazio reale:

min f (x)
x∈R

In questo caso, qualsiasi punto x appartenente a R può essere una soluzione.

Diversamente, il metodo della discesa del gradiente proiettata (Projected Gradient Descent, PGD) è
usato per risolvere problemi di ottimizzazione vincolata, dove la soluzione deve appartenere a un sottoin-
sieme Q ⊆ R:

min f (x)
x∈Q

In questo scenario, non tutti i punti di R sono ammessi come soluzione: solo quelli che si trovano
all’interno del dominio Q.
Dato un punto x, PGD cerca il punto più vicino a x che si trovi all’interno del dominio ammesso Q.
Questo avviene tramite una funzione di proiezione, che ”riporta” x dentro Q qualora l’aggiornamento del
gradiente lo avesse spinto al di fuori.

Il Projected Gradient Descent (PGD) è un’estensione del metodo BIM (Basic Iterative Method).
La principale differenza consiste nel fatto che, dopo ogni passo di aggiornamento della perturbazione,

130
l’esempio avversario viene proiettato nuovamente all’interno della sfera di raggio ε centrata sull’input
originale x, secondo una determinata norma L (ad esempio L2 o L∞ ). Questa operazione di proiezione
viene eseguita tramite una funzione Πε . L’aggiornamento a ogni iterazione t è definito dalla seguente
formula:

xadv
t = Πε (xt−1 + α · sign (∇x L(h(xt−1 ), y)))
dove α rappresenta il passo dell’aggiornamento, L è la funzione di perdita, h è il modello predittivo e
y l’etichetta reale. A differenza del BIM, il PGD introduce anche una inizializzazione casuale dell’input:
all’inizio di ogni attacco, l’esempio viene perturbato con un rumore casuale prelevato da una distribuzione
uniforme con valori compresi nell’intervallo (−ε, ε). Questo rende l’attacco più robusto e meno dipendente
dalla posizione iniziale, migliorandone l’efficacia contro modelli difensivi.

5.5.2 Jacobian-based Saliency Map Attack (JSMA)


Il metodo JSMA (Jacobian-based Saliency Map Attack) è un attacco avversario di tipo mirato (*targeted
attack*), il cui obiettivo è quello di generare un esempio avversario che venga classificato in una classe
specifica scelta dall’attaccante. A differenza del metodo FGSM, che tende a modificare tutti i pixel in
modo indiscriminato (seguendo il gradiente), JSMA adotta una strategia più selettiva. In particolare,
modifica solo coppie di pixel per volta, scegliendo in modo mirato quali alterare, per aumentare le prob-
abilità che l’input venga riclassificato nella classe desiderata. Questa selezione avviene tramite l’utilizzo
di una mappa di salienza (*saliency map*), che rappresenta l’impatto di ciascun pixel sul risultato della
classificazione. Un valore elevato nella mappa di salienza indica che modificare quel determinato pixel
produrrà un effetto significativo sull’output del modello. Grazie a questo approccio, JSMA riesce a
ottenere attacchi efficaci apportando modifiche minime e altamente mirate all’input originale.

131
JSMA: Mappa di Salienza
La mappa di salienza (Saliency Map) è una rappresentazione visiva utilizzata per spiegare le predizioni
di un classificatore. Essa mostra quanto ciascuna caratteristica dell’input (ad esempio ogni pixel xi )
influenzi la decisione del modello nel predire una determinata classe c. Tecnicamente, si considera il
gradiente della funzione di output rispetto a ciascuna caratteristica di input, ovvero:

y ′ (x) = arg max f (x)(c)


c

dove f (x) è il vettore delle probabilità ottenute tramite la funzione softmax, predetto dal modello. La
mappa di salienza evidenzia quindi quali caratteristiche hanno maggiore peso nella determinazione della
classe predetta.

JSMA: Mappa di Salienza Avversaria


Nel contesto di JSMA, si utilizza una mappa di salienza avversaria (Adversarial Saliency Map), che indica
quali caratteristiche dell’input devono essere modificate affinché il campione venga classificato in una
classe obiettivo scelta dall’attaccante. L’obiettivo dell’attaccante è quello di far classificare erroneamente
un input x nella classe bersaglio t. Per fare ciò, è necessario:

• aumentare la probabilità assegnata alla classe target ft (x),

• diminuire contemporaneamente la probabilità fj (x) per tutte le altre classi j ̸= t,

fino a ottenere:

t = arg max f (x)


In questo modo, il modello viene indotto a predire x come appartenente alla classe desiderata t, anche
se visivamente l’input è rimasto quasi invariato.

132
5.5.3 Attacco di Carlini & Wagner (CW)
L’attacco di Carlini e Wagner (CW) è una tecnica sofisticata per la generazione di esempi avversari.
L’obiettivo è quello di trovare una perturbazione η molto piccola che faccia sı̀ che un’immagine x venga
classificata erroneamente, ma che l’immagine risultante rimanga valida e visivamente simile all’originale.
A differenza di altri attacchi (come FGSM, PGD o JSMA), che si basano su vincoli espliciti sulla
dimensione della perturbazione (come ε), il metodo CW utilizza una funzione di penalizzazione basata
sul punteggio di classificazione, modulata da un iperparametro C.
La funzione obiettivo da minimizzare è del tipo:

f = [1 − C(x + η)t ]
dove C(x + η)t rappresenta la fiducia del modello nella classificazione del campione modificato x + η
come appartenente alla classe bersaglio t. La condizione C(x + η)t = t è considerata soddisfatta quando:

f (x + η) ≤ 0
Ovvero, quando la classificazione predetta coincide con la classe target.
In termini probabilistici:
• Quando la probabilità che x + η appartenga alla classe t è bassa, f assume valori vicini a 1.
• Quando il modello classifica correttamente x + η come t, allora f si avvicina a 0.
Questo approccio permette di controllare il compromesso tra l’ampiezza della perturbazione e l’efficacia
dell’attacco, generando esempi avversari che sono difficili da rilevare visivamente.

133
Comparazione

5.6 Evasione in modalità black-box basata sulla trasferibilità


Uno degli approcci più efficaci per eseguire un attacco di evasione in modalità black-box è quello basato
sulla trasferibilità degli esempi avversari.
In questo scenario, l’attaccante addestra un modello sostitutivo (substitute model), cercando di repli-
care il comportamento del modello target. Una volta addestrato il sostituto, si generano esempi avversari
contro di esso, che poi vengono trasferiti direttamente al modello vittima. Grazie al fenomeno della
trasferibilità, è molto probabile che un esempio avversario efficace contro una rete neurale riesca a in-
gannare anche un’altra rete, anche se strutturalmente diversa.

134
La riuscita dell’attacco dipende dal tipo di attacco utilizzato: ad esempio, gli esempi costruiti con
FGSM sono altamente trasferibili.
Il processo tipico è il seguente:

1. Si addestra un modello sostitutivo basandosi su coppie input/output ottenute interrogando la rete


target.
2. Si usano questi dati etichettati per simulare il comportamento del modello reale.

3. Si costruiscono esempi avversari contro il modello sostitutivo.


4. Gli stessi esempi vengono poi utilizzati per attaccare il modello target.

Grazie all’elevata trasferibilità, l’attacco ha una buona probabilità di successo, pur non conoscendo
la struttura interna della rete bersaglio.

Adversarial Transferability
La trasferibilità rappresenta la capacità di un attacco contro un modello di apprendimento automatico
di essere efficace anche contro un altro modello, potenzialmente sconosciuto, addestrato per risolvere lo
stesso problema. Questo fenomeno è stato osservato in modo particolare nel contesto del deep learning,
ma si verifica anche in altri paradigmi di apprendimento automatico. In pratica, un esempio avversario
costruito per un modello può riuscire a ingannare anche modelli differenti, purché addestrati su compiti
simili o con dati analoghi. La trasferibilità costituisce uno dei principali motivi per cui gli attacchi
black-box sono possibili, anche in assenza di informazioni interne sul modello bersaglio.

135
5.7 Strategie Difensive
5.7.1 Difesa Reattiva
Per proteggere un sistema di apprendimento automatico dagli attacchi avversari, è importante adottare
una serie di strategie operative fondamentali:
• Rilevamento tempestivo di attacchi sconosciuti: è essenziale monitorare costantemente il
comportamento del modello per individuare prontamente eventuali anomalie o input malevoli che
potrebbero indicare la presenza di un attacco avversario non ancora noto.
• Riaddestramento frequente del classificatore: aggiornare regolarmente il modello utilizzando
nuovi dati aiuta a migliorarne la robustezza e a contrastare l’efficacia degli attacchi che sfruttano
conoscenze obsolete del sistema.
• Verifica della coerenza tra classificatore, dati di addestramento e etichette reali: con-
frontare periodicamente le predizioni del modello con le etichette corrette (ground truth) e i dati
originali consente di identificare comportamenti inattesi o derive nel processo decisionale del clas-
sificatore.
Queste misure sono fondamentali per mantenere la sicurezza e l’affidabilità dei sistemi di apprendimento
automatico in ambienti soggetti a minacce dinamiche.

5.7.2 Difesa Proattiva


Le tecniche di difesa proattiva mirano a rendere i modelli di apprendimento automatico più resistenti agli
attacchi avversari, anticipando le possibili vulnerabilità. Due approcci fondamentali in questo ambito
sono:

136
• Gradient hiding: questa tecnica consiste nel nascondere o rendere meno accessibile l’informazione
sul gradiente del modello, in modo da ostacolare gli attacchi basati su gradienti (come FGSM o
PGD). L’idea è che se l’attaccante non può calcolare in modo affidabile il gradiente rispetto all’input,
sarà più difficile costruire esempi avversari efficaci.
• Adversarial training: consiste nell’includere esempi avversari nel processo di addestramento del
modello. In questo modo, il modello impara a riconoscere e classificare correttamente anche input
perturbati, diventando progressivamente più robusto nei confronti degli attacchi.

Queste strategie, sebbene non garantiscano una protezione assoluta, costituiscono un primo livello di
difesa attiva contro le minacce avversarie.

Difesa proattiva: Gradient Hiding


Una delle strategie di difesa proattiva contro gli attacchi avversari è il cosiddetto gradient hiding, noto
anche come gradient masking. Questa tecnica mira a ridurre la sensibilità del modello alle piccole per-
turbazioni, rendendo più difficile per un attaccante identificare una direzione efficace per costruire un
esempio avversario.
Il principio fondamentale è quello di nascondere o rendere meno informativo il gradiente del modello
rispetto all’input, impedendo cosı̀ agli attacchi basati su gradienti di individuare direzioni perturbative
ottimali. Questo può avvenire attraverso diversi meccanismi, tra cui:

• L’uso di un modello sostitutivo per identificare direzioni avversarie meno efficaci.


• La smussatura della superficie decisionale del modello nelle direzioni avversarie, rendendo la classi-
ficazione più stabile rispetto a piccole variazioni dell’input.

• L’adozione della tecnica nota come defensive distillation, che consiste nel riaddestrare il modello
utilizzando come etichette le uscite (soft label) di un modello precedentemente addestrato. Questo
processo riduce la reattività del modello ai piccoli cambiamenti dell’input, aumentando la sua
robustezza agli attacchi.

Sebbene il gradient hiding possa ostacolare alcuni attacchi, in particolare quelli white-box, è impor-
tante notare che non rappresenta una protezione definitiva, poiché attacchi più sofisticati o black-box
possono ancora riuscire a superarlo.

137
Knowledge Distillation vs Defensive distillation
La tecnica della distillazione (distillation) è stata inizialmente introdotta da Hinton et al. con l’obiettivo
di permettere a un modello piccolo e computazionalmente efficiente di imitare il comportamento di un
modello più grande e complesso. In questo contesto si parla di modello insegnante (teacher) e modello
studente (student), dove il secondo viene addestrato a riprodurre le probabilità di classificazione generate
dal primo.
La distillazione difensiva (defensive distillation), invece, si basa su un’idea simile ma con uno scopo
diverso: non mira a comprimere il modello, bensı̀ a renderlo più robusto agli attacchi avversari. In questo
caso, due modelli con la stessa architettura vengono coinvolti nel processo:

• Il primo modello viene addestrato normalmente, producendo in uscita vettori di probabilità (soft-
max).
• Il secondo modello viene addestrato non sui target originali (etichette ”dure”), ma sulle probabilità
generate dal primo modello (etichette ”morbide”).

Questo approccio ha l’effetto di smussare la superficie decisionale del modello, in particolare nelle
direzioni vulnerabili agli attacchi avversari. La transizione tra le classi diventa meno netta, rendendo più
difficile per un attaccante sfruttare piccoli cambiamenti dell’input per forzare una riclassificazione.
Il modello risultante dalla distillazione difensiva mostra maggiore robustezza contro attacchi noti come
il Fast Gradient Sign Method (FGSM) e il metodo Jacobian-based Saliency Map (JSMA), poiché risponde
in modo più stabile a perturbazioni avversarie.

Defensive distillation
La distillazione difensiva prevede l’addestramento del modello utilizzando l’intera distribuzione di proba-
bilità predetta dal modello insegnante come target, e non semplicemente l’etichetta di classe più probabile
(argmax). Questo consente al modello studente di apprendere informazioni più ricche e sfumate sulla
decisione, smussando la superficie decisionale.
Tuttavia, studi successivi hanno dimostrato che questa tecnica non è veramente robusta agli attacchi
avversari. In particolare, Carlini et al. hanno mostrato che con modifiche minime agli attacchi classici,
è possibile eludere anche reti addestrate tramite distillazione difensiva.
La distillazione difensiva risulta più efficace contro quegli attacchi che approssimano l’importanza di
ciascun pixel utilizzando il gradiente della funzione softmax, come nel caso del metodo JSMA.
Carlini e Wagner hanno proposto una variante più efficace, in cui l’attacco non si basa sul gradiente
della softmax, bensı̀ sul gradiente dei logits, ovvero l’output diretto del modello prima dell’applicazione
della funzione softmax. Questa scelta consente di aggirare la distorsione introdotta dalla temperatura T
della softmax utilizzata nella distillazione.
I risultati ottenuti da Carlini et al. sono molto significativi: con una temperatura T = 100, gli attacchi
hanno ottenuto un tasso di successo del 96,4%, modificando in media solo 36,4 pixel per esempio. Inoltre,
l’attacco si è dimostrato efficace per qualsiasi valore di T compreso tra 1 e 100, mettendo in discussione
l’efficacia della distillazione difensiva come meccanismo di sicurezza.

138
Extending defensive distillation

Proactive defense: adversarial training


Una delle strategie più efficaci per aumentare la robustezza dei modelli di apprendimento automatico agli
attacchi avversari è l’addestramento avversario (adversarial training).
Questa tecnica consiste nell’includere esempi avversari direttamente nel set di addestramento del
modello. In pratica, durante il training, oltre ai campioni puliti, si forniscono anche campioni perturbati,
costruiti per indurre il modello all’errore. Il modello, esposto preventivamente a queste perturbazioni,
apprende a riconoscerle e a classificarle correttamente, aumentando cosı̀ la propria resilienza.
Un approccio complementare prevede di penalizzare esplicitamente gli errori commessi dal modello
sugli esempi avversari, ovvero assegnare una penalità maggiore nel processo di ottimizzazione ogni volta
che un esempio avversario viene classificato in modo errato. Ciò rafforza ulteriormente la capacità del
modello di distinguere input legittimi da quelli manipolati.
Numerosi studi hanno dimostrato che l’addestramento avversario è uno dei metodi più efficaci per
migliorare la robustezza dei modelli deep learning, anche se introduce costi computazionali elevati e può
ridurre la generalizzazione su dati puliti.

139
L’immagine rappresenta l’architettura e il processo di apprendimento di una Generative Adversar-
ial Network (GAN), composta da due reti neurali principali: il Generatore (G) e il Discriminatore
(D), che apprendono in modo competitivo.
Il processo si articola nel modo seguente:
• Si parte da uno spazio latente, rappresentato da un vettore di variabili nascoste. A questo spazio
si aggiunge del rumore casuale, e il risultato viene dato in input al Generatore G.
• Il generatore G ha il compito di produrre esempi sintetici (dati falsi) che imitino la distribuzione
dei dati reali. Il suo obiettivo è quello di ”imparare la distribuzione dei dati” in modo da generare
campioni convincenti.
• Parallelamente, il sistema dispone di campioni reali provenienti dal dataset originale. Questi,
insieme agli esempi generati, vengono inviati al Discriminatore D.
• Il discriminatore D ha il compito di distinguere tra dati reali e falsi. Apprende a riconoscere se
un campione proviene dai dati reali o è stato generato dal generatore. Il suo obiettivo è ”imparare
a distinguere dati veri da dati falsi”.
• Sulla base della risposta del discriminatore (ovvero se è corretto o meno), si procede a ottimizzare
entrambi i modelli: se il discriminatore sbaglia, si rafforza l’addestramento del generatore per
produrre dati ancora più realistici; se invece ha successo, si migliora il discriminatore per diventare
ancora più accurato.
• Questo processo iterativo continua finché il generatore non diventa talmente efficace da ingannare
il discriminatore, producendo dati sintetici quasi indistinguibili da quelli reali.

L’immagine rappresenta una combinazione tra un Variational Autoencoder (VAE) e una Gener-
ative Adversarial Network (GAN), nota come VAE-GAN. Questo modello ibrido unisce la capacità
del VAE di apprendere una rappresentazione compatta dei dati con il potere generativo delle GAN.

140
• Si parte da un’immagine x (in questo caso un numero ”8”), che viene compressa dall’encoder
q(z|x) in un vettore nello spazio latente z.
• Questo vettore latente viene poi passato al decoder p(x|z), che cerca di ricostruire l’immagine
originale, producendo un’uscita x′ .
• In parallelo, si possono anche campionare vettori latenti dallo spazio latente secondo una dis-
tribuzione nota p(z) (di solito una normale standard). Questi campioni e quelli ottenuti tramite
l’encoder vengono usati come input per il componente GAN.

• Il discriminatore, tipico delle GAN, ha il compito di distinguere tra immagini reali e im-
magini ricostruite dal decoder. La sua funzione è quella di forzare il decoder a produrre immagini
più realistiche, migliorando la qualità visiva rispetto a un VAE tradizionale.

Le seguenti immagini illustrano il concetto di robustezza delle feature, un tema centrale nella
difesa contro gli attacchi avversari nei modelli di apprendimento automatico.

Descrizione: Si parte da un’immagine originale di una rana all’interno del set di addestramento.
Questa immagine viene trasformata in una versione ”robustificata”, in cui vengono mantenute solo le
caratteristiche considerate rilevanti da un modello robusto. L’obiettivo è creare un nuovo dataset che
alleni il modello su feature meno sensibili a perturbazioni avversarie.

141
Descrizione: L’immagine mostra un cane e distingue le caratteristiche salienti percepite dall’essere
umano (ad esempio muso, occhi, orecchie) rispetto a quelle identificate dal modello neurale, che possono
apparire come pattern astratti e difficili da interpretare. Questo evidenzia il fatto che le reti neurali
possono basarsi su feature non interpretabili ma statisticamente correlate all’etichetta, anche se fragili
agli attacchi.

Descrizione: Qui viene presentata la distinzione tra:


• Feature robuste: correlate all’etichetta anche in presenza di perturbazioni. Sono caratteristiche
visive stabili e resistenti agli attacchi.
• Feature non robuste: anch’esse correlate all’etichetta, ma solo in media. Queste feature possono
essere facilmente manipolate all’interno di una piccola perturbazione (ad esempio in una palla ℓ2 ),
rendendo il modello vulnerabile.

Queste immagini mettono in evidenza l’importanza di progettare modelli che si basino su feature
semanticamente significative e stabili, piuttosto che su pattern facilmente alterabili, per aumentare
la sicurezza e l’affidabilità dei sistemi di intelligenza artificiale.

5.8 Conclusioni
Perché il Machine Learning è vulnerabile agli attacchi avversari?
I modelli di apprendimento automatico, in particolare le reti neurali profonde, presentano diverse carat-
teristiche strutturali che li rendono vulnerabili agli attacchi avversari:

• Le Deep Neural Network hanno bisogno di grandi quantità di dati per essere addestrate effi-
cacemente.

142
• La loro struttura altamente non lineare rende difficile prevederne il comportamento rispetto a
piccole perturbazioni.
• Sono soggette a overfitting, ovvero tendono a memorizzare i dati di addestramento anziché gen-
eralizzare.
• Possiedono una capacità di generalizzazione limitata verso dati nuovi o non visti durante
l’addestramento.

La vulnerabilità avversaria è una conseguenza diretta della sensibilità dei modelli alle feature
ben generalizzanti nei dati:

• I classificatori tendono ad utilizzare qualsiasi segnale disponibile per compiere una predizione, anche
se incomprensibile all’occhio umano.
• Classificatori diversi finiscono spesso per identificare lo stesso sottoinsieme di feature rilevanti.

Questo spiega perché gli attacchi avversari sono spesso trasferibili tra modelli diversi, anche se
addestrati separatamente.

Conclusioni: Strategie Difensive


Per contrastare gli attacchi avversari, è fondamentale adottare un approccio strutturato e proattivo:

• Conoscere il nemico: comprendere obiettivi e capacità dell’attaccante.


• Ridurre l’overfitting tramite tecniche come la distillazione difensiva e il dropout.
• Addestramento avversario: integrare esempi avversari nel training per aumentare la robustezza
del modello.

• Robustezza delle feature: puntare su caratteristiche interpretabili e stabili, ad esempio tramite


approcci explainable AI (XAI).
• Progettare modelli resilienti: capaci di rilevare attacchi zero-day e di operare anche in ambienti
ostili.

143

Potrebbero piacerti anche