Title: Aspetti algoritmici connessi alla sicurezza nei sistemi informatici distribuiti
1Aspetti algoritmici connessi alla sicurezza nei
sistemi informatici distribuiti
2Testo consigliato
- Crittografia, P. Ferragina e F. Luccio, Ed.
Bollati Boringhieri, 16.
3Sommario
- Introduzione
- computer security vs network security
- attacchi, meccanismi di sicurezza
- Cenni di crittografia
- Crittografia a chiave privata
- Crittografia a chiave pubblica
- Applicazioni di network security (??)
- servizi di autenticazione (firma digitale)
4Computer security vs network security
- Computer security misure per proteggere le
informazioni di un calcolatore - Network security misure per proteggere lo
scambio di informazioni durante la loro
trasmissione
5Network security
- Lera di Internet
- Informazioni distribuite
- Posta elettronica
- Commercio elettronico
- Transazioni finanziarie
- e le nuove problematiche di sicurezza
- sicurezza delle reti locali
- da attacchi esterni
- da impiegati infedeli
- sicurezza delle applicazioni (e-mail, http, ftp,)
6Problemi base
- Le reti sono insicure perché molte delle
comunicazioni avvengono in chiaro - Spesso non cè autenticazione dei server, ma solo
(e non sempre) degli utenti - Le connessioni non avvengono tramite linee
punto-punto ma - attraverso linee condivise
- tramite router di terzi
7Meccanismi di sicurezza su reti
- Nei sistemi distribuiti in rete, la sicurezza si
persegue attraverso diversi strumenti - Identificazione degli utenti ogni utente che
accede a servizi riservati deve essere
identificato univocamente - Autorizzazione di un utente individuare quali
sono i privilegi di cui gode un utente presso un
sistema - Secretazione dei contenuti che devono passare in
rete - Autenticazione ogni contenuto generato da un
dato utente deve essere mantenuto integro e deve
potersi attribuire in modo univoco - Uso di sistemi di controllo del traffico
(firewall) - Monitoraggio e controllo dei sistemi (intrusion
detection)
8Attacchi alla sicurezza dei messaggi
9Sicurezza dei messaggi paradigmi
- Segretezza evitare che i dati inviati da un
soggetto A a un soggetto B vengano compresi da un
terzo soggetto C. - Autenticazione verificare lidentità di chi
manda o riceve i dati. - Integrità essere sicuri che i dati ricevuti
siano uguali a quelli inviati. - Non ripudio evitare che chi manda dei dati possa
in futuro negare di averli mandati (firma
digitale).
10Identificazione informatica
- Per dispiegare servizi in rete con assoluta
sicurezza ed affidabilità, in primis è necessario
avere la certezza che ad unutenza digitale sia
associato univocamente un soggetto fisico o
giuridico - Identificazione informatica identificazione di
un soggetto per via telematica, consistente nella
validazione dellinsieme di dati attribuiti in
modo esclusivo ad esso - ? Rispetto ai 4 paradigmi di sicurezza dei
messaggi, lidentificazione è importante ai fini
dellautenticazione e della non ripudibilità - Lidentificazione informatica deve essere tanto
più sicura quanto più è sensibile la transazione
in cui è coinvolto il soggetto da identificare
11Lidentificazione tramite username e password
- Lidentificazione basata su username e password è
il più semplice sistema di riconoscimento
digitale - È una forma di identificazione debole funziona
bene per autenticazioni su sistemi locali, ma per
applicazioni sensibili su reti aperte, ove
occorre poter verificare aldilà di ogni
ragionevole dubbio che chi si presenta sia
veramente chi dice di essere, non è sufficiente,
in quanto è tendenzialmente violabile
12La forza di una password
- Formalmente, la forza di una password può essere
espressa in funzione del numero atteso di
tentativi necessari ad un avversario per forzarla
mediante un attacco esaustivo (brute-force) - Tale valore dipende dalla sua lunghezza,
complessità ed imprevedibilità - Questultimo parametro, noto anche come entropia
informativa, è una misura dellincertezza
associata ad ogni carattere (visto come una
variabile casuale) che costituisce la password
13Lattacco brute-force
- Ad esempio, una password di 8 caratteri ASCII
(che comprendono 52 lettere minuscole/maiuscole
dellalfabeto inglese, 10 numeri, e 34 simboli
non-alfanumerici, per un totale di 95 simboli),
se scelta in modo del tutto casuale, ha una forza
di 53 bit - 958 ? 253
- ovvero, richiede la generazione di 253 stringhe
binarie casuali di 53 bit prima di essere
individuata con certezza - ? il numero atteso di tentativi per forzarla è
253/2 252 - Osserviamo che 252 ? 1016, un numero molto grande
ma non enorme. Ad esempio, esistono in commercio
prodotti che garantiscono il testing di circa 3
miliardi di password al secondo su un normale PC
da 4 GigaHz. In tal modo, si può forzare la
password in circa 107 secondi, ovvero circa 4
mesi! (questo è anche il motivo per cui spesso si
richiede di cambiare la password ogni 3-6 mesi)
14Dalla teoria alla realtà
- In realtà le cose vanno un po diversamente
- Le password non vengono scelte in modo del tutto
casuale si calcola che mediamente una password
di 8 caratteri abbia una forza effettiva di circa
30 bit (dato NIST, National Institute of
Standards and Technology of USA) - ? testando 3 miliardi di password al secondo, una
password da 8 caratteri verrà forzata in circa 1
secondo, e una da 10 in circa 1 giorno! - Tuttavia, non tutto è perduto
- I sistemi di identificazione godono di meccanismi
di delay tra linserimento di una password e la
successiva - Ogni carattere casuale in più nella password
aggiunge circa 6 bit di forza, e ogni bit di
forza in più raddoppia il numero di tentativi
necessari per forzare una password ? una password
di 14 caratteri casuali avrebbe una forza
sufficiente per resistere ad attacchi tipo
brute-force
15Password cracking
- Esistono tuttavia molte altre modalità di attacco
ad una password, tra cui - Wiretapping (monitoraggio dei tasti premuti)
- Phishing (spillaggio dei dati sensibili)
- Social engineering (induzione a rivelare
informazioni riservate) - Dumpster diving (frugare nella spazzatura,
letteralmente) - ? Lidentificazione mediante password non
garantisce in modo certo lidentità di un
determinato utente, e quindi non soddisfa il
requisito dellautenticazione (né tantomeno
soddisfa gli altri paradigmi di sicurezza) - ? Vedremo che la soluzione ci verrà fornita dalla
tecnica crittografica asimmetrica RSA
16La crittografia
- La crittografia (dal greco kryptos, nascosto, e
graphein, scrivere) è la disciplina che si occupa
delle problematiche connesse alla sicurezza dei
dati - Anticamente si occupava unicamente dello studio
di tecniche atte a garantire la secretazione dei
dati, mentre oggi investe lanalisi di tutti gli
aspetti (teorici, computazionali, implementativi)
legati ai vari paradigmi di sicurezza
17Cenni storici
- La crittografia è una scienza antichissima
utilizzata nellantichità per nascondere il
contenuto di messaggi scritti. - La crittografia conobbe un enorme sviluppo
durante la Seconda Guerra Mondiale, quando il
matematico inglese Alan Turing formalizzò la
teoria necessaria per decrittare il crittosistema
tedesco Enigma. - Nel 1949 Shannon pubblicò un articolo che diede
linizio a quella che oggi viene chiamata la
Teoria dellInformazione, che assieme alla Teoria
della Probabilità, la Teoria della Complessità e
la Teoria dei Numeri gettò le basi della
Crittografia Moderna.
18Crittosistema
- Def. Un crittosistema (o cifrario) è una
quintupla (M,C,K,Cod,Dec), dove, - M insieme finito dei testi in chiaro
- C insieme finito dei testi cifrati
- K insieme delle possibili chiavi
- Cod M?K?C funzione di cifratura (iniettiva e
invertibile) - Dec C?K?M funzione di decifratura
Se Cod e Dec utilizzano la stessa chiave per
cifrare e decifrare un dato testo, allora si
parla di crittosistema simmetrico, altrimenti di
crittosistema asimmetrico.
19Garantire la segretezza
Principio di Kerckhoffs La sicurezza di un
sistema crittografico deve essere basata
esclusivamente sulla inespugnabilità della chiave
(gli algoritmi di cifratura e decifratura devono
essere considerati noti, e il testo cifrato in
transito deve essere considerato pienamente
leggibile).
20Algoritmi a chiave simmetrica
- Chiave simmetrica i due soggetti (A e B) usano
la stessa chiave K per codificare e decodificare
i dati. - Gli algoritmi di crittografia sono pubblici ? la
chiave simmetrica deve essere segreta ? il
principale problema è lo scambio della chiave!
21Lo scenario a chiave simmetrica
22Il problema della trasmissione della chiave
- Volendo utilizzare un cifrario simmetrico per
proteggere le informazioni tra due interlocutori
come posso scambiare la chiave segreta? - Devo utilizzare una canale sicuro di
comunicazione (oppure A e B devono essersi
preventivamente accordati)
23Un primo esempio di cifrario a chiave simmetrica
il cifrario di Cesare
- Consideriamo lalfabeto italiano, e costruiamo un
cifrario che sostituisce ad ogni lettera di
questo alfabeto la lettera che si trova 3
posizioni in avanti. - Ad esempio il testo in chiaro algoritmi
distribuiti viene cifrato nel crittogramma
dolrunzpn gnvzuneanzn. - Anche se la chiave rimane segreta, è facilmente
attaccabile tramite approcci statistici.
24La crittoanalisi statistica
- Tramite lutilizzo di tecniche statistiche sulla
frequenze dei caratteri o sottostringhe del testo
cifrato si ottengono informazioni utili sul testo
in chiaro.
25Crittoanalisi del cifrario di Cesare
- Il cifrario di Cesare, come la maggior parte dei
cifrari storici basati tu trasposizioni e
traslazioni, può essere facilmente violato
utilizzando tecniche statistiche (crittoanalisi
statistica). - Si analizzano le frequenze relative dei caratteri
nel testo cifrato e le si confrontano con quelle
di una lingua conosciuta, ad esempio l'italiano. - Con queste informazioni si ottiene unottima
approssimazione del testo in chiaro - NOTA Il cifrario di Cesare può essere facilmente
violato anche con un approccio esaustivo basta
testare le 21 possibili traslazioni (i.e.,
chiavi) fino ad ottenere un testo comprensibile!
26Cifrari perfetti
- Un crittosistema si dice perfetto se il testo in
chiaro e quello cifrato sono statisticamente
indipendenti. - Formalmente, definiamo un cifrario perfetto come
segue la comunicazione tra A e B è vista come un
processo stocastico (cioè variabile in modo
aleatorio nel tempo) in cui - P(m) probabilità che il messaggio spedito sia m
- P(mc) probabilità che il messaggio spedito sia
m avendo visto transitare il messaggio cifrato c - Def. Un cifrario è perfetto se per ogni m?M e
per ogni c?C vale la relazione - P(mc) P(m).
27Due cifrari molto imperfetti
- Supponiamo che P(m)p, 0ltplt1, e che P(mc)0?p
allora, un crittoanalista che vede transitare c,
è in grado di dedurre che il messaggio spedito
non può essere m! - Supponiamo adesso che P(m)p, 0ltplt1, e che
P(mc)1?p allora, un crittoanalista che vede
transitare c, è in grado di dedurre che il
messaggio spedito corrisponde ad m! - In tutti i casi intermedi in cui P(mc)?p, il
crittoanalista può fare delle deduzioni
osservando i messaggi cifrati in transito!
28Impraticabilità dei cifrari perfetti
- Teorema (Shannon) condizione necessaria affinché
un crittosistema sia perfetto è che KM. - Dim. Osserviamo che MC. Se per assurdo
fosse KltM, allora KltC. Sia m un messaggio
arbitrario t.c. P(m)p?0. Allora, da esso possono
essere generati al più K messaggi cifrati (uno
per ogni chiave). Ne consegue che esiste almeno
un messaggio cifrato c che non è immagine di m,
ovvero - P(mc)0?pP(m)
- contro lipotesi di perfezione. ?
29Un cifrario (simmetrico) perfetto
- One-time pad (G. Verman, ATT, 1917)
- Si costruisce una grande chiave casuale k nota ad
A e B (e non pseudocasualequesto impedisce luso
di generatori algoritmici, e impone lo scambio
della chiave!), ad esempio utilizzando un
rivelatore di raggi cosmici - Il testo cifrato è costruito tramite uno XOR bit
a bit (ricorda 1?00?10 1?10?01) fra il
messaggio in chiaro m e la chiave casuale k ?
cm?k - B ricostruisce mc?k (infatti x?y?yx)
- La chiave non deve mai essere riutilizzata
(one-time pad).
30One-time pad è perfetto!
- Dobbiamo mostrare che P(mc)P(m). Siano m e c di
n bit dal Teorema di Bayes si ha - P(mc)P(mnc)/P(c)
- dove P(mnc) è la probabilità che A abbia generato
il messaggio m e lo abbia cifrato come c allora - P(mnc)P(mncm?k)P(m)P(cm?k)P(m)2-n
- mentre
- P(c)?m P(mnc) ?m P(m)2-n2-n ?m P(m)2-n
- ? P(mc)P(m)2-n/2-nP(m). ?
indipendenza statistica di m e c
31One-time pad è solo teoricamente perfetto
- In pratica, come fanno A e B a scambiarsi la
chiave k? - La soluzione è accordarsi preventivamente su una
supersequenza di bit casuali, da consumare a mano
a mano che ci si scambiano messaggibisognerà
solo specificare la porzione della supersequenza
da usare di volta in volta. - La supersequenza va trasferita a priori con
metodi tradizionali (messaggero) - La linea rossa Cremlino-Casa Bianca è secretata
(si dice) con il metodo one-time pad!
32Dalla perfezione alla realtà
- A fronte dei cifrari perfetti (ovvero
dimostrabilmente sicuri ma praticamente
inutilizzabili) esistono anche cifrari - Computazionalmente sicuri Il problema
crittoanalitico (ovvero di decrittazione di un
testo cifrato senza conoscere la chiave) è
computazionalmente intrattabile. - Probabilisticamente sicuri Sono cifrari di cui
è stata dimostrata linattaccabilità, a patto che
non si verifichino alcuni eventi improbabili. - Tutti i cifrari moderni realmente utilizzati
appartengono alla classe dei computazionalmente
sicuri.
33Lo stato dellarte dei cifrari simmetrici
imperfetti Rijndael
- Sviluppato da Joan Daemen e Vincent Rijmen, ha
vinto la selezione per lAdvanced Encryption
Standard (AES) nel 2000. Ufficialmente il
Rijndael è diventato lo standard per la cifratura
del XXI secolo a chiavi simmetriche. - Il cifrario utilizza chiavi di lunghezza
variabile a 128, 192, 256 bit (generate da un
gestore esterno), ed una rete di confusione del
messaggio, in cui si eseguono molteplici
operazioni (circa 10) di trasposizione, xoring e
sostituzione di blocchi di messaggio di lunghezza
pari a quella della chiave.
34I limiti dei metodi a chiave simmetrica
- Un canale sicuro di comunicazione per scambiarsi
la chiave segreta esiste veramente nella realtà?
E se esistesse, perché ricorrere alla
crittografia??? - Inoltre, per una comunicazione sicura tra n
utenti, si dovranno scambiare in tutto (n-1)n/2
chiavi, ad esempio con 100 utenti occorreranno
4950 chiavi! - Infine, come può un metodo simmetrico garantire
lautenticazione e lirripudiabilità, dal momento
che esso è pensato per soddisfare unicamente il
requisito della secretazione?
35Algoritmi a chiave asimmetrica
- Chiave Pubblica/Privata Ogni soggetto S ha
- una propria chiave pubblica Kpub(S), nota a
tutti - una propria chiave privata Kpriv(S) nota solo a
lui. - I requisiti che un algoritmo a chiave pubblica
deve soddisfare sono - i dati codificati con una delle chiavi possono
essere decodificati solo con laltra - la chiave privata non deve mai essere trasmessa
in rete - deve essere molto difficile ricavare una chiave
dallaltra (in particolare la chiave privata da
quella pubblica).
36I vari scenari a chiave pubblica
Primo scenario A codifica con la chiave pubblica
associata a B, il quale decodifica con la propria
chiave privata garantisce segretezza e integrità
(non lautenticità, perché tutti possono
codificare, non solo A)
37I vari scenari a chiave pubblica
Secondo scenario A codifica con la propria
chiave privata il messaggio da inviare a B, il
quale decodifica con la chiave pubblica associata
ad A garantisce autenticità e non ripudiabilità
(non la segretezza, perché tutti possono
decodificare)
38I vari scenari a chiave pubblica
Terzo scenario A codifica con la chiave pubblica
associata a B ed autentica (i.e., firma) con la
propria chiave privata garantisce segretezza,
integrità, autenticità e non ripudiabilità!
39La nascita dei sistemi PKI (Public Key
Infrastructure)
- Dove trovo le chiavi pubbliche dei miei
destinatari? - Creazione di archivi di chiavi pubbliche, i
cosiddetti public key server (PKS) (ad esempio,
http//pgp.mit.edu/) - Un PKS può essere interrogato per risalire alla
chiave pubblica di un soggetto - Curiosità il prefisso pgp sta per pretty good
privacy, ed è lo standard de facto, creato nel
1991 da Phil Zimmermann, per la trasmissione di
mail criptate
40Fare una query su un PKS
41La risposta ad una query
42E cliccando su un soggetto
- Public Key Server -- Get 0x77d987e3f2baf942 ''
- -----BEGIN PGP PUBLIC KEY BLOCK-----
- Version SKS 1.1.0
- mQENBEvtGsMBCACxCvcmPawOxaPjFkOi3dwhb6wJWFrCfbIhCr
E7klo58YqAJoaN9iMrd27 D2rD5jrGmqR4ah0QTE8QE3EOANN
lz0jsVvyv5A/7LBT0xR9o5oJm0p2tdaMTJV05Atz2uEI
wkalcGb6pLFightrCIeJ5V94rHcw0xFTXPE3FCDKhuJ80OSKYZ
Wjjbv0l3ZbuN6KGEVdWHe hwZMWcELx9C32a6HcvAgFlAmCzZ
k8RYzyORLgA/DBNzf8yl5Yn7rV9tWFyLREg9ytWs6JDwA
Hm7wOlUeogOoKORdrFdsV6EgesThUMlg33r/XQZ37MDs6reC
ua7QbYBwWBYqO9ExDABEB AAG0HG1hcmlvIHJvc3NpIDxtcm9
zc2lAemV1cy5pdD6JAT4EEwECACgFAkvtGsMCGyMFCQlm
AYAGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEHfZhPyuv
lCSR0HwTcejkqWCT7YoCv RaGqXTaUljtdJ8L3m9yDmjJtJ2H
hr7xrFTdwxdOqjx9TdHtxyFvoyem0ez4rRslv3AKPbYHB
2ThEtcJtk9ITNtss7fEp/Ix3bE7v3NQmazxaEAhXqS9ra8s08
UkydfaRqkw58IB/J9wHDJ1 nbvvbLjolZOUval1WmFAZYKUbZ
866BeF2rKRiRHvIN3ur28JpRIUM0Yma9LrAthm8PufnA4
qpSm8b/52ldG4S8rRfDWMcQJZQiL0JnRELlqz4ta6erg4fDHsW
gUnDSrCP7TYEgT/aG/GV6T SWwpXhnKEUMHuPvJy1hMF8Z/zjW
xyJ0/kSZ1x5AQ0ES0awwEIAMEfDp/MNvdCyPplAqGh
ByxiYJjpokYYNJBY9ytMyYYpWSNs3lc335KjX9n/K0AqCO2a3
LXfUzxRQvh5eHuZWxaT3yV oqnu86n/M10MFVziOx52x2cnqh
SLm8I82ESHDUjh9dFPTmBlmGhYHJa2bq6duchDx737ZuV
fQKgTtJIj8XdKtv5zrTMn2h9CBshmbzUJvIvxtWSZq0vmMlZZd
5H8aVDBH1C30MOyyIwLF0c zwf6dhJ6KTHM2AAwdcUvD/HyaOF
KDeMWPPfUBmC4az0bLw1onIw6N0YmnfTnupP3QXK6IKe
KIbsQYQA5po5fZIEb2o9A7nIYB/i4wjlakAEQEAAYkBJQQYAQ
IADwUCS0awwIbDAUJCWYB gAAKCRB32Yfj8rr5QkwiCACit52
gt9FWC1gjXSf7PSw2GSt/NABt4F0yHoFidLRVNHRfWj1
J41dZUaHPzF0zvk3E/j1oITGc0uKa201FMpflY/nUEOrwdzbR
GZcgFJNVAGtm4glrCIv3c6 oVrmavRXPeWnmzdDzXRPQCItoMv
niMhDMO1sfsWcMuGYuOB4oopjkAowc1s4M5qsOLA8pfsL
CTx6JmtLPA49YxaolB3NZiSSDy6A91lV66vJKmpNseaWQsNs3X
4vhBWS89Ct39wCe6Cxddh Ri2qLcPNEDQQVcDWPDTHSrhJrS
tx14iJRBfHMQW6EaL2B4t7RZzKknRPxOw/wUE4gS62ay7 - wJgz
- scGC
- -----END PGP PUBLIC KEY BLOCK-----
43Le certification authority
- Ma chi mi garantisce la corrispondenza delle
chiavi pubbliche con i legittimi proprietari? - Nascita delle certification authority (CA), che
rilasciano a pagamento i cosiddetti certificati
digitali (firmati con la chiave privata della
CA), che associano in modo univoco un soggetto
con la rispettiva chiave pubblica - Le CA e i PKS sono le componenti principali di
una PKI - I costi di un certificato digitale sono variabili
(da 20 a 800 Euro circa) e dipendono dal livello
di sicurezza e dalla versatilità offerta - Le CA italiane sono vigilate da DigitPA
(attualmente abbiamo soltanto 17 CA accreditate
in Italia)
44Sicurezza sul Web
- L'Hypertext Transfer Protocol (HTTP) è il
principale sistema per la trasmissione
d'informazioni sul Web, e si appoggia sul
protocollo in chiaro TCP/IP - Le architetture web basate su HTTP non
garantiscono la sicurezza - non è sicuro che lutente sia veramente chi dice
di essere (masquerading) - non è sicuro che le chiamate arrivino
dallindirizzo ip presente nei pacchetti in
arrivo (ip spoofing) - non è sicuro che i parametri delle request o i
contenuti delle response non siano stati letti o
modificati da qualcuno nel tragitto (la
trasmissione è in chiaro) - non è sicuro il contenuto associato ai cookies
(tracking di sessioni e memorizzazione di
informazioni specifiche riguardanti gli utenti
che accedono al server)
45Il protocollo HTTPS (HTTP over Secure Socket
Layer)
- È il risultato dell'applicazione del protocollo
di crittografia asimmetrica RSA (in forma debole,
di solito a chiavi da 128 bit) al protocollo HTTP - È il protocollo solitamente utilizzato per
comunicazioni protette client-server sul Web (ad
esempio, per effettuare un pagamento), e funziona
come segue - il client acquisisce il certificato digitale del
server, e attraverso il proprio browser interroga
la CA emittente per essere sicuro di dialogare
con una parte fidata quindi, genera le proprie
chiavi pubblica e privata (attraverso il proprio
browser, che le rinnova ad ogni nuova sessione
aperta), e invia la propria chiave pubblica al
server - il server invia al client una chiave simmetrica
(cosiddetta session key) criptata con la chiave
pubblica del client, per stabilire una
connessione protetta a chiave simmetrica - infine, il client decripta la chiave simmetrica
inviata dal server con la propria chiave privata,
e le due parti sono pronte per dialogare nel
canale protetto a chiave simmetrica.
46La matematica dei sistemi a chiave pubblica
- Venne introdotta da Diffie e Hellman nel 1976
- Definizione Una funzione f si dice one-way se
per ogni x il calcolo computazionale di yf(x) è
semplice (è in P), mentre il calcolo di xf-1(y)
è computazionalmente difficile (è NP-hard). - Definizione Una funzione one-way è detta
trapdoor (letteralmente, cassetta delle lettere)
se il calcolo xf-1(y) può essere reso facile
qualora si conoscano informazioni aggiuntive
(private). - ma purtroppo per loro, essi non furono in grado
di costruire una funzione one-way trapdoor!
47Il cifrario RSA
- Progettato nel 1977 da Ron Rivest, Adi Shamir e
Leonard Adlemann, il cifrario è stato brevettato,
ed è diventato di dominio pubblico solo nel 2000. - Idea base Dati due numeri primi p e q (molto
grandi) è facile calcolare il prodotto npq,
mentre è molto difficile calcolare la
fattorizzazione di n (anche se tale problema non
è noto essere NP-hard). - I migliori algoritmi di fattorizzazione
attualmente disponibili (Quadratic Sieve,
Elliptic Curve Method, Euristica ? di Pollard,
ecc.) hanno tutti una complessità esponenziale
dellordine di
48Il cifrario RSA
- Per garantire la sicurezza, occorre che p e q
siano almeno di 200 cifre decimali. Infatti, se p
e q sono di 200 cifre decimali ciascuno, allora n
è di 400 cifre, cioè dellordine di 10400, da
cui - e791034
- da cui lintrattabilità computazionale.
- ? le chiavi sono lunghe in genere
- 10200 2200log10 ? 1024 bitS.
- RSA è molto più lento degli algoritmi a chiave
simmetrica, e spesso viene applicato a piccole
quantità di dati, ad esempio per la trasmissione
della chiave privata in un sistema simmetrico
49Funzionamento di RSA generazione delle chiavi
Ricorda Per un intero positivo z, x?y mod z ?
esiste un intero k t.c. x-ykz (se x ed y sono
positivi, questo è equivalente a dire che il
resto della divisione intera tra x e z e tra y e
z è lo stesso, ovvero x mod z y mod z)
- 1. Scegli due primi molto grandi p e q e calcola
n pq. - 2. Calcola la funzione toziente di Eulero
rispetto ad n, ovvero la cardinalità dellinsieme
dei numeri minori di n e primi con esso - ?(n)?(pq)pq-(q-1)(p-1)-1pq-(pq)1
- (p-1)(q-1)?(p)?(q)
- (poiché esistono q-1 multipli di p minori di n e
p-1 multipli di q minori di n) - 3. Scegli un numero 0ltelt?(n) t.c. MCD(e,?(n))1.
- 4. Calcola d tale che ed?1 mod ?(n).
- 5. Definisci la chiave pubblica come (e,n).
- 6. Definisci la chiave privata come (d,n).
50Funzionamento di RSA
Secretazione di un messaggio
- La funzione di cifratura di A è Cod(x)xe mod n
(con xltn), ove (e,n) è la chiave pubblica del
destinatario B. - La funzione di decifratura di B è
- Dec(x)Cod(x)d mod n (xe mod n)d mod n
- ove (d,n) è la chiave privata di B.
Autenticazione di un messaggio
- La funzione di cifratura di A è Cod(x)xd mod n
(con xltn), ove (d,n) è la chiave privata di A. - La funzione di decifratura di B è
- Dec(x)Cod(x) e mod n (xd mod n) e mod n
- ove (e,n) è la chiave pubblica di A.
51Correttezza di RSA alcuni teoremi di algebra
modulare
- Teorema (equazioni modulari) Lequazione ax?b
mod n ammette soluzione se e solo se MCD(a,n)
divide b. In questo caso si hanno esattamente
MCD(a,n) soluzioni distinte. - Corollario (esistenza dellinverso) Se a e n
sono primi tra loro, allora ax?1 mod n ammette
esattamente una soluzione positiva minore di n,
detta linverso di a modulo n. - Teorema di Eulero Per ogni ngt1, e per ogni a
primo con n, si ha che a?(n)?1 mod n.
52Correttezza di RSA
- Si noti innanzitutto che e e ?(n) sono primi tra
loro, e quindi dal corollario sullesistenza
dellinverso, esiste un unico d minore di ?(n)
tale che ed?1 mod ?(n). - Qui sta la forza di RSA per ricavare d da e
bisogna conosce-re ?(n), cioè p e q, e quindi
bisogna saper fattorizzare! - Secretazione occorre provare che ? xltn,
Dec(Cod(x))x. Ma - Dec(Cod(x))(xe mod n)d mod nxed mod n,
- quindi dobbiamo mostrare che xxed mod n.
Dimostratelo! -
- Distinguiamo due casi
- p e q non dividono x (e quindi MCD(p,x)MCD(q,x)1
, poiché essi sono primi) - p (oppure q) divide x, ma q (oppure p) non divide
x. - (si noti che p e q non possono entrambi dividere
x, perché altrimenti si avrebbe xn contro le
ipotesi) -
53Correttezza di RSA (2)
- Caso 1 Abbiamo MCD(x,n)1, quindi per il th di
Eulero, risulta x?(n)?1 mod n poiché ed?1 mod
?(n), si ha che ed1k?(n), per un k opportuno.
Quindi, poiché xltn, si ha - xed mod n x1k?(n) mod n x(x?(n))k mod n
x1k mod n x. - Caso 2 Poiché p divide x, per qualunque intero
positivo k abbiamo x?xk?0 mod p, ovvero (xk-x)?0
mod p. Poiché invece q non divide x, analogamente
al Caso 1, abbiamo anche xed?x mod q, e quindi
(xed-x)?0 mod q. Ne consegue che (xed-x) è
divisibile sia per p che per q, e quindi per il
loro prodotto n, da cui deriva - (xed-x)?0 mod n ? xed?x mod n ? xed mod n x mod
n x. - ?
- Autenticazione si noti che RSA gode della
notevole proprietà - Dec(Cod(x))Cod(Dec(x)).
54Esempio di funzionamento di RSA secretazione
- B sceglie ad esempio p3 e q11.
- Quindi n33 e ?(n)20.
- Si può prendere e3, poiché 3 non ha divisori
comuni con 20 ? (3,33) è la chiave pubblica di B - Cerco d t.c. 3d?1 mod 20. Con lequazione 3d
1k20, ponendo k1 si trova d7 ? (7,33) è la
chiave privata di B - Per cifrare un blocco P (Plt33) da inviare a B, A
calcola - CCod(P)P3 mod 33
- Per decifrare C, B calcola PC7mod 33
- Poiché n33, si cifrano al più 5 bit alla volta
(25lt33) - Nella pratica, n è dellordine di 21024, e quindi
si possono cifrare blocchi di 1024 bit, cioè
blocchi di 128 caratteri ASCII (di 8 bit
ciascuno).
55Esempio di funzionamento di RSA
Per visualizzare lesempio precedente, supponiamo
per semplicità che le 26 lettere dellalfabeto
inglese possano essere codificate con 5 bit, e
quindi poiché n33, posso cifrare un carattere
alla volta
56Complessità computazionale di RSA
- Si può dimostrare che le chiavi (e quindi
p,q,e,d) possono essere generate in tempo
polinomiale (ovvero logaritmico nel loro valore). - In particolare, e viene in genere scelto
prendendo un numero primo abbastanza piccolo (ad
esempio, e3). - Invece, d viene ricavato mediante unestensione
(polinomiale) dellalgoritmo di Euclide per il
calcolo del MCD (basato sul fatto che
MCD(a,b)MCD(b,a mod b)). - Tuttavia, per trovare numeri primi molto grandi
(cioè p e q), i test di primalità utilizzati sono
tutti di tipo probabilistico, in quanto quelli
deterministici sono troppo lenti (sebbene
polinomiali, ma dellordine di O(log10n)). - Infine, si noti che i processi di cifratura e
decifrazione possono essere eseguiti
efficientemente tramite successive
esponenziazioni (potenza modulare).
57Alla ricerca di p e q
- Definizione (Algoritmo Monte Carlo) Un algoritmo
Monte Carlo no-biased è un algoritmo
randomizzato per la risoluzione di un dato
problema di decisione, in cui la risposta no è
sempre corretta, mentre la risposta sì può
essere inesatta con probabilità fissata e.
Analogamente sono definiti gli algoritmi Monte
Carlo yes-biased. - Lalgoritmo di Miller e Rabin è un algoritmo
Monte Carlo no-biased per testare la primalità
di un numero. Esso ha una complessità di O(log3
n), e una probabilità di inesattezza e1/4 (cioè
se risponde Sì, è corretto con probabilità 3/4). - Osservazione si noti la differenza sostanziale
con il metodo Las Vegas usato per il calcolo del
MIS, in cui la risposta era sempre e comunque
corretta, mentre la complessità temporale era
invece data in forma probabilistica.
58Algoritmo di Miller-Rabin
- È basato sulla seguente proprietà dato un intero
(positivo) n dispari (del quale vogliamo testare
la primalità), riscriviamolo come n2sr1, con r
dispari (quindi s è la molteplicità del fattore 2
nella scomposizione in fattori primi del numero
pari n-1). Sia ora 2yn-1, e definiamo i 2
predicati - (P1) MCD(n,y)1
- (P2) (yr mod n 1) OR (esiste 0is-1 t.c.
y2ir?-1 mod n). - Teorema Se n è primo, allora ogni 2yn-1
soddisfa entrambi i predicati (e quindi se esiste
un 2yn-1 che non soddisfa almeno uno dei due
predicati, n è composto), mentre se n è composto
il numero di interi 2yn-1 che soddisfano
entrambi i predicati è minore di n/4. - ? Eseguiamo MR(n) un certo numero k di volte,
testando ogni volta (P2) su un intero positivo a
caso minore di n. Se lalgoritmo risponde no
anche una sola volta il numero è sicuramente
composto, mentre se risponde sempre sì, la
probabilità che il numero sia composto è 4-k, e
quindi la probabilità che il numero sia primo è - P(primo)1-P(composto)1-4-k
- (ad es., se k100, si ha P1-10-60 1)
59Algoritmo di Miller-Rabin
- Miller-Rabin(n)
- Set n-12sr con r dispari
- For i1 to k do
- 2.1 scegli a caso un intero t t.c. 2tn-2
- 2.2 calcola ytr mod n
- 2.3 if y?1 esegui è falsa la prima condizione di
(P2) - 2.3.1 j0
- 2.3.2 while ((js-1) and (y?n-1))
- yt2jr mod n
- j
- 2.3.3 if y?n-1 ritorna composto è falsa anche
la seconda condizione di (P2), e quindi è
falso (P2) - Ritorna primo (w.h.p. 1-4-k)
60E facile trovare numeri primi?
- Nonostante lefficienza nel testare se un numero
sia primo o meno resta lincognita se i numeri
primi siano pochi e quindi difficili da
scovare. - Teorema di Gauss (dei numeri primi) Sia p(n) la
funzione di distribuzione dei numeri primi, cioè
il numero di numeri primi che precedono n. Allora
essa soddisfa il seguente - Quindi se si cerca un numero primo di 100 cifre
occorre verificare solo ln (10100) 230 numeri
consecutivi.