From d126b27015aa84e6d0e301054a3cfb00f5211342 Mon Sep 17 00:00:00 2001 From: elisabetta Date: Wed, 27 May 2026 19:45:21 +0200 Subject: [PATCH] is this the end?? --- .../main/resources/get/documentazione/AES.md | 51 ++++- .../main/resources/get/documentazione/APT.md | 24 +++ .../resources/get/documentazione/IPSEC.md | 69 +++++++ .../main/resources/get/documentazione/SHA3.md | 87 +++++++++ .../resources/get/documentazione/SHA512.md | 97 +++++++++- .../get/documentazione/TCPattacks.md | 42 ++++ .../main/resources/get/documentazione/TLS.md | 23 +++ .../resources/get/documentazione/attacchi.md | 180 +----------------- .../documentazione/crittografia_simmetrica.md | 12 +- .../get/documentazione/fingerprint.md | 90 +++++++-- .../resources/get/documentazione/humans.md | 39 ++++ .../resources/get/documentazione/keylogger.md | 68 +++++++ .../main/resources/get/documentazione/mac.md | 51 +++++ .../resources/get/documentazione/malware.md | 55 ++++++ .../main/resources/get/documentazione/pgp.md | 52 +++++ .../get/documentazione/sicurezza_reti.md | 39 +--- .../main/resources/get/documentazione/vuln.md | 1 + backend/src/main/resources/get/materiale.html | 23 ++- 18 files changed, 774 insertions(+), 229 deletions(-) create mode 100644 backend/src/main/resources/get/documentazione/APT.md create mode 100644 backend/src/main/resources/get/documentazione/SHA3.md create mode 100644 backend/src/main/resources/get/documentazione/TCPattacks.md create mode 100644 backend/src/main/resources/get/documentazione/humans.md create mode 100644 backend/src/main/resources/get/documentazione/keylogger.md create mode 100644 backend/src/main/resources/get/documentazione/mac.md create mode 100644 backend/src/main/resources/get/documentazione/malware.md create mode 100644 backend/src/main/resources/get/documentazione/pgp.md diff --git a/backend/src/main/resources/get/documentazione/AES.md b/backend/src/main/resources/get/documentazione/AES.md index 34f79a8..0ed19d9 100644 --- a/backend/src/main/resources/get/documentazione/AES.md +++ b/backend/src/main/resources/get/documentazione/AES.md @@ -1,9 +1,12 @@ # L'Algoritmo AES - Advanced Encryption Standard -Attualmente l'AES rappresenta lo standard globale per la crittografia simmetrica. +L'**AES** (Advanced Encryption Standard), noto originariamente come **Rijndael**, è un cifrario a blocchi simmetrico standardizzato dal NIST nel 2001 (FIPS 197). A differenza di altri algoritmi, AES opera su blocchi di dati di dimensione fissa a **128 bit** e supporta tre diverse lunghezze di chiave: 128, 192 e 256 bit. -* **Funzionamento a blocchi:** Lavora su blocchi fissi di **128 bit** (circa 16 caratteri alla volta). -* **Lunghezza delle chiavi:** Può utilizzare chiavi a **128, 192 o 256 bit**. Più la chiave è lunga, più aumentano le combinazioni matematiche. +Per cifrare testi di lunghezza superiore ai 128 bit, l'input viene suddiviso in più blocchi. Il modo in cui questi blocchi vengono concatenati ed elaborati dipende dalla **modalità di funzionamento (Mode of Operation)** utilizzata. Di seguito vengono analizzate le due modalità fondamentali: **ECB** e **CBC**. + +--- + +## Il Funzionamento di AES A differenza dei cifrari storici, l'AES processa il blocco di dati ripetutamente attraverso diversi cicli, chiamati **Round** (10, 12 o 14 round a seconda della chiave). In ogni singolo round avvengono 4 trasformazioni geometrico-matematiche: @@ -14,4 +17,44 @@ A differenza dei cifrari storici, l'AES processa il blocco di dati ripetutamente > **Sicurezza dell'AES:** Ad oggi **non esistono attacchi noti** capaci di violare l'AES se la chiave è robusta. Per indovinare una chiave AES a 256 bit tramite attacco a forza bruta (*brute-force*), tutti i supercomputer del pianeta dovrebbero lavorare per miliardi di anni (un tempo superiore all'età dell'universo stesso). ---- \ No newline at end of file +--- + +## Modalità ECB (Electronic Codebook) + +La modalità **ECB** è la più semplice e intuitiva. Ogni blocco di testo in chiaro ($P_i$) viene cifrato in modo completamente indipendente dagli altri, utilizzando la stessa chiave crittografica ($K$). + +### Formule Matematiche +* **Cifratura**: + $$C_i = E_K(P_i)$$ +* **Decifratura**: + $$P_i = D_K(C_i)$$ + +Dove $P_i$ è il $i$-esimo blocco di testo in chiaro, $C_i$ è il $i$-esimo blocco di testo cifrato, $E_K$ è la funzione di cifratura AES e $D_K$ è la funzione di decifratura. + +### La Criticità dell'Algoritmo +Come si può facilmente intuire, con questa modalità a blocchi di testo in chiaro identici producono blocchi di testo cifrato identici. Questo significa che la modalità ECB **non nasconde i pattern del testo in chiaro**. Se applicata a un'immagine, ad esempio, i contorni delle figure rimangono chiaramente visibili anche dopo la cifratura (ex. pinguino linux) e quindi non è **semantically secure** +Per questa ragione, ECB non è considerata sicura per la maggior parte delle applicazioni pratiche, in quanto dà info all'utente. + +--- + +## Modalità CBC (Cipher Block Chaining) + +Per superare i limiti di sicurezza di ECB, la modalità **CBC** introduce un meccanismo di dipendenza: ciascun blocco di testo in chiaro viene combinato con il blocco cifrato precedente prima di essere sottoposto a cifratura. + +Per il primo blocco, non essendoci un blocco cifrato precedente, si utilizza un vettore di inizializzazione chiamato **IV (Initialization Vector)**, che deve essere unico e idealmente casuale per ogni sessione di cifratura. + +### Formule Matematiche +* **Cifratura**: + $$C_1 = E_K(P_1 \oplus IV)$$ + $$C_i = E_K(P_i \oplus C_{i-1}) \quad \text{per } i > 1$$ +* **Decifratura**: + $$P_1 = D_K(C_1) \oplus IV$$ + $$P_i = D_K(C_i) \oplus C_{i-1} \quad \text{per } i > 1$$ + +Dove $\oplus$ rappresenta l'operazione logica XOR (OR esclusivo). + +### Vantaggi e Svantaggi +* **Vantaggi**: Garantisce la sicurezza semantica. Blocchi di testo in chiaro identici produrranno blocchi cifrati completamente diversi a causa della dipendenza dal blocco precedente e dall'IV. I pattern dei dati vengono interamente nascosti. +* **Svantaggi**: + * **Propagazione degli errori**: Un errore di un bit nel blocco cifrato $C_i$ corromperà completamente la decifratura del blocco $P_i$ e altererà lo stesso bit nel blocco $P_{i+1}$. + diff --git a/backend/src/main/resources/get/documentazione/APT.md b/backend/src/main/resources/get/documentazione/APT.md new file mode 100644 index 0000000..ee91116 --- /dev/null +++ b/backend/src/main/resources/get/documentazione/APT.md @@ -0,0 +1,24 @@ +## Gli Attacchi APT (Advanced Persistent Threats) + +Con il passare degli anni e l'avvento delle nuove tecnologie il modo per sferrare gli attacchi è mutato ed è diventato pìiù sofisticato, e così sono nate le gli **attacchi APT**. +Gli attacchi APT vengono definiti come tecniche di hacking mirate e sofisticate, usate per **sabotaggio o spionaggio a lungo termine** e sono solitamente basati sul **Social Engineering**. +Prevedono 7 fasi precise: + +* Ricognizione +Vengono raccolte una serie di informazioni aggiornate e pubbliche riguardanti il target tramite **social engineering** per capire al meglio la struttura e il funzionamento del sistema che si vuole attaccare e le sue debolezze (spesso è proprio il lato umano la maggiore debolezza). +* Armamento +L'attaccante pianifica l'attacco creando le cosiddette "armi" e identificando nello specifico i fronti di attacco +* Distribuizione +L'attaccante invia il malware al target tramite tecniche note di iniezione, quali sql injection, xss, allegati malevoli inviati via mail, phishing etc... +* Sfruttamento +Il payload dannoso apre un varco nel sistema sfruttando una specifica vulnerabilità +* Installazione +Vengono istanziate delle backdoor sulla macchina target infetta e ciò permette agli attaccanti di prendere le info sensibili necessarie al proseguimento dell'attacco quali credenziali, registri di sistema etc... +* Comando e Controllo +Tramite le credenziali rubate gli attaccanti accedono ai **dati riservati** del sistema e li esfiltrano, tutti i dati interessanti vengono inviati a server intermedi e crittografati prima di venire inviati al team esterno che usa questi dati per operazioni illecite +* Azioni sull'obiettivo +Tutti i precedenti processi vengono "occultati" ai membri del sistema perchè lo scopo è rimanere dentro il più possibile in modo da poter captare una grande mole di dati, **è l'esatto motivo per cui questi attacchi sono così complicati da gestire !!** + +Questa catena viene anche detta **Cyber Kill Chain** e viene utilizzata per descrivere il ciclo di vita di un attacco informatico. + +--- \ No newline at end of file diff --git a/backend/src/main/resources/get/documentazione/IPSEC.md b/backend/src/main/resources/get/documentazione/IPSEC.md index e69de29..0925c92 100644 --- a/backend/src/main/resources/get/documentazione/IPSEC.md +++ b/backend/src/main/resources/get/documentazione/IPSEC.md @@ -0,0 +1,69 @@ +# L'Architettura IPsec (Internet Protocol Security) + +**IPsec** è una suite di protocolli standard definiti dall'IETF (RFC 4301) operante al **livello di rete (Layer 3)** dello stack OSI. Il suo scopo principale è proteggere e autenticare i pacchetti IP che transitano su reti non sicure (come Internet), consentendo la creazione di reti private virtuali (VPN) sicure. + +A differenza di TLS, che opera a livelli superiori ed è legato alle singole applicazioni, IPsec è completamente trasparente per le applicazioni sottostanti, proteggendo tutto il traffico che transita tra due nodi di rete. + +--- + +## 1. I Componenti Principali di IPsec + +L'architettura si basa su due protocolli fondamentali: + +### Authentication Header (AH - RFC 4302) +Garantisce l'**integrità dei dati** e l'**autenticazione dell'origine** del pacchetto, offrendo anche protezione contro gli attacchi di tipo *replay*. **Non fornisce riservatezza** (i dati non sono cifrati). AH protegge anche l'header IP esterno (tranne i campi mutabili come il TTL). + +### Encapsulating Security Payload (ESP - RFC 4303) +Fornisce **riservatezza** (cifratura), autenticazione dell'origine dei dati, integrità dei dati e protezione anti-replay. ESP può essere configurato solo per la cifratura, solo per l'autenticazione o, nella configurazione standard attuale, per entrambe (utilizzando algoritmi AEAD). + +--- + +## 2. Modalità di Funzionamento + +IPsec può essere implementato in due diverse modalità a seconda della topologia di rete: + +### 1. Modalità Trasporto (Transport Mode) +* Viene protetto esclusivamente il **payload** del pacchetto IP (i dati di livello superiore come TCP/UDP). +* L'header IP originale non viene modificato né cifrato. +* Utilizzato principalmente per comunicazioni *End-to-End* (es. da Host a Host). + +$$\text{Pacchetto IP Standard: } [\text{Header IP}][\text{Payload IP}]$$ +$$\text{Pacchetto ESP Transport: } [\text{Header IP}][\text{Header ESP}][\text{Payload IP Cifrato}][\text{Trailer/Auth ESP}]$$ + +### 2. Modalità Tunnel (Tunnel Mode) +* Viene protetto **l'intero pacchetto IP originale** (Header + Payload). +* Il pacchetto originale viene cifrato e incapsulato all'interno di un nuovo pacchetto IP con un nuovo header (Header IP Esterno). +* Utilizzato principalmente per connessioni *Gateway-to-Gateway* (es. VPN Site-to-Site) o *Gateway-to-Host*. + +$$\text{Pacchetto ESP Tunnel: } [\text{Nuovo Header IP}][\text{Header ESP}][\text{Header IP Orig Cifrato}][\text{Payload Cifrato}][\text{Trailer/Auth ESP}]$$ + +--- + +## 3. Aspetti Matematici e Crittografici + +### Lo Scambio Chiavi in IKEv2 (Diffie-Hellman) +Durante la fase iniziale di IKEv2, i nodi concordano una chiave simmetrica comune su un canale non sicuro usando l'algoritmo **Diffie-Hellman (DH)** o la sua variante su curve ellittiche (ECDH). + +Dati un numero primo grande $p$ e un generatore $g$ del gruppo ciclico $\mathbb{Z}_p^*$: +1. Il nodo $A$ sceglie un segreto privato $a$ e calcola la chiave pubblica: + $$X = g^a \pmod p$$ +2. Il nodo $B$ sceglie un segreto privato $b$ e calcola la chiave pubblica: + $$Y = g^b \pmod p$$ +3. Si scambiano $X$ e $Y$. Il segreto condiviso $K$ viene calcolato indipendentemente: + $$K = Y^a \pmod p = (g^b)^a \pmod p = g^{ab} \pmod p$$ + $$K = X^b \pmod p = (g^a)^b \pmod p = g^{ab} \pmod p$$ + +### Derivazione delle Chiavi (SKEYID) +In IKEv2, partendo dal segreto condiviso $K$ (indicato come $g^{ab}$) e dai nonce generati dai due peer ($N_i, N_r$), viene calcolata una stringa master chiamata `SKEYID` tramite una funzione pseudo-casuale (PRF), come HMAC-SHA256: + +$$\text{SKEYID} = \text{PRF}(N_i \parallel N_r, g^{ab})$$ + +Da questo valore base vengono derivate tutte le sottochiavi per il controllo del tunnel e per la cifratura/autenticazione dei dati (chiavi ESP): + +$$\text{SK}_d \parallel \text{SK}_a \parallel \text{SK}_e = \text{PRF}^+(\text{SKEYID}, N_i \parallel N_r \parallel \text{SPI}_i \parallel \text{SPI}_r)$$ + +Dove: +* $\text{SK}_d$: Chiave per la derivazione di successive SA. +* $\text{SK}_a$: Chiave per l'autenticazione del canale di controllo. +* $\text{SK}_e$: Chiave per la cifratura del canale di controllo. +* $\text{SPI}$: *Security Parameter Index*, un identificatore univoco locale per la SA. \ No newline at end of file diff --git a/backend/src/main/resources/get/documentazione/SHA3.md b/backend/src/main/resources/get/documentazione/SHA3.md new file mode 100644 index 0000000..e98a739 --- /dev/null +++ b/backend/src/main/resources/get/documentazione/SHA3.md @@ -0,0 +1,87 @@ +# L'Algoritmo di Hashing SHA-3 (Keccak) + +Lo **SHA-3** (Secure Hash Algorithm 3) è l'ultimo standard di hashing rilasciato dal *NIST* nel 2015 (FIPS 202). A differenza dei suoi predecessori (SHA-1 e SHA-2), che si basano sulla struttura di Merkle-Damgård, SHA-3 adotta una filosofia completamente nuova chiamata **costruzione a spugna (Sponge Construction)**, basata sulla famiglia di primitive crittografiche **Keccak**. + +--- + +## 1. La Costruzione a Spugna + +La costruzione a spugna permette di ricevere un input di lunghezza arbitraria e produrre un output di lunghezza desiderata. Il processo si divide in due fasi principali: + +1. **Fase di Assorbimento (Absorbing)**: I blocchi del messaggio di input vengono inseriti gradualmente nello stato interno tramite operazioni XOR ($\oplus$). +2. **Fase di Spremitura (Squeezing)**: L'output viene estratto in modo incrementale dallo stato interno fino a raggiungere la lunghezza desiderata. + +### Parametri Fondamentali +Lo stato interno di Keccak ha una dimensione totale di **$b = 1600$ bit**. Questo stato è diviso in due parti: +* **Bitrate ($r$)**: La porzione di stato che interagisce direttamente con i blocchi del messaggio in input e viene estratta in output. +* **Capacità ($c$)**: La porzione di stato tenuta nascosta all'esterno, che garantisce la sicurezza dell'algoritmo. Vale la relazione $b = r + c$. + +Per una data dimensione del digest di output $n$, la capacità viene solitamente impostata a $c = 2n$. Di conseguenza: +* **SHA3-256**: $c = 512$ bit, $r = 1088$ bit. +* **SHA3-512**: $c = 1024$ bit, $r = 576$ bit. + +--- + +## 2. Lo Stato Interno di Keccak + +Lo stato interno di 1600 bit viene geometricamente rappresentato come una matrice tridimensionale di dimensioni **$5 imes 5 imes 64$ bit**. + +Ogni elemento della matrice è una "parola" (word) di 64 bit. Le coordinate sono espresse come: +* $x \in \{0, 1, 2, 3, 4\}$ (colonne) +* $y \in \{0, 1, 2, 3, 4\}$ (righe) +* $z \in \{0, 1, \dots, 63\}$ (bit all'interno della parola) + +Un singolo bit dello stato è indicato come $A[x, y, z]$. Le operazioni aritmetiche sugli indici delle coordinate $x$ e $y$ sono eseguite in modulo 5 ($\pmod 5$). + +--- + +## 3. La Funzione di Permutazione $f$ + +La sicurezza di SHA-3 risiede nella funzione di permutazione iterativa $Keccak-f[1600]$, che consta di **24 round**. Ogni round applica sullo stato cinque trasformazioni matematiche e logiche consecutive: **$ heta, +ho, \pi, \chi, \iota$**. + +### 1. Passo $ heta$ (Theta) - Diffusione +Calcola la parità di ciascuna colonna e la combina con le colonne adiacenti. Serve a garantire un'ampia diffusione dei bit. + +$$A'[x,y,z] = A[x,y,z] \oplus C[x-1, z] \oplus C[x+1, z-1]$$ + +Dove $C[x,z]$ è la parità di una colonna: +$$C[x,z] = A[x,0,z] \oplus A[x,1,z] \oplus A[x,2,z] \oplus A[x,3,z] \oplus A[x,4,z]$$ + +### 2. Passo $ +ho$ (Rho) - Rotazione Intrapola +Ruota i bit di ciascuna delle 25 parole di un offset fisso triangolare $t_{x,y}$, specifico per ogni posizione $(x,y)$: + +$$A'[x,y,z] = A[x,y, (z - t_{x,y}) \pmod{64}]$$ + +### 3. Passo $\pi$ (Pi) - Permutazione Interpola +Permuta la posizione delle parole all'interno della matrice $5 imes 5$, rimescolando la geometria dello stato: + +$$A'[X, Y, z] = A[x, y, z] \quad ext{dove } egin{pmatrix} X \ Y \end{pmatrix} = egin{pmatrix} 0 & 1 \ 2 & 3 \end{pmatrix} egin{pmatrix} x \ y \end{pmatrix} \pmod 5$$ + +O in modo più esplicito: $A'[y, (2x + 3y) \pmod 5, z] = A[x, y, z]$. + +### 4. Passo $\chi$ (Chi) - Elemento Non Lineare +È l'unico passaggio non lineare dell'algoritmo (equivalente a una porta logica AND combinata con XOR). Modifica il valore di un bit in base ai bit adiacenti della stessa riga: + +$$A'[x,y,z] = A[x,y,z] \oplus \left( ig( +eg A[x+1, y, z] ig) \wedge A[x+2, y, z] +ight)$$ + +### 5. Passo $\iota$ (Iota) - Rottura delle Simmetrie +Aggiunge una costante di round $RC[i_r]$ tramite XOR esclusivamente alla parola in posizione $(0,0)$ dello stato. Questo impedisce la nascita di simmetrie periodiche tra i round: + +$$A'[0,0,z] = A[0,0,z] \oplus RC[i_r][z]$$ + +Dove $i_r$ è l'indice del round corrente ($0 \le i_r \le 23$). Le restanti parole dello stato rimangono invariate in questo passaggio. + +--- + +## Proprietà di Sicurezza + +Grazie alla costruzione a spugna e alla natura algebrica dei 5 passi di Keccak, SHA-3 offre una resistenza strutturale nativa contro diversi attacchi noti per SHA-2: + +* **Resistenza alle estensioni di lunghezza (Length Extension Attacks)**: Non richiede costrutti come l'HMAC per essere sicuro come MAC, poiché la parte segreta dello stato (la capacità $c$) non viene mai esposta nel digest finale. +* **Flessibilità**: Modificando i parametri $r$ e $c$, l'algoritmo può essere facilmente adattato per fungere da cifrario a flusso, generatore di numeri pseudocasuali (PRNG) o funzioni ad output estendibile (SHAKE128, SHAKE256). + +Ciononostante, la vasta maggioranza delle applicazioni oggi usa funzioni di hash del tipo precedente, non ci sono ragioni di sicurezza, ma cambiare le cose è difficile e richiede molto tempo \ No newline at end of file diff --git a/backend/src/main/resources/get/documentazione/SHA512.md b/backend/src/main/resources/get/documentazione/SHA512.md index 9c44745..c4be7d6 100644 --- a/backend/src/main/resources/get/documentazione/SHA512.md +++ b/backend/src/main/resources/get/documentazione/SHA512.md @@ -1 +1,96 @@ -# La Funzione SHA-512 \ No newline at end of file +# L'Algoritmo di Hashing SHA-512 + +Lo **SHA-512** (Secure Hash Algorithm 512) è una funzione crittografica di hashing appartenente alla famiglia **SHA-2**, progettata dalla *National Security Agency (NSA)* e pubblicata dal *NIST* nel 2002. + +L'algoritmo prende in input un messaggio di lunghezza arbitraria (fino a $2^{128}$ bit) e produce in output un'impronta digitale fissa a **512 bit** (64 byte), comunemente rappresentata come una stringa esadecimale di 128 caratteri. + +--- + +## 1. Caratteristiche Principali + +* **Dimensione del Blocco di Input**: 1024 bit. +* **Dimensione della Parola (Word)**: 64 bit (ottimizzato per architetture a 64-bit). +* **Numero di Round**: 80 passaggi di compressione. +* **Dimensione del Digest**: 512 bit. +* **Proprietà fondamentali**: + * *Resistenza alla pre-immagine*: Dato un hash $H$, è computazionalmente impossibile trovare il messaggio $M$ tale che $SHA512(M) = H$. + * *Resistenza alla seconda pre-immagine*: Dato un messaggio $M_1$, è impossibile trovare un $M_2 +eq M_1$ tale che $SHA512(M_1) = SHA512(M_2)$. + * *Resistenza alle collisioni*: È computazionalmente impossibile trovare due messaggi diversi che producano lo stesso hash. + +--- + +## 2. Fasi del Funzionamento + +L'algoritmo elabora il messaggio strutturandolo in blocchi successivi attraverso i seguenti passaggi: + +### 1. Riempimento (Padding) +Il messaggio originale viene esteso in modo che la sua lunghezza in bit sia congrua a $896 \pmod{1024}$. +* Si aggiunge un singolo bit `1` seguito da una sequenza di bit `0`. +* Negli ultimi 128 bit dello spazio rimanente del blocco viene inserita la lunghezza del messaggio originale espressa in bit. + +### 2. Inizializzazione del Buffer (IV) +Vengono inizializzate 8 variabili di registro a 64 bit ciascuna (da $A$ ad $H$). I valori iniziali derivano dalle parti frazionarie delle radici quadrate dei primi 8 numeri primi: +* $A = ext{0x6a09e667f3bcc908}$ ($\sqrt{2}$) +* $B = ext{0xbb67ae8584caa73b}$ ($\sqrt{3}$) +* $C = ext{0x3c6ef372fe94f82b}$ ($\sqrt{5}$) +* ... fino ad $H$ ($\sqrt{19}$). + +### 3. Ciclo Principale e Message Schedule +Per ogni blocco di 1024 bit, l'input viene suddiviso in 16 parole da 64 bit e poi espanso in un array $W$ di 80 parole ($W_0, W_1, \dots, W_{79}$) secondo la formula: + +$$W_t = egin{cases} +M_t^{(i)} & 0 \le t \le 15 \ +\sigma_1(W_{t-2}) + W_{t-7} + \sigma_0(W_{t-15}) + W_{t-16} & 16 \le t \le 79 +\end{cases}$$ + +Dove le funzioni $\sigma_0$ e $\sigma_1$ sono definite sotto. + +--- + +## 3. Funzioni Logiche e Operazioni Matematiche + +Ogni round degli 80 previsti utilizza costanti additive predefinite $K_t$ (derivate dalle radici cubiche dei primi 80 numeri primi) e applica funzioni logiche bit-a-bit sulle parole a 64 bit. + +Le funzioni logiche fondamentali utilizzate sono: + +### Funzione Ch ("Choice") +Seleziona i bit di $Y$ o $Z$ a seconda del valore di $X$: +$$Ch(X, Y, Z) = (X \wedge Y) \oplus ( +eg X \wedge Z)$$ + +### Funzione Maj ("Majority") +Restituisce la maggioranza dei bit dei tre input: +$$Maj(X, Y, Z) = (X \wedge Y) \oplus (X \wedge Z) \oplus (Y \wedge Z)$$ + +### Funzioni di Somma e Rotazione ($\Sigma$ e $\sigma$) +Le funzioni utilizzano le operazioni di rotazione ciclica a destra ($ROTR^n$) e shift logico a destra ($SHR^n$): + +$$\Sigma_0(X) = ROTR^{28}(X) \oplus ROTR^{34}(X) \oplus ROTR^{39}(X)$$ +$$\Sigma_1(X) = ROTR^{14}(X) \oplus ROTR^{18}(X) \oplus ROTR^{41}(X)$$ + +$$\sigma_0(X) = ROTR^{1}(X) \oplus ROTR^{8}(X) \oplus SHR^{7}(X)$$ +$$\sigma_1(X) = ROTR^{19}(X) \oplus ROTR^{61}(X) \oplus SHR^{6}(X)$$ + +### Aggiornamento delle Variabili nei Round +In ciascuno degli 80 round, i valori dei registri $(A, B, C, D, E, F, G, H)$ vengono aggiornati calcolando due variabili temporanee $T_1$ e $T_2$: + +$$T_1 = H + \Sigma_1(E) + Ch(E, F, G) + K_t + W_t$$ +$$T_2 = \Sigma_0(A) + Maj(A, B, C)$$ + +I registri mutano poi nel seguente modo: +* $H = G$ +* $G = F$ +* $F = E$ +* $E = D + T_1 \pmod{2^{64}}$ +* $D = C$ +* $C = B$ +* $B = A$ +* $A = T_1 + T_2 \pmod{2^{64}}$ + +Al termine degli 80 round, i valori ottenuti vengono sommati ai valori iniziali del blocco corrente e si procede con il blocco successivo. Il digest finale è la concatenazione di $A, B, C, D, E, F, G, H$. + +### La Vulnerabilità principale di queste funzioni +Tutte le funzioni della famiglia **SHA 2** sebbene siano tra le più diffuse presentano comunque un problema **intrinseco** al loro funzionamento: sono vulnerabili ai **Length Extension Attacks**. + +Se a partire da un digest si riesce ad invertire lo step di finalization, si è in grado di ricostruire lo stato interno della funzione, il che consente di aggiungere ulteriori blocchi alla "catena" permettendo di forgiare messaggi / validare messaggi invalidi. \ No newline at end of file diff --git a/backend/src/main/resources/get/documentazione/TCPattacks.md b/backend/src/main/resources/get/documentazione/TCPattacks.md new file mode 100644 index 0000000..0f74d67 --- /dev/null +++ b/backend/src/main/resources/get/documentazione/TCPattacks.md @@ -0,0 +1,42 @@ +## Minacce TCP/IP + +Il protocollo **TCP/IP** è la base della comunicazione su Internet. Proprio per la sua natura aperta e universale, è soggetto a numerosi attacchi che sfruttano debolezze nel design dei protocolli di rete. + +### Principali attacchi sul protocollo TCP/IP + +#### IP Spoofing +L'attaccante **falsifica l'indirizzo IP sorgente** dei pacchetti per impersonare un host fidato o nascondere la propria identità. + +#### SYN Flood (DoS/DDoS) +Sfrutta il meccanismo di **handshake a tre vie** di TCP: +1. Il client invia SYN +2. Il server risponde con SYN-ACK e alloca risorse +3. L'attaccante **non risponde mai** con l'ACK finale + +Il server accumula connessioni "semiaperte" fino all'esaurimento delle risorse. + +#### Man-in-the-Middle (MitM) +L'attaccante si **interpone nella comunicazione** tra due host, potendo intercettare, modificare o iniettare pacchetti in tempo reale. + +#### Teardrop +Invio di frammenti di pacchetti IP **corrotti** che il sistema non riesce a riassemblare, mandandolo in tilt. + +#### Botnet e DDoS +Una rete di **dispositivi infetti** (botnet) controllati all'insaputa dei proprietari, usati per lanciare attacchi **DDoS (Distributed Denial of Service)**, mirati a disattivare un servizio sovraccaricandolo di richieste. + +#### Session Hijacking +Furto del **token di sessione TCP** per impersonare un utente autenticato senza conoscerne le credenziali. + +#### DNS Poisoning / Spoofing +Corruzione della cache DNS per **reindirizzare l'utente** verso siti malevoli pur digitando un indirizzo legittimo. + +#### Packet Sniffing +Intercettazione passiva del traffico di rete. Particolarmente pericolosa su reti non cifrate (HTTP, FTP, Telnet). + +### Contromisure +- Utilizzo di **TLS/SSL** per cifrare le comunicazioni +- **Firewall** e sistemi IDS/IPS +- **IPSec** per autenticazione e cifratura a livello di rete +- **DNSSEC** per l'integrità delle risposte DNS + +--- \ No newline at end of file diff --git a/backend/src/main/resources/get/documentazione/TLS.md b/backend/src/main/resources/get/documentazione/TLS.md index e69de29..9527099 100644 --- a/backend/src/main/resources/get/documentazione/TLS.md +++ b/backend/src/main/resources/get/documentazione/TLS.md @@ -0,0 +1,23 @@ +# Il Protocollo TLS 1.3 (Transport Layer Security) + +Il **TLS** (Transport Layer Security), standardizzato dall'IETF (RFC 8446 per la versione 1.3), è un protocollo crittografico operante al di sopra del **livello di trasporto (Layer 4)**. Progettato come evoluzione del vecchio protocollo SSL, garantisce la sicurezza delle comunicazioni end-to-end su canali TCP, proteggendo protocolli applicativi diffusissimi come HTTP (dando vita ad HTTPS), SMTP, IMAP e FTP. + +TLS fornisce tre obiettivi fondamentali: +1. **Riservatezza**: Mediante cifratura simmetrica dei dati. +2. **Autenticazione**: Mediante certificati digitali a chiave pubblica (generalmente sul lato server). +3. **Integrità**: Verificando che i messaggi non subiscano alterazioni tramite codici MAC. + +--- + +## 1. Architettura a Due Livelli + +TLS 1.3 si compone di un'architettura strutturata principalmente su due macro-livelli: + +1. **TLS Record Protocol (Livello Inferiore)**: Riceve i dati dall'applicazione, li frammenta, applica la protezione crittografica concordata e li incapsula in record pronti per essere passati al livello TCP. +2. **TLS Handshake Protocol (Livello Superiore)**: Gestisce la fase iniziale di negoziazione. Permette al client e al server di autenticarsi a vicenda, concordare la suite crittografica e generare in modo sicuro le chiavi simmetriche di sessione. + +--- + +## 2. Il Flusso di Handshake in TLS 1.3 (1-RTT) + +A differenza di TLS 1.2 che richiedeva due passaggi completi (2-RTT), TLS 1.3 riduce la latenza a un solo Round-Trip Time (**1-RTT**) effettuando l'ipotesi ottimistica dei parametri crittografici da utilizzare. diff --git a/backend/src/main/resources/get/documentazione/attacchi.md b/backend/src/main/resources/get/documentazione/attacchi.md index f384787..79a8184 100644 --- a/backend/src/main/resources/get/documentazione/attacchi.md +++ b/backend/src/main/resources/get/documentazione/attacchi.md @@ -4,7 +4,7 @@ Gli **attacchi informatici**, nell’ultimo decennio, hanno registrato, a livell L’attacco informatico viene definito dal **National Initiative For Cybersecurity Careers And Studies (NICCS)** come “il tentativo di ottenere un accesso non autorizzato a servizi, risorse o informazioni di sistema e/o di comprometterne l’integrità e, in generale, consiste nell’atto intenzionale di tentare di eludere uno o più servizi di sicurezza o i controlli di un sistema informativo digitale per alterare la riservatezza, l’integrità e la disponibilità dei dati”. -## Le Figure Nascoste dietro agli attacchi: gli Hackers +## I Diversi Tipi di Hackers Questi attacchi vengono condotti da figure dette hackers che sfruttano le loro conoscenze per divincolarsi nei sistemi informatici. Vengono classificati in base alle loro intenzioni in @@ -16,193 +16,37 @@ Caso a parte sono poi gli **Hacktivists** che promuovono cause sociali e politic La classificazione degli attacchi informatici dipende da quelle che sono le motivazioni che vi sono alla base. Motivazioni che, a loro volta, determinano le modalità stesse dell’azione malevola e le sue caratteristiche. +### I White Hat Hackers, come si dividono? +La sicurezza si avvale di team specializzati di white hat hackers che simulano attacchi per migliorare le difese: +* **Red Team:** Simula i criminali informatici effettuando attacchi mirati (Penetration Test) per scovare le vulnerabilità. +* **Blue Team:** È il team di difesa interno. Monitora l'infrastruttura, rileva le intrusioni e risponde agli attacchi. +* **Purple Team:** Coordina Red e Blue team per massimizzare l'apprendimento e migliorare l'efficacia complessiva della sicurezza. + ## Classificazione degli Attacchi Informatici Come già specificato prima gli attacchi informatici sfruttano delle minacce tramite exploits per causare un impatto su un sistema. Distinguiamo tre macro-tipologie di attacchi, derivanti da specifiche minacce: -* **Malware** -* **Keylogger** -* **TCP/IP** -* **Errori Umani** - -Entriamo ora nello specifico di ognuno di questi ## I Malware Il termine deriva da *malicious software*. È un codice malevolo progettato per penetrare illecitamente in un sistema per rubare, alterare dati, spiare o assumere il controllo del dispositivo. Spesso l'infezione richiede l'inconsapevole complicità dell'utente (social engineering). -**Struttura di un malware:** -In generale, un malware è composto da due parti funzionali (assimilabili a un missile): -1. **Vettore (Carrier):** Il mezzo attraverso cui il malware si diffonde (un file allegato, un link, una chiavetta USB) e che serve a superare le difese del sistema sfruttando una vulnerabilità. -2. **Carico utile (Payload):** Le istruzioni specifiche (la "testata esplosiva") che il malware esegue una volta dentro il sistema bersaglio (es. cifrare i file, rubare password, attivare la fotocamera). - -### Tipologie principali - -| Tipo | Descrizione | Esempio | -|---|---|---| -| **Virus** | Frammento di codice che si inserisce in altri programmi (host). Ha bisogno dell'intervento umano (es. apertura di un file) per attivarsi e diffondersi | ILOVEYOU | -| **Worm** | Programma autonomo in grado di autoreplicarsi e diffondersi rapidamente sfruttando le reti e le vulnerabilità dei sistemi, senza bisogno dell'azione umana | WannaCry | -| **Trojan** | oftware apparentemente utile e innocuo che nasconde al suo interno funzionalità malevole. Spesso installa backdoor | RAT (Remote Access Trojan) | -| **Ransomware** | Malware che cifra i dati della vittima, rendendoli inaccessibili, per poi richiedere il pagamento di un riscatto (ransom) per fornire la chiave di decifratura | Ryuk, LockBit | -| **Spyware** | Software progettato per spiare le attività dell'utente e raccogliere informazioni (password, dati bancari, abitudini) senza il suo consenso | FinFisher | -| **Adware** | Programma che mostra pubblicità indesiderata o pop-up in modo invasivo. | Fireball | -| **Rootkit** | Insieme di software che permette di ottenere privilegi di amministratore (root) su un sistema, nascondendo la propria presenza e quella di altri malware | Necurs | -| **Backdoor** | Metodo che consente di scavalcare le procedure di sicurezza standard per accedere illecitamente a un sistema | Mirai | -| **Botnet** | Rete di dispositivi infetti controllati da remoto | Mirai | - -### Vettori di infezione comuni -- Allegati email malevoli (phishing) -- Download da siti non affidabili -- Dispositivi USB infetti -- Vulnerabilità software non patchate - ---- ## I Keylogger Un **keylogger** è uno strumento — hardware o software — che **registra ogni tasto premuto** dall'utente a sua insaputa, con l'obiettivo di sottrarre credenziali, dati sensibili e informazioni riservate. -### Tipologie di keyloggers - -I keylogger possono fare parte di due categorie: - -**Software** -- Si installa come processo di sistema nascosto -- Può catturare screenshot, appunti, form web -- Spesso distribuito come componente di trojan o spyware - -**Hardware** -- Dispositivo fisico inserito tra tastiera e PC (USB/PS2) -- Invisibile a qualsiasi antivirus -- Richiede accesso fisico alla macchina - -Le info più comuni che un keylogger cerca di estrapolare sono: -- Username e password -- Numeri di carte di credito -- Conversazioni private e messaggi -- Ricerche e URL visitati -- Codici OTP (se inseriti manualmente) - -### Contromisure -- Autenticazione a due fattori (2FA) -- Tastiere virtuali per dati sensibili -- Antimalware aggiornati con moduli anti-keylogger -- Controllo periodico delle porte USB sui dispositivi aziendali -## Minacce TCP/IP - +## Attacchi a Livello TCP/IP + Il protocollo **TCP/IP** è la base della comunicazione su Internet. Proprio per la sua natura aperta e universale, è soggetto a numerosi attacchi che sfruttano debolezze nel design dei protocolli di rete. -### Principali attacchi sul protocollo TCP/IP - -#### IP Spoofing -L'attaccante **falsifica l'indirizzo IP sorgente** dei pacchetti per impersonare un host fidato o nascondere la propria identità. - -#### SYN Flood (DoS/DDoS) -Sfrutta il meccanismo di **handshake a tre vie** di TCP: -1. Il client invia SYN -2. Il server risponde con SYN-ACK e alloca risorse -3. L'attaccante **non risponde mai** con l'ACK finale - -Il server accumula connessioni "semiaperte" fino all'esaurimento delle risorse. - -#### Man-in-the-Middle (MitM) -L'attaccante si **interpone nella comunicazione** tra due host, potendo intercettare, modificare o iniettare pacchetti in tempo reale. - -#### Teardrop -Invio di frammenti di pacchetti IP **corrotti** che il sistema non riesce a riassemblare, mandandolo in tilt. - -#### Botnet e DDoS -Una rete di **dispositivi infetti** (botnet) controllati all'insaputa dei proprietari, usati per lanciare attacchi **DDoS (Distributed Denial of Service)**, mirati a disattivare un servizio sovraccaricandolo di richieste. - -#### Session Hijacking -Furto del **token di sessione TCP** per impersonare un utente autenticato senza conoscerne le credenziali. - -#### DNS Poisoning / Spoofing -Corruzione della cache DNS per **reindirizzare l'utente** verso siti malevoli pur digitando un indirizzo legittimo. - -#### Packet Sniffing -Intercettazione passiva del traffico di rete. Particolarmente pericolosa su reti non cifrate (HTTP, FTP, Telnet). - -### Contromisure -- Utilizzo di **TLS/SSL** per cifrare le comunicazioni -- **Firewall** e sistemi IDS/IPS -- **IPSec** per autenticazione e cifratura a livello di rete -- **DNSSEC** per l'integrità delle risposte DNS - ---- ## Errori Umani Gli errori umani rappresentano storicamente la **causa principale** delle violazioni di sicurezza. Non si tratta di attacchi tecnici, ma di comportamenti che aprono vulnerabilità sfruttabili da attori malevoli — o che causano danni diretti senza alcun intervento esterno ai quali purtroppo non c'è una soluzione immediata. -### Categorie di errori umani -#### 🎣 Vittime di Phishing e Social Engineering -L'utente viene **manipolato psicologicamente** per rivelare credenziali, cliccare su link malevoli o eseguire azioni dannose. Include: -- Phishing via email -- Vishing (voice phishing) -- Smishing (SMS phishing) -- Pretexting e impersonificazione - -#### 🔑 Gestione inadeguata delle credenziali -- Password deboli o riutilizzate su più servizi -- Condivisione di credenziali tra colleghi -- Mancato aggiornamento delle password dopo una violazione -- Post-it con password attaccati al monitor - -#### ⚙️ Configurazioni errate (Misconfiguration) -- Permessi troppo permissivi su file, cartelle o database -- Servizi esposti su internet senza necessità -- Bucket cloud (S3, Azure Blob) lasciati pubblici per errore -- Default credentials non modificate - -#### 📦 Installazione di software non autorizzato -- Download di applicazioni da fonti non ufficiali -- Uso di software craccato contenente malware -- Estensioni browser malevole installate inconsapevolmente - -#### 🗑️ Smaltimento non sicuro dei dati -- Hard disk eliminati senza formattazione sicura -- Documenti sensibili cestinati senza distruzione -- Dispositivi aziendali venduti o donati senza sanificazione - -#### 🏠 Shadow IT -Utilizzo di strumenti, app o servizi cloud **non approvati dall'IT aziendale**, che sfuggono a qualsiasi controllo di sicurezza. - -### Contromisure - -| Errore | Contromisura | -|---|---| -| Phishing | Formazione continua, simulazioni di phishing | -| Password deboli | Password manager, policy aziendali, MFA | -| Misconfiguration | Audit periodici, principio del minimo privilegio | -| Software non autorizzato | Whitelist applicazioni, MDM | -| Smaltimento dati | Policy di data disposal, distruzione fisica | -| Shadow IT | Inventario asset, sensibilizzazione, alternative approvate | - -> 💡 **Il fattore umano** non si elimina con la tecnologia, ma con **formazione continua, cultura della sicurezza e processi chiari**. Il 95% delle violazioni di sicurezza ha una componente umana (fonte: IBM Cyber Security Intelligence Index). ## Gli Attacchi APT (Advanced Persistent Threats) -Con il passare degli anni e l'avvento delle nuove tecnologie il modo per sferrare gli attacchi è mutato ed è diventato pìiù sofisticato, e così sono nate le gli **attacchi APT**. Gli attacchi APT vengono definiti come tecniche di hacking mirate e sofisticate, usate per **sabotaggio o spionaggio a lungo termine** e sono solitamente basati sul **Social Engineering**. -Prevedono 7 fasi precise: - -* Ricognizione -Vengono raccolte una serie di informazioni aggiornate e pubbliche riguardanti il target tramite **social engineering** per capire al meglio la struttura e il funzionamento del sistema che si vuole attaccare e le sue debolezze (spesso è proprio il lato umano la maggiore debolezza). -* Armamento -L'attaccante pianifica l'attacco creando le cosiddette "armi" e identificando nello specifico i fronti di attacco -* Distribuizione -L'attaccante invia il malware al target tramite tecniche note di iniezione, quali sql injection, xss, allegati malevoli inviati via mail, phishing etc... -* Sfruttamento -Il payload dannoso apre un varco nel sistema sfruttando una specifica vulnerabilità -* Installazione -Vengono istanziate delle backdoor sulla macchina target infetta e ciò permette agli attaccanti di prendere le info sensibili necessarie al proseguimento dell'attacco quali credenziali, registri di sistema etc... -* Comando e Controllo -Tramite le credenziali rubate gli attaccanti accedono ai **dati riservati** del sistema e li esfiltrano, tutti i dati interessanti vengono inviati a server intermedi e crittografati prima di venire inviati al team esterno che usa questi dati per operazioni illecite -* Azioni sull'obiettivo -Tutti i precedenti processi vengono "occultati" ai membri del sistema perchè lo scopo è rimanere dentro il più possibile in modo da poter captare una grande mole di dati, **è l'esatto motivo per cui questi attacchi sono così complicati da gestire !!** - -Questa catena viene anche detta **Cyber Kill Chain** e viene utilizzata per descrivere il ciclo di vita di un attacco informatico. - ---- ### Classificazione standard: CWE e CVE La MITRE Corporation gestisce database fondamentali per catalogare tutti questi problemi: @@ -210,8 +54,4 @@ La MITRE Corporation gestisce database fondamentali per catalogare tutti questi * **CVE (Common Vulnerabilities and Exposures):** Un catalogo delle *vulnerabilità* specifiche già identificate, a cui viene assegnato un ID unico. Ad ogni CVE è associato un punteggio di gravità da 0 a 10 chiamato **CVSS (Common Vulnerability Scoring System)**. -### Sicurezza Offensiva e Difensiva -La sicurezza si avvale di team specializzati che simulano attacchi per migliorare le difese: -* **Red Team:** Simula i criminali informatici effettuando attacchi mirati (Penetration Test) per scovare le vulnerabilità. -* **Blue Team:** È il team di difesa interno. Monitora l'infrastruttura, rileva le intrusioni e risponde agli attacchi. -* **Purple Team:** Coordina Red e Blue team per massimizzare l'apprendimento e migliorare l'efficacia complessiva della sicurezza. + diff --git a/backend/src/main/resources/get/documentazione/crittografia_simmetrica.md b/backend/src/main/resources/get/documentazione/crittografia_simmetrica.md index b248a74..1100688 100644 --- a/backend/src/main/resources/get/documentazione/crittografia_simmetrica.md +++ b/backend/src/main/resources/get/documentazione/crittografia_simmetrica.md @@ -36,8 +36,6 @@ Il suo funzionamento era molto semplice: prima di scrivere il messaggio, gli efo Dopo aver fatto aderire la pergamena alla bacchetta senza lasciare spazi vuoti o sovrapposizioni, vi scrivevano il messaggio in senso longitudinale. Una volta srotolata, la striscia mostrava solo lettere sparse e scollegate, risultando incomprensibile a eventuali intercettatori. Solo il destinatario, riavvolgendo la pergamena sulla bacchetta gemella, poteva ricostruire l'ordine originario delle lettere. - - ### 2. Il Cifrario di Cesare (Antica Roma) Il **Cifrario di Cesare** è uno dei più antichi algoritmi di tipo sostitutivo (*sostituzione monoalfabetica*). Ogni lettera del testo in chiaro viene sostituita dalla lettera che si trova un certo numero di posizioni dopo nell'alfabeto (cifrario a scorrimento). In particolare, Giulio Cesare utilizzava uno spostamento fisso di **3 posizioni**. @@ -58,11 +56,15 @@ Il funzionamento prevedeva tre passi: 2. **Scrittura:** Si cercava la lettera in chiaro sul disco esterno e si scriveva la corrispondente sul disco mobile. 3. **Il colpo di genio:** Ogni tanto il mittente inseriva una lettera maiuscola nel testo. Questa indicava al ricevente di **ruotare il disco interno** su una nuova combinazione, cambiando completamente l'alfabeto da quel punto in poi. - - ### 4. Il Cifrario di Vigenère Formulato successivamente, nacque come una variante semplificata del concetto di Alberti. Può essere considerato una generalizzazione del cifrario di Cesare: invece di spostare le lettere di un numero fisso di posti, lo spostamento varia carattere per carattere in base a una **parola chiave** (detta anche *verme*). La chiave viene scritta ripetutamente sotto il messaggio per determinare lo scorrimento di ogni singola lettera. +### 5. Il Cifrario di Vernam - One Time Pad +Il cifrario di Vernam è un sistema crittografico basato sul cifrario di Vigenère, al quale aggiunge il requisito che la chiave di cifratura sia lunga quanto il testo e non riutilizzabile (per questo viene spesso chiamato OTP, acronimo per l'inglese One Time Pad (OTP), letteralmente "taccuino monouso"). +Quest'ultimo è l'unico sistema crittografico la cui sicurezza sia comprovata da una dimostrazione matematica pubblicata nel 1949 da Claude Shannon per la quale si è guadagnato il titolo di "cifrario perfetto". +Il suo funzionamento è banale, scelta una chiave lecita si effettua lo XOR tra messaggio e chiave: tuttavia nonostante la sua definizione il cifrario risulta comunque vulnerabile in caso di **riutilizzo della chiave** e **attacchi statistici specifici** in più il vincolo della chiave risulta molto complesso quando si ha a che fare con grandi quantità di dati. + +> Da questo deduciamo che nella pratica è **impossibile** ottenere segretezza perfetta --- ## La Crittografia Simmetrica Moderna: DES e AES @@ -71,7 +73,7 @@ Oggi i cifrari storici sono obsoleti. La crittografia moderna si affida ad algor * **DES** * **Triple DES** -* **AES**. +* **AES** diff --git a/backend/src/main/resources/get/documentazione/fingerprint.md b/backend/src/main/resources/get/documentazione/fingerprint.md index acad41d..3c41c51 100644 --- a/backend/src/main/resources/get/documentazione/fingerprint.md +++ b/backend/src/main/resources/get/documentazione/fingerprint.md @@ -1,21 +1,83 @@ # La Firma Digitale e le Certification Authority +La **firma digitale** è un meccanismo matematico e crittografico utilizzato per attestare l'autenticità, l'integrità e il non ripudio di un documento informatico o di un messaggio trasmesso per via telematica. Rappresenta l'equivalente informatico della firma autografa su carta, offrendo tuttavia garanzie di sicurezza nettamente superiori. -### Integrità e Firma Digitale -* **Funzioni Hash:** Algoritmi matematici che prendono in input un file e restituiscono una stringa di lunghezza fissa chiamata *digest* (l'impronta digitale del file). È un processo unidirezionale (non si può tornare al file originale) e serve a garantire l'integrità dei dati. -* **Firma Digitale:** Garantisce *Autenticità, Integrità e Non Ripudio*. Si ottiene cifrando l'hash del messaggio con la **chiave privata** del mittente. Il destinatario userà la **chiave pubblica** del mittente per decifrare l'hash e verificarlo. -* **Certificati Digitali:** Documenti elettronici rilasciati da una **CA (Certification Authority)** che garantiscono l'identità del proprietario di una chiave pubblica. +--- -## Autenticazione e Controllo degli Accessi +## Proprietà Fondamentali -* **Identificazione:** Dichiarare chi si è (es. inserire l'username). -* **Autenticazione:** Dimostrare chi si è (es. inserire la password). -* **Autorizzazione:** Stabilire a quali risorse l'utente autenticato ha diritto di accedere. +La firma digitale garantisce tre proprietà cruciali per la sicurezza informatica: -### Fattori di Autenticazione -L'autenticazione si basa su tre paradigmi: -1. **Something you know** (Qualcosa che sai): Password, PIN. -2. **Something you have** (Qualcosa che hai): Token hardware, Smartcard, Smartphone. -3. **Something you are** (Qualcosa che sei): Biometria (impronta digitale, riconoscimento facciale). +1. **Autenticità**: Garantisce l'identità del firmatario. Solo il possessore della chiave privata può aver generato quella specifica firma. +2. **Integrità**: Assicura che il documento non sia stato modificato o manomesso dopo l'apposizione della firma. +3. **Non Ripudio**: Il firmatario non può negare di aver firmato il documento, poiché la chiave privata è sotto il suo esclusivo controllo. + +--- + +## L'Applicazione Pratica delle Firme Digitali + +Il funzionamento si basa sulla **crittografia asimmetrica** (o a coppia di chiavi) e sull'uso di funzioni di **hashing**. + +* Le funzioni di hash sono algoritmi matematici che prendono in input un file e restituiscono una stringa di lunghezza fissa chiamata **digest** (l'impronta digitale del file). È un processo unidirezionale (non si può tornare al file originale) e serve a garantire l'integrità dei dati. + +Ogni utente possiede una coppia di chiavi: +* **Chiave Privata ($K_{priv}$)**: Tenuta segreta dal proprietario, utilizzata per *firmare*. +* **Chiave Pubblica ($K_{pub}$)**: Distribuita liberamente, utilizzata da chiunque per *verificare* la firma. + +### Fasi del Processo di Firma + +#### Generazione della Firma (Mittente) +1. Viene calcolato l'impronta (hash) del messaggio $M$ tramite una funzione di hash sicura $h$: + $$H = h(M)$$ +2. L'impronta $H$ viene cifrata utilizzando la chiave privata del mittente $K_{priv}$. Il risultato ottenuto è la firma digitale $S$: + $$S = ext{Cifra}(K_{priv}, H)$$ +3. Il messaggio $M$ e la firma $S$ vengono inviati insieme al destinatario. + +#### Verifica della Firma (Destinatario) +1. Il destinatario riceve il messaggio $M$ e la firma $S$. +2. Calcola l'impronta del messaggio ricevuto utilizzando la stessa funzione di hash: + $$H_{calcolato} = h(M)$$ +3. Decifra la firma $S$ utilizzando la chiave pubblica del mittente $K_{pub}$, ottenendo l'impronta originale: + $$H_{estratto} = ext{Decifra}(K_{pub}, S)$$ +4. Il destinatario confronta i due valori: + $$ ext{Se } H_{calcolato} = H_{estratto} \implies ext{Firma Valida (Documento Autentico e Integro)}$$ + $$ ext{Se } H_{calcolato} +eq H_{estratto} \implies ext{Firma Non Valida (Messaggio corrotto o chiave errata)}$$ + +--- + +## Rappresentazione Matematica del Flusso + +Possiamo sintetizzare l'intero schema attraverso le seguenti relazioni matematiche: + +$$ ext{Sintesi della Firma: } S = E_{K_{priv}}(h(M))$$ +$$ ext{Sintesi della Verifica: } D_{K_{pub}}(S) = h(M)$$ + +Dove: +* $M$: Il messaggio/documento originario. +* $h$: La funzione di hash (es. SHA-256 o SHA-512). +* $E$: L'algoritmo di cifratura asimmetrica (es. RSA o ECDSA). +* $D$: L'algoritmo di decifratura associato. + +--- + +## I Certificati Digitali + +Per garantire che una determinata chiave pubblica appartenga effettivamente a un soggetto specifico, interviene un terzo attore fidato, chiamato **Autorità di Certificazione (Certification Authority - CA)**. + +La CA rilascia un **Certificato Digitale** (conforme allo standard X.509) che lega l'identità del titolare alla sua chiave pubblica. La validità di questo legame è a sua volta protetta dalla firma digitale della CA stessa. + + +## Le Funzioni di Hash Note +Attualmente, le funzioni di hash più utilizzate sono, in base all'impiego: +#### Hashing di Dati per l'Integrità +* SHA-2 - possiede più varianti tra cui SHA-256 E SHA-512 +* SHA-3 - basato su Keccak, è l'ultimo rilasciato come standard, più sicuro di SHA-2 +#### Hashing delle Password - +Per l'hashing delle password si utilizzano funzioni apposite e **MAI** funzioni come SHA2 O SHA3 che sono troppo rapide e vulnerabili ad attacchi bruteforce e hardware. +Le funzioni adoperayte vengono dette *memory-hard* e sono state progettate per essere particolarmente lente in modo da rendere complesso il **bruteforce**. +* Argon2 - lo standard attuale +* bcrypt - basato su Blowfish +* scrypt +* PBKDF2 -* **MFA (Multi-Factor Authentication):** L'utilizzo combinato di due o più di questi fattori per aumentare drasticamente il livello di sicurezza. \ No newline at end of file diff --git a/backend/src/main/resources/get/documentazione/humans.md b/backend/src/main/resources/get/documentazione/humans.md new file mode 100644 index 0000000..242247a --- /dev/null +++ b/backend/src/main/resources/get/documentazione/humans.md @@ -0,0 +1,39 @@ +## Errori Umani + +Gli errori umani rappresentano storicamente la **causa principale** delle violazioni di sicurezza. Non si tratta di attacchi tecnici, ma di comportamenti che aprono vulnerabilità sfruttabili da attori malevoli — o che causano danni diretti senza alcun intervento esterno ai quali purtroppo non c'è una soluzione immediata. + +### Categorie di errori umani + +#### Vittime di Phishing e Social Engineering +L'utente viene **manipolato psicologicamente** per rivelare credenziali, cliccare su link malevoli o eseguire azioni dannose. Include: +- Phishing via email +- Vishing (voice phishing) +- Smishing (SMS phishing) +- Pretexting e impersonificazione + +#### Gestione inadeguata delle credenziali +- Password deboli o riutilizzate su più servizi +- Condivisione di credenziali tra colleghi +- Mancato aggiornamento delle password dopo una violazione +- Post-it con password attaccati al monitor + +#### Configurazioni errate (Misconfiguration) +- Permessi troppo permissivi su file, cartelle o database +- Servizi esposti su internet senza necessità +- Bucket cloud (S3, Azure Blob) lasciati pubblici per errore +- Default credentials non modificate + +#### Installazione di software non autorizzato +- Download di applicazioni da fonti non ufficiali +- Uso di software craccato contenente malware +- Estensioni browser malevole installate inconsapevolmente + +#### Smaltimento non sicuro dei dati +- Hard disk eliminati senza formattazione sicura +- Documenti sensibili cestinati senza distruzione +- Dispositivi aziendali venduti o donati senza sanificazione + +#### Shadow IT +Utilizzo di strumenti, app o servizi cloud **non approvati dall'IT aziendale**, che sfuggono a qualsiasi controllo di sicurezza. + +> 💡 **Il fattore umano** non si elimina con la tecnologia, ma con **formazione continua, cultura della sicurezza e processi chiari**. Il 95% delle violazioni di sicurezza ha una componente umana (fonte: IBM Cyber Security Intelligence Index). \ No newline at end of file diff --git a/backend/src/main/resources/get/documentazione/keylogger.md b/backend/src/main/resources/get/documentazione/keylogger.md new file mode 100644 index 0000000..5f34189 --- /dev/null +++ b/backend/src/main/resources/get/documentazione/keylogger.md @@ -0,0 +1,68 @@ +## 2. I Keylogger + +Un **keylogger** è uno strumento di monitoraggio diagnostico o spionistico espressamente progettato per intercettare, registrare e memorizzare sequenzialmente gli input generati da una tastiera. + +### Tipologie di keyloggers + +I keylogger possono fare parte di due categorie: + +**Software** +- Si installa come processo di sistema nascosto +- Può catturare screenshot, appunti, form web +- Spesso distribuito come componente di trojan o spyware + +**Hardware** +- Dispositivo fisico inserito tra tastiera e PC (USB/PS2) +- Invisibile a qualsiasi antivirus +- Richiede accesso fisico alla macchina + +### Keylogger Software +I keylogger software intercettano i tasti premuti inserendosi a vari livelli dell'architettura del sistema operativo: + +#### 1. Windows Hooks (`SetWindowsHookEx`) +Utilizza le API native del sistema operativo Windows per installare una procedura di filtro all'interno della catena di gestione dei messaggi. Registrando l'hook di tipo `WH_KEYBOARD` o `WH_KEYBOARD_LL` (Low-Level), il keylogger riceve una copia esatta di ogni messaggio di input (`WM_KEYDOWN`, `WM_KEYUP`) prima ancora che questo venga consegnato alla finestra dell'applicazione attiva. + +#### 2. Polling dello Stato dei Tasti (`GetAsyncKeyState`) +Il malware esegue un ciclo continuo (*loop*) ad alta frequenza interrogando lo stato fisico di ciascun tasto tramite la funzione `GetAsyncKeyState`. Se il bit più significativo restituito dall'API è impostato a 1, significa che il tasto è attualmente premuto. Questo metodo non richiede l'iniezione di DLL ma è esoso in termini di cicli CPU se non ottimizzato. + +#### 3. Kernel-Mode Filter Drivers +È il metodo più avanzato e difficile da rilevare. Il keylogger si installa come un driver di filtro di alto livello sopra il driver di classe della tastiera (es. `kbdclass.sys` in Windows). Intercetta direttamente i pacchetti di richiesta di I/O (IRP - *I/O Request Packets*) generati dall'hardware prima che transitino nel sottosistema user-mode. + +#### Funzionalità accessorie avanzate +I moderni keylogger non limitano l'azione ai tasti, ma implementano: +* **Form Grabbing:** Intercettazione dei dati inseriti nei form dei browser prima che vengano cifrati dal protocollo HTTPS. +* **Clipboard Hijacking:** Monitoraggio costante degli appunti di sistema (`Ctrl+C` / `Ctrl+V`) per catturare password o sostituire al volo indirizzi di wallet di criptovalute. +* **Screen Scraping:** Cattura di screenshot mirati ad ogni clic del mouse per eludere l'uso di tastiere virtuali a schermo. + +--- + +### Keylogger Hardware +I dispositivi hardware operano a livello fisico e sono totalmente indipendenti dal sistema operativo e dal file system della macchina bersaglio. +* **Architettura Interna:** Sono costituiti da un microcontrollore miniaturizzato (es. architettura ARM o AVR) e da una memoria flash non volatile (da pochi megabyte fino a diversi gigabyte). Il dispositivo si interpone fisicamente tra il cavo della tastiera e la porta USB/PS2 del computer. +* **Meccanismo di Funzionamento:** Agisce come un analizzatore di bus trasparente. Intercetta i pacchetti di report HID (*Human Interface Device*) inviati dalla tastiera, decodifica gli *Scan Codes* dei tasti premuti e li memorizza nella memoria flash interna in formato testuale. Al contempo, inoltra i pacchetti originari immutati verso il PC, garantendo che l'utente non sperimenti alcun ritardo nell'input. +* **Esfiltrazione:** I modelli base richiedono che l'attaccante scolleghi fisicamente il dispositivo per leggere la flash (digitando una sequenza segreta di tasti per far apparire il keylogger come una comune unità disco USB). I modelli avanzati integrano moduli **Wi-Fi** ed esfiltrano i log inviandoli via email, FTP o verso un server web dedicato non appena rilevano una rete wireless disponibile. + +--- + +### Matrice dei Target Informativi +I dati esfiltrati subiscono una classificazione interna da parte del malware (tramite espressioni regolari o *regex*) per identificare stringhe ad alto valore: +* **Credenciales d'accesso:** Analisi contestuale dei tasti digitati subito dopo l'apertura di finestre con titoli come "Login", "Sign In" o URL bancari. +* **Dati Finanziari:** Stringhe numeriche di 16 cifre che soddisfano l'algoritmo di Luhn (numeri di carte di credito) associate a date di scadenza e codici CVV/CVC. +* **Informazioni Sensibili:** Stringhe testuali scambiate su client di messaggistica aziendale, email o elaboratori di testi (spionaggio industriale). + +--- + +### Contromisure Sperimentali + +#### A. Autenticazione a Più Fattori (MFA / 2FA) +Rende inutile la sottrazione della sola password. Anche se un keylogger intercetta le credenziali statiche, l'attaccante non potrà accedere al sistema senza il token dinamico OTP (One-Time Password) generato da un'app crittografica (Google Authenticator) o tramite chiavi hardware (YubiKey basate su standard FIDO2/WebAuthn). + +#### B. Tastiere Virtuali Dinamiche (A Schermo) +L'inserimento dei dati avviene tramite clic del mouse su una tastiera grafica. Per contrastare lo *screen scraping* associato, i sistemi bancari evoluti randomizzano la posizione dei tasti sulla matrice grafica ad ogni clic, rendendo inutile il tracciamento delle coordinate spaziali del mouse. + +#### C. Antimalware con Moduli Euristici e Keystroke Encryption +* **Analisi Euristica e Comportamentale:** Monitoraggio delle chiamate API. Se un processo non firmato tenta di eseguire `SetWindowsHookEx` o di aprire l'handle del driver di tastiera, l'EDR/Antivirus blocca preventivamente l'applicazione. +* **Keystroke Encryption:** Software di sicurezza specializzati iniettano un driver a livello kernel che cifra i tasti premuti non appena vengono generati dall'hardware. I dati viaggiano cifrati lungo tutto il sistema operativo e vengono decifrati solo all'interno del processo del browser legittimo protetto, lasciando a un eventuale keylogger software solo un flusso di caratteri casuali privi di significato. + +#### D. Ispezione Fisica e Controllo degli Accessi +Ispezione visiva sistematica del retro dei computer aziendali per rilevare la presenza di dongle intermedi estranei inseriti nelle porte USB. Implementazione di policy di sicurezza fisiche (blocco delle porte USB inutilizzate, case dei PC chiusi a chiave) per impedire ad attori malintenzionati l'innesto di hardware ostile. \ No newline at end of file diff --git a/backend/src/main/resources/get/documentazione/mac.md b/backend/src/main/resources/get/documentazione/mac.md new file mode 100644 index 0000000..969f1fd --- /dev/null +++ b/backend/src/main/resources/get/documentazione/mac.md @@ -0,0 +1,51 @@ +## L'Autenticazione e l'Integrità nella Crittografia Simmetrica + +Nella crittografia simmetrica, algoritmi come AES (in modalità ECB o CBC) garantiscono esclusivamente la **riservatezza**: un attaccante non può leggere il messaggio, ma potrebbe comunque alterare i bit del testo cifrato causando la decifratura di dati corrotti o malevoli. + +Per proteggersi da questo tipo di attacchi, la crittografia simmetrica introduce meccanismi per garantire l'**integrità** e l'**autenticazione della sorgente**. + +--- + +### 1. MAC (Message Authentication Code) + +Un **MAC** (noto anche come *tag di autenticazione*) è una firma simmetrica. Viene generato prendendo in input il messaggio e la chiave segreta simmetrica condivisa tra le parti. + +#### Il Meccanismo +Il mittente calcola il tag e lo appende al messaggio: +$$\text{Tag} = \text{MAC}(K, M)$$ + +Il destinatario riceve la coppia $(M, \text{Tag})$, ricalcola il MAC sul messaggio $M$ usando la stessa chiave $K$ e verifica che coincida con il tag ricevuto. +* Se un attaccante modifica anche un solo bit di $M$ o del $\text{Tag}$, il controllo fallisce. + +--- + +### 2. HMAC (Hash-based MAC) + +L'**HMAC** (RFC 2104) è un'implementazione specifica del MAC che utilizza come motore interno una funzione di hash crittografica (come SHA-256). + +Non è sicuro calcolare un MAC semplicemente concatenando la chiave e il messaggio all'interno di un hash (es. $H(K \parallel M)$), perché molte funzioni di hash sono vulnerabili ai cosiddetti *Length Extension Attacks* (attacchi di estensione della lunghezza). HMAC risolve questo problema applicando la funzione di hash **due volte** e introducendo due costanti di riempimento (*padding*). + + +### 3. AEAD (Authenticated Encryption with Associated Data) + +Storicamente, per ottenere sia riservatezza che autenticazione, gli sviluppatori combinavano un cifrario (es. AES-CBC) e un MAC (es. HMAC) in passaggi separati. Questo approccio empirico ha causato gravissimi bug di sicurezza (come i famosi attacchi *Padding Oracle*). + +La moderna crittografia simmetrica ha risolto il problema introducendo i cifrari **AEAD** (standardizzati nell'RFC 5116). Un algoritmo AEAD esegue **cifratura e autenticazione simultaneamente** in un unico passaggio atomico e sicuro. Inoltre, permette di autenticare dei dati associati in chiaro ($A$), come gli header di un pacchetto di rete, che non devono essere cifrati ma non devono subire alterazioni. + +#### La Formula Matematica + +$$(C, T) = \text{AEAD-Encrypt}(K, N, P, A)$$ + +Dove: +* $K$: La chiave simmetrica. +* $N$: Il *Nonce* (Number Used Once), un valore numerico che deve essere tassativamente unico per ogni operazione di cifratura con la stessa chiave. +* $P$: Il testo in chiaro (*Plaintext*). +* $A$: I dati associati in chiaro (*Associated Data*). +* $C$: Il testo cifrato risultante (*Ciphertext*). +* $T$: Il tag di autenticazione integrato (*Tag*). + +In fase di decifratura, l'algoritmo elabora l'input ed estrae il testo in chiaro originale **solo se** il tag $T$ risulta valido. Se il tag è alterato, l'intero blocco viene scartato prima ancora di mostrare i dati corrotti. + +#### Gli Standard più Utilizzati oggi +* **AES-GCM** (Galois/Counter Mode): Lo standard industriale utilizzato ovunque (HTTPS, TLS 1.3, IPsec). Sfrutta la parallelizzazione ed è velocissimo sui processori moderni grazie all'accelerazione hardware. +* **ChaCha20-Poly1305**: Un'alternativa software estremamente performante e sicura, utilizzata nativamente in protocolli come WireGuard e come suite di riserva in TLS. diff --git a/backend/src/main/resources/get/documentazione/malware.md b/backend/src/main/resources/get/documentazione/malware.md new file mode 100644 index 0000000..d457525 --- /dev/null +++ b/backend/src/main/resources/get/documentazione/malware.md @@ -0,0 +1,55 @@ +# I Malware (Malicious Software) + +Un **malware** è un costrutto software ingegnerizzato con finalità ostili, progettato per infiltrarsi, alterare, esfiltrare dati o compromettere la disponibilità, l'integrità e la riservatezza di un sistema informatico senza il consenso legittimo dell'amministratore. + +## Struttura di un malware +In generale, un malware è composto da due parti funzionali (assimilabili a un missile): +1. **Vettore (Carrier):** Il mezzo attraverso cui il malware si diffonde (un file allegato, un link, una chiavetta USB) e che serve a superare le difese del sistema sfruttando una vulnerabilità. +2. **Carico utile (Payload):** Le istruzioni specifiche (la "testata esplosiva") che il malware esegue una volta dentro il sistema bersaglio (es. cifrare i file, rubare password, attivare la fotocamera). + +### 1.2 Tassonomia Specifica delle Tipologie di Malware + +L'ecosistema delle minacce si articola in categorie distinte in base al meccanismo di replicazione, occultamento ed esecuzione: + +#### A. Virus +Un virus è un frammento di codice parassita non autonomo. Richiega l'inserimento all'interno di un file eseguibile ospite (*host*) legittimo. +* **Meccanismo:** Quando l'utente esegue il file infetto, il controllo della CPU passa temporaneamente alla routine del virus, che infetta altri eseguibili sovrascrivendone le sezioni (es. `.text`) o inserendosi in coda (*Appending*), per poi restituire il controllo al programma originale. +* **Esempio storico:** *ILOVEYOU* (sfruttava script VBScript allegati). + +#### B. Worm +A differenza dei virus, i worm sono programmi completamente autonomi che non necessitano di un file ospite né dell'interazione umana per replicarsi. +* **Meccanismo:** Scansionano attivamente la rete alla ricerca di porte aperte e servizi vulnerabili. Una volta individuata una falla (es. un buffer overflow in un servizio di rete), inviano un exploit, eseguono una shellcode e scaricano una copia di se stessi sul target, propagandosi in modo esponenziale. +* **Esempio storico:** *WannaCry* (sfruttava l'exploit EternalBlue sul protocollo SMBv1). + +#### C. Trojan Horse (Cavallo di Troia) +Software provvisto di funzionalità apparentemente lecite, utili o attraenti, che nasconde codice malevolo non visibile all'utente. +* **Meccanismo:** Sfrutta tecniche di ingegneria sociale per indurre l'utente all'installazione (es. finti crack software o utility di sistema). Non si autoconcatena ad altri file e non si replica in rete da solo, ma funge da "apripista" per l'installazione di moduli ben più pericolosi, come i RAT (*Remote Access Trojan*). + +#### D. Ransomware +Malware focalizzato sulla distruzione della disponibilità dei dati a scopo di estorsione finanziaria. +* **Meccanismo:** I moderni ransomware utilizzano una **cifratura ibrida**. Generano localmente una chiave simmetrica ultra-veloce (es. ChaCha20 o AES-256) per cifrare i file della vittima sul disco. Successivamente, cifrano la chiave simmetrica stessa con una chiave pubblica asimmetrica (es. RSA-4096 o ECC) il cui rispettivo segreto privato si trova esclusivamente sul server C2 dell'attaccante. Senza quella chiave privata, la decifratura è matematicamente impossibile. Inoltre, applicano la *Double Extortion*: esfiltrano i dati prima di cifrarli, minacciando di pubblicarli. +* **Esempi attuali:** *LockBit*, *Ryuk*, *BlackCat*. + +#### E. Spyware & Adware +* **Spyware:** Progettato per violare la riservatezza monitorando silenziosamente i canali di input, la navigazione web, le credenziali memorizzate nei browser e i file locali, per poi inviarli all'attaccante. Opera in background cercando di mantenere il consumo di CPU minimo per non destare sospetti. +* **Adware:** Meno distruttivo ma altamente invasivo, dirotta i vettori di rendering del browser o del sistema operativo per iniettare banner pubblicitari non richiesti, modificando spesso i motori di ricerca predefiniti e tracciando le abitudini di navigazione commerciale dell'utente. + +#### F. Rootkit +Insieme di strumenti software progettati per nascondere la presenza di processi, file o chiavi di registro malevole modificando i flussi di esecuzione del sistema operativo. +* **Rootkit a livello User (Kernel-land vs User-land):** Intercettano e alterano le API di sistema (es. eseguendo l'hooking delle funzioni `NtQuerySystemInformation` in Windows) in modo che i Task Manager non mostrino il processo malware. +* **Rootkit a livello Kernel:** Operano nel Ring 0 del processore. Modificano direttamente le strutture dati del kernel (es. la *System Service Descriptor Table* - SSDT) o caricano driver malevoli capaci di disattivare i software antivirus alla radice. + +#### G. Backdoor & Botnet +* **Backdoor:** Un punto di acesso logico che bypassa i normali controlli di autenticazione del sistema (come i login SSH o RDP). Può essere intenzionalmente inserita da sviluppatori corrotti o creata da un malware per consentire il rientro futuro dell'attaccante. +* **Botnet:** Una rete geodistribuita di migliaia o milioni di dispositivi compromessi (definiti *Zombie* o *Bot*). Rispondono in modo sincrono ai comandi impartiti da un singolo attaccante tramite un server C2. Vengono utilizzate per sferrare attacchi DDoS (*Distributed Denial of Service*) massivi, campagne di spam o brute-forcing su larga scala. +* **Esempio:** La botnet *Mirai*, che infettava dispositivi IoT sfruttando credenziali di fabbrica predefinite. + +--- + +### 1.3 Vettori di Infezione Tecnici +* **Phishing e Malicious Attachments:** Sfruttamento di macro VBA in documenti Office, file d'archivio protetti da password (per eludere i gateway email) o file ISO/VHD contenenti scorciatoie malevole LNK. +* **Drive-by Downloads:** Infezione trasparente che avviene semplicemente visitando un sito web compromesso o malevolo, all'interno del quale è inserito un *Exploit Kit* che sfrutta vulnerabilità note del browser o delle sue estensioni. +* **Supply Chain Attacks:** Compromissione dei server di aggiornamento di un software legittimo. Gli utenti scaricano un aggiornamento ufficiale che però contiene al suo interno il payload malevolo (es. il caso *SolarWinds* o la vulnerabilità *XZ Utils*). +* **Vulnerabilità Unpatched (1-Day / 0-Day):** Sfruttamento di falle nel codice di servizi esposti su Internet (es. server VPN, firewall, web server) prima che l'amministratore applichi le patch di sicurezza. + +--- \ No newline at end of file diff --git a/backend/src/main/resources/get/documentazione/pgp.md b/backend/src/main/resources/get/documentazione/pgp.md new file mode 100644 index 0000000..067933f --- /dev/null +++ b/backend/src/main/resources/get/documentazione/pgp.md @@ -0,0 +1,52 @@ +# PGP (Pretty Good Privacy) e la Crittografia Ibrida + +**PGP** (Pretty Good Privacy), originariamente creato da Phil Zimmermann nel 1991 e oggi standardizzato dall'IETF come **OpenPGP** (RFC 4880 e successivi), è un sistema crittografico utilizzato principalmente per l'autenticazione, la firma e la cifratura di email, file e directory. + +La vera forza di PGP sta nel fatto che non è un singolo algoritmo, ma un **sistema ibrido** che combina i vantaggi di velocità della crittografia simmetrica con la flessibilità della crittografia asimmetrica, risolvendo al contempo il problema della distribuzione delle chiavi. + +--- + +## Il Funzionamento del Sistema Ibrido + +La crittografia asimmetrica (come RSA) è matematicamente complessa e troppo lenta per cifrare file di grandi dimensioni. La crittografia simmetrica (come AES) è velocissima, ma richiede che le parti condividano una chiave segreta in modo sicuro prima di comunicare. + +PGP unisce i due mondi: +1. Usa un algoritmo **simmetrico** veloce per cifrare il documento vero e proprio usando una chiave temporanea monouso (chiamata *Chiave di Sessione*). +2. Usa un algoritmo **asimmetrico** per cifrare esclusivamente la chiave di sessione, che essendo molto piccola (es. 256 bit) viene elaborata istantaneamente. + +--- + +## 2. Il Flusso Operativo: Invio e Ricezione + +Immaginiamo che il mittente (Alice) voglia firmare e cifrare un messaggio $M$ per il destinatario (Bob). + +### Operazioni del Mittente (Alice) + +1. **Generazione della Firma**: Alice calcola l'hash del messaggio e lo cifra con la propria chiave privata ($K_{privA}$), generando la firma digitale $S$: + $$S = E_{K_{privA}}(h(M))$$ +2. **Compressione**: Il messaggio originale e la firma vengono concatenati e compressi (es. tramite ZIP o ZIP2) per ridurre la dimensione e distruggere eventuali pattern ripetitivi del testo, ostacolando la crittoanalisi. +3. **Generazione della Chiave di Sessione**: PGP genera una chiave simmetrica casuale e temporanea $K_{sess}$ (ad esempio per AES-256). +4. **Cifratura del Messaggio**: Il blocco compresso viene cifrato simmetricamente con la chiave di sessione: + $$C_{data} = E_{K_{sess}}(M \parallel S)$$ +5. **Cifratura della Chiave**: La chiave di sessione $K_{sess}$ viene cifrata asimmetricamente utilizzando la chiave pubblica di Bob ($K_{pubB}$): + $$C_{key} = E_{K_{pubB}}(K_{sess})$$ + +Il pacchetto finale inviato a Bob è la concatenazione dei due blocchi cifrati: $C_{final} = C_{key} \parallel C_{data}$. + +### Operazioni del Destinatario (Bob) + +1. **Decifratura della Chiave**: Bob riceve il pacchetto e usa la propria chiave privata ($K_{privB}$) per estrarre la chiave di sessione: + $$K_{sess} = D_{K_{privB}}(C_{key})$$ +2. **Decifratura dei Dati**: Usando la $K_{sess}$ appena ottenuta, Bob decifra il blocco dati, ricavando il messaggio originale e la firma: + $$M \parallel S = D_{K_{sess}}(C_{data})$$ +3. **Verifica della Firma**: Bob decomprime il blocco, separa il messaggio $M$ dalla firma $S$, e usa la chiave pubblica di Alice ($K_{pubA}$) per verificare l'autenticità e l'integrità del messaggio. + +--- + +## Gestione delle Chiavi: Il Web of Trust (WoT) + +Una delle differenze più radicali tra PGP e altri sistemi (come TLS o IPsec) risiede nella gestione dei certificati delle chiavi pubbliche. PGP non si affida a un'Infrastruttura a Chiave Pubblica (PKI) gerarchica governata da Autorità di Certificazione (CA) centrali. Utilizza invece il **Web of Trust** (Rete di Fiducia). + +* **Firma della Chiave**: Ogni utente può agire come una "mini-CA". Se Alice conosce Bob di persona e sa che la sua chiave pubblica è autentica, può apporre la propria firma digitale sul certificato di Bob. +* **Fiducia Decentralizzata**: Quando Carlo riceve la chiave di Bob e vede che è firmata da Alice (di cui Carlo si fida ciecamente), accetta la chiave di Bob come valida per associazione. +* **Livelli di Fiducia**: Gli utenti possono assegnare gradi di fiducia alle firme altrui (*Fiducia Marginale*, *Fiducia Totale*), creando un grafo di relazioni decentralizzato e distribuito che mappa la sicurezza dell'intero ecosistema senza bisogno di server centrali. \ No newline at end of file diff --git a/backend/src/main/resources/get/documentazione/sicurezza_reti.md b/backend/src/main/resources/get/documentazione/sicurezza_reti.md index f86d7cf..806775b 100644 --- a/backend/src/main/resources/get/documentazione/sicurezza_reti.md +++ b/backend/src/main/resources/get/documentazione/sicurezza_reti.md @@ -1,6 +1,7 @@ # La Sicurezza nelle Reti: Protocolli e Strumenti di Difesa ---- +Per garantire la sicurezza nelle reti nel corso degli anni sono stati sviluppati una serie di strumenti sia a livello applicativo, nel contesto dei protocolli, sia a livello fisico nel contesto delle apparecchiature. +--- ## Sicurezza dei Protocolli di Rete @@ -8,36 +9,13 @@ Per garantire la sicurezza delle comunicazioni su Internet, sono stati sviluppat ### Sicurezza a Livello di Rete: IPsec **IPsec (Internet Protocol Security)** è una suite di protocolli che protegge il traffico IP a livello di rete, garantendo autenticazione, integrità e riservatezza. È ampiamente utilizzato per creare connessioni VPN. -* **Modalità operative:** - * **Transport Mode (Modalità Trasporto):** Viene cifrato *solo* il carico utile (payload) del pacchetto IP. L'intestazione (header) originale rimane in chiaro. È usato per comunicazioni end-to-end (es. da un PC a un Server). - * **Tunnel Mode (Modalità Tunnel):** Viene cifrato *l'intero* pacchetto IP originale (sia header che payload) e viene incapsulato in un nuovo pacchetto con un nuovo header esterno. È ideale per le VPN Site-to-Site (es. tra i router di due sedi aziendali). -* **Protocolli principali:** - * **AH (Authentication Header):** Garantisce l'integrità dei dati e l'autenticazione del mittente, ma *non* cifra il contenuto (nessuna riservatezza). - * **ESP (Encapsulating Security Payload):** Offre cifratura (riservatezza), oltre all'integrità e all'autenticazione. È il protocollo più completo e utilizzato. - -### Sicurezza a Livello di Trasporto: SSL/TLS -**SSL (Secure Sockets Layer)** e il suo standard evolutivo **TLS (Transport Layer Security)** forniscono comunicazioni sicure posizionandosi tra il livello di trasporto (TCP) e quello applicativo. -Il funzionamento si divide in due fasi: -1. **Handshake Protocol:** Fase iniziale in cui client e server si autenticano (di solito il server tramite un Certificato Digitale), negoziano gli algoritmi crittografici supportati e generano le chiavi di sessione. -2. **Record Protocol:** Fase in cui i dati dell'applicazione vengono frammentati, compressi, cifrati (con crittografia simmetrica, più veloce) e trasmessi in modo sicuro. - -> **Nota:** L'applicazione più nota di TLS è l'**HTTPS**, che protegge la navigazione web cifrando il normale traffico HTTP. --- -## La Sicurezza delle Reti Wireless (WLAN) +### Sicurezza a Livello di Trasporto: SSL/TLS +**SSL (Secure Sockets Layer)** e il suo standard evolutivo **TLS (Transport Layer Security)** forniscono comunicazioni sicure posizionandosi tra il livello di trasporto (TCP) e quello applicativo. -Le reti Wi-Fi (standard IEEE 802.11) sono intrinsecamente più vulnerabili delle reti cablate poiché il mezzo trasmissivo (l'etere) è accessibile a chiunque si trovi nel raggio di copertura radio. L'uso di protocolli di cifratura è quindi obbligatorio. - -### Evoluzione degli standard Wi-Fi: -* **WEP (Wired Equivalent Privacy):** Il primo standard introdotto. Utilizza l'algoritmo di cifratura simmetrica RC4. - * *Vulnerabilità:* Oggi è completamente obsoleto e insicuro. L'uso di una chiave statica (sempre uguale) e di un Vettore di Inizializzazione (IV) troppo breve permette a un attaccante di "craccare" la rete in pochi minuti analizzando il traffico. -* **WPA (Wi-Fi Protected Access):** Creato come soluzione rapida per sostituire il WEP senza dover cambiare l'hardware dei router esistenti. - * *Innovazione:* Introduce il protocollo **TKIP (Temporal Key Integrity Protocol)**, che cambia dinamicamente la chiave di cifratura per ogni pacchetto, risolvendo il problema principale del WEP. -* **WPA2 (Standard 802.11i):** Lo standard globale per molti anni. - * *Innovazione:* Abbandona RC4 e TKIP in favore del robusto algoritmo **AES** combinato con il protocollo **CCMP**. Risulta molto sicuro, sebbene rimanga vulnerabile ad attacchi di forza bruta offline (es. *dictionary attack*) se la password della rete è debole. -* **WPA3:** L'ultimo e più moderno standard. - * *Innovazioni:* Sostituisce la vecchia negoziazione delle chiavi con il protocollo **SAE (Simultaneous Authentication of Equals)**, rendendo l'handshake immune agli attacchi a dizionario offline. Introduce inoltre **OWE (Opportunistic Wireless Encryption)** per cifrare automaticamente il traffico anche sulle reti pubbliche aperte (quelle senza password di accesso). +> **Nota:** L'applicazione più nota di TLS è l'**HTTPS**, che protegge la navigazione web cifrando il normale traffico HTTP. --- @@ -47,14 +25,13 @@ Alcuni protocolli garantiscono la sicurezza e la riservatezza direttamente per s * **PGP (Pretty Good Privacy) e S/MIME:** Standard crittografici utilizzati per firmare digitalmente e cifrare i messaggi di posta elettronica (e-mail). Garantiscono l'identità del mittente e impediscono l'intercettazione del testo da parte di server o soggetti terzi. * **SSH (Secure Shell):** Protocollo di rete crittografico utilizzato per accedere a distanza e amministrare sistemi informatici (es. riga di comando di un server Linux) in totale sicurezza. Ha sostituito i vecchi protocolli non cifrati come Telnet. +--- + ## Strumenti di Difesa delle Reti Per rendere possibile la difesa delle reti dalle minacce, sono stati sviluppati una serie di strumenti: -* **Firewall:** Dispositivo hardware o software che filtra il traffico di rete in entrata e in uscita, agendo come un "muro tagliafuoco" tra una rete interna sicura e una rete esterna (Internet) in base a regole predefinite. Tipi principali: *Packet filtering*, *Stateful inspection*, *Application gateway (Proxy)*. +* **Firewall:** Dispositivo hardware o software che filtra il traffico di rete in entrata e in uscita, agendo come un "muro tagliafuoco" tra una rete interna sicura e una rete esterna (Internet) in base a regole predefinite. * **DMZ (Demilitarized Zone):** Sottorete isolata posta tra Internet e la rete locale (LAN). Contiene i server pubblici dell'azienda (es. server web) in modo che, se compromessi, gli attaccanti non abbiano accesso diretto alla rete aziendale interna. -* **IDS e IPS:** - * **IDS (Intrusion Detection System):** Monitora il traffico di rete e "lancia l'allarme" se rileva anomalie o firme di attacchi noti. - * **IPS (Intrusion Prevention System):** Simile all'IDS, ma blocca attivamente il traffico malevolo. * **VPN (Virtual Private Network):** Crea un "tunnel" cifrato e sicuro attraverso una rete pubblica (come Internet), permettendo di comunicare o accedere alla rete aziendale in totale sicurezza. * **Honeypot:** Sistema informatico configurato intenzionalmente con vulnerabilità per attirare gli hacker, allo scopo di studiarne i comportamenti e le tecniche. \ No newline at end of file diff --git a/backend/src/main/resources/get/documentazione/vuln.md b/backend/src/main/resources/get/documentazione/vuln.md index c94e94d..578294d 100644 --- a/backend/src/main/resources/get/documentazione/vuln.md +++ b/backend/src/main/resources/get/documentazione/vuln.md @@ -18,6 +18,7 @@ Le vulnerabilità vengono catalogate a livello internazionale attraverso il sist Una **minaccia** è qualsiasi evento o agente – interno o esterno – potenzialmente in grado di sfruttare una vulnerabilità e causare un danno. Le minacce possono essere **intenzionali** (attacchi mirati, malware, insider threat) o **accidentali** (errori umani, guasti hardware, calamità naturali). Le minacce vengono classificate principalmente in: + * **Malware** * **Keylogger** * **TCP/IP** diff --git a/backend/src/main/resources/get/materiale.html b/backend/src/main/resources/get/materiale.html index e85c03b..fd4420a 100644 --- a/backend/src/main/resources/get/materiale.html +++ b/backend/src/main/resources/get/materiale.html @@ -45,10 +45,19 @@