From 716a081f7a212358646d6a699f4e1d79d2bd5f4e Mon Sep 17 00:00:00 2001 From: elisabetta Date: Tue, 26 May 2026 11:28:26 +0200 Subject: [PATCH] Modifiche articoli e css --- .../main/resources/get/documentazione/AES.md | 17 +++ .../main/resources/get/documentazione/DF.md | 77 +++++++++++++ .../IntroduzioneCybersecurity.md | 13 --- .../main/resources/get/documentazione/RSA.md | 101 ++++++++++++++++++ .../resources/get/documentazione/SHA512.md | 1 + .../resources/get/documentazione/attacchi.md | 1 + .../crittografia_asimmetrica.md | 61 +++++++---- .../documentazione/crittografia_simmetrica.md | 86 ++++++++++++--- .../get/documentazione/fingerprint.md | 21 ++++ .../get/documentazione/intro_crittografia.md | 22 +++- .../get/documentazione/standard_sicurezza.md | 2 - backend/src/main/resources/get/style.css | 9 ++ 12 files changed, 358 insertions(+), 53 deletions(-) create mode 100644 backend/src/main/resources/get/documentazione/AES.md create mode 100644 backend/src/main/resources/get/documentazione/DF.md delete mode 100644 backend/src/main/resources/get/documentazione/IntroduzioneCybersecurity.md create mode 100644 backend/src/main/resources/get/documentazione/RSA.md create mode 100644 backend/src/main/resources/get/documentazione/SHA512.md create mode 100644 backend/src/main/resources/get/documentazione/fingerprint.md diff --git a/backend/src/main/resources/get/documentazione/AES.md b/backend/src/main/resources/get/documentazione/AES.md new file mode 100644 index 0000000..34f79a8 --- /dev/null +++ b/backend/src/main/resources/get/documentazione/AES.md @@ -0,0 +1,17 @@ +# L'Algoritmo AES - Advanced Encryption Standard + +Attualmente l'AES rappresenta lo standard globale per la crittografia simmetrica. + +* **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. + +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: + +1. **SubBytes:** Sostituisce i byte seguendo una tabella fissa (*S-Box*). +2. **ShiftRows:** Sposta le righe dei dati facendole scivolare di lato. +3. **MixColumns:** Mescola le colonne tra loro tramite formule algebriche. +4. **AddRoundKey:** Fonde i dati temporanei con una porzione della chiave segreta tramite un'operazione logica XOR. + +> **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 diff --git a/backend/src/main/resources/get/documentazione/DF.md b/backend/src/main/resources/get/documentazione/DF.md new file mode 100644 index 0000000..488c756 --- /dev/null +++ b/backend/src/main/resources/get/documentazione/DF.md @@ -0,0 +1,77 @@ +# L'Algoritmo Diffie And Hellman + +La crittografia simmetrica come sappiamo aveva un enorme problema: lo scambio sicuro della chiave simmetrica + +Questo problema, apparentemente impossibile, è stato risolto nel 1976 da Whitfield Diffie e Martin Hellman grazie al loro rivoluzionario **Protocollo di scambio delle chiavi Diffie-Hellman**. + +--- + +## La Base del Funzionamento: il Logaritmo Discreto + +Nel caso di Diffie-Hellman come funzione si usa l'**elevamento a potenza in aritmetica modulare**. + +L'operazione matematica unidirezionale alla base di Diffie-Hellman è la seguente: dati un numero base $g$, un esponente $x$ e un modulo primo $p$, è molto facile calcolare: + +$$Y = g^x \pmod p$$ + +Tuttavia, se conosciamo solo $Y$, $g$ e $p$, trovare l'esponente $x$ è un problema computazionalmente complesso quando i numeri sono molto elevati. Questo problema prende il nome di **Problema del Logaritmo Discreto**. + +--- + +## Il Funzionamento dell'Algoritmo +Vediamo come si svolge lo scambio numerico tra Alice e Bob. + +### 1 - Scelta di p e r +Vengono scelti due numeri noti a entrambi gli utenti: +* $p$: Un numero primo elevato e crittograficamente sicuro. +* $g$: Un intero chiamato *generatore* (o base), che è una radice primitiva di $p$. + +### 2 - Calcolo della chiavi dell'utente 1 (Alice) +* L'utente **Alice** sceglie un numero intero segreto $a$ (la sua chiave privata) e poi calcola la sua chiave pubblica $kpbA$ e la invia a Bob: + $$kpb = g^a \pmod p$$ + +* L'utente **Bob** riceve i dati e sceglie un numero intero segreto $b$ (la sua chiave privata). Poi calcola la sua chiave pubblica $kpbB$ e la invia ad Alice: + $$kpb = g^b \pmod p$$ + +### Calcolo della chiave condivisa +Ciascuno dei due unisce la chiave pubblica ricevuta con la propria chiave privata. + +* Alice riceve $kpbB$ e calcola la chiave segreta $K$: + $$K = B^a \pmod p$$ + +* Bob riceve $kpbA$ e calcola la chiave segreta $K$: + $$K = A^b \pmod p$$ + +### Dimostrazione dell'uguaglianza delle chiavi + +Sostituiamo le definizioni di $A$ e $B$ nelle formule del segreto condiviso: +* Per Alice: $K = B^a \pmod p = (g^b)^a \pmod p = g^{ba} \pmod p$ +* Per Bob: $K = A^b \pmod p = (g^a)^b \pmod p = g^{ab} \pmod p$ + +Poiché nell'esponente la proprietà commutativa della moltiplicazione è valida ($ab = ba$), ne consegue che: +$$g^{ab} \pmod p = g^{ba} \pmod p$$ + +Alice e Bob hanno calcolato lo stesso identico numero $K$. Questo numero verrà ora utilizzato come chiave simmetrica per cifrare il resto della loro sessione di comunicazione. + +--- + +## Esempio Didattico con Valori Ristretti + +Proviamo il protocollo con cifre contenute: + +1. **Parametri Pubblici:** Scegliamo il numero primo $p = 23$ e il generatore $g = 5$. +2. **Alice:** + * Sceglie il segreto privato $a = 6$. + * Calcola la chiave pubblica: $A = 5^6 \pmod{23} = 15625 \pmod{23} = 8$. + * Invia $A = 8$ a Bob. +3. **Bob:** + * Sceglie il segreto privato $b = 15$. + * Calcola la chiave pubblica: $B = 5^{15} \pmod{23} = 19$. + * Invia $B = 19$ ad Alice. +4. **Calcolo della chiave comune $K$:** + * **Alice** calcola: $K = B^a \pmod{23} = 19^6 \pmod{23} = 2$. + * **Bob** calcola: $K = A^b \pmod{23} = 8^{15} \pmod{23} = 2$. + +Entrambi hanno ottenuto autonomamente il numero **2**. Un malintenzionato che ha ascoltato la conversazione conosce solo $p=23, g=5, A=8, B=19$, ma senza risolvere il logaritmo discreto non può risalire al valore 2. + +--- \ No newline at end of file diff --git a/backend/src/main/resources/get/documentazione/IntroduzioneCybersecurity.md b/backend/src/main/resources/get/documentazione/IntroduzioneCybersecurity.md deleted file mode 100644 index 028511b..0000000 --- a/backend/src/main/resources/get/documentazione/IntroduzioneCybersecurity.md +++ /dev/null @@ -1,13 +0,0 @@ - -## 4. Politiche e Strategie di Sicurezza - -* **Difesa in profondità (Defense in Depth):** Approccio basato su livelli multipli di sicurezza (come gli strati di una cipolla). Se un attaccante supera una barriera, ne troverà subito un'altra. -* **Zero Trust (Fiducia Zero):** Modello di sicurezza basato sul principio "mai fidarsi, verificare sempre". Non viene concessa fiducia predefinita a nessun utente o dispositivo, anche se si trova all'interno della rete aziendale. ---- -### Metriche per il ripristino -* **RPO (Recovery Point Objective):** La quantità massima di dati (in termini di tempo) che l'azienda può permettersi di perdere in caso di disastro (indica la frequenza con cui fare i backup). -* **RTO (Recovery Time Objective):** Il tempo massimo tollerato per ripristinare i sistemi ed essere nuovamente operativi. - -### Pianificazione delle emergenze -* **DRP (Disaster Recovery Plan):** Documento tecnico che definisce le procedure passo-passo per ripristinare l'infrastruttura IT e i dati dopo un evento catastrofico. -* **BCP (Business Continuity Plan):** Piano strategico più ampio che definisce come l'intera organizzazione continuerà a erogare i propri servizi e mantenere la propria operatività durante e dopo una crisi. diff --git a/backend/src/main/resources/get/documentazione/RSA.md b/backend/src/main/resources/get/documentazione/RSA.md new file mode 100644 index 0000000..7495885 --- /dev/null +++ b/backend/src/main/resources/get/documentazione/RSA.md @@ -0,0 +1,101 @@ +# L'Algoritmo RSA + +L'algoritmo RSA è Il primo algoritmo che soddisfa i requisiti della chiave pubblica è stato messo a punto solo nel 1977 da Ron Rivest, Adli Shamir e Leonard Adlemann, ed è noto, dalle iniziali degli autori, come algoritmo RSA. +Ancora oggi è uno dei più utilizzati in tutto il mondo + +## La Base dell'Algoritmo: La Fattorizzazione di Interi + +La sicurezza di RSA poggia su un concetto matematico noto come **funzione unidirezionale a botola (trapdoor function)**. +Si tratta di un'operazione estremamente facile da eseguire in un senso, ma quasi impossibile da invertire, a meno che non si possieda un'informazione aggiuntiva (la "botola"). + +* La funzione di complessità “polinomiale” è la **moltiplicazione di due numeri primi p e q molto grandi**; +Poichè noti p e q, il prodotto n = pq si calcola immediatamente. + + +* La funzione inversa, di complessità "esponenziale", è la **fattorizzazione**; +Se un numero n è il prodotto di due numeri primi “grandi”, la sua fattorizzazione richiede di norma tempi superiori all’età dell’universo. Infatti non si conoscono a tutt’oggi (e c’è ragione di ritenere che non si conosceranno mai), algoritmi efficienti di fattorizzazione. + +### Esempio pratico +Dati due numeri primi: +$$p = 61 \quad \text{e} \quad q = 53$$ +Calcolare il loro prodotto $n$ è un gioco da ragazzi: +$$n = p \times q = 61 \times 53 = 3233$$ + +Ma se ti dessi direttamente $n = 3233$ e ti chiedessi di trovare i due fattori primi originali $p$ e $q$, ci vorrebbe molto più tempo. +Nella realtà, RSA utilizza numeri primi lunghi migliaia di cifre: un supercomputer impiegherebbe miliardi di anni per trovare i fattori primi partendo da $n$. + +--- + +## Generazione delle Chiavi + +Vediamo come un utente (per convenzione Alice) genera la sua coppia di chiavi. + +### 1 - Scelta dei numeri primi p e q +Vengono scelti due numeri primi casuali, crittograficamente sicuri e particolarmente grandi, $p$ e $q$. + +### 2 - Calcolo del modulo n +Viene calcolato il loro prodotto: +$$n = p \times q$$ +Il numero $n$ sarà la lunghezza del nostro "orologio" nell'aritmetica modulare e farà parte della chiave pubblica. + +### 3 - Calcolo della funzione Toziente di Eulero phi +Si calcola la funzione $\phi(n)$ (phi di Eulero), che indica quanti numeri interi minori di $n$ sono coprimi con $n$: +$$\phi(n) = (p - 1) \times (q - 1)$$ + +### 4 - Scelta dell'esponente pubblico e +Viene scelto un intero $e$ (esponente di cifratura) tale che: +* $1 < e < \phi(n)$ +* $e$ e $\phi(n)$ siano coprimi (cioè il loro Massimo Comune Divisore sia 1). + +*Nota: Nella pratica comune si usa spesso il numero $e = 65537$ perché rende i calcoli veloci.* + +### 5 - Calcolo dell'esponente privato d +Alice calcola l'esponente di decifratura $d$ (la chiave privata). Questo numero è l'inverso moltiplicativo di $e$ modulo $\phi(n)$. Significa che deve soddisfare la seguente formula: +$$d \times e \equiv 1 \pmod{\phi(n)}$$ + +### 6 - Il Mazzo di Chiavi +A questo punto è stato generato un mazzo di chiavi composto da due coppie di numeri: + +* **Chiave Pubblica:** Coppia $(e, n)$ +* **Chiave Privata:** Coppia $(d, n)$ (mentre $p$, $q$ e $\phi(n)$ devono essere distrutti o nascosti!). + +--- + +## Cifratura e Decifratura + +Supponiamo che Bob voglia inviare un messaggio segreto ad Alice. + +### Cifratura (Bob) +1. Bob prende la chiave pubblica di Alice: $(e, n)$. +3. Calcola il messaggio cifrato $C$ usando la formula di cifratura: + $$C \equiv M^e \pmod n$$ +4. Bob invia il messaggio cifrato $C$ ad Alice. + +### Decifratura (Alice) +1. Alice riceve $C$. +2. Usa la sua chiave privata $(d, n)$ per ripristinare il messaggio originale $M$ tramite la formula di decifratura: + $$M \equiv C^d \pmod n$$ + +Grazie ai teoremi di Eulero e Fermat, l'aritmetica modulare garantisce che l'operazione $(M^e)^d \pmod n$ restituisca esattamente $M$. Un eventuale spia che intercettasse $C$, $e$ ed $n$ non potrebbe calcolare $M$ perché non conosce $d$, e calcolare $d$ richiederebbe la fattorizzazione di $n$ in $p$ e $q$. + +--- + +## Esempio Pratico con Valori Ridotti + +1. **Scelta:** Scegliamo $p = 3$ e $q = 11$. +2. **Modulo:** $n = 3 \times 11 = 33$. +3. **Toziente:** $\phi(n) = (3 - 1) \times (11 - 1) = 2 \times 10 = 20$. +4. **Esponente Pubblico:** Scegliamo $e = 3$ (notiamo che $3$ e $20$ non hanno fattori in comune, quindi sono coprimi). + * *Chiave Pubblica: $(e=3, n=33)$* +5. **Esponente Privato:** Cerchiamo un numero $d$ tale che $d \times 3 \equiv 1 \pmod{20}$. Il numero è $d = 7$, infatti $7 \times 3 = 21$, e $21 \div 20$ dà resto $1$. + * *Chiave Privata: $(d=7, n=33)$* + +### Il messaggio da cifrare è $M = 9$: +$$C \equiv 9^3 \pmod{33} = 729 \pmod{33}$$ +Se dividiamo $729$ per $33$, otteniamo $22$ con il resto di **3**. Quindi $C = 3$. + +### Il messaggio da decifrare è $C = 3$: +$$M \equiv 3^7 \pmod{33} = 2187 \pmod{33}$$ +Se dividiamo $2187$ per $33$, otteniamo $66$ con il resto di **9**. Abbiamo recuperato il messaggio originale $M = 9$! + +--- \ 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 new file mode 100644 index 0000000..9c44745 --- /dev/null +++ b/backend/src/main/resources/get/documentazione/SHA512.md @@ -0,0 +1 @@ +# La Funzione SHA-512 \ No newline at end of file diff --git a/backend/src/main/resources/get/documentazione/attacchi.md b/backend/src/main/resources/get/documentazione/attacchi.md index 5be8e3c..f384787 100644 --- a/backend/src/main/resources/get/documentazione/attacchi.md +++ b/backend/src/main/resources/get/documentazione/attacchi.md @@ -184,6 +184,7 @@ Utilizzo di strumenti, app o servizi cloud **non approvati dall'IT aziendale**, 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 diff --git a/backend/src/main/resources/get/documentazione/crittografia_asimmetrica.md b/backend/src/main/resources/get/documentazione/crittografia_asimmetrica.md index 0c5a181..7f7329d 100644 --- a/backend/src/main/resources/get/documentazione/crittografia_asimmetrica.md +++ b/backend/src/main/resources/get/documentazione/crittografia_asimmetrica.md @@ -1,29 +1,48 @@ # La Crittografia Asimmetrica -La crittografia **asimmetrica** nasce con il problema dello scambio delle chiavi +La crittografia **asimmetrica** nasce per risolvere il problema dello scambio delle chiavi, una delle criticità legata alla crittografia simmetrica, tramite i principi aritmetica modulare e le proprietà dei numeri primi. -* **Crittografia Asimmetrica (a chiave pubblica):** Ogni utente possiede una *coppia di chiavi*: - 1. **Chiave Pubblica:** Conosciuta da tutti, usata per cifrare i messaggi rivolti al proprietario. - 2. **Chiave Privata:** Segreta e nota solo al proprietario, usata per decifrare. - * *Pro:* Risolve il problema dello scambio delle chiavi. - * *Contro:* Molto lenta, richiede molta potenza di calcolo. - * *Esempi:* RSA, Curve Ellittiche. +La differenza fondamentale tra quest'ultima e la crittografia simmetrica è proprio la chiave: questa volta ogni utente ne possiederà due: -### 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. +* La**chiave pubblica**: una chiave che è utilizzabile a tutti e utilizzata per comunicare con l'utente, nella cifratura dei dati -## Autenticazione e Controllo degli Accessi +* La**chiave privata**: una chiave che è accessibile solamente all'utente che la possiede e viene usata nella decifratura -* **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. +Queste due chiavi sono legate da relazioni matematiche dette **"unidirezionali con trappola"** (*trapdoor one-way functions*): +operazioni facili da eseguire in un senso, ma computazionalmente impossibili da invertire, a meno che non si conosca un'informazione specifica chiamata "trappola" (la chiave privata). -### 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). +* Ricavare la **chiave pubblica** partendo dalla privata risulti di **complessità polinomiale** -* **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 +* Ricavare la **chiave privata** partendo dalla pubblica risulti di **complessità esponenziale** + +### Cifratura +Chiunque può cifrare un messaggio per il destinatario usando la chiave pubblica di quest'ultimo: +$$C = E(K_{pub}, M)$$ + +### Decifratura +Solo il legittimo proprietario può decifrare il testo usando la propria chiave privata: +$$M = D(K_{priv}, C)$$ + +### Proprietà di Correttezza +Il sistema garantisce che solo la chiave privata corrispondente possa invertire il processo: +$$D(K_{priv}, E(K_{pub}, M)) = M$$ + +--- + +## Comunicazione Standard con Crittografia Asimmetrica + +1. Entrambi gli utenti calcolano il loro mazzo di chiavi adoperando un determinato algoritmo +2. Il mittente M cifra il messaggio che vuole inviare con la chiave pubblica del destinatario T e lo invia +3. Il destinatario D riceve il messaggio e lo decifra con la sua chiave privata, è l'unico a poterlo fare + + +> La riservatezza del messaggio è garantita ma la sua identità no, per quella serve una CA - Certification Authority, il procedimento adeguato per arrivare a garantire il triangolo della sicurezza informatica verrà descritto in un articolo a parte + +## Comunicazione Standard con Crittografia Asimmetrica + +Gli algoritmi di crittografia asimmetrica più rinomati sono: + +* **RSA - Rivest,Shamir,Adleman** +* **Diffie and Hellman** + +Essi verrano analizzati in maniera approfondita negli articoli seguenti \ No newline at end of file diff --git a/backend/src/main/resources/get/documentazione/crittografia_simmetrica.md b/backend/src/main/resources/get/documentazione/crittografia_simmetrica.md index 6374ee0..b248a74 100644 --- a/backend/src/main/resources/get/documentazione/crittografia_simmetrica.md +++ b/backend/src/main/resources/get/documentazione/crittografia_simmetrica.md @@ -1,21 +1,77 @@ # La Crittografia Simmetrica -La crittografia **simmetrica**, affonda le sue radici nell'antichità come prova che l'uomo ha sempre cercato -in qualche modo di **rendere incomprensibili** dall'esterno alcune delle sue informazioni. - -Il suo funzionamento è molto intuitivo, prevede due funzioni una di encrypt e una di decrypt (dette spesso cifrario -)che adoperano la medesima **chiave** nell'algoritmo, ciò significa quindi che l'intera sicurezza dei dati si fonda sulla -segretezza della chiave. +La crittografia **simmetrica** affonda le sue radici nell'antichità, a testimonianza del fatto che l'uomo ha sempre cercato un modo per **rendere incomprensibili** le proprie informazioni riservate agli occhi degli estranei. -Distinguiamo prima di addentrarci due tipi di cifrari: +Il suo funzionamento è molto intuitivo e prevede due funzioni (dette complessivamente **cifrario**): una di *encrypt* (cifratura) e una di *decrypt* (decifratura). Entrambe adoperano la **medesima chiave** all'interno dell'algoritmo; ciò significa che l'intera sicurezza dei dati si fonda esclusivamente sulla segretezza della chiave stessa. + +### Cifratura +Per ottenere il testo cifrato si applica la funzione $E$ al messaggio usando la chiave $K$: +$$C = E(K, M)$$ + +### Decifratura +Per riottenere il messaggio originale si applica la funzione $D$ al testo cifrato usando la medesima chiave $K$: +$$M = D(K, C)$$ + +### Proprietà di Correttezza +L'algoritmo è valido se e solo se la decifratura annulla esattamente la cifratura: +$$D(K, E(K, M)) = M$$ + +--- + +## Classificazione dei Cifrari Classici + +Prima di addentrarci nella storia, è fondamentale distinguere due macro-categorie di cifrari: + +* **Cifrari a Sostituzione:** Consistono nel sostituire ogni carattere del testo in chiaro (*plaintext*) con un altro carattere di un determinato alfabeto, basandosi su un criterio stabilito dall'algoritmo. +* **Cifrari a Trasposizione:** Consistono nel creare un **anagramma** del testo in chiaro seguendo uno schema geometrico, senza modificare i caratteri originali o la loro frequenza, ma cambiandone solo la posizione. + +--- + +## L'Evoluzione Storica + +### 1. La Scitale Spartana (V secolo a.C.) +La prima nota storica di crittografia (in questo caso per trasposizione) risale alla **Scitale Spartana**. + +Il suo funzionamento era molto semplice: prima di scrivere il messaggio, gli efori avvolgevano a spirale una striscia di pergamena lunga e stretta attorno a una bacchetta (*scitale*). Questa bacchetta era identica, per lunghezza e diametro, a quella fornita in precedenza al destinatario. + +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**. + +#### La vulnerabilità dei sistemi monoalfabetici +Dall'XI secolo, con la scoperta dell'**analisi delle frequenze** da parte del matematico arabo *Al-Kindi*, tutti i cifrari a sostituzione monoalfabetica sono diventati facili da violare. Le loro vulnerabilità principali sono: +1. **Numero di chiavi limitato:** Facilmente attaccabile tramite *brute-force* (tentando tutte le combinazioni). +2. **Invarianza delle frequenze:** Le lettere cifrate mantengono la stessa frequenza statistica delle lettere della lingua originale (es. in italiano la 'E' e la 'A' compaiono più spesso), permettendo di indovinare la chiave. + +### 3. Il Cifrario di Alberti (1467) +Per superare i limiti dell'analisi delle frequenze si è giunti al **cifrario polialfabetico** di Leon Battista Alberti. A differenza dei metodi precedenti, non usava lo stesso alfabeto segreto per tutto il messaggio, ma lo cambiava continuamente. + +Lo strumento si basava su **due dischi concentrici** ruotabili: +* **Disco Esterno (Fisso):** Conteneva l'alfabeto in chiaro e alcuni numeri. +* **Disco Interno (Mobile):** Conteneva un alfabeto disordinato per il testo segreto. + +Il funzionamento prevedeva tre passi: +1. **Allineamento iniziale:** Si decideva una chiave di partenza (es. allineare la `A` esterna con la `k` interna). +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. + +--- + +## La Crittografia Simmetrica Moderna: DES e AES + +Oggi i cifrari storici sono obsoleti. La crittografia moderna si affida ad algoritmi matematici complessi tali: + +* **DES** +* **Triple DES** +* **AES**. -* Cifrari a **Sostituizione**: consistono nel sostituire ogni carattere del plaintext con un altro carattere di un determinato alfabeto, basandosi su un criterio dettato dall'algoritmo -* Cifrari a **Trasposizione**: consistono nel creare un **anagramma** del plaintext seguendo uno schema geometrico, senza modificare quindi i caratteri -La prima nota di crittografia simmetrica risale al V secolo a.C, la **Scitale Spartana** -* **Crittografia Simmetrica (a chiave segreta):** Mittente e destinatario usano la *stessa chiave* sia per cifrare che per decifrare. - * *Pro:* Molto veloce. - * *Contro:* Il problema dello scambio sicuro della chiave (come farla avere al destinatario senza che venga intercettata). - * *Esempi:* DES, AES. - diff --git a/backend/src/main/resources/get/documentazione/fingerprint.md b/backend/src/main/resources/get/documentazione/fingerprint.md new file mode 100644 index 0000000..acad41d --- /dev/null +++ b/backend/src/main/resources/get/documentazione/fingerprint.md @@ -0,0 +1,21 @@ +# La Firma Digitale e le Certification Authority + + +### 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 + +* **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. + +### 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). + +* **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/intro_crittografia.md b/backend/src/main/resources/get/documentazione/intro_crittografia.md index 2c03308..ebf3d32 100644 --- a/backend/src/main/resources/get/documentazione/intro_crittografia.md +++ b/backend/src/main/resources/get/documentazione/intro_crittografia.md @@ -4,6 +4,24 @@ La **crittologia** è la scienza che studia le scritture segrete e si divide in: 1. **Crittografia:** Studio degli algoritmi per offuscare (cifrare) le informazioni. 2. **Crittoanalisi:** Tecniche usate per violare i sistemi crittografici. -*I concetti base:* Il **Testo in chiaro** (leggibile) viene trasformato in **Testo cifrato** tramite un **Algoritmo di cifratura** e una **Chiave** (una stringa di bit). +*La procedura base:* Il **Testo in chiaro** (leggibile) viene trasformato in **Testo cifrato** tramite un **Algoritmo di cifratura** e una **Chiave** (una stringa di bit). -> **Principio di Kerckhoffs:** La sicurezza di un sistema crittografico non deve dipendere dalla segretezza dell'algoritmo (che deve poter essere pubblico), ma esclusivamente dalla segretezza della chiave. \ No newline at end of file +> **Principio di Kerckhoffs:** La sicurezza di un sistema crittografico non deve dipendere dalla segretezza dell'algoritmo (che deve poter essere pubblico), ma esclusivamente dalla segretezza della chiave. + +--- + +## Crittografia Simmetrica vs Asimmetrica + +I sistemi crittografici si dividono principalmente in due grandi categorie: + +### 1. Crittografia Simmetrica (a chiave privata) +Utilizza la **stessa identica chiave** sia per cifrare che per decifrare il messaggio. Un esempio moderno è l'AES. + +* **Pro:** È estremamente veloce ed efficiente, ideale per cifrare grandi quantità di dati. +* **Contro:** Il problema dello scambio delle chiavi. Mittente e destinatario devono condividere la chiave in modo sicuro prima di comunicare; se un estraneo la intercetta, il sistema fallisce. + +### 2. Crittografia Asimmetrica (a chiave pubblica) +Utilizza una **coppia di chiavi matematicamente collegate**: una *Chiave Pubblica* (che chiunque può conoscere e serve per cifrare) e una *Chiave Privata* (segreta, posseduta solo dal destinatario e serve per decifrare). + +* **Pro:** Risolve il problema dello scambio delle chiavi. Non serve condividere segreti in anticipo: chiunque può usare la chiave pubblica per inviarti un messaggio che solo tu potrai aprire. +* **Contro:** È molto più lenta e complessa dal punto di vista matematico rispetto alla crittografia simmetrica. Per questo motivo viene spesso usata solo per scambiare in modo sicuro la chiave simmetrica all'inizio di una sessione. \ No newline at end of file diff --git a/backend/src/main/resources/get/documentazione/standard_sicurezza.md b/backend/src/main/resources/get/documentazione/standard_sicurezza.md index dc94db5..80ede35 100644 --- a/backend/src/main/resources/get/documentazione/standard_sicurezza.md +++ b/backend/src/main/resources/get/documentazione/standard_sicurezza.md @@ -1,7 +1,5 @@ # Standard di Riferimento per la Sicurezza Informatica - - ## Introduzione Gli **standard di sicurezza informatica** sono insiemi di linee guida, best practice e requisiti tecnici definiti da organismi internazionali, nazionali o settoriali. Il loro scopo è fornire un **linguaggio comune** e un **framework condiviso** per progettare, implementare, gestire e migliorare la sicurezza delle informazioni e dei sistemi digitali. diff --git a/backend/src/main/resources/get/style.css b/backend/src/main/resources/get/style.css index 03850b4..7b3ad86 100644 --- a/backend/src/main/resources/get/style.css +++ b/backend/src/main/resources/get/style.css @@ -284,6 +284,15 @@ footer a { } } /* --- Sezione Divulgativa --- */ +ul { + padding-left: 1.5em; + margin-top: 1.5em; + margin-bottom: 1.5em; +} + +li { + padding-bottom: 1.5em; +} .appunti-style { background: rgba(255, 255, 255, 0.05); /* Un leggero sfondo chiaro per staccare */ padding: 30px;