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


Riassunto Teoria Network Security, Appunti di Sicurezza delle reti

Il seguente documento contiene nozioni teoriche di network security. Gli argomenti trattati sono i seguenti: - Algoritmi di cifratura: basi, algoritmi - crittografia simmetrica: DES (molto dettagliato), 3DES - stream cipher - metodi di utilizzo dei block cipher - funzioni hash - Modification Detection Codes - Message Authentication Codes - Algoritmi RSA e Diffie-Helman nel dettaglio - protocolli di autenticazione e attacchi sicurezza WAWN, LAN - GSM, WPA, EPA, PGP, S/MIME

Tipologia: Appunti

2019/2020

In vendita dal 17/05/2020

worms22
worms22 🇮🇹

3

(1)

16 documenti

1 / 67

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
1
Network Security
Parte 1: introduzione alla crittografia
1a- Basics
Autenticazione: procedura che viene usata per verificare l'identità di qualcuno o qualcosa
Controllo degli accessi: capacità di discriminare tra i diritti di ognuno dei partecipanti ad una
sessione di comunicazione. Per poter fare controllo degli accessi, è necessario prima fare
autenticazione.
Confidenzialità, riservatezza: soltanto gli utenti autorizzati devono avere accesso alle informazioni
protette. È necessaria prima l'autenticazione.
Protezione d'integrità: garantire che nessuno abbia modificato il contenuto di un messaggio. In
generale, si tratterà di garantire che nessuno possa modificare il messaggio senza essere scoperto.
Non ripudio: garanzia, che si può dare ad un messaggio, che il mittente non possa negare di aver
scritto un messaggio. Dall'altra parte, il non ripudio può essere visto come la garanzia che il
destinatario, una volta ricevuto un messaggio, non abbia la possibilità di dire di non averlo mai
ricevuto.
Gli attacchi possono essere commessi nei confronti sia dei protocolli di crittografia che di rete. In
generale, si distinguono due tipi di attacco:
Attivo, in cui l'attaccante è in grado di generare traffico da immettere nella rete;
Passivo, in cui l'attaccante si limita ad intercettare il traffico in una o entrambe le direzioni,
per avere accesso a dati riservati.
La crittologia è l'insieme di diverse discipline tra cui:
- Crittografia, studia gli algoritmi di cifratura, cioè i meccanismi matematici attraverso i quali
raggiungere la segretezza;
- Crittoanalisi, studia i meccanismi per rompere gli algoritmi di cifratura progettati dalla
crittografia.
I protocolli di cifratura sono l'insieme di regole che devono essere applicate affinché un algoritmo
di cifratura possa essere sicuro.
Per una trattazione rigorosa della crittografia, si rimanda al corso di matematica discreta; qui si
useranno gli strumenti forniti dalla matematica, in maniera non troppo rigorosa.
Notazione
è l'alfabeto, un insieme finito di elementi con cui rappresentare un messaggio.
è l'insieme dei possibili messaggi che si possono voler trasmettere, in chiaro.
è un elemento di , un messaggio che si vuole trasmettere.
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

Anteprima parziale del testo

Scarica Riassunto Teoria Network Security e più Appunti in PDF di Sicurezza delle reti solo su Docsity!

Network Security

Parte 1: introduzione alla crittografia

1a- Basics

Autenticazione: procedura che viene usata per verificare l'identità di qualcuno o qualcosa Controllo degli accessi: capacità di discriminare tra i diritti di ognuno dei partecipanti ad una sessione di comunicazione. Per poter fare controllo degli accessi, è necessario prima fare autenticazione. Confidenzialità, riservatezza: soltanto gli utenti autorizzati devono avere accesso alle informazioni protette. È necessaria prima l'autenticazione. Protezione d'integrità: garantire che nessuno abbia modificato il contenuto di un messaggio. In generale, si tratterà di garantire che nessuno possa modificare il messaggio senza essere scoperto. Non ripudio: garanzia, che si può dare ad un messaggio, che il mittente non possa negare di aver scritto un messaggio. Dall'altra parte, il non ripudio può essere visto come la garanzia che il destinatario, una volta ricevuto un messaggio, non abbia la possibilità di dire di non averlo mai ricevuto. Gli attacchi possono essere commessi nei confronti sia dei protocolli di crittografia che di rete. In generale, si distinguono due tipi di attacco:  Attivo, in cui l'attaccante è in grado di generare traffico da immettere nella rete;  Passivo, in cui l'attaccante si limita ad intercettare il traffico in una o entrambe le direzioni, per avere accesso a dati riservati. La crittologia è l'insieme di diverse discipline tra cui:

  • Crittografia, studia gli algoritmi di cifratura, cioè i meccanismi matematici attraverso i quali raggiungere la segretezza;
  • Crittoanalisi, studia i meccanismi per rompere gli algoritmi di cifratura progettati dalla crittografia. I protocolli di cifratura sono l'insieme di regole che devono essere applicate affinché un algoritmo di cifratura possa essere sicuro. Per una trattazione rigorosa della crittografia, si rimanda al corso di matematica discreta; qui si useranno gli strumenti forniti dalla matematica, in maniera non troppo rigorosa.

Notazione

 è l'alfabeto, un insieme finito di elementi con cui rappresentare un messaggio.  è l'insieme dei possibili messaggi che si possono voler trasmettere, in chiaro.  è un elemento di , un messaggio che si vuole trasmettere.

 è l'insieme dei possibili messaggi che si possono voler trasmettere, in forma cifrata. In generale, si ha  è il messaggio , ma in forma cifrata. è rappresentato con l'alfabeto.  è l'insieme di tutte le chiavi possibili.  è una chiave,. Lo schema generico è il seguente:  La coppia è il keypair, la coppia di chiavi che servono per poter comunicare.  L’algoritmo di cifratura è ed è una biiezione.  L’algoritmo di decifratura è In generale, l'algoritmo deve essere una biiezione, in modo tale da garantire che possa essere invertita; ogni elemento deve avere un unico rappresentante , così come deve avere un unico rappresentante.

Block cipher

Un algoritmo di tipo block cipher (cifratura a blocchi) è un algoritmo che accetta soltanto messaggi di una certa lunghezza; se il messaggio è più lungo, quindi, questo dovrà essere spezzettato. Sia che sono messaggi lunghi esattamente bit, che è la lunghezza del blocco, mentre le chiavi e possono avere, in generale, lunghezze diverse. Quando il blocco è lungo , si ha cioè, la lunghezza del blocco incide sul numero massimo di possibili messaggi che ci possono essere (tipicamente, ). Ad ogni coppia corrisponde esattamente un unico , quindi se un certo appare più volte all'interno del messaggio originale, allora anche apparirà più volte nel messaggio cifrato. Si dice, allora, che è un sistema senza memoria.

L'entropia è una grandezza che definisce il livello di incertezza a cui è soggetta una variabile casule, indica qual è il grado di casualità associata ad un fenomeno. Se per esempio ad un evento è associata tutta la probabilità allora l'entropia sarà nulla perché la variabile casuale ha un risultato deterministico, con probabilità. Si ha:   se e soltanto se c'è un per un qualche e c'è , cioè non c'è alcuna incertezza sul risultato della variabile casuale.  , cioè tutti i risultati sono equiprobabili, non si può predire assolutamente nulla del risultato che si avrà da ogni singolo esperimento. L'entropia associata ad un messaggio è l'incertezza associata all'osservazione di all'uscita del canale di comunicazione. Con indicheremo, da qui in avanti, l'entropia associata alla chiave dell'algoritmo di cifratura. Vedremo che la chiave migliore è quella con la massima casualità nei bit, il che significa che tutti i bit sono equiprobabili nella scelta della chiave: questo fenomeno è strettamente legato all'entropia; in particolare, cercheremo la chiave ottima attraverso la massimizzazione dell'entropia. Nel caso di uno spazio di chiavi grande (cioè è il numero di bit), l'entropia associata deve essere

Segretezza perfetta (perfect secrecy)

Un algoritmo di cifratura offre la segretezza perfetta se, e solo se, e sono statisticamente indipendenti. Questa definizione di segretezza perfetta è di Shannon e dice che:  Osservando non si deve poter dedurre alcuna informazione di ;  L’incertezza su dopo aver osservato deve essere la stessa che si aveva prima di osservare. Affinché un algoritmo possa offrire la sicurezza perfetta, è necessario che cioè, l'entropia della chiave deve essere maggiore o almeno uguale a quella del messaggio di partenza. L’unico algoritmo che offre la perfect secrecy è l'algoritmo di Vernam, o one-time-pad.

Tra le ipotesi si ha:  La chiave è lunga esattamente quanto ;  La chiave non può essere usata più di una volta;  Il generatore di numeri casuali usato per generare la chiave è perfetto: ogni singolo bit ha probabilità di valere 1;  ed sono statisticamente indipendenti. Questo algoritmo consiste nel porre in XOR e. Si deve poi trasmettere la chiave attraverso un canale sicuro, mentre il messaggio può essere trasmesso su un canale insicuro. Il ricevitore non dovrà far altro che porre nuovamente in XOR le due stringhe (ora perfettamente casuali) per ottenere nuovamente il messaggio originale. Appurato che la sicurezza perfetta non si può ottenere, possiamo però pensare che questa possa essere un limite superiore a cui far tendere un generico algoritmo di cifratura. 1b- Crittografia simmetrica Nel caso di algoritmi di cifratura simmetrici, Alice e Bob sono in possesso della stessa chiave di cifratura k che condividono: questa chiave permette loro di comunicare attraverso un canale insicuro. Il problema principale di questo approccio è la distribuzione della chiave.

Symmetric block cipher

Scopi principali della cifratura a blocchi sono:  Fare in modo che ciascun bit di dipenda da tutti i bit di e di :  Rendere il più difficile possibile trovare una qualsiasi relazione statistica tra ed senza conoscere ;  Cambiare un singolo bit di dovrebbe significare che ogni singolo bit di ha il 50% di probabilità di essere cambiato;  Cambiare un singolo bit di dovrebbe significare un cambiamento di. Substitution cipher Sono una sottoclasse semplice degli algoritmi a blocchi. Si usa la chiave come indice delle possibili permutazioni su. Imponendo i messaggi di lunghezza , ogni chiave sarà lunga bit, con.

modo tale da amplificare l'effetto valanga: infatti, se si facesse lavorare l'algoritmo per una sola volta, un bit cambiato avrebbe effetto soltanto su bit (il singolo blocchetto su cui è operata la sostituzione); al contrario, a noi interessa che, se viene cambiato un solo bit della parola originale, tutti i bit del testo cifrato risultino invertiti con probabilità.

Data Encryption Standard (DES)

L'algoritmo di cifratura DES è simmetrico a blocchi, in cui  Il numero di bit del blocco è bit;  La lunghezza della chiave è bit, più altri 8 bit di ridondanza (che servono per proteggere la chiave da errori). Questo algoritmo è stato pensato per essere molto efficiente se implementato in hardware, e molto inefficiente se implementato in software; infatti, il DES lavora sui singoli bit, mentre i processori devono gestire almeno 8 bit per volta (nei processori moderni, 32 o 64). Il primo e l'ultimo stadio, le permutazioni, sono indipendenti dalla chiave, ed hanno come unico scopo quello di rendere meno efficiente l'implementazione in software dell'algoritmo. L'algoritmo, inoltre, può essere usato sia per cifrare che per decifrare, cambia soltanto il modo con cui si devono derivare le sottochiavi. Il generatore di sottochiavi si occupa di derivare delle chiavi da 48 bit, una per ogni step dell'algoritmo. Nel caso in cui si stia decifrando invece che cifrare, allora le chiavi andranno usate in ordine inverso per i vari step. Le permutazioni iniziale e finale, che non sono casuali, sono una lo speculare dell'altro, cioè si annullano a vicenda. Questa loro proprietà fa sì che la stessa implementazione possa essere usata sia per cifrare che per decifrare il testo.

Generatore di sottochiavi Gli step dell'algoritmo

Note finali su DES Le chiavi scelte possono essere di tre tipi:

  • Weak, cioè ad un certo punto le sottochiavi generate diventano composte di soli "1";
  • Semi-weak, cioè ad un certo punto le sottochiavi diventano composte da "101010";
  • Sicure, se non ci sono regole. Si può dimostrare che le permutazioni iniziali non aumentano la sicurezza dell'algoritmo. Infatti, siccome le permutazioni sono deterministiche, queste possono essere tolte senza conoscere la chiave. Eseguendo la permutazione dal testo cifrato, si ottiene un nuovo testo, che ovviamente non può essere meno sicuro di quello permutato. Se ne ricava che l'unico motivo per cui esistono le permutazioni iniziale e finale è rendere meno efficiente l'implementazione software rispetto all'implementazione hardware; infatti, in questo ultimo caso, fare una permutazione deterministica dei bit è una cosa estremamente semplice. Al contrario, le permutazioni che si trovano all'interno dei vari step dell'algoritmo sono sicuramente importanti per amplificare l'effetto valanga: grazie a loro, infatti, si è potuto ridurre il numero di iterazioni da fare per far in modo che la modifica di un bit interessi tutti i bit del cifrato con probabilità. 3DES Dal momento che la chiave del DES è troppo corta, considerando il fatto che DES è comunque un algoritmo sicuro, si è deciso di standardizzare un uso diverso del DES: il 3DES. Come il suo predecessore, il 3DES lavora su blocchi di 64 bit, ma utilizza una chiave lunga il doppio, La chiave totale è la concatenazione di due chiavi DES, quindi la lunghezza totale della chiave è bit, da cui lo spazio delle chiavi ha dimensione. Perché per decriptare basta utilizzare le chiavi in senso opposto a quello usato in fase di criptazione? Nell’ultimo round di E: ܮଵ଻ = ܴ ଵ଺ ܴ ଵ଻ = ܮଵ଺ ⊕ ݂ (ܴ (^) ଵ଺, ݇ ଵ଺) Nel primo round di D: ܮଵ଻ = ܴ ଵ଺ ܮଵ଺ = ܴ ଵ଻ ⊕ ݂ (ܮଵ଻, ݇ ଵ଺) = ܮଵ଺ ⊕ ݂ (ܴ (^) ଵ଺, ݇ ଵ଺) ⊕ ݂ (ܴ (^) ଵ଺, ݇ ଵ଺) = ܮଵ଺ ⊕ 0 = ܮଵ଺

Le chiavi e nel 3DES sono usate in cascata: cioè:  Si cifra il testo con DES e con la chiave ;  Si decifra il risultato con e con la chiave ;  Si cifra nuovamente con DES e con la chiave. Questo utilizzo delle chiavi permette la compatibilità con il DES originale: infatti, basta usare ed il risultato è un DES (3 volte più lento) compatibile con l'originale. Questo fatto è possibile grazie proprio alla natura simmetrica del DES.

Stream ciphers

Gli algoritmi di cifratura a flusso sono un particolare tipo di algoritmo di cifratura a blocco, in cui abbiamo dei blocchi molto piccoli (di solito, da 1 bit fino a 8 bit), ma l'algoritmo è detto statefull, cioè viene preso in considerazione uno stato, una condizione dell'algoritmo, dovuto a ciò che è stato cifrato precedentemente. Con un algoritmo di questo tipo, non si può più creare un attacco di tipo probabilistico, perché la stessa sequenza di bit nel messaggio sarà codificata con due blocchi diversi in. Stream cipher sincroni Come possiamo vedere dal grafico, la chiave viene usata per generare iterativamente delle sottochiavi da usare all'interno di una funzione , che di norma è uno. In questa maniera, ogni singola sottochiave generata è lunga esattamente come il blocco che viene cifrato, quindi anche i blocchi di testo cifrato e non cifrato corrispondono tra loro. Con questo approccio, siamo lontanissimi dalla perfect forward secrecy. Per decifrare, si ha lo schema:

Metodi di utilizzo dei block cipher (modes of operation)

Nel caso in cui il testo da cifrare sia più lungo della dimensione del blocco, per poter usare un algoritmo di cifratura a blocchi, servono delle regole. Ci sono diversi modi di operare, con vantaggi e svantaggi, tuttavia nessuno di questi può garantire l'integrità dei dati o l'autenticazione del mittente, ma soltanto la confidenzialità tra chi cifra e chi decifra, indipendentemente da chi essi siano. Electronic Code Book (ECB) ECB è la modalità di utilizzo dell'algoritmo più semplice in assoluto. Ad un blocco del messaggio corrisponde un blocco del testo cifrato. Un utilizzo di questo tipo espone ad attacchi non solo passivi (come l'analisi di frequenza), ma anche attivi, come per esempio il man in the middle: chiunque può cambiare il messaggio, oppure rimandarlo successivamente (replay attack), o anche solo modificare l'ordine con cui vengono mandati i blocchi. Si tratta di un protocollo molto semplice, in cui gli errori si propagano solo all'interno del singolo blocco. Meglio non usarlo. Cipher Block Chaining mode (CBC) CBC è il tentativo di inserire un po' di memoria all'interno di un algoritmo a blocchi. Anche in questo caso, gli errori non si propagano, se non al blocco interessato ed al successivo. Interessante notare come, in presenza dello stesso blocco in posizioni diverse, il testo cifrato non è

identico: questo fatto rende il protocollo molto più sicuro dal punto di vista degli attacchi di frequenza. Se da un lato un algoritmo di questo tipo è molto più sicuro dell'ECB da modificazioni dell'ordine dei blocchi, questi possono sempre essere aggiunti o modificati in una maniera tale da rendere il tutto predicibile. Ovviamente, visto che c'è un vettore di inizializzazione IV, questo dovrà essere casuale e non dovrà essere usato due volte. Output FeedBack mode (OFB) OFB è il punto di congiunzione tra gli algoritmi di cifratura a blocco ed a flusso. Con questo metodo di cifratura, abbiamo tre diversi flussi di dati:  il messaggio in chiaro, ;  la chiave generata, ;  il testo cifrato,. Questo tipo di cifratura non propaga gli errori, dal momento che qualsiasi errore nel testo cifrato influenza soltanto il blocco all'interno del quale si trova l'errore. È da notare il fatto che la chiave generata, cioè il flusso di bit , può essere calcolato in anticipo, partendo dalla chiave , senza nemmeno conoscere il messaggio che si dovrà poi mandare. Questo stesso flusso, inoltre, può avere la dimensione che si preferisce, da blocchi di un singolo bit a un unico blocco totale. Un difetto di questo approccio è il fatto che l'algoritmo non è protetto dalla perdita di dati: se manca anche un solo bit tutto il flusso che segue risulta sbagliato (è uno stream cipher sincrono). Si noti anche il fatto che non è necessario che la funzione sia invertibile, infatti si usa sempre in senso diretto (non applicabile in caso di cipher asimmetrici).

Le funzioni di hash possono essere con o senza chiave; se sono senza chiave, vengono chiamate Modification Detection Code (MDC), altrimenti sono chiamate Message Authentication Code (MAC). Lo scopo degli MDC è garantire la protezione d'integrità dei dati, cioè garantire che il messaggio di cui si possiede il digest è proprio quello che si sta leggendo. Nel caso in cui si abbia a che fare con dei MAC, allora gli scopi sono non solo la protezione di integrità, ma anche l'autenticazione dell'autore del messaggio. Lo scopo principale è fare in modo che trovare due messaggi che collidono significhi calcolare almeno hash, dove è la lunghezza dell'hash stesso.

Modification Detection Codes (MDC)

Gli algoritmi MDC devono avere alcune proprietà, tra cui:  Preimage resistance, deve essere impossibile calcolare il messaggio a partire dal digest. Questa proprietà è importante, perché tra gli usi che si fa degli MDC c'è quello dell'autenticazione, dove l'utente si autentica al server mandando il digest dove la challange è una stringa casuale di bit imposta dal server (cosa da non fare, è troppo pericolosa).  Weak collision resistance, deve essere possibile, dato , trovare un messaggio tale per cui. Questo fatto è essenziale per le cosiddette firme digitali. Quello che si fa, infatti, è andare a firmare il digest del messaggio (che di solito è più corto del messaggio stesso), in modo tale da non rendere il calcolo della firma e la verifica un lavoro troppo oneroso per i calcolatori (pensiamo, ad esempio, al chip integrato in una smartcard, ha pochissima potenza computazionale). Se l'MDC non è sicuro da attacchi di questo tipo, allora sarà facile trovare un messaggio arbitrario che risulti esser stato firmato da qualcuno.  Strong collision resistance, deve essere impossibile trovare una qualsiasi coppia di messaggi ed che abbiano qualsivoglia digest. Questo fatto è importante perché l'attaccante potrebbe avere qualche potere sul messaggio da firmare; in questo caso, vale la regola che (se l'MDC è sicuro) la resistenza della funzione di hash è direttamente proporzionale alla lunghezza del digest.  One-way property, deve essere impossibile ricavare il testo del messaggio a partire dal suo digest. Perché un MDC offra questa proprietà, ci deve essere una dimostrazione; ad oggi, non esiste alcuna dimostrazione che provi questa proprietà per nessun MDC usato, se non sotto certe ipotesi non sempre verificate; nonostante questo, può essere dimostrata la complessità computazionale minima per ricostruire il messaggio, dato il digest. Funzioni di hash iterative Quello che si fa con le funzioni iterative è dividere il messaggio in blocchi e continuare a comprimere questi blocchi fino a raggiungere la lunghezza finale del digest.

La funzione di compressione lavora su bit, quindi servono iterazioni della funzione per avere il risultato in bit da dare alla trasformazione finale. La funzione è dove il primo elemento è un vettore di inizializzazione , che può essere un valore predefinito (non deve essere casuale, altrimenti la funzione non sarebbe ripetibile), oppure una funzione del messaggio stesso. MD L'algoritmo MD5 è stato pubblicato nel 1991 con l'RFC 1321, ed è il successore dell'MD4. Per questo protocollo  Il messaggio può avere qualsiasi dimensione;  La lunghezza del digest è di 128 bit;  La funzione di compressione lavora con blocchi di dati da 512 bit ed è a 4 passi. Per ovviare al fatto che il messaggio potrebbe non essere lungo esattamente un multiplo della dimensione del blocco , si ha un padding. Quindi, il testo passato alla funzione di compressione è composto da  Il messaggio da proteggere;  Un bit a ;  Tanti 0 quanti ne sono necessari;  La lunghezza del messaggio, espressa in 64 bit. Da questo limite si ha che, se la lunghezza del messaggio è superiore, il numero contenuto in questo campo sarà espresso in modulo 64. Nell'algoritmo MD5 non è prevista la trasformazione finale g. MD5 è molto veloce, ma la sua sicurezza sta diminuendo progressivamente (bastano 2^45 tentativi per trovare due messaggi che collidono). SHA- SHA-1 è un algoritmo MDC pubblicato nel 1993. In SHA-1:  Il messaggio deve essere lungo al massimo bit;  Il risultato del digest è lungo  La dimensione del blocco della funzione di compressione è 512 bit.  La funzione di compressione è a 5 passi.

1d- Crittografia asimmetrica Il concetto principale che sta dietro alla crittografia asimmetrica è che esistono alcune operazioni che sono estremamente semplici da fare in una direzione, mentre sono estremamente difficili da fare in senso inverso. Per esempio, dati e due numeri primi, è semplicissimo calcolare ma è difficilissimo, trovare e a partire dal solo. Tutta la sicurezza degli algoritmi di cifratura asimmetrici si basa proprio sul presupposto che, per risolvere certi problemi, gli algoritmi usati sono estremamente inefficienti. Definiamo la chiave pubblica di Alice, la chiave privata e l'insieme il keypair, la coppia di chiavi personale di Alice. Il messaggio in chiaro è , il messaggio cifrato è. L'algoritmo di cifratura asimmetrico è rappresentato da , mentre l'algoritmo per decifrare è. Una delle proprietà fondamentali delle chiavi è che deve essere computazionalmente impossibile ricavare la chiave privata a partire dalla chiave pubblica. Uno dei problemi principali che ancora oggi affligge il mondo della crittografia è la distribuzione delle chiavi: in che modo Bob ha la garanzia di possedere la vera chiave pubblica di Alice, e non per esempio la chiave pubblica di Trudy che gliel'ha data facendo finta di essere Alice? infatti, lo scambio delle chiavi avviene nello stesso luogo (internet) in cui avviene lo scambio dei dati. Come detto, la crittografia asimmetrica si basa su problemi irrisolti della matematica discreta. Si ha:  Logaritmi discreti Diffie-Hellman, ElGamal e DSS;  Fattorizzazione discreta RSA; La crittografia asimmetrica si propone di risolvere tre diversi aspetti della comunicazione tra le persone:  Mantenere la confidenzialità tra due persone; l'algoritmo più usato a tal scopo è RSA. Generare firme digitali; le firme sono utili per l'autenticazione, per la protezione dell'integrità dei dati e per il non ripudio dei messaggi. Per questo scopo si possono usare gli algoritmi RSA, ElGamal e DSS.  Derivare delle chiavi effimere da usare per comunicazioni segrete e non recuperabili; per questo obbiettivo si possono usare Diffie-Hellman ed RSA.

Teoria dei numeri

D'ora in avanti, lavoreremo soltanto con numeri interi in. Numero primoSi dice numero primo un numero intero divisibile soltanto per se stesso e per.

Massimo comun divisore  Il massimo comun divisore, o greatest common divisor (gcd) è il più

grande numero intero positivo che divide entrambi due numeri e , con resto. Per definizione, vale Numeri coprimiUna coppia di numeri e è coprima se

Relazione di congruenza  Due numeri e sono detti congruenti tra loro in modulo ,

quando vale L'operatore è quella funzione che restituisce il resto della divisione del numero per il numero , che è il più piccolo numero non negativo tale per cui. Il valore è detto resto. Allora, due numero e sono congruenti in modulo se, divisi per , danno lo stesso resto; in questo caso, e sono detti equivalenti in modulo. Proprietà dell'operatore modulo   Moltiplicativo inverso il moltiplicativo inverso del numero è quel valore tale per cui cioè Teorema: Dimostrazione L'insieme dei numeri che dividono divide anche , dove  se un numero divide sia che , allora divide anche ,  se divide sia che , allora divide anche. Algoritmo di EuclideL'algoritmo di Euclide serve per calcolare il massimo comun divisore di due numeri, applicando ricorsivamente il teorema precedente. Insieme L'insieme è l'insieme di tutti i numeri. Per esempio, si ha Insieme L'insieme è l'insieme di tutti i numeri che sono anche primi con. Ad esempio, si ha È da notare che il numero non appartiene a , perché per definizione vale quindi e non sono coprimi. Il gruppo è abeliano, cioè:

  1. , cioè contiene anche l'inverso moltiplicativo di (per definizione);