



































































Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Appunti per l'esame del corso di Software CyberSecurity, tenuto dal professore Luca Spalazzi presso l'Università Politecnica delle Marche.
Tipologia: Appunti
1 / 75
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!




































































UNIVPM
Introduzione
Alcuni anni fa il NST (National Institute of Standard Technology), ha costruito questo framework, ovvero una
serie di linee guida in campo di Cyber Security.
Il framework è composto da 5 aree: queste aree sono:
in una serie di linee guida su come valutare i rischi;
tica e quindi evitare di subire un attacco informatico;
nire, nonostante tutte le nostre misure di prevenzione; quindi, bisogna avere degli strumenti per
accorgersi se nonostante tutto c’è un attacco informatico (strumenti di rilevamento);
predisporre una risposta pronta ed adeguata;
informatico, si devono riportare i sistemi alle normali condizioni di funzionamento.
Il NST è un ente che appartiene al dipartimento del commercio degli Stati Uniti che si occupa di defi-
nire gli standard e linee guida un po' su tutti gli aspetti che risultano di interesse per la vita economica
degli Stati Uniti e quindi di conseguenza aspetti che interessano la vita economica di tutto il mondo
visto che le attività sono pressappoco sempre le stesse.
Identify
Protect
Detect
Respond
Recover
Va notato che le vulnerabilità non sono solo dal punto di vista tecnologico, nella scrittura del software io
quelle posso ridurre ma permangono le altre.
L’unità di misura del rischio sono i soldi, ovvero la perdita in campo monetario che un rischio potrebbe gene-
rare.
Anche nell’analisi del rischio informatico le domande da porsi sono sempre e medesime. È sono quelle che si
pose San Tommaso D’Aquino nella sua Summa Theologiae. Ovvero:
Per valutare i rischi bisogna quindi porsi tutte queste domande.
Cyber Risk
Cyber Incident Probability
Consumatori
scontenti
Errore umano
Azioni dei fornitori
Hacktivism
Crimine
Sabotaggio
Spionaggio
industriale
Terrorismo
Azioni di stato
Misure di forza
x
Persone e Culture
Processi e
Organizzazioni
Tecnologie e
infrastrutture
Cyber Incident Impact
Beni non
tangibili
intellettuale
Beni tangibili
produttivi
Beni
"maggiori"
individuale
x
Confidenzialità
Integrità
Disponibilità
Autenticità
Assicurazione
Responsabilità
Sicurezza
Affidabilità
Resilienza
A discapito di quanto ci viene
fatto credere la maggior parte
degli attacchi informatici parte
dagli Stati Uniti e dall’Alaska.
Perché vengono compiuti gli attacchi informatici? In un primo momento gli attacchi erano delle challenge,
ovvero si voleva dimostrare al mondo di essere in grado di hackerare un sistema (un esempio di quanto
appena detto è la creazione del primo WORM), successivamente però, sono subentrate ulteriori motivazioni,
quali:
Riguardo agli scopi economici, si effettua l’hackeraggio dei dati perché questi sul mercato nero hanno una
loro quotazione, ovvero se si vuole comprare un determinato tipo di dato si deve pagare per il suo valore; la
tabella sottostante riporta la quotazione dei dati sul mercato nero nel dicembre 2020.
Dettagli delle carte di credito Da 5 a 16 €
Scansioni di patenti Da 4 a 21 €
Scansioni di passaporti Da 4 a 13 €
Servizi di sottoscrizione Da 0,40 a 7 €
Dati identificativi (Nome completo, data di nascita,
email, numero di cellulare)
Da 0,40 a 8 €
Selfie con documenti (passaporto, patente) Da 33 a 50 €
Cartelle cliniche Da 0,84 a 25 €
Conti bancari Dal 1% al 10% del valore del conto
Conti PayPal Da 42 a 418 €
85%
2%
11%
2%
Cyber criminali
Hacktivist (es.
Anonymous)
Spionaggio
Guerra Informatica
o Persone ferite
o Danni ad oggetti
o Perdita di clienti o di vendite
o Riduzione dei profitti
Il rischio può essere gestito in 5 modi:
del rischio ad un livello accettabile, bisogna quindi cambiare la strategia o i piani per evitare proprio
completamente il rischio.
schio ha o potrebbe avere.
trasferendo o condividendo una parte del rischio.
cui il rischio si verifichi.
Sostanzialmente queste diverse metodologie di risposta vengono applicate in base alla verosimiglianza che
questo rischio si verifichi. Quindi se un rischio è:
alcun tipo di mitigazione del rischio.
➔ Si opta quindi per l’ACCEPTING
tolleranza del rischio. Questi rischi sono costantemente monitorati e gestiti dalle organizzazioni.
➔ Si opta quindi per il MONITORING
tipo di rischio richiede un alto livello di attenzione dai dirigenti che devono scegliere quale strategia
applicare.
➔ Si opta quindi per il MITIGATING oppure per lo SHARING/TRANSFERRING oppure per l’AVOIDING.
L’obbiettivo di questo corso è concentrarsi su come mitigare il rischio, ovvero ridurre le vulnerabilità di un
software ed in parte ridurre l’impatto che un incidente informatico può avere, in quanto non possiamo ri-
durre le minacce che sono fattori esterni.
Ci siamo chiesti allora cosa volesse dire mitigare il rischio ed abbiamo allora introdotto dei concetti chiave.
Per ridurre il rischio si può operare in due via:
La sicurezza del software non è la stessa cosa di software di sicurezza. Un software di sicurezza (in sintesi si
occupa di sicurezza) ha come suo requisito la capacità di mettere in sicurezza un sistema (firewall, …), mentre
la sicurezza del software sta nella sua capacità di essere il meno vulnerabile possibile a prescindere da di che
cosa si occupi.
L’ultimo concetto chiave sta nel fatto che nel ragionare sulla sicurezza di un software non bisogna trascurare
il fattore umano (es. metropolitana di Londra), in quanto va considerato che le persone possono agire (anche
inconsapevolmente) in modo da creare delle vulnerabilità.
Bisogna quindi istruire gli utilizzatori finali sul perché devono compiere certe azioni, perché il software utilizza
tali protocolli per interagire.
Chi si occupa di Cybersecurity deve imparare a ragionare come le “persone normali” che andranno poi ad
utilizzare quel software. Come diceva Luca Viganò, non dobbiamo essere troppo sicuri di cosa faranno le
persone malintenzionate; dobbiamo cercare di capire cosa però andranno a fare i normali utilizzatori, che
potrebbero mettere a repentaglio, senza volere, la sicurezza di un sistema. Dobbiamo quindi cercare di anti-
cipare tutti i comportamenti ed evitare che questi possano causare danni.
Quindi vanno prese in considerazione due cose:
sere “addestrate” in modo adeguato, perché devono imparare che cos’è la sicurezza informatica in
modo da comprendere il perché di certe azioni che il software richiede, il perché un software ha
determinati protocolli e l’interazione con gli utenti. Questo significa che prima di far utilizzare un
determinato software bisognerebbe far fare all’utente dei corsi di addestramento nei quali si spiega
non solo come utilizzare il programma, ma anche quali sono le conseguenze nel caso di un utilizzo
errato;
che andranno ad utilizzare quel software, ovvero bisogna anticipare tutti i possibili comportamenti e
dove possibile fare in modo che i comportamenti errati non siano resi possibili.
Sommerville, inoltre disse che la sicurezza del software, dipende però anche da quella del sistema, in quanto
per quanto possa essere sicuro il software, questo si troverà a girare sul sistema e se il sistema non è sicuro
anche il software a quel punto non è al sicuro.
Somerville riprende quindi il concetto di sistema socio-tecnico all’interno del quale il nostro software si tro-
verà ad agire, anche perché questo è l’unico modo per capire dove si possano aprire brecce nella sicurezza
del sistema. Con sistema socio-tecnico si vuole intendere che un software, girerà su una determinata mac-
china, inserita in un determinato ambiente, in questo ambiente possono esserci altri dispositivi sui quali gi-
reranno altri software, questi altri dispositivi potrebbero interagire con il “nostro”, ci saranno anche delle
persone che utilizzeranno quei dispositivi ed il nostro software, in sintesi dobbiamo considerare l’ambiente
appunto socio-tecnico composto sia da persone che da dispositivi software e hardware all’interno del quale
il nostro software si troverà ad agire. Solo tenendo in considerazione tutti questi aspetti possiamo prevedere,
L’art.32 riguarda invece la sicurezza dell’elaborazione, ovvero i dati raccolti quando vengono elaborati, de-
vono essere elaborati in sicurezza. Nell’articolo sono anche dati alcuni consigli, quali quello di utilizzare pseu-
donimi quando possibile, il criptare i dati personali ,…
Modelli formali
Nel 2012 Fred B. Schneider, un ricercatore abbastanza famoso nel campo della cyber security, scrisse un
articolo dal titolo “Blueprint for a science of cybersecurity”, dove di fatto enuncia che la cyber security non
può essere trattata solo da un punto di vista qualitativo, ma si rende necessario ad un certo punto adottare
dei modelli formali, in modo da avere delle risposte più precise e rigorose in termini di sicurezza informatica.
Il principio su cui si basò Schneider era il seguente: “L’ingegneria di fatto viene anche chiamata scienza appli-
cata, in quanto utilizza dei modelli matematici (modelli formali) e li applica alla progettazione oppure all’ana-
lisi di un sistema artificiale costruito dall’uomo”.
Un esperimento nel campo delle probabilità è un’azione attraverso la quale si possono ottenere specifici
risultati (un numero, una misura o una risposta).
Es. lancio di un dado
L’ esito altro non è che il risultato di un esperimento.
Es. faccia che esce dal lancio del dado
L’insieme di tutti i possibili esiti è lo spazio campione
Es. tutte le possibili facce che possono uscire {1,2,3,4,5,6}
Un evento consiste in uno o più esiti che fanno parte di un sottoinsieme dello stesso spazio campione
Es. Dal lancio esca una faccia pari.
Un evento semplice è un evento costituito da un solo esito
Es. dal lancio del dado esca la faccia 6
Noi ci troviamo ora a ragionare in questi termini: abbiamo uno spazio con tutti i possibili esiti, poi si vuole
ragionare su alcuni possibili esiti (quindi su un qualche sottoinsieme dello spazio di tutti i possibili eventi) e
vogliamo quindi sapere quante possibilità si hanno che si verifichi quel dato evento.
Si sta quindi in un certo qual modo parlando di misura, si sta misurando la “dimensione” dell’evento rispetto
alla “dimensione” dello spazio.
Riformulando quanto appena detto noi siamo interessati a conoscere la probabilità che si verifichi un evento
dato un determinato spazio di campioni.
Per calcolare le probabilità abbiamo diversi approcci:
mostrare i vari teoremi. La base assiomatica del calcolo delle probabilità è composta da 3 assiomi.
I 3 assiomi sono:
È la probabilità che avvenga un determinato evento a condizione che prima se ne sia verificato un altro. La
notazione è la seguente: Pr
che si legge come “probabilità di B dato A”.
Esempio: Abbiamo 5 fish rosse, 4 fish blu e 6 fish bianche in un cesto. Se vengono casualmente pe-
scate 2 fish. Qual è la probabilità che la seconda fish estratta sia rossa dato che la prima estratta era
blu? (Assumendo che la prima fish estratta non viene rimessa nel cesto).
Risoluzione: Visto che la prima fish è stata estratta e non reimmessa, ci sono solo 14 fish rimanenti,
di cui 5 rosse.
Risultato: Pr
5
14
Per la probabilità condizionale risultano alquanto importanti il teorema di Bayes. Ora per gradi arriveremo
appunto a questo teorema.
Immaginiamoci una situazione (quella rappresentata nella figura sotto), dove 𝑆 è lo spazio di tutti i possibili
esiti e supponiamo di partizionarlo in un certo numero di partizioni (𝐴 1
10
). Ognuna di queste partizioni,
in base alla terminologia precedentemente introdotta può essere vista come un evento (n.b. ogni evento è
un sottoinsieme dello spazio di tutti gli esiti possibili). Prendiamo ora un altro evento, l’evento 𝐵, questo si
intersecherà con le varie partizioni (non per forza con tutte quante come nel disegno)
Partizione significa che ogni insieme della partizione è disgiunto dagli altri e tutti insieme danno la totalità.
Esistono alcuni teoremi che ci portano alla formulazione del teorema di Bayes:
Pr(𝐴
𝑗
∩ 𝐵) = Pr(𝐵|𝐴
𝑗
) Pr(𝐴
𝑗
) = Pr (𝐴
𝑗
|𝐵)Pr (𝐵)
Indica che la probabilità che l’evento 𝐴
𝑗
, uno qualsiasi di questa partizione, intersecato 𝐵, ovvero ci
si chiede qual’è la probabilità che si verifichino contemporaneamente l’evento 𝐴
𝑗
e l’evento 𝐵, ov-
viamente questo tra tutti gli esiti possibili.
Il teorema della probabilità composta ci dice che questa probabilità è pari alla probabilità che si ve-
rifichi 𝐵 condizionato dal verificarsi di 𝐴
𝑗
, moltiplicata per la probabilità che si verifichi 𝐴
𝑗
→ questo
perché si parte dal presupposto che l’evento 𝐴
𝑗
si sia verificato e dato ciò va a vedere la probabilità
che si verifichi pure 𝐵. Ovviamente vale anche il ragionamento opposto.
Pr
= ∑ Pr(𝐵|𝐴
𝑗
) Pr (𝐴
𝑗
𝑗
Dal precedente teorema è facile derivare questo secondo teorema che va sotto il nome di “Legge
della probabilità totale”. Ripartendo dalla situazione esposta prima ci dice come calcolare la sola
probabilità di 𝐵. In pratica si va ad unire la probabilità che si verifichi 𝐵 dato il verificarsi di ogni
evento della partizione.
𝐴
𝐴
𝐴
𝐴
𝐴
𝐴
𝐴
𝐴
𝐴
𝐴
𝐵
𝑆
Pr(𝐴
𝑖
Pr
𝑖
Pr (𝐴
𝑖
Pr(𝐵|𝐴
𝑗
) Pr (𝐴
𝑗
𝑗
Dati i due teoremi precedenti si può facilmente giungere alla formulazione del teorema di Bayes.
Questo teorema mi dice che la probabilità del verificarsi dell’evento 𝐴
𝑖
condizionata da 𝐵 è uguale
alla probabilità di avere 𝐵 condizionata ad 𝐴
𝑖
, per la probabilità di 𝐴
𝑖
, fratto la sommatoria per ogni
𝑗 della probabilità di 𝐵 dato 𝐴
𝑗
per la probabilità di 𝐴
𝑗
Il teorema di Bayes risulta di notevole importanza perché ha aperto dal punto di vista dell’inferenza
statistica.
Prendiamo ora in considerazione un esempio fatto da Floyd Bullard. (Siamo nel campo dell’inferenza stati-
stica non più in quello delle probabilità).
Consideriamo un’urna (opaca, così non ne vediamo il contenuto), che contiene un numero finito ma molto
grande di perline.
È noto che tutte le perline sono o rosse o bianche. Ma non si ha la benchè minima idea della ripartizione delle
perline tra i due colori.
Si cominciano ad estrarre perline, senza reinserirle. Dopo diverse estrazioni ci si rende conto che tutte le
perline fino ad ora estratte sono rosse.
Vedendo che continuando ad estrarre perline, queste sono ancora rosse, che inferenza si può fare riguardo
al fatto che la prossima perlina estratta sia rossa?
Posso dire che la probabilità che la prossima estrazione mi restituisca una pallina rossa sia:
non ci siano perline bianche nell’urna, e quindi questa contenga solo perline rosse
Nel caso si creda che la probabilità sia decrescente, si segue il pensiero frequentista (con un approccio clas-
sico all’inferenza statistica), mentre se si crede che la probabilità sia crescente, si segue il pensiero Bayne-
siano.
La differenza tra statistica e calcolo delle probabilità (che sono uno il duale dell’altro) sta nel fatto che: nel
calcolo delle probabilità noi conosciamo l’universo e ci chiediamo andando ad estrarre un campione da que-
sto universo che cosa succede (quindi conosco l’universo, il campione ovvero l’esperimento, e vorrei preve-
dere l’esito). Nella statistica, si ragiona esattamente all’opposto, ovvero parto dal campione e cerco di capire
come è fatto l’universo. Con la statistica mi interessa sapere qual è la distribuzione della probabilità sull’intero
universo (che non conosco), conoscendo la distribuzione della probabilità sul campione.
Il ragionamento baynesiano si basa sul concetto di probabilità a priori e a posteriori.
Il teorema di Bayes può essere ripreso e riletto in termini di probabilità a posteriori e a priori:
Usiamo il simbolo di proporzionale ∝ in quanto abbiamo rimosso il denominatore dalla formula per concen-
trarci solamente sul numeratore. Andiamo ora ad analizzare la formula:
Pr
𝑖
Pr(𝐵|𝐴
𝑖
)Pr (𝐴
𝑖
)
∑ Prቀ𝐵|𝐴
𝑗
ቁPr (𝐴
𝑗
)
𝑗
Pr(𝐴
𝑗
|𝐵) ∝ Pr(𝐵|𝐴
𝑗
) ∗ Pr (𝐴
𝑗
𝑝𝑜𝑠𝑡𝑒𝑟𝑖𝑜𝑟 ∝ 𝑙𝑖𝑘𝑒𝑙𝑖ℎ𝑜𝑜𝑑 ∗ 𝑝𝑟𝑖𝑜𝑟
Volendo concretizzare quanto finora detto riguardo al calcolo delle probabilità nel campo della cyber security
ci apprestiamo a vedere l’esempio delle “code smell” (“puzze del codice”→pratiche non corrette nella scrit-
tura del codice, che non inficiano il funzionamento del programma ma aumentano le probabilità di errore nel
codice e potrebbero rendere il software creato più vulnerabile ad attacchi). Alcune code smell sono:
munica cosa effettivamente fanno o come verranno utilizzate;
le chiamate e il testing della funzione complicata;
Alla luce di quanto scritto nel paragrafo precedente analizziamo il seguente esempio.
Supponiamo di avere uno strumento automatico che preso in ingresso il codice del programma che vogliamo
controllare, segnala tutti i code smell presenti.
Supponiamo, che una volta lanciato tale strumento, scopriamo che la probabilità che un code smell sia pre-
sente (TestPos), dovuto alla presenza di una vulnerabilità (Pos), è pari a 0.99.
Supponiamo, inoltre, che il fatto che un code smell non sia presente (TestNeg), dato dall’assenza di una vul-
nerabilità (Neg), è pari a 0.87.
La probabilità che una vulnerabilità sia presente (Pos) in un software scritto in C e pari a 0.10. (Da notare che
questa altro non è che la probabilità a priori).
Qual è la probabilità che un codice scritto in C abbia una vulnerabilità (Pos) data dalla presenza di un code
smell (TestPos)?
Riscrivendo quanto appena detto in formule, per poter poi fare i calcoli utilizzando il teorema di Bayes:
sia presente (TestPos), dovuto alla presenza di una vulnerabilità (Pos), è pari a 0.99.
Pr
Pr(𝑇𝑒𝑠𝑡𝑁𝑒𝑔|𝑃𝑜𝑠) = 0. 01
una vulnerabilità (Neg), è pari a 0.87.
Pr(𝑇𝑒𝑠𝑡𝑁𝑒𝑔
Pr
Pr
La probabilità che un codice scritto in C abbia una vulnerabilità (Pos) data dalla presenza di un code smell
(TestPos), calcolata applicando il teorema di bayes è:
Pr(𝑃𝑜𝑠
( 0 , 10 )( 0 , 99 )
( 0 , 10 )( 0 , 99 )+( 0 , 9 )( 0 , 13 )
0 , 099
0 , 216
Avendo ora le nozioni base andiamo a vedere la modellizzazione di sistemi mediante la rappresentazione
degli stati.
Terminologia
In questo capitolo ci limiteremo a spiegare il significato di alcuni termini, questo al fine di meglio compren-
dersi quando si parla di cyber security.
Il focus principale di questo corso è quello di progettare dei software che siano dependable ovvero garanti-
scano la proprietà che in italiano abbiamo tradotto con “fidatezza”, ovvero che siano dei software fidati, dei
quali ci si può fidare.
Abbiamo inoltre visto che questo concetto generale di “fidatezza” può essere declinato in tanti modi, ovvero
come sicurezza, affidabilità, disponibilità, resilienza, …
In realtà, tutti questi concetti sono tra loro interdipendenti.
Questa si ottiene in fase di progettazione e realizzazione di un software, tenendo in considerazione tutti i
possibili eventi avversi, che possono quindi compromettere la availability, la reliability, la safety, la security
e la resilience; e progettando quindi il software in maniera tale che sia in grado di riconoscere e resistere ad
eventuali eventi avversi e che in caso questi avvengano sia in grado di riprendere a funzionare regolarmente.
Quanto appena detto, banalmente comporta un costo. Un costo che in realtà si divide in:
La capacità del
sistema di
fornire servizi
quando richiesti.
La capacità del
sistema di
fornire un
servizio come
specificato.
La capacità del
sistema di
operare senza
fallimenti
catastrofici.
La capacità del
sistema di
proteggere se
stesso contro
intrusioni sia
volontarie che
accidentali.
La capacità del
sistema di
resistere e di
ristabilirsi da
eventi dannosi.