Ripasso
Public Key cryptograhy
Message Authentication Codes (MAC)
Firma digitale
RSA Public Key Cryptosystem
Sia N=pq il prodotto di due primi
Scegli e tale che gcd(e,f(N))=1
Sia d tale che de≡1 mod f(N)
La chiave pubblica è (N,e)
La chiave segreta è d
Codifica di MŒZN* : C=E(M)=Me mod N
Decodifica di CŒZN* : M=D(C)=Cd mod N
“Il metodo proposto non deve essere confuso con la
tecnica proposta da Diffie e Hellman per risolvere il
problema della distribuzione delle chiavi (dall’articolo RSA)
Il gruppo moltiplicativo Zpq*
Siano p e q due primi grandi e sia N = pq il
loro prodotto.
Definizione Il gruppo moltiplicativo ZM* =Zpq*
contiene tutti gli interi nell’intervallo
[1,pq-1] primi sia rispetto a p che a q
La dimensione del gruppo Zpq* è
f(pq) = (p-1) (q-1) = N - (p+q) + 1,
quindi, per ogni x Œ Zpq*, x(p-1)(q-1) = 1.
RSA come One Way Trapdoor
Function (OWF)
easy
x
xe mod N
hard
Facile con trapdoor info ( d )
OWF e Trapdoor OWF
Definizione: f:DÆR è one way function se è
facile da calcolare
difficile da invertire
Definizione: f:DÆR è una trap-door one way
function se esiste una trap-door s tale che
Senza conoscenza di s, la funzione è one way
Dato s, invertire f è facile
Cosa vuol dire difficile
Classi di complessità
Una classe di complessità è una classe di pbroblemi di
decisione (linguaggi) che possono essere risolti con
determinate risorse di calcolo
P classe dei problemi risolubili in tempo polinomiale
(algoritmi deterministici)
NP classe dei problemi risolubili in tempo polinomiale
(algoritmi NONdeterministici)
Classi di complessità
probabilistiche
Un algoritmo probabilistico è un algoritmo che
effettua scelte casuali
• sullo stesso input può dare risposte diverse
• un algoritmo probabilistico può fare errori
RP linguaggi L per cui esiste un alg. prob. A tale che
– x in L : Prob[ A(x) accetta] > .5
– x non in L : Prob[ A(x) rifiuta] =0
PP linguaggi L per cui esiste un alg. prob. A tale che
– x in L : Prob[ A(x) accetta] > .5
– x non in L : Prob[ A(x) rifiuta] > .5
OWF: definizione
Definizione: f:DÆR è one way function se è
facile da calcolare (tempo polinomiale con algoritmo
probabilistico)
difficile da invertire:
Per ogni algoritmo polinomiale probabilistico A esiste una
funzione trascurabile g(n) - n dimens. input, g(n) <
1/polin.(n) - tale che
se si sceglie a caso x in D, con x di dimensione n
Prob [A trovi z, tale che f(z) = f(x)] < g(n)
(è poco probabile riuscire a invertire f)
NB: non si richiede di trovare x
Trap-door OWF
Definizione: f:DÆR è una trap-door one way
function se esiste una trap-door s tale che
Senza conoscenza di s, la funzione è one way
Dato s, invertire f è facile
Non è nota l’esistenza di OWF.
Si assume che RSA sia OWF. Si può provare che se
RSA è OWF allora è anche trap-door OWF
Primality Testing
Input: Un intero dispari M, 2n-1<M<2n
Problema di Decisione: M è composto ?
Problema di Decisione è in NP
(prova esaustivamente tutti i possibili
fattori & verifica).
Problema di Ricerca: Trova i fattori primi di M.
La fattorizzazione di interi è considerato un
problema intrattabile.
Crittografia a chiave pubblica:
Schema di base
Uno schema crittografico a chiave pubblica
include:
Una chiave privata k
Una chiave pubblica k’
Un metodo di codifica che sia una trap door OWF.
La chiave privata rappresenta l’informazione
trap-door
La chiave pubblica e distribuita (ognuno può
codificare)
La decodifca richiede la chiave privata
Proprietà di RSA
Il requisito (e, f(N))=1 è importante per unicità
codifica
Trovare d, dati p e q è facile. Trovare d dati solo N e
e è considerato difficile (assunzione di RSA)
L’esponente pubblico e può essere piccolo
(tipicamente 3 ma meglio 216+1)
Ogni codifica richiede diverse operazioni modulari.
Decodifica è più lunga.
RSA - Attacchi
RSA è in generale difficile da attaccare per
un attaccante passivo (richiede
fattorizzare)
• alcuni numeri prodotto di due primi sono
‘facili’ da fattorizzare
• alcuni messaggi sono facili da decifrare
• attacchi attivi
RSA - Attacchi
Messaggi facili da decifrare se m= 0,1,n-1 allora
RSA(m) = m: SOLUZ: rari, uso salt
Se m è piccolo o se lo spazio dei possibili messaggi è
piccolo si può procedere per enumerazione:
SOLUZ. aggiungere salt alla fine del messaggio
Se MCD(p-1,q-1) e d sono piccoli decrittare RSA(m)
richiede di calcolare la radice di un numero piccolo:
SOLUZ. scegliere d grande
Se due utenti hanno chiavi con lo stesso n (ma e e d
diversi) allora il sistema è debole: SOLUZ. ognuno
si sceglie il proprio n
RSA - Attacchi
Proprietà moltiplicativa di RSA:
Se M =M1 M2 allora (M1 M2)e = M1e M2e
Quindi Trudy può procedere per messaggi piccoli
(attacco ciphertext)
Generalizzabile se M= M1 M2 ...Mk
Soluzione: padding su messaggi brevi
RSA - Attacchi
Proprietà moltiplicativa di RSA
Attacco chosen ciphertext:
T conosce c = Me mod n e vuole conoscere M
sceglie a caso X e calcola c’ = c Xe mod n e chiede
a A di decodificare c’ (cioè di firmare)
A calcola (c’)d = c d (X e) d = M X mod n
Soluzione: imporre struttura sui messaggi da
codificare (A rifiuta di codificare se M non
verifica quanto richiesto) Non firmare mai cose random e usare sempre hash!!
Problemi per uso effettivo
Due parole:
Key Exchange
Autentica di Messaggi - Scopo
Garantire l’integrità dei messaggi anche in
presenza di un avversario attivo che manda
i suoi messaggi (corretti)
Alice
(mittente)
Bob
(ricevente)
Franco
(falsificatore)
Nota: Autenticazione è ortogonale alla segretezza
spesso un sistema deve garantire ambedue
Definizioni
Algoritmo di autenticazione - A
Algoritmo di autenticazione - V
(“accetta”/”rifiuta”)
Chiave di autenticazione– k
Spazio dei messaggi (stringhe binarie): ogni
messaggio fra Alice e Bob è una coppia
(m, Ak(m))
Ak(m) è impronta (authentication tag) di m
Proprietà funzioni MAC
Requisito di sicurezza
avversario non può costruire una nuova coppia
corretta (m, MACk(m)) anche dopo aver
visto (mi, MACk(mi)) (i=1,2,…,n)
Output deve essere corto
Funzioni MAC non sono 1-to-1
Efficienza
Scopo avversario: Date n coppie legali
(m1, MACk(m1)), …, (mn, MACk(mn))
trovare una nuova coppia legale (m, MACk(m))
efficientemente e con probabilità non trascurabile.
NOTA: Se n è grande abbastanza allora n coppie
(mi, MACk(mi)) determinano la chiave k
unicamente (con alta prob.).
Quindi una elaboratore nondeterministico può
indovinare k e verificare. Eseguire questo deve
essere un compito computazionalmente difficile.
MAC Usati in pratica
Vediamo
• MAC basato su modalità codifica CBC
– usa codifica crittog. a blocchi
– lento, problemi esportazione fuori USA
• MAC basato su funzioni hash crittografiche
– veloce
– nessun problema esportazione
MACs con CBC
Inizia con il seme di tutti zero.
dato un messaggio di n blocchi M1,M2,…,Mn, applica CBC
(usando la chiave segreta k).
0000000
M1
M2
Ek
Ek
C1
C2
Mn
...
.
.
.
.
....
Ek
Cn
•Scarta i primi n-1 “cipertext” blocchi C1,C2,…, , usa Cn.
•Invia M1,M2,…,Mn & il tag di autenticazione MACk(M)=Cn .
Utilizzo di funzioni hash per
il calcolo del MAC
Obiettivi
• calcola Mac usando una funzione hash,
il messaggio e una chiave segreta
• utilizzare una qualunque funzione hash
Esempi MACk(m)=h(k,m),
MACk(m)=h(m,k)
Paradosso del compleanno
Se 23 persone sono scelte a caso la b che due
due di esse abbiano lo stesso compleanno è
maggiore di 0.5
In generale, sia h:DÆR una qualunque
funzione. Se si sceglie 1.17|R|1/2 elementi di
D a caso, la probabilità che due di essi
diano lostesso valore della funzione è
maggiore di 0.5.
Funzioni Hash Crittografiche
Funzioni hash Crittografiche sono funzioni
hash che sono strongly collision resistant.
Nota: Non c’è chiave segreta.
Devono essere veloci da calcolare ma difficile
trovare collisioni (impossibile se P diverso
da NP).
Di solito definite usando una funzione di
compressione con dominio n bits (es. 512) e
codominio di m bits (es. 160), m < n.
Secure Hash Algorithm
(SHA-1)
SHA progettato da NIST & NSA in 1993, rivisto nel
1995 - SHA-1
US standard per uso con firma digitale con DSA
standard FIPS 180-1 1995, Internet RFC3174
nb. l’algortimo è SHA, lo standard è SHS
produce 160-bit hash valori
Metodo più usato si basa usl progetto di un vecchio
algortimo MD4
HMAC
Riceve in input un messaggio m, una chiave k
e una funzione hash h
Calcola MAC come:
HMACk(m,h)= h(k⊕opad, h(k⊕ipad,m))
la chiave è riempita con zeri a sin. per
ottenere che |k| = lungh. di un blocco
opad: 01011010, ipad: 00110110, ripetuti
|k|/8 volte
Teorema [BCK]: HMAC può essere falsificato
se e solo se può esserlo la funzione hash (si
trovano collisioni).
HMAC - Attacchi
Attaccante vuole trovare due messaggi m e m’
t.c. HMACk(m,h)= HMACk(m’,h); conosce IV,H ma
non conosce k
Si applica il paradosso del compleanno (blocco lungo n
implica collisione con 2n/2+1 tentativi)? No:
– attaccante non conosce k e quindi non può
generare messaggi autentici;
– deve quindi osservare 2n/2+1 messaggi generati
con la stessa chiave (es. n= 128 almeno 264 + 1+ 8
bit)
HMAC in Pratica
SSL / TLS
WTLS
IPSec: AH, ESP
RSA e Data integrity:OAEP
Problema: inviare dati con RSA non modificabili
(senza identificazione del mittente)
codif. c= RSA[M || 0k1 exor G(r)] ||
[H(RSA[M || 0k1 exor G(r)]) exor r]
k0, k1 noti; G,H funzioni hash, note; r stringa
casuale di k bit (scelta dal mittente);
decod. cd= s||t (con t di k0 bit); u=t exorH(s); v=s
exor G(u); accetta se v = m || 0k1; altrimenti rifiuta
OAEP è robusto anche nel caso di attacco chosen
ciphertext (assumendo H e G buone funzioni hash)
Esercizi
mostrare che il seguente metodo non è un
buon metodo per calcolare l’impronta di un
testo indipendentemente dalla funzione
usata:
Ek(M1 M2 ... Mn ) oppure
Ek(M1)
M2 ... Mn
Firma digitale vs. MACs
Supponi che A e B condividano una chiave segreta
K. Allora M, MACK(M) convince A che
M è scritto da B.
Ma in caso di disputa A non può convincere un
giudice che
M, MACK (M) è stato inviato da B, poichè A
potrenne generarlo lei stessa
Proprietà firma digitale
• Firma facile da verificare
• Difficile da falsificare .
• Hanno valore legale (convincere un aterza
persona esempio un giudice).
Problemi con il Paradigma di DH “Puro”
Facile falsificare messaggi casuali anche
senza conoscere DA:
Bob sceglie R e calcola S=EA(R).
La coppia (S,R) è una firma valida di
Alice del “messaggio” S.
Lo schema è soggetto a existential forgery.
“Cosa implica” ?
Problemi con il Paradigma di DH “Puro”
Considera RSA. La proprietà moltiplicativa
implica che
DA (M1M2) = DA (M1) DA (M2).
Se M2=“Devo a BOB $20” e M1=“100”
allora per qualche codifica
M1M2 =“Devo a BOB $2000”…
Soluzione Standard : Hash
Sia DA la chiave segreta di Alice e EA la sua chiave
pubblica
Per firmare M, Alice calcola y= H(M) e z=DA (y) e
invia (M,z) a Bob.
Per verificare la firma di Alice, Bob calcola y =
EA(z) e verifica che x=H(M)
La funzione H deve essere collision resistent, per cui è
difficile trovare M’ con H(M)=H(M’).
Meccanismo Generale
Generazione di chiavi pubbliche e private
(casuali).
Firma (o deterministica o probabilistica)
Verifiche (accept/reject) - deterministico.
Digital Signature Standard
(DSS)
NIST, FIPS PUB 186
DSS usa SHA come funzione hash e
DSA come metodo di firma
DSA simile a El Gamal
Più veloce per che firma piuttosto che
per chi verifica: smart cards
Digital Signature Algorithm (DSA)
p – primo, q – primo, p-1 = 0 mod q, g = h(p-1)/q mod p
(g generatore del gruppo di ordine q in Zp)
Chiave Privata : 1 ≤ x ≤ q-1 (casuale).
Chiave Pubblica: (p, q, g, y = g x mod p)
Firma del messaggio M:
Scegli a caso 1 ≤ k ≤ q-1, segreto!!
Part I: r = (( gk mod p) mod q
Part II: s =(SHA (M)+ x r) /k mod q
Perchè DSS è sicuro
Non si rivela la chiave segreta
Non si può falsificare senza la chiave segreta
Non esistono duplicati con la stessa firma
Usa un numero segreto per messaggio (Sm)!
Se Sm è noto allora si può calcolare S
Due messaggi con lo stesso Sm possono rivelare
Sm, e quindi S
DSS - Attacchi
• se attaccante conosce k allora
conosce x
• se attaccante conosce due messaggi
firmati con stesso k (anche ignoto)
allora conosce x
Esercizi
1. verificare che firma RSA non va bene
fornendo esempi concreti di firme
falsificate
2. cosa succede in DSA quando la PART
II della firma è 0?