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


Sicurezza Informatica: Crittografia, Reti e Attacchi - Prof. Bergadano, Dispense di Sicurezza delle reti

Una panoramica completa della sicurezza informatica, coprendo argomenti come la crittografia, la sicurezza delle reti e gli attacchi informatici. Esplora i principi cia (confidentiality, integrity, availability) e le due sottocategorie di sicurezza: computer security e communications security. In dettaglio i diversi tipi di cifrari, inclusi i cifrari simmetrici e asimmetrici, e fornisce una spiegazione approfondita degli attacchi informatici, sia passivi che attivi. Inoltre, vengono trattati argomenti come i firewall, le vpn e la cybersecurity, fornendo una comprensione completa delle sfide e delle strategie per garantire la sicurezza delle informazioni e dei sistemi informatici.

Tipologia: Dispense

2023/2024

In vendita dal 22/02/2025

xumemei
xumemei 🇮🇹

10 documenti

1 / 112

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
SICUREZZA 2023-2024
INDICE:
Parte 1: Crittografia
Introduzione
Cifrari pre-informatici
Cifrario di Cesare
Cifrari monoalfabetici a 1 lettera
Cifrari monoalfabetici a N lettere
Cifrario di PlayFair
Cifrario di Vigenére
Cifrario di Vernam
One time Pad
Cifrari a permutazione
Crittografia simmetrica
Macchine a rotori
Feistel Cypher
Data Encryption Standard (DES)
Advanced Encryption Standard (AES)
Cifrari a blocchi e a flusso
Cifratura a due fasi e Meet in the middle
Cifratura a 3 fasi
Modalità Electronic CodeBook (ECB)
Modalità Cipher Block Chaining (CBC)
Modalità Cipher Feedback (CFB)
Modalità Output Feedback (OFB)
Crittografia asimmetrica
Digital Envelope
Scambio di chiavi di Diffie-Hellman
Test di Miller-Rabin
Man in the middle
RSA
Correttezza di RSA (con dimostrazione dei teoremi)
Sicurezza di RSA
Funzione di Hash
Collisioni
Paradosso del compleanno
Attacco del compleanno
Autenticazione e firma elettronica
Autenticazione Simmetrica
Autenticazione Asimmetrica (firma elettronica)
Certificato di chiave pubblica, Certification Authority e TimeStamp Authority
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 Sicurezza Informatica: Crittografia, Reti e Attacchi - Prof. Bergadano e più Dispense in PDF di Sicurezza delle reti solo su Docsity!

SICUREZZA 2023-

INDICE:

Parte 1: Crittografia

● Introduzione ● Cifrari pre-informatici ○ Cifrario di Cesare ○ Cifrari monoalfabetici a 1 lettera ○ Cifrari monoalfabetici a N lettere ○ Cifrario di PlayFair ○ Cifrario di Vigenére ○ Cifrario di Vernam ○ One time Pad ○ Cifrari a permutazione ● Crittografia simmetrica ○ Macchine a rotori ○ Feistel Cypher ○ Data Encryption Standard (DES) ○ Advanced Encryption Standard (AES) ● Cifrari a blocchi e a flusso ○ Cifratura a due fasi e Meet in the middle ○ Cifratura a 3 fasi ○ Modalità Electronic CodeBook (ECB) ○ Modalità Cipher Block Chaining (CBC) ○ Modalità Cipher Feedback (CFB) ○ Modalità Output Feedback (OFB) ● Crittografia asimmetrica ○ Digital Envelope ○ Scambio di chiavi di Diffie-Hellman □ Test di Miller-Rabin □ Man in the middle ○ RSA □ Correttezza di RSA (con dimostrazione dei teoremi) □ Sicurezza di RSA ○ Funzione di Hash □ Collisioni □ Paradosso del compleanno □ Attacco del compleanno ○ Autenticazione e firma elettronica □ Autenticazione Simmetrica □ Autenticazione Asimmetrica (firma elettronica)Certificato di chiave pubblica, Certification Authority e TimeStamp Authority

Parte 2: Sicurezza nelle reti

● Introduzione ● Malware ● Sniffing ● Spoofing ● Denial of Service ● Syn FloodingParte di laboratorio , dove viene spiegato come effettuare un attacco buffer overflow ○ Exploit ○ Sovrascrivere EIP ○ Privilege escalation ○ Contromisure ● Firewall ○ Configurazioni ○ Packet Filter □ Access Control List (ACL) □ Vantaggi e svantaggi ○ Firewall applicativo □ Vantaggi e svantaggi ○ Network Address Translation (NAT) e Network Address and Port Translation (NAPT) ● Virtual Private Network (VPN) ○ IP Security (IPSEC) ● Open Web Application Security Project (OWASP) e la TOP 10 vulnerabilità

COS’È LA CYBERSECURITY?

La CyberSecurity è la disciplina che si occupa della protezione delle informazioni e delle risorse nel cyberspazio , ovvero l'ambiente digitale interconnesso in cui operiamo. Questo campo riguarda la sicurezza di tutto ciò che è accessibile tramite il cyberspazio, che può includere sia informazioni digitali (come i file memorizzati su un computer) che informazioni analogiche (come un foglio di carta con delle scritte inquadrato da una telecamera). Per garantire la sicurezza delle reti e delle informazioni nel cyberspazio, è necessario ideare un modello per la sicurezza di rete che si articola in quattro compiti fondamentali: ● Progettazione di un algoritmo per l'esecuzione della trasformazione di sicurezza → l’algoritmo deve garantire che il contenuto del messaggio non sia riconoscibile durante la trasmissione o l'elaborazione. ● Generazione delle informazioni segrete → si tratta di creare chiavi crittografiche o altri dati segreti utilizzati dall'algoritmo di sicurezza per proteggere le informazioni durante la trasmissione. ● Sviluppo di metodi per la distribuzione e la condivisione delle informazioni segrete → è importante garantire che le chiavi crittografiche o altre informazioni segrete siano distribuite in modo sicuro e che solo le parti autorizzate possano accedervi. ● Specifica del protocollo → riguarda la definizione di un protocollo che le parti coinvolte nel processo di comunicazione utilizzano per applicare l'algoritmo di sicurezza e le informazioni segrete al fine di ottenere un determinato livello di sicurezza durante la comunicazione.

CIFRARI

Un cifrario è un sistema che comprende tre componenti principali: ● Algoritmo di Cifratura → converte il testo in chiaro in una forma cifrata durante il processo di cifratura. ● Algoritmo di Decifratura → ripristina il testo normale dalla forma cifrata durante il processo di decifratura. ● Algoritmo di Generazione e Gestione delle Chiavi Crittografiche → responsabile della creazione e della gestione delle chiavi crittografiche utilizzate per cifrare e decifrare le informazioni. Esistono due classi principali di cifrari : ● Aperti → gli algoritmi di cifratura e decifratura sono pubblici e noti a tutti. ● Chiusi → gli algoritmi di cifratura e decifratura non sono pubblici e sono mantenuti segreti. In realtà, i cifrari chiusi non sono necessariamente più sicuri dei cifrari aperti. Nel mondo commerciale, i cifrari aperti sono preferiti perché beneficiano della revisione pubblica da parte della comunità scientifica, mentre i cifrari chiusi hanno solo un gruppo ristretto di persone che li gestiscono, aumentando il rischio di vulnerabilità non rilevate. Si evita quindi il concetto di " security through obscurity ", che implica nascondere informazioni o utilizzare metodi complessi per proteggerle. Questo approccio non è organizzato e può essere vulnerabile nel lungo periodo. Questi principi si basano sul Principio di Kerckhoffs , che stabilisce che i metodi e gli algoritmi segreti saranno alla fine scoperti dall'avversario. Pertanto, la sicurezza dovrebbe essere focalizzata principalmente sulle chiavi crittografiche anziché sull'oscurità degli algoritmi.

CIFRARI APERTI

Tra i cifrari aperti, vi è un'ulteriore suddivisione in due categorie principali: ● Cifrari Simmetrici → viene utilizzata la stessa chiave sia per cifrare che per decifrare i dati. I cifrari simmetrici sono anche conosciuti come cifrari "convenzionali" o a "chiave condivisa". ● Cifrari Asimmetrici → viene utilizzata una coppia di chiavi distinte: una chiave pubblica e una chiave privata. La chiave pubblica è utilizzata per cifrare i dati , mentre la chiave privata , posseduta solo dal destinatario dei dati, è utilizzata per decifrarli. Le chiavi sono computazionalmente diverse , il che significa che non è possibile derivare una chiave dall'altra. I cifrari asimmetrici sono noti anche come cifrari a chiave pubblica.

ALCUNE DEFINIZIONI:

Algoritmo di crittografia → algoritmo che esegue diverse sostituzioni e trasformazioni sul testo in chiaro per renderlo incomprensibile. ● Algoritmo di decrittografia →l’opposto dell'algoritmo di crittografia. Prende come input il testo cifrato e la chiave segreta e restituisce il testo in chiaro. ● Chiave segreta / crittografica → input dell'algoritmo di crittografia. Questa chiave è indipendente dal testo in chiaro e dall'algoritmo stesso. L'output dell'algoritmo varia in base alla chiave utilizzata. ● Testo in chiaro (Plaintext) → messaggio originale prima della cifratura. ● Testo cifrato (Ciphertext) → messaggio cifrato, ottenuto in base al testo in chiaro e alla chiave segreta utilizzata nell'algoritmo di crittografia. ● Cifratura (encryption) → operazione di cifrare un messaggio, ovvero applicare l'algoritmo di crittografia. ● Decifratura (decryption) → operazione di decifrare un messaggio, ovvero applicare l'algoritmo di decrittografia.

CRITTOGRAFIA SIMMETRICA

La crittografia simmetrica impiega una stessa chiave per eseguire sia la crittografia che la decrittografia. Utilizza principalmente due tecniche : la sostituzione , che mappa gli elementi del testo in chiaro in elementi del testo cifrato, e la permutazione , che riorganizza le posizioni degli elementi del testo in chiaro (anagramma). I principali tipi di attacco contro la crittografia simmetrica sono l’analisi crittografica, che sfrutta le caratteristiche specifiche dell'algoritmo di crittografia, e l’attacco a forza bruta , che prova tutte le possibili chiavi fino a trovare quella corretta. Riassumendo le caratteristiche principali dei cifrari simmetrici: ● Mittente e ricevente condividono una stessa chiave. ● La stessa chiave viene usata per cifrare e decifrare. ● La cifratura e la decifratura sono efficienti.È difficile o praticamente impossibile decifrare senza conoscere la chiave , poiché manca l'informazione necessaria. Dunque il principale problema di sicurezza riguardante la crittografia simmetrica è mantenere segreta la chiave.

CIFRARI SIMMETRICI PRE-INFORMATICI

I cifrari simmetrici pre-informatici si basano sui principi di sostituzione e permutazione. Si distinguono in: ● Cifrari orientati al carattere → lavorano su singoli caratteri del testo in chiaro e del testo cifrato. ● Cifrari orientati al bit → operano direttamente sui singoli bit del testo in chiaro e del testo cifrato.

CIFRARIO DI CESARE

Il cifrario di Cesare è un cifrario " character oriented " che utilizza uno schema di sostituzione per cifrare e decifrare testi. Funziona in questo modo: ● Si assegna un numero a ciascuna lettera dell'alfabeto , partendo da 0 per la A fino a 20 per la Z. ● Viene generata una chiave K compresa tra 0 e 20 , che determina lo spostamento delle lettere. ● Cifratura → si sostituisce ogni lettera del testo originale con quella che si trova K posizioni avanti nell’alfabeto (eseguendo l'operazione modulo 21 per evitare di uscire dai limiti dell'alfabeto) → (X + K) % 21Decifratura → si esegue l'operazione inversa, ovvero si sposta la lettera all'indietro di K posizioni nel medesimo alfabeto → (X - K + 21) % 21 Esempio: Buongiorno con K = 3 diventa earqlnruqr Questo cifrario è considerato molto debole perché è vulnerabile a un attacco di tipo brute force (provo con tutte le chiavi). Inoltre, il testo cifrato mantiene dei pattern e delle regolarità visibili derivati dal testo in chiaro, come ad esempio le doppie delle parole. Nonostante ciò, decifrare il testo può risultare difficile se è molto corto e presenta più corrispondenze possibili.

CIFRARI MONOALFABETICI A 1 LETTERA

I cifrari monoalfabetici a 1 lettera sono un tipo di cifrario " character oriented " in cui ogni lettera del testo in chiaro viene sostituita sempre dalla stessa lettera nel testo cifrato. In questo schema, la chiave del cifrario determina una sostituzione arbitraria per ciascuna lettera dell'alfabeto. Poiché la chiave determina una sostituzione arbitraria, significa che ogni lettera può essere sostituita con una delle altre 20 lettere dell'alfabeto , e ciò porta a un gran numero di possibili combinazioni di chiavi. Nel caso di un alfabeto generico, il numero di chiavi possibili è N! , dove N è il numero di lettere dell'alfabeto, portando a un elevato numero di combinazioni. Ciò rende praticamente impossibile decifrare il testo cifrato provando manualmente tutte le possibili chiavi (forza bruta).

Processo di cifratura con un cifrario monoalfabetico a 1 lettera: ● Preparazione della chiave → Si seleziona una sostituzione arbitraria per ciascuna lettera dell'alfabeto , formando la chiave del cifrario. Esempio: Testo in chiaro: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Testo cifrato: P Q R S T U V W X Y Z A B C D E F G H I J K L M N O ● Cifratura del testoogni lettera del testo in chiaro viene sostituita con la corrispondente lettera nel testo cifrato , utilizzando la chiave precedentemente preparata. Esempio: Ciao con la chiave di prima diventa Rtfp poiché C → R, I → T, A → F, O → P ● Decifratura del testosi utilizza la stessa chiave per invertire il processo. Ogni lettera del testo cifrato viene sostituita con la corrispondente lettera nel testo in chiaro, utilizzando la chiave. Nonostante l'apparente sicurezza dovuta al grande numero di chiavi possibili, il cifrario monoalfabetico non è immune agli attacchi. Un avversario potrebbe utilizzare l' analisi crittografica , specialmente se ha conoscenza della lingua in cui è scritto il testo. Questo perché il testo cifrato conserva alcune regolarità statistiche del testo originale , come la presenza di doppie lettere o la frequenza delle lettere. Per decifrare il messaggio, si può ricorrere alla crittanalisi statistica , dove: ● Si confronta la frequenza delle lettere nel testo cifrato con quelle della lingua del testo in chiaroSi ipotizzano possibili corrispondenze tra le lettere del testo cifrato e quelle del testo originarioSi verifica se il risultato parziale ha senso nella lingua del testo in chiaro. Se non ha senso, si annulla una parte delle lettere ipotizzate e si riprova con altre. Se il testo cifrato è lungo e contiene porzioni fisse o facilmente riconoscibili, l'attacco risulta più semplice. Tuttavia, se il testo cifrato è corto o non presenta chiari pattern, l'operazione di decifratura diventa più complessa.

CIFRARI MONOALFABETICI A N LETTERE

In un cifrario monoalfabetico ad N lettere, ogni sequenza di N lettere del testo in chiaro viene sempre sostituita dalla stessa sequenza fissata di N lettere nel testo cifrato. Questo aumenta il numero di chiavi rispetto al cifrario monoalfabetico a una lettera. Esempio: Con N = 2 e un alfabeto di 21 lettere, il numero di chiavi sarebbe pari a (21 * 21)! Processo di cifratura con cifrario monoalfabetico a N lettere: ● Preparazione della chiave → si genera una chiave di cifratura che stabilisce la corrispondenza tra le sequenze di N lettere del testo in chiaro e le sequenze di N lettere del testo cifrato. ● Divisione del testo in chiaro → il testo in chiaro viene diviso in sequenze di N lettere ciascuna. ● Cifratura delle sequenze → per ogni sequenza di N lettere del testo in chiaro, viene determinata la sequenza corrispondente nel testo cifrato utilizzando la chiave di cifratura.Ottenimento del testo cifrato → le sequenze cifrate vengono concatenate per formare il testo cifrato completo. ● Decifratura del testo cifrato → utilizzando la stessa chiave di cifratura, si decifrano le sequenze di N lettere del testo cifrato per ottenere il testo in chiaro originale. Esempio: Supponiamo di avere una chiave di cifratura che associa le seguenti corrispondenze di digrafi (sequenze di 2 lettere): "ST" corrisponde a "XY" "EL" corrisponde a "ZW" "LA" corrisponde a "UV" Se il nostro testo in chiaro è "STELLA", la cifratura procede come segue: "ST" → "XY” "EL" → "ZW” "LA" → "UV" Quindi, il testo cifrato sarebbe "XYZWUV".

Generazione Testo Cifrato → le coppie di lettere cifrate vengono combinate per formare il testo cifrato finale. Esempio: Quindi “cervo” diventa: “ucezxu” Rimane possibile l'analisi statistica in quanto si possono esaminare i digrafi per rilevare pattern significativi. La decifratura risulta più facile con testi cifrati più lunghi e in presenza di parti fisse o probabili nel testo originale.

CIFRARI POLIALFABETICI

In un cifrario polialfabetico, una lettera o un gruppo di lettere possono essere cifrati in modi diversi , utilizzando trasformazioni alfabetiche diverse, a seconda della loro posizione nel testo. Questo rende molto più difficile condurre un'analisi statistica, poiché non c'è una sostituzione fissa per ciascuna lettera.

● CIFRARIO DI VIGENÈRE

Il cifrario di Vigenère è un esempio di cifrario polialfabetico character oriented. Ogni lettera nel testo viene cifrata utilizzando una sostituzione diversa basata sulla posizione del testo e sulla sottochiave corrispondente. Questo rende l'analisi statistica molto difficile, ma se l'avversario conosce la lunghezza della chiave e ha parti fisse del testo in chiaro, può ancora essere possibile condurre un attacco. Procedimento per cifrare utilizzando il cifrario di Vigenère: ● Si seleziona una chiave K = K 0 , K 1 , K 2 , …, KN-1 dove ogni sottochiave K consiste in un numero tra 0 a 20 ( come le lettere dell’alfabeto italiane). ● ● Per cifrare , si applica al testo una serie di cifrari di Cesare corrispondenti a sottochiavi basate sulla posizione nel testo e nella chiave. La cifratura avviene secondo la formula: CJ = (TJ + K(J % N)) % 21 , dove K(J % N) è la sottochiave corrispondente alla posizione J del testo e N rappresenta la lunghezza della chiave. ● ● Per decifrare , si applica la decifratura dei cifrari di Cesare corrispondenti alle sottochiavi. La decifratura avviene secondo la formula: TJ = (CJ - K(J % N)) % 21 oppure TJ = (CJ - K(J % N) + 21) % 21 Esempio: Supponiamo di avere il seguente testo: "HELLO" e la chiave K = [3, 7, 9, 2, 5].

  1. Converto il testo in numeri secondo l'alfabeto dato (A=0, B=1, ..., Z=20): H(7) E(4) L(11) L(11) O(14)
  2. Applico la cifratura lettera per lettera utilizzando la chiave fornita: ○ H + 3 = 7 + 3 = 10 (K) ○ E + 7 = 4 + 7 = 11 (L) ○ L + 9 = 11 + 9 = 20 (U) ○ L + 2 = 11 + 2 = 13 (N) ○ O + 5 = 14 + 5 = 19 (T) Il testo cifrato sarà "KLUNT".

CIFRARI BIT ORIENTED

Nei cifrari bit-oriented, la sostituzione alfabetica è sostituita dall'operazione XOR. Lo XOR trasforma un bit X in un qualsiasi altro bit Y, utilizzando una chiave K. Quando si lavora con byte (8 bit), lo XOR trasforma 8 bit di input in qualsiasi altra sequenza di 8 bit, utilizzando una chiave K di 8 bit.

● CIFRARIO DI VERNAM

Il cifrario di Vernam è una tecnica di crittografia che utilizza l'operazione XOR (esclusione logica) per cifrare e decifrare i dati. È sostanzialmente la versione bit oriented del cifrario di Vigenère. Procedimento per cifrare utilizzando il cifrario di Vernam: ● Selezione della chiave → si seleziona una chiave K, costituita da una sequenza di bit (0 o 1), dove ogni sottochiave Ki rappresenta un bit della chiave. ● Cifratura → si sostituisce il bit Tj del testo con il bit TJ XOR K(J%N) , dove J è la posizione all’interno del testo in chiaro e N rappresenta la lunghezza della chiave. ● Decifratura → si sostituisce il bit CJ del testo cifrato con il bit CJ XOR K(J%N). Questo è possibile perché l'operazione XOR è invertibile , cioè se X XOR Y = Z, allora Z XOR Y = X. Esempio: Testo in chiaro: 0101 0101, Chiave: 0111 Ora eseguiamo l'operazione XOR bit per bit tra il testo in chiaro e la chiave: ○ Testo in chiaro: 0101 0101 ○ Chiave: 0111 ○ Risultato XOR: 0010 0010 Il testo cifrato risultante è "0010 0010". Con la conoscenza della lunghezza N della chiave , è possibile analizzare statisticamente i bit distanti N posizioni per individuare la frequenza di gruppi specifici di bit. Inoltre, la decrittazione dei testi più lunghi diventa più facile grazie alla disponibilità di una maggiore quantità di dati. Se parti del testo rimangono fisse, come saluti standard o intestazioni, la decrittazione diventa notevolmente più agevole poiché i pattern ricorrenti possono essere identificati nel testo cifrato.

● ONE TIME PAD

Il cifrario One-Time Pad è simile al cifrario di Vernam , ma la chiave ha la stessa lunghezza del testo da cifrare. È considerato l'unico cifrario totalmente sicuro ma non è pratico a causa delle difficoltà nell'ottenere e gestire chiavi lunghe quanto il testo. Tuttavia, è sicuro contro avversari con una potenza computazionale infinita poiché ogni lettera viene sostituita in modo univoco. Procedimento per la cifratura One-Time Pad: ● Selezione della chiave → generare una chiave casuale lunga tanti bit quanti quelli del testo da cifrare.Cifratura → si fa lo XOR tra ogni carattere del testo in chiaro e il corrispondente carattere della chiave. ● Decifratura → si fa lo XOR tra ogni carattere del testo cifrato e il corrispondente carattere della chiave. Esempio: Supponiamo di avere: ○ Testo in chiaro: 10101010 ○ Chiave di cifratura: 11001100 Applicando l'operazione XOR bit per bit tra il testo e la chiave si ottiene: 01100110

CIFRARI A PERMUTAZIONE

I cifrari a permutazione sono una classe di algoritmi crittografici che operano sulla base della permutazione dei simboli del testo in chiaro. Questi cifrari manipolano la posizione dei caratteri nel testo, ma non il loro valore o contenuto. Offrono un livello di sicurezza che dipende dalla complessità delle regole di permutazione e dalla lunghezza della chiave utilizzata. Essi sono spesso utilizzati insieme ad altri tipi di cifrari, come i cifrari a sostituzione, per aumentare la sicurezza complessiva del sistema crittografico.

PRINCIPI CRITTOGRAFIA SIMMETRICA

La crittografia simmetrica si basa su due principi fondamentali formulati da Shannon: ● Confusione → la relazione tra la chiave e il testo cifrato deve essere il più possibile complessa e non correlata. Questo rende estremamente difficile risalire alla chiave crittografica partendo solo dal testo cifrato. ● Diffusione → l'algoritmo di cifratura deve distribuire le correlazioni statistiche del testo in modo uniforme lungo tutto l'alfabeto utilizzato, rendendo difficile un attacco statistico. In altre parole, il cifrario deve mescolare e diffondere i bit del testo originale in modo che le caratteristiche statistiche del testo non siano più evidenti nel testo cifrato.

CIFRARI SIMMETRICI MODERNI

Basati sull’uso del calcolatore → i cifrari simmetrici moderni sono progettati e ottimizzati per essere implementati su calcolatori e dispositivi elettronici, sfruttando le capacità di elaborazione dei computer per eseguire complesse operazioni di crittografia e decrittografia in modo efficiente. ● Combinano permutazioni e sostituzioni → questi cifrari utilizzano una combinazione di tecniche di permutazione (cambiare l'ordine dei dati) e sostituzione (sostituire i dati con altri) per rendere la crittografia più robusta e l’analisi crittografica più difficile. ● Prevedono numerosi round di codifica → i cifrari moderni spesso operano attraverso più "round" o cicli di codifica. In ogni round, vengono eseguite diverse trasformazioni sul testo in chiaro, utilizzando chiavi diverse o derivazioni della chiave principale, aumentando la complessità e la sicurezza del cifrario, poiché è richiesto che un attaccante riesca a decifrare con successo l'output di ogni singolo round per recuperare il testo in chiaro.

MACCHINE A ROTORI

Una macchina a rotori è un dispositivo crittografico meccanico utilizzato per cifrare e decifrare testi in ambito militare (es: Enigma). Funziona in modo simile a una macchina per scrivere, ma invece di stampare le lettere direttamente, utilizza una serie di rotori per sostituire una lettera del messaggio con un'altra lettera. In una macchina a rotori, ogni rotore è composto da una serie di connessioni che collegano un input per ogni lettera dell'alfabeto a un output corrispondente. Ogni rotore determina una sostituzione monoalfabetica delle lettere. Quando si preme un tasto di input , il rotore più esterno ruota di una posizione , creando una nuova sostituzione. Questo rende la macchina un cifrario polialfabetico con un periodo pari al numero di lettere dell'alfabeto (26/21). Nelle macchine a rotori, la chiave crittografica è costituita dal modo in cui le lettere sono collegate nei rotori e dalla posizione iniziale dei rotori stessi. Una macchina con un solo rotore non è particolarmente resistente all'analisi crittografica , poiché conoscerne il periodo di ripetizione e avere un testo cifrato abbastanza lungo potrebbe consentire di identificare schemi ricorrenti, soprattutto se ci sono parti fisse o ripetute nel testo. La vera potenza della macchina a rotori risiede nell' integrazione di più rotori in cascata , dove gli output di un rotore sono gli input del rotore successivo. Ogni volta che il rotore più esterno compie una rotazione completa, il successivo rotore avanza di una posizione (es: se prima l’ordine era A-B-C, diventa B-C-A). Questo significa che avremo NK^ possibili sostituzioni monoalfabetiche , dove N è il numero di lettere dell'alfabeto e K è il numero di rotori. L'utilizzo di più rotori aumenta significativamente la complessità del cifrario e lo rende molto più resistente all'analisi crittografica, rendendo difficile l'identificazione di schemi ricorrenti nel testo cifrato. Tuttavia, per mantenere la sicurezza , l' ordine e la posizione iniziale dei rotori devono rimanere segreti , altrimenti la decifratura sarebbe facilitata.

FEISTEL CIPHER

Il Feistel Cipher è un tipo di cifrario a blocchi che divide il blocco di testo in due metà uguali. In ogni round di cifratura, una delle metà del blocco ( Li ) subisce una trasformazione, detta " Trasformazione di Feistel ", utilizzando lo XOR con l'altra metà del blocco ( Ri ) e una sottochiave ( Ki ) derivata dalla chiave principale. Il processo viene ripetuto per un numero fisso di round. Alla fine, le due metà del blocco di testo vengono combinate per produrre il blocco di testo cifrato. L'idea principale del Feistel Cipher è quella di fornire una struttura simmetrica che consenta una facile implementazione sia della cifratura che della decifratura , utilizzando le stesse operazioni, ma in ordine inverso. Questo tipo di cifrario è stato utilizzato nel Data Encryption Standard (DES) e in molte altre costruzioni crittografiche.

DATA ENCRYPTION STANDARD (DES)

Pubblicato nel 1977, il Data Encryption Standard (DES) è stato il cifrario simmetrico più utilizzato fino al 2002, quando è stato sostituito dall'Advanced Encryption Standard (AES). Tuttavia, il DES continua ad essere utilizzato nella sua forma Triple DES , che mantiene una buona accettabilità grazie alla maggiore lunghezza della chiave (168 bit). Il Data Encryption Standard (DES) è un cifrario simmetrico basato sul Feistel Cipher e sui concetti di diffusione e confusione definiti da Shannon. Il DES opera su blocchi di testo da 64 bit , cifrandoli utilizzando una chiave di 56 bit , e richiede due input: una chiave di 56 bit (che poi viene estesa a 64 bit) e un blocco di testo in chiaro lungo 64 bit. Il processo di cifratura avviene in 16 round, dove ogni passaggio coinvolge operazioni che possono essere eseguite in pochi cicli macchina, per cui è considerato efficiente (veloce). L' unico tipo di attacco noto al DES è il brute force , il che significa che la sua sicurezza dipende principalmente dalla lunghezza della chiave: se la chiave è resa sufficientemente lunga, rende impraticabile l'attacco brute force. Il DES non è invertibile in generale , ma lo diventa se si conosce la chiave utilizzata per la cifratura. Il processo di decrittografia è simile a quello di crittografia, ma le operazioni sono applicate in modo inverso e le chiavi sono utilizzate nell'ordine inverso (1 - 16 → 16 - 1) rispetto alla fase di cifratura. ○ Effetto Valanga → proprietà desiderabile in un algoritmo di crittografia, che stabilisce che una piccola modifica nel testo in chiaro o nella chiave dovrebbe provocare una significativa modifica nel testo cifrato. In altre parole, se viene modificato un singolo bit nel testo in chiaro o nella chiave, ci si aspetta che ciò causi un cambiamento nei bit del testo cifrato. Maggiore è la confusione, maggiore sarà la differenza tra l'input e l'output, espressa come il numero di bit che differiscono, avvicinandosi alla metà del numero totale di bit. ● KEY SCHEDULE: Il Key Schedule è il processo che consente di generare 16 diverse chiavi a partire dalla chiave di 56 bit fornita in input. Ognuna di queste 16 chiavi sarà utilizzata nel rispettivo round di trasformazione del testo in chiaro all'interno dell'algoritmo DES.

Permutazione (P) → applica una permutazione agli output della S-Box. ● XOR Finale → esecuzione di uno XOR tra la parte sinistra dell'input ( Li ) e la parte destra dell'input corrente ( Ri ), insieme alla chiave derivata dal Key Schedule e utilizzata come input nella funzione di Feistel. Queste operazioni vengono ripetute per ogni round del DES, producendo infine il testo cifrato.

ADVANCED ENCRYPTION STANDARD (AES)

L'AES (Advanced Encryption Standard) è un cifrario simmetrico a blocchi che si basa sull’ aritmetica a campi finiti con polinomi e utilizza sostituzione e permutazione , a differenza del DES che si basa su Feistel. Implementa e mantiene le proprietà di diffusione e confusione , fondamentali per la sicurezza crittografica: ● Diffusione → una piccola modifica nel testo in chiaro o nella chiave dovrebbe produrre un cambiamento significativo nel testo cifrato (anche detta “ effetto valanga ”).Confusione → la relazione tra la chiave e il testo cifrato dovrebbe essere complessa e non correlata , in modo che sia estremamente difficile per un attaccante dedurre la chiave utilizzata a partire dal testo cifrato. L'AES è resistente alle analisi crittografiche lineari e differenziali , anche nel caso dell’avvento di calcolatori quantistici. L’unico attacco possibile è quello di brute force. È efficiente sia nell'implementazione hardware che software. ● CARATTERISTICHE: Nell'AES, l'input è sempre suddiviso in blocchi di 128 bit , mentre la chiave può essere di 128 , 192 o 256 bit. Il numero di round , generalmente compreso tra 10+1 e 14+1, dipende dalla lunghezza della chiave utilizzata (10+ per una chiave da 128 bit, 12+1 per 192 bit e 14+1 per 256 bit). Ogni round utilizza una sottochiave derivata dalla chiave principale, lunga 128 bit , secondo il key scheduler. L'AES utilizza matrici di 4x4 byte , conosciute come " matrici di stato ", per rappresentare sia l'input (il testo in chiaro) che l'output (il testo cifrato) dell'algoritmo. Il testo viene diviso in blocchi di 16 byte ciascuno e organizzato per colonne all'interno di queste matrici. Ogni byte nella matrice è trattato come un elemento del campo di Galois(2^8 ) di 8 bit (1 byte). Questo campo (GF) è un insieme di 2^8 elementi, che comprende tutti i possibili valori di un byte (da 00000000 a 11111111), e supporta un insieme di operazioni quali somma, sottrazione, prodotto e divisione. È chiamato “campo” perché le operazioni sono chiuse rispetto all'insieme, ovvero le operazioni all'interno del campo di Galois generano risultati che rimangono all'interno dello stesso insieme di valori byte possibili. Nel campo finito utilizzato dall'AES: ● L'operazione di SOMMA è equivalente all'operazione di XOR ● L'operazione di PRODOTTO nel campo finito utilizzato dall'AES è definita in modo che il risultato della moltiplicazione di due byte rimanga all'interno del campo. Per fare ciò, GF utilizza l' aritmetica modulo p , dove Zp rappresenta l'insieme di numeri da 0 a p-1. Esempio: se consideriamo p=3, l'aritmetica modulo 3 implica che 1 + 2 = 0. ● Ogni byte B ha un inverso moltiplicativo B-1 , tale per cui il prodotto di B e B-1^ è uguale a 00000001 (identità). ● Una volta definite queste operazioni di somma e prodotto, è possibile eseguire moltiplicazioni tra matrici utilizzando queste regole. Nota (non penso sia troppo importante): Per moltiplicare un byte per 02, il che significa raddoppiare il suo valore, procediamo come segue:

  1. Shiftiamo il byte a sinistra di 1 bit, aggiungendo uno 0 alla fine. Questo ci dà un nuovo byte, chiamiamolo y.
  2. Se il bit più significativo (b7, a sinistra) di y è 0, allora il risultato è semplicemente y.
  3. Se il bit più significativo (b7) di y è 1, allora facciamo uno XOR tra y e il valore binario del polinomio irriducibile P, che è 100011011. Questo approccio è giustificato considerando i byte come polinomi con coefficienti binari. Esempio: i l byte 10001011 può es s ere i nterpretato come i l pol i nomi o x^7 +x^3 +x+1. Operazioni come somma e moltiplicazione sono definite su questi polinomi, con l'operazione di modulo rispetto al polinomio irriducibile P, che in questo caso è x^8 +x^4 +x^3 +x+1.

AddRoundKey → viene effettuata un’ operazione di XOR tra la chiave del round e la matrice di stato ottenuta dai passaggi precedenti. La chiave del round viene ottenuta dalla chiave principale attraverso un processo chiamato Key Scheduler. Nell'ultimo round di cifratura ( round N ), vengono eseguite solo tre operazioni: SubBytes, ShiftRows e AddRoundKey. Dunque, escludendo l'operazione di MixColumns nell'ultimo round di cifratura, si mantiene una simmetria tra il processo di cifratura e quello di decifratura: quando si considera l'ordine delle operazioni dall'alto al basso durante la cifratura e dal basso all'alto durante la decifratura, le operazioni rimangono le stesse, semplificando l'implementazione dell’algoritmo. NB : durante la fase di decifratura , pur mantenendo lo stesso insieme di operazioni, i loro effetti vengono invertiti o modificati per garantire la corretta ricostruzione dei dati originali. Di conseguenza, le operazioni vengono rinominate come " inverse ShiftRows ", " inverse SubBytes " e " inverse MixColumns ". ● KEY SCHEDULER: Il processo di generazione delle sottochiavi inizia con la divisione della chiave iniziale in quattro parole da 4 byte ciascuna, indicate w 0 , w 1 , w 2 e w 3. Queste quattro parole rappresentano la chiave del round 0. Successivamente, si definiscono altre 40 parole che andranno, a gruppi di 4 byte, a formare le varie round key, utilizzando la seguente formula: Wi = f ( Wi-1 ) XOR Wi- La funzione f varia in base alla posizione della parola nella sequenza: ● Se l'indice i NON è multiplo di 4 , la funzione f ( Wi-1 ) restituisce Wi-1 (nel l o s chema , f non è di retta mente col l egata ) ● Se l'indice i è multiplo di 4 , la funzione f ( Wi-1 ) è definita come f ( W ) = SubWord (RotWord ( W )) XOR RC , dove: ○ RotWord → esegue uno shift circolare a sinistra di un byte sulla parola di 4 byte. ○ SubWordsostituisce ogni byte della parola di 4 byte con il corrispondente byte dalla S-Box AES, una tabella di sostituzione non lineare. ○ XOR con la costante di round (RC) → esegue un'operazione di XOR tra la sottochiave ottenuta e una costante di round specifica per ogni round di cifratura. I passaggi vengono ripetuti per generare le 10 sottochiavi dei round di cifratura, assicurando l'unicità di ciascuna.

In totale, vengono generate 44 parole, includendo la chiave iniziale e le sottochiavi (40 + 4). APPUNTI: Correttezza in crittografia → un algoritmo di cifratura deve garantire che se cifriamo un messaggio e poi applichiamo il processo inverso di decifratura utilizzando lo stesso algoritmo e la stessa chiave, otteniamo esattamente il messaggio originale, senza alcuna perdita di informazioni.