Upload
lezan
View
217
Download
0
Embed Size (px)
Citation preview
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
1/97
Crittografia a Chiave Pubblica
Parte I
Luca Grilli
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
2/97
INTRODUZIONE
Crittografia a Chiave Pubblica Parte I
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
3/97
Introduzione
La crittografia a chiave pubblica si basa su alcunirisultati nellambito della teoria dei numeri
Gli algoritmi di crittografia a chiave pubblica sono
molto eterogenei e differiscono profondamente non soltanto in come alcune funzioni vengono
eseguite, ma spesso in quali funzioni vengonoeseguite
tutti gli algoritmi di hash fanno la stessa cosa prendonoun messaggio ed eseguono una trasformazione irreversibile
tutti gli algoritmi a chiave segreta fanno la stessa cosa prendono un blocco, lo cifrano in modo reversibile eapplicano dei metodi di concatenamento dei blocchi per
cifrare dei messaggi generici
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
4/97
Introduzione
Si esamineranno i seguenti schemi di cifratura a chiavepubblica
RSA e ECC, usati per cifrare e per calcolare la firma digitale
ElGamal e DSS, usati per la firma digitale
Diffie-Hellman, permette di stabilire un segreto condiviso,ma non fornisce alcun algoritmo che usa effettivamentetale segreto
potrebbe essere usato in congiunzione ad uno schema di cifratura
a chiave segreta Sistemi di dimostrazione a conoscenza zero (zero
knowledge proof systems), usati soltanto perlautenticazione
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
5/97
Introduzione
Lunico aspetto comune a tutti gli algoritmi di
crittografia a chiave pubblica
la presenza di due quantit correlate
chiave segreta, chiave pubblica
associate a ciascuna entit che partecipa ad una
comunicazione cifrata
spesso si usa il termine principal per denotare una siffatta
entit, che pu essere un calcolatore o una persona
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
6/97
ARITMETICA MODULARE
Crittografia a Chiave Pubblica Parte I
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
7/97
Aritmetica modulare
La maggior parte degli algoritmi a chiave pubblicasi basano sullaritmetica modulare
Fissato un interno n > 1, laritmetica modulare
considera linsieme degli interi non negativi minori din: {0, 1, 2, , n1}
effettua operazioni ordinarie come laddizione e lamoltiplicazione, e
sostituisce il risultatoxcon il resto rdella divisioneintera dixper n
il risultato finale viene detto modulon o modn
xmod n significa dividixper n e considera il resto
qualche volta mod n omesso se chiaro dal contesto
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
8/97
Addizione modulare mod 10
Consideriamo laddizione mod 10 siano a e b due numeri minori di 10
(a + b) mod 10 si ottiene effettuando laddizione ordinaria, e
considerando come risultato finale la cifra meno significativa; cioil resto della divisione per 10
+ 0 1 2 3 4 5 6 7 8 9
0 0 1 2 3 4 5 6 7 8 9
1 1 2 3 4 5 6 7 8 9 0
2 2 3 4 5 6 7 8 9 0 1
3 3 4 5 6 7 8 9 0 1 2
4 4 5 6 7 8 9 0 1 2 3
5 5 6 7 8 9 0 1 2 3 4
6 6 7 8 9 0 1 2 3 4 5
7 7 8 9 0 1 2 3 4 5 6
8 8 9 0 1 2 3 4 5 6 7
9 9 0 1 2 3 4 5 6 7 8
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
9/97
Addizione modulare mod 10
Sia m (< 10), un qualche messaggio
laddizione di una costante kmod 10 puriguardarsi come una cifratura a chiave segreta
ogni cifra decimale m viene mappata in una diversacifra decimale c = (m + k) mod 10 in modo reversibile
k la chiave segreta; chiaramente si tratta di unpessimo cifrario ( il cifrario di Cesare)
la decifratura consiste nel sottrarre kmod 10; cio vasottratto ke se il risultato minore di 0, va aggiunto 10
come nellaritmetica ordinaria, sottrarre kequivale asommare -k, cio linverso additivo di k
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
10/97
Addizione modulare mod 10
un inverso additivo di k un numero che sommato a k
d 0; formalmente (k+ (-k)) = 0 mod 10
ad esempio, linverso additivo di 4 6 perch 4 + 6 = 0
nellaritmetica modulo 10
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
11/97
Moltiplicazione modulare mod 10
Si consideri la tabella della moltiplicazione mod 10
la moltiplicazione mod 10 per una costante k {1, 3, 7, 9}pu riguardarsi come una cifratura a chiave segreta
produce una permutazione dellinput
la moltiplicazione per ogni altro numero invece non funziona
0 1 2 3 4 5 6 7 8 9
0 0 0 0 0 0 0 0 0 0 0
1 0 1 2 3 4 5 6 7 8 9
2 0 2 4 6 8 0 2 4 6 8
3 0 3 6 9 2 5 8 1 4 7
4 0 4 8 2 6 0 4 8 2 6
5 0 5 0 5 0 5 0 5 0 5
6 0 6 2 8 4 0 6 2 8 4
7 0 7 4 1 8 5 2 9 6 3
8 0 8 6 4 2 0 8 6 4 2
9 0 9 8 7 6 5 4 3 2 1
Ad esempio, se si prova a cifrare
moltiplicando per 5, met dei numeri
sarebbero cambiati in 0e laltra met
in 5
ci comporta una perdita di
informazione; la trasformazione non
invertibile
impossibile decifrare
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
12/97
Moltiplicazione modulare mod 10
Pertanto, la moltiplicazione mod 10 pu essereusata per cifrare
a condizione che il fattore ksia scelto in modo
opportuno La decifratura pu essere eseguita, analogamente
al caso delladdizione, moltiplicando per linversomoltiplicativo di k
nellaritmetica ordinaria linverso moltiplicativo di k1/k in generale 1/k una quantit frazionaria
ma nellaritmetica modulare si considerano solonumeri interi
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
13/97
Inverso moltiplicativo mod n
Linversomoltiplicativo di k, scritto k-1, quelnumero che moltiplicato per kd 1
(kk-1) mod 10 = 1 mod 10
in generale, (kk-1
) mod n = 1 mod n Si osservi che per un dato n, non tutti i numeri
hanno un inverso moltiplicativo mod n
solo i numeri {1, 3, 7, 9} hanno gli inversi moltiplicativi
mod 10 ad esempio, 7 un inverso moltiplicativo di 3 la cifratura
pu ottenersi moltiplicando per 3 e la decifratura puottenersi moltiplicando per 7
9 un inverso di se stesso; 1 un inverso di se stesso
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
14/97
Inverso moltiplicativo mod n
Si osservi inoltre che
se kammette un inverso moltiplicativo mod nesiste un unico inverso moltiplicativo k-1 < n
ad esempio, il numero 7ammette i seguenti inversimoltiplicativi mod 10 {3, 13, 23, 33, , 3 + i10, },
ma soltanto 3 linverso moltiplicativo strettamente minoredi 10
Ovviamente, la moltiplicazione mod n di per s
non costituisce un cifrario sicuro ma funziona, nel senso che la moltiplicazione per k
produce un mescolamento dellinput; la decifraturapu ottenersi moltiplicando per k-1
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
15/97
Inverso moltiplicativo mod n
Trovare un inverso moltiplicativo k-1 nellaaritmetica mod n, non affatto banale se n molto grande
ad esempio, se n un intero a 100 cifre un approccio aforza bruta sarebbe impraticabile
Esiste un modo efficiente per risolvere taleproblema, noto come algoritmo di Euclide
datixed n (x< n), lalgoritmo di Euclide trova ilnumero y< n tale che (xy) mod n = 1
ammesso che un siffatto yesista
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
16/97
Numeri relativamente primi
DOMANDA Per quale motivo soltanto i numeri {1, 3, 7, 9} ammettono un
inverso moltiplicativo mod 10?
Quali numeri ammettono un inverso moltiplicativo mod 10?
RISPOSTA: sono tutti e soli i numeri (minori di 10)relativamente primi con 10
Due numeri sono relativamenteprimise lunico fattorecomune 1
equivalentemente,
Due numeri interi a e b sono relativamenteprimi seMCD(a, b) = 1 MCD Massimo Comun Divisore, o
GCD Greatest Common Divisor
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
17/97
Funzione totiente di Eulero
in generale, nellaritmetica mod n, tutti gli interi (positivi)xrelativamente primi con n ammettono un inversomoltiplicativox-1
se n un numero primo tutti gli interi positivix< n
ammettono un inverso moltiplicativo (mod n)x-1
Dato un intero n > 1
Si definisce funzione di Eulero, o funzionetotiente,la funzione che associa ad n il numero (n) degli interipositivi i n e relativamente primi con n
cio (n) = |{0 < i n: MCD(i, n) = 1}|
per convenzione (0) = 0
Security token
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
18/97
Funzione totiente di Eulero
Se n primo tutti gli interi {1, 2, , n1} sonorelativamente primi con n (n) = n 1
DOMANDA: Se n =pq, ovep e q sono due numeriprimi maggiori di 1, quanto vale (n)?
RISPOSTA:
(n) = |N
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
19/97
Esponenziazione modulare
Lesponenziazionemodulare, o elevamento a potenzamodulare, simile a quella ordinaria
si esegue lesponenziazione ordinaria e si considera il restodella divisione per n
ad esempio, 46 = 6 mod 10 perch 46 = 4096 e 4096 = 6 mod 10
xy 0 1 2 3 4 5 6 7 8 9 10 11 12
0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1
2 1 2 4 8 6 2 4 8 6 2 4 8 6
3 1 3 9 7 1 3 9 7 1 3 9 7 1
4 1 4 6 4 6 4 6 4 6 4 6 4 6
5 1 5 5 5 5 5 5 5 5 5 5 5 5
6 1 6 6 6 6 6 6 6 6 6 6 6 6
7 1 7 9 3 1 7 9 3 1 7 9 3 1
8 1 8 4 2 6 8 4 2 6 8 4 2 6
9 1 9 1 9 1 9 1 9 1 9 1 9 1
si osservi che
nellesponenziazione modularexymod n diverso daxy+n mod n
ad esempio, 31 = 3 mod 10, ma
311 = 7mod 10 (311 = 177147)
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
20/97
Esponenziazione modulare mod 10
Dalla precedente tabella, che illustralesponenziazione mod 10, si osserva che
lesponenziazione per 3 (quarta colonna) puconsiderarsi una cifratura
determina un mescolamento dellinput
lesponenziazione per 2 invece no
alcuni input scompaiono non iniettiva
quando lesponenziazione iniettiva, la decifraturapu ottenersi ricorrendo al logaritmodiscreto(inverso dellesponenziazione)
come nel caso della moltiplicazione, nellesponenziazionemodulare non tutti i numeri ammettono un logaritmo
discreto
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
21/97
Esponenziazione modulare
Esaminando la tabella di esponenziazione mod 10si nota un periodicit
per ogni i> 0, le colonne ie i+ 4 coincidono, cio
per ogni i> 0,xi
mod 10 =xi+ 4
mod 10 In effetti, si pu dimostrare il seguente risultato
Sia n > 1 un interoprivo di quadrati (squarefree), allora per ogni y> 0,
xymod n =x(y+ (n)) mod n un intero privo di quadrati se non compaiono fattori
al quadrato nella sua scomposizione in fattori primi
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
22/97
Esponenziazione modulare
ad esempio, 10 privo di quadrati essendo 10 = 21 51
un numero primo sempre privo di quadrati
nel caso n = 10, i numeri relativamente primi a 10
sono {1, 3, 7, 9} (n) = 4 Dalla precedente relazione risulta che
se y= 1 mod (n)
xy
mod n =xmod n questultimo risultato sfruttato dallalgoritmo
RSA
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
23/97
RSA
Crittografia a Chiave Pubblica Parte I
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
24/97
RSA Introduzione
RSA un algoritmo di cifratura (a blocchi) achiave pubblica
il nome deriva degli inventori Rivest, Shamir eAdleman
la lunghezza della chiave variabile
ci consente di ottenere il giusto compromessosicurezza/efficienza
solitamente si considerano chiavi di lunghezza 512 bit
anche la lunghezza dei blocchi variabile un blocco di testo in chiaro deve avere una lunghezza
inferiore a quella della chiave
un blocco di testo cifrato lungo come la chiave
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
25/97
RSA Introduzione
RSA computazionalmente molto pi lento
degli algoritmi a chiave segreta pi popolari
come DES e IDEA
difficilmente viene usato per cifrare messaggi
lunghi
generalmente viene usato per cifrare una
chiave segreta K, il messaggio viene poi cifrato conKusando un algoritmo a chiave segreta
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
26/97
Algoritmo RSA
Lalgoritmo RSA pu essere impiegato
sia per cifrare/decifrare messaggi
sia per la firma digitale di messaggi
In entrambi i casi necessario disporre dellacoppia
chiave pubblica, chiave privata = PU, PR
tale coppia deve essere generata in modo opportuno
Nelle prossime slide si esaminer la1. generazione di una coppia PU, PR
2. cifratura/decifratura RSA
3. firma digitale RSA
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
27/97
Generazione di PU, PR
1. Scegliere due numeri primi grandip e q (circa256 bit ciascuno); porre n =p q
fondamentale chep e q rimangano segreti
si noti che fattorizzare n impraticabile2. Scegliere un numero e che sia relativamente
primo rispetto a (n) = (p1)(q1)
3. La chiave pubblica PU = e, n
4. Calcolare linverso moltiplicativo ddi e mod (n)
cio d tale che (de) mod (n) = 1
5. La chiave privata PR = d, n
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
28/97
Cifratura/decifratura RSA
Sia PU = e, n la chiave pubblica del destinatario delmessaggio cifrato e sia PR = d, n la sua chiave privata
Sia m (< n) un messaggio da cifrare
CIFRATURA: il mittente, chiunque sia, usando lachiave pubblica PU del destinatario calcola il testocifrato
c= me mod n
DECIFRATURA: il destinatario usando la propriachiave privata PR decifra c nel seguente modo
m = cdmod n
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
29/97
Firma digitale RSA
Sia PR = d, n la chiave privata del firmatario delmessaggio e sia PU = e, n la sua chiave pubblica
Sia m (< n) un messaggio o un piccolo blocco di datiche funzione del messaggio
FIRMA: il firmatario usando la propria chiaveprivata PR calcola la firma digitale s
s = mdmod n
VERIFICA: chiunque desidera verificarelautenticit della firma, usando la chiave pubblicaPU del firmatario verifica che
m = se mod n
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
30/97
Alcune domande
Di seguito si risponder alle seguenti domande
Perch RSA funziona?
Decifrando un messaggio cifrato si ottiene il messaggio
in chiaro? Perch RSA sicuro?
Dati e ed n, perch non possibile risalire a d?
Le operazioni di cifratura, decifratura, firma, e
verifica della firma sono tutte sufficientemente
efficienti da essere realizzabili nella pratica?
Come possibile ottenere numeri primi grandi?
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
31/97
Perch RSA funziona
Mostriamo che
se c = E(PU, m) m = D(PR, c) = D(PR, E(PU, m))
si sfrutteranno le seguenti propriet
se m < n m mod n = m
(xa mod n)b mod n = (xa)b mod n =xab mod n
(e d) mod (n) = 1
PROVA
c = E(PU, m) = me
mod n m = D(PR, c) = cdmod n = (me mod n)dmod n = (me)dmod n
= medmod n = m(1 mod (n)) mod n = m mod n = m
la prova di correttezza della verifica della firma analoga
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
32/97
Perch RSA sicuro?
Non esistono prove formali di sicurezza
ci si affida al Fundamental Tenet of Cryptogtaphy
molte persone intelligenti hanno tentato di violarlo, ma
hanno fallito la sicurezza di RSA risiede nel fatto che fattorizzare
interi molto grandi impraticabile
se esistesse un metodo veloce per fattorizzare interi molto
grandi, allora nota la chiave pubblica PU = e, n si potrebbeottenere la chiave privata PR = d, n
infatti, identificando i numeri primip e q tali che n =p q
si ottiene facilmente (n) = (p1)(q1) e quindi si pu
calcolare dcome linverso moltiplicativo di e modulo (n)
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
33/97
Perch RSA sicuro?
tuttavia non si possono escludere altri metodi diviolazione di RSA che non richiedono la fattorizzazione
sebbene RSA ritenuto sicuro, per chiavi di almeno256 bit, possibile utilizzarlo in modo improprio!
si supponga che Carol spedisca un messaggio ad Alicecontenente il nome del suo fidanzato segreto
Bob geloso, sa del messaggio di Carol ad Alice e sa che ilfidanzato uno dei 15 ragazzi del corso di SicurezzaInformatica
Bob non pu decifrare il messaggio,
ma pu cifrare il nome di ogni ragazzo del corso di SicurezzaInformatica con la chiave pubblica di Alice e
verificare quale di questi coincide con il messaggio inviato daCarol
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
34/97
Perch RSA sicuro?
DOMANDA: assumendo che Bob intercetti il
messaggio di Carol, possibile impedirgli di
ottenere informazioni?
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
35/97
Perch RSA sicuro?
Nel seguito si discuter come usare RSA inmodo appropriato
per il momento una possibile risposta alla
precedente domanda la seguente RISPOSTA
Carol pu concatenare il nome del suo fidanzatocon un numero random molto grande, diciamo a
64 bit Bob anzich 15 tentativi deve fare 15 264
tentativi!
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
36/97
Efficienza delle operazioni di RSA
In base al tipo di impiego, RSA svolge le seguentioperazioni molto frequentemente (ad ogni sessione dilavoro) cifratura,
decifratura, generazione di una firma digitale e
verifica di una firma digitale
necessario pertanto che tali operazioni siano svoltenel modo pi efficiente possibile
Invece, loperazione di generazione delle chiavi vieneeseguita meno frequentemente si pu tollerare una minore efficienza
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
37/97
Esponenziazione di grandi numeri
Le operazioni di cifratura, decifratura, firma e verificadella firma richiedono tutte di dover considerare un intero molto grande,
elevarlo ad un esponente (intero) molto grande, e
trovare il resto della divisione intera per un numero moltogrande
Considerando la dimensione dei numeri interi per iquali RSA ritenuto sicuro tali operazioni
risulterebbero proibitive se eseguite nel modo piovvio le prossime slide illustrano come possibile aumentare la
velocit dei calcoli
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
38/97
Esempio calcolo di 12354 mod 678
assumendo di disporre di un software per la gestionedellaritmetica a precisione multipla
La soluzione pi ovvia moltiplicare 54 volte 123 per se stesso
ottenendo un prodotto enorme (circa 100 cifre decimali)
e poi dividere per 678 per ottenere il resto un computer potrebbe farlo con facilit
Tuttavia, per essere sicuro RSA richiede che i numeri sianodi 150 cifre! elevare un numero di 150cifre ad un esponente anchesso di
150 cifre computazionalmente impraticabile un calcolo di questo tipo esaurirebbe le capacit di tutti i computer
esistenti per un tempo superiore al tempo di vita previstodelluniverso
Per fortuna esiste un metodo molto pi efficiente
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
39/97
Esempio calcolo di 12354 mod 678
Per evitare di ottenere numeri enormi
conviene effettuare una riduzione modulare di ogniprodotto intermedio; si noti che valgono le seguenti
(a b) mod n = ((a mod n ) (b mod n )) mod n
(a b) mod n = (a (b mod n )) mod n
si pu procedere nel seguente modo
1232 = 123 123 = 15129 = 213 mod 678
1233 = 123 213 = 26199 = 435 mod 678
1234 = 123 435 = 53505 = 621 mod 678
12353 = 123 567= 69741 = 585 mod 678
12354 = 123 585 = 71955 = 87mod 678
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
40/97
Esempio calcolo di 12354 mod 678
necessario effettuare 54 moltiplicazioni e 54
divisioni di piccoli (< 678) numeri interi
ancora una soluzione impraticabile
considerata la dimensione degli esponenti usati in RSA
tuttavia, esiste un metodo per migliorare
ulteriormente lefficienza
si supponga per semplicit che lesponente sia una
potenza di 2, ad esempio 32 = 25
la potenza a32 pu essere ottenuta calcolando 5
potenze al quadrato in cascata
a32 = ((((a2 mod n)2 mod n)2 mod n)2 mod n)2 mod n
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
41/97
Esempio calcolo di 12354 mod 678
nel caso generale in cui lesponente non unapotenza di 2, ad esempio 54, si pu tener contodelle seguenti osservazioni
noto ax a2x ottenibile da axcome segue
a2x= (ax)2 mod n = (axmod n)2 mod n
mentre a2x+1 ottenibile da a2xcome segue
a2x+1 = ((a2x) a) mod n = ((a2xmod n) a) mod n
inoltre, la rappresentazione binaria di 54(110110)2 fornisce
la corretta sequenza di potenze al quadrato e dimoltiplicazioni (per la base 123)
da effettuare in cascata per ottenere 12354
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
42/97
12354 cascata di pot. e molt.
1 ( )2 b ( )2 ( )2 ( )2b b ( )2
0
87mod 678
1 1 0 1 1 0codifica binaria di 54
( )2
b
LEGENDA
eleva al quadrato la base ed effettua la riduzione modulare
moltiplica per la base 123 ed effettua la riduzione modulare
INPUT OUTPUT
2 +1 2 2 2+1 +1 22 +1
( )2 b
54
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
43/97
12354 cascata di pot. e molt.
in definitiva, per effettuare lesponenziazione di
una base ad un esponente
si parte da un valore iniziale tmp = 1, e
si scandisce lesponente, bit a bit, dal bit pisignificativo a quello meno significativo
per ciascun bit considerato si eleva al quadrato il valore
corrente di tmp
se il bit 1 si moltiplica anche per la base chiaramente, dopo ogni operazione si esegue la
riduzione modulare
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
44/97
12354 cascata di pot. e molt.
con la tecnica appena illustrata il calcolo di 12354
richiede di fatto 8 moltiplicazioni e 8 divisioni, ma
soprattutto
il numero di moltiplicazioni e divisioni crescelinearmente con il numero di bit dellesponente e
non con il suo valore
e = 2Nb1 ove Nb= numero bit dellesponente
con questa tecnica RSA sufficientemente
efficiente da poter essere usato
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
45/97
Generazione delle chiavi RSA
La generazione delle chiavi RSA unoperazione pocofrequente
in gran parte delle applicazioni della tecnologia a chiavepubblica deve essere eseguita soltanto una volta
ad esempio quando un impiegato viene assunto
non richiesta la stessa efficienza delle altre operazioniRSA; deve comunque essere garantita unefficienzaragionevole
Per generare una coppia di chiavi PU, PR necessario trovare due numeri primip e q molto grandi, e
trovare due interi ded e con le propriet precedentementedescritte
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
46/97
Trovare due numeri primi grandip e q
esistono infiniti numeri primi; tali numeri tendono
per a diradarsi sempre pi al crescere di n
estraendo n a caso Pr{n primo} 1 / ln n
Pr{n primo} 1 / Nb ove Nb denota il numero di bitdi n
la densit dei numeri primi inversamente
proporzionale alla loro lunghezza in bit (o in cifre
decimali)
per un numero n a dieci cifre decimali (dimensione
usata in RSA) c una possibilit su 230 di essere primo
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
47/97
Trovare due numeri primi grandip e q
Pertantop e q sono generati con la seguente strategia
1. estrai un numero dispari molto grande
2. verifica se primo, in caso negativo ritenta
mediamente sono necessari 230 tentativi per trovare un
numero primo
tale strategia praticabile solo se si dispone di untest di primalit efficiente
Come possibile testare se un intero n primo?
un metodo banale consiste nel dividere n per tutti gliinteri n1/2 e verificare che non ci sono divisori > 1, maci richiederebbe diverse vite delluniverso!
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
48/97
Trovare due numeri primi grandip e q
prima del 2002 non esisteva un test di primalit polinomiale
nel 2002 stato pubblicato il test di primalit deterministico
AKS
RSA usa un test di primalit probabilistico
non si pu affermare con certezza che lesito del test
corretto
tuttavia, la probabilit di errore pu essere resa
arbitrariamente piccola aumentando il tempo di test
il test si basa sul teorema di Fermat che fornisce unacondizione necessaria affinch un intero n sia primo
se n primo per ogni intero a risulta an 1 = 1 mod n
non vale per il viceversa, esistono degli interi a per i quali
luguaglianza verificata anche se n non primo
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
49/97
Test di primalit probabilistico
Dato un intero n, un possibile test di primalit ilseguente
1) scegliere un intero a < n
2) calcolare a
n-1
mod n 3a) se il risultato diverso da 1 n certamente
non primo
3b) se il risultato 1 n potrebbe essere primo, mapotrebbe anche non esserlo
stato dimostrato che se n un intero random di circacento cifre decimali la probabilit di un falso positivo dicirca 10-13
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
50/97
Test di primalit probabilistico
si osservi che un errore nel test di primalit purendere
impossibile la decifratura RSA di un messaggio
pi facile lidentificazione della chiave privata
se una probabilit di errore pari a 10-13 non ritenutasufficiente si possono effettuare pi test con diversivalori di a
Pr{falso positivo dopo ktest} = (10-13)k
la probabilit di errore pu essere resa arbitrariamentepiccola, ma non sempre la vita cos semplice!
ci possono essere dei casi veramente sfortunati non rilevabilidal test, ci accade se n un numero di Carmichael
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
51/97
Test di primalit probabilistico
un numero n un numero di Carmichael se non
primo e se per ogni a < n risulta an-1 = 1 mod n
i numeri di Carmichael sono sufficientemente rari che
estremamente improbabile estrarli a caso
tuttavia, a fronte di un piccolo costo computazionale
aggiuntivo
possibile migliorare il test di primalit precedente
introducendo altri controlli che permettono di rilevare
con maggior probabilit se n non primo
un test molto efficace il test di primalit di Miller e
Rabin
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
52/97
Test di primalit di Miller e Rabin
Sfrutta un ulteriore CN di primalit:
se n primo le uniche radici quadrate modulon di 1 sono 1 e -1 (si noti che -1 = n 1 mod n)
cio, se a un intero tale che a
2
mod n = 1 deve essere a = 1 oppure a = -1
in caso contrario si desume che n non primo
tali controlli sulle radici quadrate vengono eseguiti
nei risultati intermedi necessari al calcolo di an-1
mod n per il test precedente
a tale scopo viene sempre espresso n1 come 2bc ovec un numero dispari
il test precedente diventa a^(2bc) mod n = 1
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
53/97
Test di primalit di Miller e Rabin
il test sulle radici quadrate mod n di 1 permette di
aumentare notevolmente la capacit di
individuare dei falsi positivi
se n non primo (anche se un numero di Carmichael)almeno di tutti i possibili valori di a permettono di
rilevarlo
lesecuzione del test con diversi valori di a permette
di ridurre a piacere la probabilit di errore; anche nel
caso in cui n un numero di Carmichael
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
54/97
Test di primalit di Miller e Rabin
1. Sia n un numero dispari.
2. Testare se n divisibile per qualche numero primo piccolo. In
caso affermativo tornare al punto 1. (tale step non strettamentenecessario, ma vale la pena eseguirlo perch pu rilevare un numero non
primo con buona probabilit)
3. Ripetere i seguenti step arrestandosi quando si prova che n
non primo oppure dopo un numero di volte ritenute sufficienti
a considerare n primo con elevata probabilit.
3.1 Scegliere randomicamente un numero a.3.2 Calcolare acmod n (dove c il numero dispari tale che n1 =
2bc) eseguendo una sequenza di potenze al quadrato e/o
moltiplicazioni per la base a.
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
55/97
Test di primalit di Miller e Rabin
Ad ogni elevamento al quadrato controllare se il risultato 1.
Se s, controllare se il numero elevato al quadrato (cio la
radice quadrata mod n di 1) era pari a 1; in caso negativo, n
non primo.
3.3 Se acmod n pari a 1, n supera il test di primalit per questo
valore di a.
3.4 Altrimenti, acmod n 1, al pi b1 volte, sostituisci il
risultato con il suo quadrato e verifica se si ottiene 1.
Se si ottiene 1, n non primo (perch il precedente risultato una radice quadrata di 1 diversa da 1).
Se si ottiene -1, n supera il test di primalit per questo valore
di a.
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
56/97
Test di primalit di Miller e Rabin
Se sono state eseguite b1 potenze al quadrato, n non
primo (perch a(n 1)/2 diverso da 1)
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
57/97
Calcolo di ded e
Gli interi ded e sono definiti nel seguente
modo
e un qualunque numero relativamente primo
rispetto allintero (n) = (p1)(q1)
d lintero tale che (e d) mod (n) = 1
noto e, dsi calcola con lalgoritmo di Euclide
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
58/97
Calcolo di ded e
esistono due possibili strategie per il calcolo di e
1. Una volta ottenutip e q
scegliere e randomicamente e
testare se e e (p1)(q1) sono relativamente primi
in caso negativo, selezionare un altro valore per e
2. Non selezionare primap e q, invece
scegliere prima e
poi selezionarep e q in modo tale che (p1) e (q1)sono relativamente primi rispetto ad e
nelle slide seguenti si illustrer per quale motivo lastrategia 2. conveniente e come possibile attuarla
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
59/97
Come scegliere e
La sicurezza di RSA non diminuisce (per quanto adoggi noto) se e sempre scelto allo stesso modo
si noti che dcontinua ad essere imprevedibile sep e qnon sono noti
doltre a dipendere da e dipende anche dap e da q
se e un intero piccolo o facile da calcolare leoperazioni di cifratura e di verifica della firmadiventano pi efficienti
cio le operazioni che richiedono luso della chiave pubblicaPU = e, n sono pi veloci, mentre
risulta invariata lefficienza delle operazioni che richiedono lachiave privata PR = d, n
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
60/97
Come scegliere e
chiaramente, diversamente da e, non si pu assegnare
a dun valore piccolo
sebbene ci renderebbe molto pi veloci le operazioni
che usano la chiave privata PR, la sicurezza di RSA
verrebbe meno; un avversario potrebbe identificare PRcon una semplice ricerca!
Generalmente si assegna ad e uno dei
seguenti valorie = 3
e = 65537
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
61/97
Perch e = 3?
La scelta e = 3 quella che assegna ad e il pi
piccolo valore possibile
2 non va bene perch non relativamente primo con
(p1)(q1) che un numero pari 3 pu funzionare
il calcolo di m3 mod n richiede soltanto due moltiplicazioni
un esponente pubblico pari a 3 massimizza le prestazioni
per quanto ad oggi noto, la sicurezza di RSA non indebolitase vengono messi in essere degli opportuni accorgimenti
pratici
nelle prossime slide si esaminer quali rischi si corrono se e =
3 e come sia possibile far fronte a tali rischi
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
62/97
e = 3 vulnerabilit/patch
La scelta di e = 3 comporta le seguentevulnerabilit
se il messaggio m da cifrare rappresenta un interopiccolo, in particolare se m inferiore alla radice
cubica ordinaria di n: m < n1/3
c = me mod n = m3 mod n = m3
un avversario pu decifrare c senza conoscere lachiave privata; semplicemente estraendo la radice
cubica ordinaria di c: m = c1/3
tale vulnerabilit pu essere rimossa eseguendo unpadding random del messaggio tale che m3 > n
ci garantisce che m3 viene sempre ridotto mod n
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
63/97
e = 3 vulnerabilit/patch
Unaltra vulnerabilit si ha se uno stesso messaggio m viene inviato cifrato
a tre o pi destinatari aventi un esponente pubblico e= 3
il messaggio in chiaro m pu essere decifratoconoscendo soltanto i tre messaggi cifrati c1, c2 e c3 e
le tre chiavi pubbliche 3, n1 , 3, n2 e 3, n3
PROVA si supponga che un avversario intercetti tre cifrature
dello stesso messaggio m
c1 = m3 mod n1 c2 = m
3 mod n2 c3 = m3 mod n3
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
64/97
e = 3 vulnerabilit/patch
conoscendo anche le tre chiavi pubbliche deidestinatari 3, n1 , 3, n2 e 3, n3
e utilizzando il teorema cinese del resto, lavversariopu calcolare m3 mod n1 n2 n3
essendo m < ni per i= 1, 2, 3 m3 < n1 n2 n3 m3 mod n1 n2 n3 = m
3
lavversario pu risalire ad m estraendo una radicecubica ordinaria
anche questa vulnerabilit pu essere rimossamediante un padding random
in pratica si evita che uno stesso messaggio cifrato vengainviato a pi destinatari
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
65/97
e = 3 vulnerabilit/patch
Si osservi che nelle applicazioni pratiche di RSA, il messaggio m generalmente una chiave di un
algoritmo di cifratura a chiave segreta e
in ogni caso m molto pi piccolo di n
sempre possibile aggiungere dei bit diriempimento (padding) in modo tale che il messaggiorisultante presenti delle caratteristiche desiderate
se per ogni destinatario il padding scelto random laprecedente vulnerabilit viene rimossa
la vulnerabilit pu essere rimossa anche usandocome padding gli identificatori univoci (ID) deidestinatari
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
66/97
Come sceglierep e q se e = 3
Essendo e = 3, come possibile selezionarep e q garantendo che
e e (n) siano relativamente primi?
necessario garantire che (p1) e (q1) sianorelativamente primi rispetto a 3
ci pu ottenersi
scegliendop tale che p mod 3 = 2, e
scegliendo q tale che q mod 3 = 2
(p 1) mod 3 = 1 (p 1) non divisibile per 3
(q 1) mod 3 = 1 (q 1) non divisibile per 3
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
67/97
Come sceglierep e q se e = 3
essendop e q due interi dispari
p = 2kp + 1
q = 2kq + 1
per imporre anche che risulti p mod 3 = 2
q mod 3 = 2
si pu porre
p = (2kp + 1)3 + 2 = 6kp + 5
q = (2kq + 1)3 + 2 = 6kq + 5
dopodich pu essere effettuato il test di primalit
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
68/97
Perch e = 65537?
La scelta di e = 65537
(in opposizione ad altri interi della stessa dimensione)
deriva dal fatto che 65537= 216 + 1 ed primo
(65537)2 = 10000000000000001
lesponenziazione richiede 17moltiplicazioni
pi lenta del caso e = 3, ma
molto pi veloce del caso in cui e scelto in modorandomico; mediamente sono richieste 768
moltiplicazioni nel caso di 512 bit
non presenta le vulnerabilit viste nel caso e = 3
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
69/97
e = 65537introduce vulnerabilit?
La scelta di e = 65537rimuove o riduce quasi
del tutto le vulnerabilit viste nel caso e = 3
la prima vulnerabilit con 3 si ha se m3 < n
nel caso e = 65537
a meno che n non sia molto pi lungo di 512 bit
non ci sono molti valori di m tali che m65537< n
quindi lestrazione della 65537-esima radice
ordinaria di m non costituisce una vulnerabilit
seria
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
70/97
e = 65537vantaggi/svantaggi
la seconda vulnerabilit con 3 si ha se uno stessomessaggio m cifrato inviato a 3 destinatari
nel caso e = 65537la stesso tipo di vulnerabilit si haquando m viene inviato a 65537destinatari!
non si pu dire certo che si tratti i un messaggio segreto!
in fine, la scelta di fissare a priori e = 3 ha richiesto discegliere n in modo tale che (n) e 3 fosserorelativamente primi
nel caso e = 65537conviene generarep e q come se e non fosse prefissato, e
rigettare ogni valore dip o q che uguale a 1 mod 65537
tale evento si verifica con una probabilit molto piccola (2-16)
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
71/97
Vulnerabilit arcane di RSA
Nel caso della firma digitale risulta che
per ogni numerox< n
x la firma digitale del messaggio mx=xe mod n
infatti, mxdmod n = (xe mod n)dmod n =xedmod n =
= x(1 mod (n)) mod n =xmod n =x
banale falsificare la firma di qualcuno se il
messaggio m da firmare non interessa
la difficolt sta nel falsificare la firma di uno
specifico messaggio
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
72/97
Vulnerabilit arcane di RSA
generalmente, ci che viene firmato (messaggio +padding) ha una struttura sufficientemente vincolata
vengono inseriti dei bit di riempimento organizzati in pattern
regolari
la probabilit che un numero random costituisca unmessaggio (padding incluso) valido trascurabile; cio
estremamente improbabile che un numero random
contenga i pattern regolari di bit
tuttavia, visto che i numeri in RSA sono molto grandi unavversario ha a disposizione molti tentativi
i pattern di riempimento vanno scelti in modo opportuno
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
73/97
Smooth Numbers
Intuitivamente, uno smooth number un numero
scomponibile nel prodotto di (molti) numeri primi
ragionevolmente piccoli
non conviene usare una definizione assoluta; un
numero piccolo o grande in base alle capacit di
calcolo dellavversario
esempio, il numero 6056820 pi smooth del
numero 6567587, poich
6056820 = 22 32 5 7 11 19 23
6567587= 13 557 907
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
74/97
Vulnerabilit smooth number
Si tratta di una vulnerabilit di RSAprevalentemente teorica
nella pratica difficilmente realizzabile
richiederebbe unimmensa capacit di calcolo, la raccolta di
un numero enorme di messaggi firmati e molta fortuna (perlavversario)
IDEA BASE
dalle firme s1 e s2 dei messaggi m1 ed m2,
possibile calcolare le firme dei messaggi m1 m2, m1 / m2,m1j, m2
k, e m1j m2
k
ad esempio, conoscendo la firma s1 = m1dmod n possibile
ottenere la firma di m12 senza conoscere d(chiave privata)
infatti, (m12)dmod n = (m1
d)2 mod n = (m1dmod n)2 mod n
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
75/97
Vulnerabilit smooth number
la firma di m12 pari a s12 mod n
se un avversario riesce a collezionare moltimessaggi firmati, pu ottenere la firma di ognimessaggio m esprimibile come prodotto e/o
divisione di messaggi della collezione in particolare, se ottiene le firme di due messaggi m1 e
m2 tali che il rapporto m1 / m2 =p dovep un numeroprimo
pu calcolare la firma dip se abbastanza fortunato da raccogliere molte
coppie di questo tipo
pu calcolare la firma di molti numeri primi
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
76/97
Vulnerabilit smooth number
pu falsificare la firma di ogni messaggio dato dalprodotto di ogni sottoinsieme di tali numeri primi ciascuno
elevato ad una qualunque potenza
con abbastanza coppie, pu falsificare la firma di
ogni messaggio rappresentato da uno smooth number generalmente, ci che si firma con RSA un digest
messaggio con padding m* =pad(h(m))
al digest del messaggio m vengono aggiunti, in modo
opportuno, dei bit di riempimento (padding) ottenendo m*
se i bit di riempimento sono degli zeri, anzich essere
random pi probabile che m* sia uno smooth number
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
77/97
Vulnerabilit smooth number
invece, estremamente improbabile che un numerorandom mod n sia smooth
con un padding a sinistra di soli zeri
lintero da firmare mp = h(m) rimane piccolo
il padding non riduce la probabilit che mp sia
smooth
con un padding a destra di soli zeri
mp = h(m) 2
k
un intero molto pi grande, ma divisibile per una potenza di due
di nuovo, il padding non riduce la probabilit che mp
sia smooth
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
78/97
Vulnerabilit smooth number
con un padding a destra random
lintero da firmare mp estremamente improbabile
che sia smooth
tuttavia, si espone RSA alla minaccia nota come il
problema della radice cubica
bl d ll d b
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
79/97
Problema della radice cubica
Si assuma che si optato per padding a destra
random
per ridurre la probabilit che le firme prodotte
siano smooth
si ha in seguente inconveniente se lesponente
pubblico e = 3 un attaccante pu virtualmente falsificare la
firma di un qualsiasi messaggio
bl d ll d b
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
80/97
Problema della radice cubica
supponiamo che un attaccante, Carol, vogliafalsificare la firma di un qualche messaggio m
avente digest hm allora
Carol applica un padding a destra, di hm,considerando bit a zero ottenendopm = hm0000
poi calcola la radice cubica ordinaria e la
arrotonda allintero pi vicino r = round(pm1/3)
r la firma falsificata di m infatti, re = r3 =pm ossia hm con un padding a destra che
apparentemente casuale
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
81/97
PUBLIC-KEY CRYPTOGRAPHYSTANDARD (PKCS)
Crittografia a Chiave Pubblica Parte I
PKCS
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
82/97
PKCS
PKCS sta per Public-Key Cryprography
Stanbdard
Standard di Crittografia a Chiave Pubblica
si visto che ogni applicazione di RSA, cifratura,decifratura e firma, pu essere soggetta a diversi
tipi di attacchi
che possono essere sventati con opportune
contromisure,
basate sulla scelta di unopportuna codifica/formato
(quindi padding) del messaggio da cifrare/firmare
PKCS i i hi
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
83/97
PKCS: impieghi
esistono 15 standard PKCS per le diverse situazioni incui la cifratura a chiave pubblica viene utilizzata
nelle prossime slides si esaminer solo PKCS #1
Tale standard stabilisce le codifiche per la chiave pubblica RSA
la chiave privata RSA
la firma RSA
la cifratura RSA di messaggi corti (ossia chiavi segrete)
la firma RSA di messaggi corti (tipicamente digest)
PKCS #1 i id
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
84/97
PKCS #1: minacce considerate
Lo standard PKCS #1 stato concepito perfronteggiare le seguenti minacce:
cifratura di messaggi prevedibili
smooth number per le firme
destinatari multipli di uno stesso messaggio
quando e = 3
cifratura di messaggi di lunghezza inferiore ad unterzo della lunghezza di n quando e = 3
firma di messaggi dove linformazione posta nei
bit pi significativi ed e = 3
PKCS #1 Cif t
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
85/97
PKCS #1: Cifratura
PKCS #1 definisce uno standard, tra laltro, per laformattazione di un messaggio da cifrare con RSA
in genere, RSA non viene usato per cifrare messaggi
ordinari, ma per cifrare delle chiavi segrete
per questioni di efficienza conviene usare la cifratura a
chiave segreta per dati ordinari
lo standard prevede il seguente formato per linput m
0 2 0almeno otto ottettirandom non nulli data
PKCS #1 Cif t
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
86/97
PKCS #1: Cifratura
i dati effettivi da cifrare, generalmente una chiavesegreta, sono pi corti del modulo (cio di n, chegeneralmente ha una lunghezza di 512 bit)
KDES ha una lunghezza di 64 bit
K3DES ha una lunghezza di 128 bit il 1 ottetto 0 (cio otto bit nulli)
ci garantisce che m < n; se fosse m > n la decifraturaprodurrebbe m mod n m
il 2 ottetto 2, definisce il tipo di formato
il valore 1 stabilisce che m viene firmato
il valore 2 stabilisce che m viene cifrato
0 2 0almeno otto ottettirandom non nulli data
PKCS #1 Cif t
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
87/97
PKCS #1: Cifratura
seguono poi almeno otto ottetti di padding nonnulli scelti in modo randomico e indipendente
luno dallaltro
lottetto 0 (nullo) va scartato perch viene usato come
separatore del padding dalla parte dati
0 2 0almeno otto ottettirandom non nulli data
PKCS #1 t i i if t
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
88/97
PKCS #1: protezione minacce cifratura
vediamo come le scelte del formato standard per lacifratura permettono di sventare le minacceprecedentemente esaminate
Cifratura di messaggi prevedibili
con almeno otto ottetti (64 bit) di padding random
anche se un attaccante in grado di prevedere i datieffettivi da cifrare
ad esempio i dati potrebbero appartenere ad un insieme con
pochi elementi noti allattaccante lattaccante potrebbe cifrare ciascun dato e verificare se
quanto ottenuto coincide con il testo cifrato
lattaccante dovrebbe anche indovinare il padding
cio una sequenza di almeno 64 bit random
PKCS #1 t i i if t
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
89/97
PKCS #1: protezione minacce cifratura
Spedizione di uno stesso messaggio cifrato a
pi di tre destinatari
nellipotesi e = 3
anche se i dati dati da cifrare sono esattamente gli
stessi per tutti i destinatari,
la scelta del padding random garantisce che, in input allalgoritmo di cifratura sono forniti, con
elevatissima probabilit, dei messaggi distinti
PKCS #1 t i i if t
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
90/97
PKCS #1: protezione minacce cifratura
Cifratura di messaggi di lunghezza inferiore ad unterzo della lunghezza di n
nellipotesi e = 3
essendo il secondo ottetto non nullo, ( pari a 2),
il messaggio ottenuto m ha sicuramente unalunghezza superiore ad un terzo della lunghezza
del modulo n
PKCS #1 fi di it l
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
91/97
PKCS #1: firma digitale
PKCS #1 definisce anche uno standard per laformattazione di un messaggio da firmare con
RSA
in genere, i dati da firmare consistono in un digest diun messaggio, tipicamente 128 bit
analogamente alla cifratura necessario applicare un
padding
lo standard prevede il seguente formato per linput m
0 1 0almeno otto ottetti diff16 tipo-di-digest e digest
il tipo-di-digest viene specificato
con una notazione ASN.1
PKCS #1 prote ione minacce firma
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
92/97
PKCS #1: protezione minacce firma
il 1 ottetto pari 0 m < n
il 2 ottetto 1, e specifica il tipo di formato PKCS
in questo caso, una quantit da firmare
il paddingcon almeno otto ottetti pari aff16 (ottobit a 1) rende la quantit da firmare molto grande
altamente improbabile che sia uno smooth
number
PKCS #1 protezione minacce firma
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
93/97
PKCS #1: protezione minacce firma
Domanda: perch viene anche incluso il tipodi algoritmo di digest utilizzato?
espresso nella notazione ASN.1
Risposta: il tipo di digest incluso per duemotivi
1. viene standardizzato come comunicare allaltra
parte lalgoritmo di digest utilizzato
2. serve a prevenire una minaccia oscura
PKCS #1: protezione minacce firma
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
94/97
PKCS #1: protezione minacce firma
la minaccia oscura la seguente una funzione di hash, ad esempio MD4, potrebbe
essere debole
qualcuno potrebbe essere in grado di generare un
messaggio con un particolare digest MD4 si supponga, che nel firmare un messaggio m venga usato
MD5, ma non sia incluso lalgoritmo di digest usato
un avversario potrebbe allora generare un messaggio mtaleche MD4(m) = MD5(m)
ed usare la firma corrispondente ad m per m
includere il tipo di algoritmo di digest
il rischio di falsificazione che si corre dipende solodalla robustezza di tale algoritmo
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
95/97
APPENDICE
Crittografia a Chiave Pubblica
Teoremi di Eulero e di Fermat
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
96/97
Teoremi di Eulero e di Fermat
Teorema di Eulero: per ogni intero arelativamente primo ad n si ha
a(n) = 1 mod n
nel caso in cui n primo (n) = n1 il teorema
assume una forma pi semplice e un altro nome
Teorema di Fermat: sep primo e 0 < a
7/29/2019 D07 Crittografia a Chiave Pubblica Parte I
97/97
Bibliografia
[DES81] DES Modes of Operation, FIPS PUB 81, NationalBureau of Standards, U.S. Department of Commerce, 1981.
[KPS02] C. Kaufman, R. Perlman, M. Speciner. NetworkSecurity Private Communication in a Public World.Prentice Hall.
[PFL08] C. P. Pfleeger, S. L. Pfleeger. Sicurezza inInformatica. Pearson, Prentice Hall.
[STA07] W. Stallings. Sicurezza delle reti. Pearson, PrenticeHall.
[Wiki-it] http://it.wikipedia.org/wiki/
[Wiki-en] http://en.wikipedia.org/wiki/
[ISECOM] Institute for Security and Open Methodologies