Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Network Security - Politecnico di Bari, Appunti di Sicurezza delle reti

Questo documento costituisce una trattazione organica e approfondita dei principi fondamentali e delle tecnologie avanzate nel campo della Network Security tenuto dal Prof. Piro presso il Politecnico di Bari per l’Anno Accademico 2025/2026. Voto conseguito: 30/30. Gli argomenti trattati sono: - Fondamenti di Security; - Protocolli di Sicurezza delle Comunicazioni; - Autenticazione e Controllo Accessi (AAA); - Difesa Perimetrale.

Tipologia: Appunti

2025/2026

In vendita dal 14/03/2026

nicola-34
nicola-34 🇮🇹

6 documenti

1 / 167

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Network Security
Nicola La Ferrara
Anno Accademico 2025/2026
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Anteprima parziale del testo

Scarica Network Security - Politecnico di Bari e più Appunti in PDF di Sicurezza delle reti solo su Docsity!

Network Security

Nicola La Ferrara

Anno Accademico 2025/

Indice

  • 1 Fondamenti di Network Security
    • 1.1 Security Services, Attacks and Mechanisms
      • 1.1.1 Concetto di sicurezza tra entità
      • 1.1.2 Principali servizi di sicurezza
      • 1.1.3 Attacchi alla comunicazione
      • 1.1.4 Considerazioni finali
    • 1.2 Network Security Tools
      • 1.2.1 Segretezza perfetta e limiti teorici
      • 1.2.2 Sicurezza incondizionata vs sicurezza computazionale
      • 1.2.3 Un concetto chiave da consocere
    • 1.3 Crittografia simmetrica: Block Cipher
      • 1.3.1 Criptoanalisi e attacchi
      • 1.3.2 Electronic Code Book (ECB)
      • 1.3.3 Cipher Block Chaining (CBC)
      • 1.3.4 Cipher Feedback (CFB)
      • 1.3.5 Output Feedback (OFB)
      • 1.3.6 Counter (CTR)
      • 1.3.7 Confronto tra modalità di cifratura a blocchi
    • 1.4 Crittografia simmetrica
    • 1.5 Crittografia asimmetrica
    • 1.6 Il ruolo delle chiavi pubbliche e private
    • 1.7 Diffie-Hellman
      • 1.7.1 Struttura e parametri del protocollo
      • 1.7.2 Scelta dei segreti e generazione dei valori pubblici
      • 1.7.3 Derivazione della chiave condivisa
      • 1.7.4 Scenario di attacco: il Man in the Middle
    • 1.8 RSA
      • 1.8.1 Struttura e generazione delle chiavi
      • 1.8.2 Cifratura e decifratura
      • 1.8.3 Firma digitale e autenticazione
      • 1.8.4 Sicurezza e considerazioni pratiche
      • 1.8.5 Conclusione
    • 1.9 Introduzione alle funzioni di hash
    • 1.10 Hash e Birthday Attack
      • 1.10.1 Perché si chiama “birthday” (compleanno)
      • 1.10.2 Il funzionamento pratico del birthday attack
      • 1.10.3 Relazione con weak/strong collision resistance
    • 1.11 MD5 e SHA
      • 1.11.1 MD5 (Message Digest 5)
      • 1.11.2 SHA (Secure Hash Algorithm)
    • 1.12 Message Authentication Code (MAC)
      • 1.12.1 Funzionamento e principio
      • 1.12.2 MAC e confidenzialità
      • 1.12.3 Attenzione: MAC non è una firma digitale
      • 1.12.4 Implementazioni comuni
      • 1.12.5 Conclusioni
    • 1.13 HMAC Hash-based Message Authentication Code
      • 1.13.1 Come funziona HMAC
      • 1.13.2 Il meccanismo del doppio hash
      • 1.13.3 Confronto con Hash e MAC tradizionali
      • 1.13.4 Punti di forza
      • 1.13.5 Limiti
      • 1.13.6 Conclusione
    • 1.14 Firma digitale e ruolo della hash
    • 1.15 Distribuzione di chiavi simmetriche tramite cifratura simmetrica
    • 1.16 Distribuzione delle chiavi tramite cifratura asimmetrica
    • 1.17 Certificati X.509
    • 1.18 Public-Key Infrastructure (PKI)
    • 1.19 Key Management Protocols
    • 1.20 Spiegazione Dettagliata del Protocollo Needham-Schroeder
    • 1.21 Confronto tra Metodi di Distribuzione delle Chiavi Pubbliche
      • 1.21.1 Scenario 1: Public-Key Authority (Interazione Online)
      • 1.21.2 Scenario 2: Public-Key Certificates (Verifica Offline)
  • 2 End-to-End Security
    • 2.1 Sicurezza end-to-end
    • 2.2 Canale sicuro e protocolli crittografici
    • 2.3 Transport Layer Security (TLS)
      • 2.3.1 Introduzione
      • 2.3.2 Architettura del TLS
      • 2.3.3 TLS Record Protocol e protocolli superiori
      • 2.3.4 Concetti fondamentali: Sessione e Connessione
      • 2.3.5 Parametri di una sessione
    • 2.3.6 Parametri di una connessione
    • 2.3.7 TLS Record Protocol
    • 2.3.8 Change Cipher Spec Protocol
    • 2.3.9 Alert Protocol
    • 2.3.10 Handshake Protocol
    • 2.3.11 Calcoli Crittografici nel TLS
  • 2.4 La Pseudo-Random Function
  • 2.5 TLS Handshake applicato ad HTTPS
  • 2.6 Differenze tra TLS 1.2 e TLS 1.3
  • 2.7 Handshake in TLS 1.3
    • 2.7.1 Perfect Forward Secrecy (PFS)
    • 2.7.2 TLS 1.3 e QUIC
  • 2.8 Other End-to-End Security Approaches
  • 2.9 Introduzione a IPSec
    • 2.9.1 Specifiche IPsec
  • 2.10 Scenari e modalità operative
  • 2.11 Security Association (SA)
  • 2.12 Modalità operative di IPSec
  • 2.13 Protocolli di IPSec: AH e ESP
    • 2.13.1 Transport mode
    • 2.13.2 Tunnel mode
  • 2.14 Protocolli principali: AH e ESP
  • 2.15 IPSec: Protocolli e Modalità Operative
  • 2.16 IPSec: Authentication Header (AH)
  • 2.17 Anti-Replay Service
    • 2.17.1 Funzionamento lato mittente
    • 2.17.2 Funzionamento lato destinatario
  • 2.18 IPSec ESP
    • 2.18.1 Cosa offre ESP e perché è importante
    • 2.18.2 Padding e “limited traffic flow confidentiality”
    • 2.18.3 Struttura generale di un pacchetto ESP
    • 2.18.4 Il meccanismo anti-replay in ESP
    • 2.18.5 ESP e le VPN
  • 2.19 ESP in Transport Mode
    • 2.19.1 Transport mode ESP in IPv4
    • 2.19.2 Transport mode ESP in IPv6
    • 2.19.3 Riepilogo del funzionamento
  • 2.20 ESP in Tunnel Mode
    • 2.20.1 Funzionamento generale
    • 2.20.2 Perché il tunnel mode è necessario
    • 2.20.3 Quando si usa il tunnel mode
    • 2.20.4 Esempio di funzionamento
  • 2.21 Combinazione delle Security Associations
    • 2.21.1 Due modi per combinare le SA
    • 2.21.2 ESP con autenticazione
    • 2.21.3 Transport adjacency: ESP seguito da AH
    • 2.21.4 Transport-tunnel bundle (AH+ESP)
  • 2.22 Combinazioni fondamentali di SA secondo l’architettura IPsec
  • 2.23 Internet Key Exchange (IKE): la gestione delle chiavi
    • 2.23.1 Gestione manuale
    • 2.23.2 Gestione automatica
  • 2.24 IKEv2: funzionamento generale
    • 2.24.1 Le due fasi di IKEv2
  • 2.25 Phase 1 nel dettaglio
    • 2.25.1 Main mode
    • 2.25.2 Metodi di autenticazione utilizzabili
  • 2.26 Phase 1: funzionamento messaggio per messaggio
  • 2.27 Conclusione della Phase
  • 2.28 IKEv2 Phase 1: Aggressive Mode
    • 2.28.1 Caratteristiche principali
    • 2.28.2 Quando è utile l’Aggressive Mode
    • 2.28.3 Scambio dei messaggi in Aggressive Mode
    • 2.28.4 Limiti di sicurezza dell’Aggressive Mode
  • 2.29 IKEv2 Phase 2: Quick Mode
    • 2.29.1 Quick Mode
    • 2.29.2 Funzioni del Quick Mode
    • 2.29.3 Scambio dei messaggi in Quick Mode
  • 2.30 Conclusione su Quick Mode
  • 2.31 Conclusioni su IPSec
  • 2.32 Virtual Private Networks (VPN)
    • 2.32.1 Perché nasce la VPN
    • 2.32.2 Perché la VPN è conveniente
    • 2.32.3 Come si integra IPSec nelle VPN
    • 2.32.4 VPN per gli utenti remoti
    • 2.32.5 Dove implementare IPSec: firewall o router?
  • 2.33 Scenari e Deployment delle VPN
    • 2.33.1 Scenari VPN
    • 2.33.2 Deployment delle VPN
  • 2.34 VPN: Vantaggi, Svantaggi e Componenti
    • 2.34.1 Vantaggi delle VPN
      • 2.34.2 Svantaggi delle VPN
      • 2.34.3 Componenti di una VPN
  • 3 Authentication Authorization Accounting Framework
    • 3.1 Framework AAA
      • 3.1.1 Authentication
      • 3.1.2 Authorization
      • 3.1.3 Accounting
      • 3.1.4 Standard di riferimento
    • 3.2 Autenticazione basata su qualcosa che l’individuo conosce
      • 3.2.1 Memorizzazione e verifica tramite hash
      • 3.2.2 Attacco offline: dictionary attack
      • 3.2.3 Mitigazione: l’utilizzo del salt
      • 3.2.4 Procedura di verifica con salt
      • 3.2.5 Seconda mitigazione: aumentare la complessità delle password
      • 3.2.6 Mitigazione più robusta: la Two-Factor Authentication
    • 3.3 Autenticazione basata su qualcosa che l’individuo possiede
      • 3.3.1 Problemi e limitazioni
      • 3.3.2 One-Time Password (OTP)
    • 3.4 Autenticazione basata su ciò che l’individuo è o fa
      • 3.4.1 Vantaggi della biometria
      • 3.4.2 Svantaggi della biometria
    • 3.5 Limiti degli approcci di base all’autenticazione
    • 3.6 Protocolli di autenticazione più complessi
      • 3.6.1 Meccanismo challenge–response
      • 3.6.2 Problemi anche nei protocolli avanzati
    • 3.7 Replay Attack
      • 3.7.1 Che cos’è una sfida (challenge)?
    • 3.8 Chosen–Ciphertext Attack
    • 3.9 Reflection Attack
      • 3.9.1 Funzionamento normale del protocollo
      • 3.9.2 Reflection Attack: come attacca Trudy
      • 3.9.3 Perché l’attacco funziona
    • 3.10 Interleaving Attack
    • 3.11 Protocols in Distributed Systems
    • 3.12 Password Authentication Protocol (PAP)
    • 3.13 Challenge Handshake Authentication Protocol (CHAP)
    • 3.14 Extensible Authentication Protocol (EAP)
    • 3.15 Il Protocollo RADIUS
      • 3.15.1 Modello Architetturale Client-Server
      • 3.15.2 Metodi di Autenticazione e Flusso PAP
  • 3.16 Comunicazione tra NAS e RADIUS Server
  • 3.17 Metodi di Autenticazione RADIUS
    • 3.17.1 PAP: Password Authentication Protocol
    • 3.17.2 Protezione della password in RADIUS
    • 3.17.3 Autenticità della risposta del server
    • 3.17.4 Autenticazione RADIUS con protocollo CHAP
  • 3.18 RADIUS su larga scala e il modello distribuito
  • 3.19 Introduzione a Kerberos
    • 3.19.1 Realm
    • 3.19.2 Principals
    • 3.19.3 Il Key Distribution Center
    • 3.19.4 Le fasi principali
    • 3.19.5 Static Keys
    • 3.19.6 Session Keys
    • 3.19.7 Ticket e Authenticator
  • 3.20 Fase 1: Login
  • 3.21 Fase 2: Richiesta di un servizio al TGS
  • 3.22 Fase 3: Sessione di servizio
  • 3.23 Kerberos v4: generazione della chiave a partire dalla password
  • 3.24 Kerberos v4: funzionamento in un ambiente multirealm
  • 3.25 Kerberos versione 5: motivazioni e miglioramenti
    • 3.25.1 Environmental shortcomings
    • 3.25.2 Technical deficiencies
  • 3.26 Kerberos con Crittografia a Chiave Pubblica
    • 3.26.1 Perché usare la crittografia a chiave pubblica solo all’inizio
    • 3.26.2 Come cambia la prima fase con PKINIT
    • 3.26.3 Come viene generata la session key iniziale
    • 3.26.4 Cosa succede dopo la session key iniziale
  • 3.27 Kerberos v5: Message Flow con evidenza delle differenze rispetto a v4
    • 3.27.1 (a) Authentication Service Exchange
    • 3.27.2 (b) Ticket-Granting Service Exchange
    • 3.27.3 (c) Client/Server Authentication Exchange
  • 3.28 Introduzione a OAuth 2.0: contesto e motivazione
  • 3.29 Il Framework OAuth 2.0
    • 3.29.1 Attori del Sistema (Roles)
  • 3.30 OAuth 2.0 Protocol Flow
    • 3.30.1 Il concetto di Refresh Token
  • 3.31 Tipologie di Authorization Grant
    • 3.31.1 1. Authorization Code (Il più comune e sicuro)
    • 3.31.2 2. Implicit Flow (Deprecato)
      • 3.31.3 3. Client Credentials
      • 3.31.4 4. Resource Owner Password Credentials (Legacy)
    • 3.32 Sintesi delle differenze di Autenticazione
    • 3.33 OAuth 2.0 su Dispositivi con Input Limitato
      • 3.33.1 Il Funzionamento del Device Flow
    • 3.34 OpenID Connect: Aggiungere l’Identità
    • 3.35 ID Tokens e JSON Web Tokens (JWT)
  • 4 Perimeter Security
    • 4.1 Introduzione: La Necessità della Sicurezza Perimetrale
    • 4.2 Il Concetto di Firewall e Sicurezza Perimetrale
    • 4.3 Architettura di Rete e DMZ
      • 4.3.1 Tipologie di Deployment
    • 4.4 Tipologie di Firewall: Approcci Convenzionali
      • 4.4.1 Packet Filtering Firewall
      • 4.4.2 Stateful Inspection Firewall
      • 4.4.3 Application Gateway (Proxy)
    • 4.5 Limiti degli Approcci Convenzionali
    • 4.6 Next Generation Firewall (NGFW) e WAF
      • 4.6.1 Web Application Firewall (WAF)
      • 4.6.2 Next Generation Firewall (NGFW)
  • protezione dei singoli blocchi di dati,
  • protezione di campi specifici all’interno dei dati,
  • protezione delle informazioni ricavabili dall’osservazione del flusso (traffic flow confiden- tiality).

Quest’ultimo aspetto è particolarmente complesso: tecniche di traffic classification basate su intelligenza artificiale (es. deep learning) permettono di dedurre il tipo di applicazione osser- vando solo metadati e pattern di traffico. Alcuni sistemi mitigano questo rischio aggiungendo padding ai messaggi cifrati, in modo da mascherare la dimensione reale dei pacchetti e rendere più difficile il fingerprinting del servizio.

Authentication. L’autenticazione si suddivide in:

  • Peer Entity Authentication: verifica che l’entità con cui stiamo comunicando sia quella dichiarata. Esempio: collegarsi al vero server di Facebook invece che a un sito contraffatto. Può essere unidirezionale (solo il server si autentica) o bidirezionale.
  • Data Origin Authentication: garantisce che i dati ricevuti provengano dall’entità corretta. Ad esempio, un passaporto elettronico è generato da un’autorità legittima (la Polizia).

Access Control. È la capacità di un sistema di sicurezza di permettere l’uso delle risorse solo a utenti autorizzati. Le risorse possono essere fisiche (es. stampanti, stanze) o logiche (es. database, file system).

Data Integrity. Garantisce che i dati trasmessi non possano essere alterati da entità non autorizzate. L’integrità è tipicamente assicurata mediante funzioni di hash e message authen- tication codes (MAC).

Non Repudiation. Assicura che un’entità non possa negare di aver inviato o ricevuto un messaggio. È un requisito importante, ad esempio, nelle transazioni digitali.

Availability. Il servizio deve essere accessibile agli utenti autorizzati nelle modalità previ- ste, senza interruzioni arbitrarie. Attacchi di tipo DoS (Denial of Service) mirano proprio a comprometterne questo aspetto.

1.1.3 Attacchi alla comunicazione

Gli attacchi si dividono in due macro-categorie:

  • Attacchi passivi: l’attaccante si limita ad osservare il canale (es. traffic analysis, lettura dei contenuti). Sono difficili da rilevare ma relativamente facili da prevenire (es. con la cifratura).

2

  • Attacchi attivi: l’attaccante altera attivamente il flusso di comunicazione. Esempi:
    • Masquerade: l’attaccante si spaccia per un’altra entità.
    • Replay: un pacchetto valido viene catturato e reinviato più tardi.
    • Modification of messages: i messaggi vengono alterati in transito.
    • Denial of Service (DoS): il servizio viene reso inutilizzabile (es. flood di richieste).

1.1.4 Considerazioni finali

  • Gli attacchi passivi: difficili da rilevare, ma più semplici da prevenire.
  • Gli attacchi attivi: difficili da prevenire, ma più semplici da rilevare.

Un esperto di sicurezza deve progettare sistemi capaci di difendere l’infrastruttura da entrambi i tipi di minacce, bilanciando meccanismi di prevenzione e rilevazione.

1.2 Network Security Tools

Quando parliamo di sicurezza nelle reti, il primo punto fondamentale è comprendere la natura del canale di comunicazione. L’information channel, per definizione, non è sicuro: esso è condi- viso tra più dispositivi e potenzialmente accessibile da soggetti non autorizzati. Per garantire la confidenzialità dei dati, è dunque necessario introdurre un crittosistema: lo si può immaginare come una “black box” che riceve in input un messaggio in chiaro (plaintext) e lo trasforma in un messaggio cifrato (ciphertext). Naturalmente, il crittosistema da solo non basta: esso è un algoritmo, ma la sicurezza dipende anche dalla chiave utilizzata. Ed è proprio qui che entra in gioco la distinzione tra crittografia simmetrica e crittografia asimmetrica.

1.2.1 Segretezza perfetta e limiti teorici

Un concetto centrale è quello di segretezza perfetta. Essa, in teoria, può essere ottenuta solo a due condizioni:

  • La chiave deve avere la stessa lunghezza del messaggio da cifrare.
  • La chiave deve essere composta da bit completamente casuali.

Queste condizioni derivano direttamente dal teorema di Shannon. L’unico algoritmo che le soddisfa è il One Time Pad (OTP). Tuttavia, l’OTP non è praticabile nella realtà per due motivi principali:

  • Non siamo realmente in grado di generare numeri perfettamente casuali, poiché i genera- tori utilizzati sono pseudo-casuali.

viene elaborato dal crittosistema. La trasformazione non avviene in maniera diretta e semplice, ma viene applicata una sequenza di operazioni ripetute, chiamate round. Ogni round può includere:

  • sostituzioni (sostituire certi bit con altri seguendo regole predeterminate),
  • permutazioni (riordinare i bit all’interno del blocco),
  • operazioni matematiche

Lo scopo di questa sequenza di operazioni è quello di rendere l’output (ciphertext) il meno possibile correlato all’input (plaintext), garantendo i principi di diffusion e confusion. In altre parole, osservando un blocco cifrato deve essere praticamente impossibile risalire al blocco originale o alla chiave. La sequenza dei round non è casuale: viene progettata in modo che lo stesso schema possa essere usato sia per la cifratura che per la decifratura. È proprio questa simmetria a rendere i block cipher estremamente efficienti, ma anche delicati: se il numero di round è troppo basso o la configurazione è scorretta, la sicurezza del sistema crolla. Un concetto importante è il cosiddetto avalanche effect: un buon crittosistema deve avere la proprietà che se si cambia un solo bit della chiave o del plaintext, circa la metà dei bit del ciphertext cambiano. Questo garantisce che piccole variazioni in input producano output radicalmente diversi, rendendo molto più difficile la crittoanalisi.

1.3.1 Criptoanalisi e attacchi

La crittanalisi è l’insieme delle tecniche che un avversario usa per ottenere informazioni riservate (plaintext o chiave) partendo da dati osservabili (ciphertext, timing ecc... ). L’obiettivo non è solo “rompere” l’algoritmo matematicamente, ma trovare qualunque debolezza pratica che renda possibile recuperare i dati o indebolire la sicurezza. In ingegneria conviene pensare alla criptoanalisi come a un processo di diagnostica: si analizzano canali, protocolli, implementazioni e supposti punti deboli per trasformare una sicurezza teorica in una falla reale. Un crittosistema deve quindi resistere:

  • alla crittoanalisi,
  • agli attacchi di forza bruta, che provano sistematicamente tutte le possibili chiavi.

1.3.2 Electronic Code Book (ECB)

La modalità Electronic Code Book (ECB) rappresenta la forma più semplice di utilizzo di un block cipher. Il messaggio in chiaro viene innanzitutto suddiviso in blocchi di lunghezza fissa (ad esempio 128 bit se si utilizza AES).

Ogni blocco viene poi cifrato in modo indipendente dagli altri, sempre con la stessa chiave segreta. Il principio di funzionamento è quindi molto lineare:

  1. Il plaintext viene spezzato in blocchi consecutivi.
  2. Ciascun blocco viene cifrato separatamente, senza alcun legame con i blocchi vicini.
  3. La sequenza dei blocchi cifrati costituisce il ciphertext finale.
  4. In fase di decifratura, ogni blocco cifrato viene processato singolarmente per ottenere il corrispondente blocco originale.

Dal punto di vista della semplicità, ECB è estremamente immediata: non ci sono passaggi ag- giuntivi oltre alla cifratura dei blocchi, e l’intero processo può essere eseguito anche in parallelo, poiché ogni blocco è indipendente dagli altri. Tuttavia, questa stessa indipendenza è anche la sua debolezza principale. Infatti, se due blocchi del messaggio in chiaro sono identici, anche i rispettivi blocchi cifrati risulteranno identici. In questo modo emergono pattern che rivelano informazioni sulla struttura del messaggio, renden- do la modalità vulnerabile ad analisi e attacchi crittografici. Inoltre, ECB non offre alcuna garanzia di integrità: i blocchi possono essere eliminati, duplicati o riordinati senza che il destinatario sia in grado di accorgersene. In conclusione, la modalità ECB può essere utile in contesti molto semplici e su messaggi piccoli e non ripetitivi, ma non è considerata sicura per la protezione di dati sensibili. Per applicazioni pratiche si preferiscono modalità più avanzate come CBC, CTR o GCM, che evitano la ripetizione dei blocchi e introducono meccanismi di sicurezza aggiuntivi.

1.3.3 Cipher Block Chaining (CBC)

I block cipher (AES, DES, ecc.) lavorano su blocchi fissi (es. 128 bit per AES). Se cifrassi ogni blocco indipendentemente (Electronic Code Book, ECB), blocchi uguali di plaintext produrrebbero ciphertext uguali evidente perdita di privacy. CBC è una modalità che “mescola” i blocchi tra loro per rompere queste correlazioni: ogni blocco di plaintext viene XORato con il ciphertext del blocco precedente prima di essere cifrato. Questo rende il ciphertext dipendente non solo dal relativo plaintext, ma anche dallo storico dei blocchi precedenti. Il funzionamento può essere riassunto così:

6

1.3.4 Cipher Feedback (CFB)

La modalità Cipher Feedback (CFB) si distingue dalle modalità viste in precedenza perché l’obiettivo non è cifrare direttamente il blocco di plaintext, bensì generare una sequenza di bit detta keystream.

Funzionamento:

  • Si parte da un Initialization Vector (IV), che viene cifrato con il block cipher e la chiave segreta.
  • Il risultato non è ancora il ciphertext, ma il primo segmento di keystream.
  • Il plaintext viene combinato (XOR) con questo keystream per produrre il ciphertext.
  • Il blocco di ciphertext ottenuto viene riutilizzato come input (feedback) per generare il keystream del blocco successivo, sostituendo interamente o parzialmente l’IV, a seconda della dimensione del segmento.

La decifratura utilizza lo stesso procedimento, poiché l’operazione XOR è invertibile.

Differenza rispetto ad altre modalità: A differenza di modalità come ECB o CBC, qui non si usa il cifrario per trasformare direttamente il plaintext in ciphertext. La chiave segreta k rimane fissa per tutta la sessione, ma la sequenza di bit prodotta (il keystream) cambia ad ogni blocco, garantendo variabilità e resistenza agli attacchi. In pratica, CFB trasforma un block cipher in uno stream cipher sicuro e flessibile.

Caratteristiche principali:

  • Il ciphertext dipende dai blocchi precedenti, quindi blocchi uguali di plaintext non pro- ducono mai lo stesso output.
  • La propagazione c’è, ma è limitata nel tempo. Un singolo errore di trasmissione causa: un piccolo errore immediato + una "scia" di dati totalmente illeggibili lunga quanto un blocco. Poi ritorna alla normalità.
  • È una modalità auto-sincronizzante: se durante la trasmissione si perdono o vengono aggiunti multipli di s bit, il sistema riesce a ritrovare la sincronizzazione dopo un breve intervallo.

8

Limiti:

  • Più complessa da implementare rispetto ad altre modalità.
  • Non particolarmente veloce: per ogni gruppo di pochi bit serve comunque una chiamata al block cipher.

1.3.5 Output Feedback (OFB)

La modalità Output Feedback (OFB) è un’altra tecnica che permette di trasformare un block cipher in uno stream cipher. Come in CFB, anche in questo caso non si cifra direttamente il plaintext, ma si genera un keystream che viene combinato tramite XOR con il messaggio in chiaro.

Funzionamento:

  • Si parte da un Initialization Vector (IV), che viene cifrato con la chiave segreta k.
  • Il risultato diventa il primo blocco del keystream.
  • Questo keystream viene XORato con il plaintext per produrre il ciphertext.
  • Diversamente da CFB, l’input al blocco successivo non è il ciphertext prodotto, ma l’out- put della cifratura precedente. In questo modo il keystream è completamente indipendente dal plaintext.

Caratteristiche principali:

  • Il block cipher funziona come un generatore di keystream: ciò significa che lo stesso IV con la stessa chiave genera sempre la stessa sequenza di bit.
  • È molto efficiente: il keystream può essere generato in anticipo e in parallelo, senza dover attendere il plaintext.
  • Gli errori di trasmissione hanno un effetto limitato: un bit errato nel ciphertext corrompe solo il corrispondente bit nel plaintext, senza propagarsi oltre.
  • Parallelizzabile: a differenza di CBC o CFB, ogni blocco può essere cifrato indipenden- temente dagli altri, permettendo elaborazioni in parallelo.
  • La propagazione degli errori è minima: un bit errato nel ciphertext corrompe solo il corrispondente bit del plaintext.

Limiti:

  • CTR non è auto-sincronizzante: se un blocco va perso, la sincronizzazione va gestita da protocolli di livello superiore.
  • È fondamentale che lo stesso contatore (o nonce) non venga mai riutilizzato con la stessa chiave, altrimenti si riutilizza lo stesso keystream e si perde sicurezza.

Conclusione: CTR unisce i vantaggi di OFB (efficienza, errori limitati, generazione di key- stream indipendente dal plaintext) con una struttura ancora più semplice e veloce. È oggi una delle modalità più utilizzate in protocolli moderni e viene preferita a CBC per le sue prestazioni e la facilità di implementazione.

1.3.7 Confronto tra modalità di cifratura a blocchi

Per riassumere le diverse modalità, ecco un confronto delle loro proprietà principali:

ECB Semplice da implementare, ma insicura: blocchi uguali di plaintext producono ciphertext uguali. Nessuna inte- grità, vulnerabile ad analisi e pattern. CBC Non complessa ma lenta. Sicurezza discreta, propaga- zione di errori su due blocchi. Problemi di sincronizza- zione in caso di perdita di dati. CFB Più complessa ma flessibile. Trasforma il block cipher in uno stream cipher. Auto-sincronizzante, propagazione di errori limitata. OFB Genera un keystream indipendente dal plaintext. Mol- to veloce, errori minimi, parallelizzabile. Non auto- sincronizzante: la sincronizzazione è demandata ai pro- tocolli superiori. CTR Estremamente semplice ed efficiente. Keystream gene- rato cifrando un contatore. Parallelizzabile e veloce, ma richiede attenzione al riutilizzo dei nonce.

1.4 Crittografia simmetrica

La crittografia simmetrica rappresenta la forma più tradizionale di cifratura. In questo approc- cio, la stessa chiave viene utilizzata sia per cifrare che per decifrare il messaggio.

11

Immaginiamo due interlocutori, Alice e Bob: entrambi condividono una chiave segreta, nota solo a loro. Quando Alice vuole inviare un messaggio riservato, lo elabora tramite un algoritmo di cifratura utilizzando la chiave condivisa; Bob, a sua volta, applicherà lo stesso algoritmo (ma in senso inverso) con la medesima chiave per ottenere il messaggio originale. Questo metodo è estremamente veloce ed efficiente dal punto di vista computazionale. Tutta- via, presenta un grande limite: la distribuzione sicura della chiave. Poiché la chiave deve essere condivisa prima di iniziare la comunicazione, sorge il problema di come trasmetterla sen- za che un terzo (un attaccante) possa intercettarla. Per reti piccole o ambienti chiusi, questo è gestibile; ma su larga scala, come nelle reti globali, la distribuzione delle chiavi diventa un problema complesso e potenzialmente pericoloso. Gli algoritmi simmetrici si suddividono in block cipher e stream cipher. I block cipher elaborano il testo in chiaro in blocchi di dimensione fissa (come nel caso del DES o dell’AES), applicando una sequenza di sostituzioni e permutazioni. Gli stream cipher, invece, operano su un flusso continuo di bit o byte, rendendoli adatti a trasmissioni in tempo reale. Nonostante le diverse implementazioni, tutti gli algoritmi simmetrici si basano su due principi fondamentali introdotti da Shannon: confusione e diffusione, che mirano a rendere il rapporto tra testo in chiaro, testo cifrato e chiave il più complesso possibile.

1.5 Crittografia asimmetrica

Per superare i limiti legati alla distribuzione della chiave, nasce la crittografia asimmetrica, anche detta a chiave pubblica. A differenza della simmetrica, questo modello si basa sull’uso di due chiavi matematicamente correlate ma differenti: una pubblica e una privata. La chiave pubblica può essere liberamente condivisa, mentre la chiave privata deve rimanere segreta e custodita dal proprietario. In questo schema, se Alice vuole inviare un messaggio riservato a Bob, utilizzerà la chiave pubblica di Bob per cifrarlo. Solo Bob, grazie alla sua chiave privata, sarà in grado di decifrarlo. Questo garantisce la riservatezza dei dati senza bisogno di condividere segreti in anticipo. Tuttavia, la crittografia asimmetrica è molto più lenta di quella simmetrica, poiché le sue operazioni si basano su calcoli matematici complessi, come l’esponenziazione modulare o la fattorizzazione di numeri primi molto grandi. La forza di questi sistemi risiede proprio nella complessità computazionale del processo inverso: conoscendo la chiave pubblica e l’algoritmo, è praticamente impossibile ricavare la chiave privata in tempi utili. Per questo motivo, nei sistemi di sicurezza reali si preferisce adottare un approccio ibrido: la crittografia asimmetrica viene usata solo per scambiare in modo sicuro una chiave simmetrica, che poi verrà impiegata per cifrare i dati veri e propri.