Sei sulla pagina 1di 108

Crittografia a Chiave Pubblica Parte II

Luca Grilli

Crittografia a Chiave Pubblica Parte II

DIFFIE-HELLMAN

Diffie-Hellman Introduzione
Diffie-Helmann il primo sistema a chiave pubblica utilizzato
meno generale di RSA; non serve n a cifrare/decifrare n a firmare messaggi

La sua applicazione il cosiddetto scambio delle chiavi Diffie-Hellman


permettere a due entit di accordarsi su un segreto (chiave) condiviso, senza rivelarlo, e scambiandosi messaggi in chiaro su una rete pubblica insicura
intercettando tutti i messaggi scambiati non si in grado di risalire al segreto condiviso

Diffie-Hellman Introduzione
il segreto condiviso non viene generato da una delle due entit dialoganti, diciamo Alice e Bob
n Alice n Bob generano autonomamente il segreto

ma il risultato dello scambio dei messaggi in particolare, dopo essersi scambiati complessivamente due messaggi (in chiaro)
che tutto il mondo pi conoscere

Alice e Bob conosceranno il segreto condiviso KAB


KAB viene poi usato per proteggere la confidenzialit con tecniche di cifratura convenzionali

Diffie-Hellman Introduzione
Diffie-Hellman realmente usato per stabilire una chiave segreta condivisa in alcune applicazioni
ad esempio, nellambito della cifratura dei dati inviati in una LAN

si osservi comunque che Diffie-Hellman non incorpora alcuna forma di autenticazione


senza unautenticazione preliminare si rischia di condividere il segreto con un impostore

Diffie-Hellman Algoritmo
PRECONDIZIONE
le due parti dialoganti, Alice e Bob, devono condividere due numeri p e g, dove p: numero primo grande g: radice primitiva di p
p e g possono essere noti in anticipo, possono essere resi di dominio pubblico in una repository accessibile sia da Alice che da Bob, oppure possono essere generati dalliniziatore della comunicazione, diciamo Alice, e trasmessi a Bob nel messaggio che gli invier

Diffie-Hellman Fase 0
la Fase 0, viene eseguita dalliniziatore della comunicazione qualora i numeri p e g non siano pubblici

0A) Generazione dei numeri p e g


Alice genera (o estrae da un suo archivio) una coppia di numeri p e g tali che
p un numero primo grande g un radice primitiva di p

p e g possono essere subito inviati a Bob oppure possono essere trasmessi nella fase 3A)

Diffie-Hellman Fase 1A e 1B
1A) Generazione del segreto privato sA
sA non la chiave condivisa sA non sar mai trasmesso a Bob

Alice genera un numero random sA di 512-bit tale che sA < p

1B) Generazione del segreto privato sB


sB non la chiave condivisa sB non sar mai trasmesso ad Alice

analogamente Bob genera un numero random sB di 512-bit tale che sB < p

N.B.: in generale la fase 1B) non avviene dopo la 1A) e prima della 2A); la tempistica sar illustrata nel seguito tuttavia le singole fasi A e le singole fasi B rispettano lordine con cui sono descritte

Diffie-Hellman Fase 2A e 2B
2A) Calcolo del valore pubblico TA = gsA mod p
Alice calcola TA che poi sar inviato a Bob
TA pu essere rivelato a tutto il mondo senza inficiare la sicurezza dellalgoritmo

2B) Calcolo del valore pubblico TB = gsB mod p


analogamente Bob calcola TB che poi sar inviato ad Alice
TB pu essere rivelato a tutto il mondo senza inficiare la sicurezza dellalgoritmo

Diffie-Hellman Fasi 3A, 4A e 3B, 4B


3A) Alice invia TA a Bob 3B) Bob invia TB ad Alice 4A) Calcolo della chiave segreta KAB 4B) Calcolo della chiave segreta KBA
Alice utilizzando TB ricevuto da Bob calcola KAB = TBsA mod p Bob utilizzando TA ricevuto da Alice calcola KBA = TAsB mod p facile provare che KAB = KBA

KAB = KBA
KAB = TBs mod p = (gs mod p)s mod p = = gs s mod p = gs s mod p = = (gs mod p)s mod p = TAs mod p = KBA
A B A B A A A B B B

Sicurezza: noti p, g, TA e TB possibile calcolare sA, sB oppure gs s ?


A B
A B A B A

al momento non sono note tecniche per calcolare gs s in un tempo ragionevole, anche conoscendo gs e gs ottenere sA da gs calcolare il logaritmo discreto dlogg gs ove dlogg: Z Zp ma il calcolo di logaritmi discreti non fattibile in tempi ragionevoli
A

Diffie-Hellman Schema
Alice
genera sA < p calcola TA = gsA mod p TA genera sB < p TB calcola KAB = TBsA mod p calcola TB = gsB mod p calcola KBA = TAsB mod p

p noto in anticipo g noto in anticipo

Bob

Diffie-Hellman: autenticit principal


Diffie-Hellman non fornisce alcuna forma di autenticazione
Alice non pu essere certa che TB sia stato inviato da Bob e non da un impostore Bob non pu essere certo che TA sia stato inviato da Alice e non da un impostore

possibile che un impostore, Mr. X, intercetti e modifichi i messaggi facendo credere a Bob di comunicare con Alice e viceversa
Alice e Bob non hanno modo di rendersi conto dellattacco in atto

un attacco attivo di questo tipo noto come Man-in-theMiddle Attack


talvolta si usa anche il termine Bucket Brigade Attack

Man-in-the-Middle Attack
Alice
sA < p TA = gsA mod p TA sX < p TX = gsX mod p TX KAX = TXsA mod p TB KXB = TBsX mod p KXA = TAsX mod p

Mr. X

Bob

p noto in anticipo g noto in anticipo

TX sB < p TB = gsB mod p KBX = TXsB mod p

Man-in-the-Middle Attack
Alice pensa che KAX sia la chiave segreta KAB che condivide con Bob Bob pensa che KBX sia la chiave segreta KBA che condivide con Alice Mr. X ha due chiavi segrete
KXA per comunicare con Alice KXB per comunicare con Bob

DOMANDA
Assumendo che la chiave segreta condivisa serva per cifrare i successivi messaggi tra Alice e Bob, possibile agire sul contenuto di tali messaggi per verificare se c stato o meno un attacco Man-in-the-Middle, ovvero per autenticare i due principal?

?Autenticazione via password?


Ipotesi: Alice e Bob si sono preliminarmente accordate su una coppia di password:
pwdA: password che Alice invia a Bob pwdB: password che Bob invia ad Alice

si consideri allora la seguente procedura di autenticazione, dove KAB la chiave segreta condivisa ottenuta con DiffieHellman
scambio chiavi Diffie-Hellman

Alice

E(KAB, Im Alice||pwdA) E(KAB, Hi Alice, Im Bob||pwdB)

Bob

?Autenticazione via password?


DOMANDE
Il precedente schema di autenticazione pu permettere ad Alice e Bob di autenticarsi e di verificare pertanto se in atto un attacco Man-inthe-Middle?

Autenticazione via password NON sicura


RISPOSTA
NO. Se in atto un attacco Man-in-the-Middle la precedente procedura di autenticazione via password non sicura.
Mr. X pu decifrare tutte i messaggi che riceve da Alice con KAX, cifrarli con KXB e inviarli a Bob. Viceversa, pu decifrare tutte i messaggi che riceve da Bob con KXB, cifrarli con KAX e inviarli ad Alice.

Autenticazione via password NON sicura

scambio chiavi Diffie-Hellman TA TX KAX chiave segreta condivisa E(KAX, Im Alice||pwdA) E(KAX, Hi Alice, Im Bob||pwdB)

scambio chiavi Diffie-Hellman TX TB KXB chiave segreta condivisa E(KXB, Im Alice||pwdA) E(KXB, Hi Alice, Im Bob||pwdB)

Mr. X

Alice

Bob

alcune proposte
Includendo nei messaggi cifrati, che Alice e Bob si scambiano, la chiave condivisa KAB, lautenticazione diventa sicura? Includendo invece il timestamp dellora corrente? Includendo entrambi? Se invece fossero incluse delle domande personali del tipo
Che film abbiamo visto la prima volta che ci siamo incontrati a Parigi?

Autenticazione a chiave segreta insicura se


scambio chiavi Diffie-Hellman TA TX KAX chiave segreta condivisa
E(KAX, Im Alice||pwdA||KAX||t0) E(KAX, Hi Alice, Im Bob||pwdB||KAX||t3)

scambio chiavi Diffie-Hellman TX TB KXB chiave segreta condivisa


E(KXB, Im Alice||pwdA||KXB||t1) E(KXB, Hi Alice, Im Bob||pwdB||KXB||t2)

Mr. X

Alice

se lautenticazione sfrutta la chiave segreta condivisa KAB, ottenuta con Diffie-Hellman, non sicura rispetto ad attacchi Man-in-the-Middle

Bob

Diffie-Hellman Sicurezza
Usando soltanto Diffie-Hellman non possibile verificare se in atto un attacco Man-in-theMiddle
i principal non possono autenticarsi reciprocamente

Diffie-Hellman sicuro soltanto nel caso di attacchi passivi


un intruso intercetta i messaggi, ma non li modifica

Attacco Man-in-the-Middle Difese


Per difendersi da attacchi attivi sono attuabili due strategie generali

Diffie-Hellman con Numeri Pubblici Scambio Diffie-Hellman Autenticato

Diffie-Hellman con Numeri Pubblici


Un possibile modo per sventare attacchi attivi evitare che p, g, sA, sB, TA e TB vengano generati/calcolati ad ogni scambio
p, g, TA e TB potrebbero essere resi pubblici in una repository fidata p, g saranno uguali per tutti gli utenti ogni utente U pubblica il proprio valore TU, mantenendo privato il segreto sU

Diffie-Hellman con Numeri Pubblici


ne consegue che,
se un avversario non in grado di accedere alla repository e di modificare i valori pubblici, allora Diffie-Hellman diventa sicuro anche nel caso di attacchi attivi

inoltre
non pi necessario lo scambio dei valori TA e TB consultando la repository ogni utente A pu ottenere la chiave KAB che condividerebbe con lutente B

Scambio Diffie-Hellman Autenticato


Se Alice e Bob conoscono un qualche tipo di informazione che permette loro di autenticarsi reciprocamente
una chiave segreta condivisa KAB; da non confondere con la chiave concordata con Diffie-Hellman KAB la propria coppia chiave privata, chiave pubblica e la chiave pubblica dellaltro

Possono usare tale(i) informazione(i) per provare che sono realmente loro, e non un impostore, coloro che generano i valori di Diffie-Hellman g, p, TA e TB
tale prova pu avvenire sia contestualmente che dopo lo scambio Diffie-Hellman esaminato in precedenza

in tal caso si parla di scambio Diffie-Hellman autenticato

Scambio Diffie-Hellman Autenticato


alcune possibili soluzioni sono:

Autenticazione contestuale allo scambio Diffie-Hellman


Cifrare lo scambio Diffie-Hellman con la chiave segreta KAB Cifrare il valore Diffie-Hellman con la chiave pubblica dellaltro interlocutore Firmare il valore Diffie-Hellman con la propria chiave privata

Autenticazione successiva allo scambio Diffie-Hellman


Dopo lo scambio Diffie-Hellman, trasmettere un hash della chiave concordata KAB, del proprio nome e della chiave segreta KAB Dopo lo scambio Diffie-Hellman, trasmettere un hash del valore Diffie-Hellman trasmesso e della chiave segreta KAB

Scambio Diffie-Hellman Autenticato


Notazione adottata
KAB: chiave segreta condivisa tra Alice e Bob prima di effettuare lo scambio Diffie-Hellman

KAB: chiave concordata con Diffie-Hellman


KAB{msg}: cifratura di msg con la chiave segreta KAB, cio E(KAB, msg) {msg}Bob: cifratura di msg con la chiave pubblica di Bob, cio E(PUBob, msg) [msg]Bob: firma di msg con la chiave privata di Bob, cio E(PRBob, msg)

KAB{scambio Diffie-Hellman}
Scambio Diffie-Hellman cifrato con la chiave segreta KAB
KAB{Im Alice, p, g, TA} Alice KAB{Hi Alice, Im Bob, TB} Bob

KAB = TBsA mod p = TAsB mod p = KBA

{ T }OtherPublicKey
Cifratura del valore pubblico Diffie-Hellman T, con la chiave pubblica dellaltro interlocutore
Im Alice, p, g, {TA}Bob Alice Hi Alice, Im Bob, {TB}Alice Bob

KAB = TBsA mod p = TAsB mod p = KAB

[ T ]MyPrivateKey
Cifratura del valore pubblico Diffie-Hellman T, con la chiave propria chiave privata
Im Alice, p, g, [TA]Alice Alice Hi Alice, Im Bob, [TB]Bob Bob

KAB = TBsA mod p = TAsB mod p = KBA

dopo scambio hash(KAB, name, KAB)


Dopo lo scambio Diffie-Hellman, trasmettere un hash della chiave concordata KAB, del proprio nome e della chiave segreta KAB
g, p, TA TB KAB = TBsA mod p = TAsB mod p = KBA Alice Im Alice, h(KAB, Alice, KAB) Hi Alice, Im Bob, h(KAB, Bob, KAB) Bob

dopo scambio hash(T, KAB)


Dopo lo scambio Diffie-Hellman, trasmettere un hash del valore Diffie-Hellman trasmesso e della chiave segreta KAB
g, p, TA TB KAB = TBsA mod p = TAsB mod p = KBA Alice Im Alice, h(TA, KAB) Hi Alice, Im Bob, h(TB, KAB) Bob

Diffie-Hellman altro svantaggio


Oltre alla mancanza di autenticazione, DiffieHellman classico presenta anche il seguente svantaggio

La comunicazione cifrata, con la chiave concordata, pu avvenire soltanto dopo lesecuzione di uno scambio attivo
Alice non pu inviare un messaggio cifrato a Bob prima di ricevere TB

Chiavi pubbliche/private D-H


Tale problema pu essere ovviato introducendo le chiavi pubbliche DiffieHellman
Una chiave pubblica D-H una tripla p, g, T dove T = gs mod p Ovviamente s la corrispondente chiave privata Le chiavi pubbliche vanno custodite in un luogo fidato e accessibile da tutti in modo sicuro La chiave pubblica di Bob pB, gB, TB

Chiavi pubbliche/private D-H


Esercizio
Utilizzando le chiavi pubbliche D-H, illustrare una procedura che consenta ad Alice di inviare un messaggio cifrato a Bob, con la chiave concordata KAB, anche se Bob risulta essere inattivo.
cio Alice deve essere in grado di cifrare senza dover attendere alcuna risposta da Bob, Bob, una volta attivo, dovr poter calcolare KAB e decifrare il messaggio

Chiavi pubbliche/private D-H


Alice
genera sA < pB calcola TA* = gBsA mod pB calcola KAB = TBsA mod pB cifra msg E(KAB, msg)

SOLUZIONE
chiave pubblica di Bob pB, gB, TB

Bob

TA*, E(KAB, msg)

Bob inattivo

calcola KBA = (TA*)sB mod pB decifra E(KAB, msg) msg = D(KBA, E(KAB, msg))

Crittografia a Chiave Pubblica Parte II

ELGAMAL SIGNATURE

Introduzione
la firma digitale ElGamal sfrutta opportunamente le chiavi pubbliche e private Diffie-Hellman
ogni individuo deve avere una coppia PU, PR durevole nel tempo

la chiave pubblica PU la tripla p, g, T la chiave privata PR corrispondente il numero s tale che T = gs mod p

la firma di un messaggio m richiede la generazione di una coppia PUm, PRm per il messaggio stesso il calcolo della firma richiede luso di una funzione di hash sicura la verifica della firma consiste nel verificare luguaglianza di due particolari espressioni

Parametri
h(): una funzione di hash resistente alle collisioni
p: un numero primo grande
tale da rendere infattibile il calcolo del logaritmo discreto

g < p: una radice primitiva di p


tali parametri possono essere condivisi tra tutti gli utenti

Fase 0 Generazione delle chiavi


Tale fase va eseguita soltanto una volta dal firmatario
non va eseguita ogni volta che si firma un messaggio

Scegliere randomicamente un intero s, da non divulgare, tale che 1 < s < p 1 Calcolare T = gs mod p La chiave pubblica PU del firmatario la tripla p, g, T La chiave privata PR del firmatario s

Fase 1 Firma di un messaggio


per firmare un messaggio m il firmatario esegue i seguenti passi

Calcola una coppia PUm, PRm per m


sceglie randomicamente un intero sm calcola Tm = gsm mod p; PUm, PRm = p, g, Tm, sm
tale che 0 < sm < p 1 e gcd(sm, p 1) = 1

Calcola il digest dm = h(m||Tm) Calcola la quantit Xm = (sm + dms) mod (p 1) che la firma del messaggio
talvolta si dice che la firma di m la coppia Tm, Xm

Il messaggio m trasmesso insieme a Tm e Xm

Fase 2 Verifica della firma


il destinatario di m e della firma Tm, Xm verifica la firma come segue

Verifica preliminarmente che Calcola il digest dm = h(m||Tm) Verifica la validit della seguente uguaglianza gXm mod p = TmT dm mod p
la firma accettata solo se tutte le precedenti verifiche sono superate, altrimenti la firma rigettata 0 < Tm < p e che 0 < Xm < p 1

Correttezza
Lalgoritmo corretto nel senso che la firma generata sar sempre accettata dal verificatore Prova
si osservi che (p) = p 1 la funzione totiente di p

gXm mod p = g(sm + dms) mod (p) mod p = = gsm + dms mod p = = ((gsm mod p) (gdms mod p)) mod p = = (Tm (gs mod p)dm) mod p = = TmT dm mod p

Sicurezza
Un avversario pu forgiare una firma
calcolando la chiave privata s del firmatario, o individuando dei messaggi collidenti della funzione di hash h()

entrambi i problemi sono ritenuti difficili Si pu inoltre verificare (anche empiricamente) che
se il messaggio m viene modificato, dopo essere stato firmato, con elevatissima probabilit la verifica della firma fallisce nessuno in grado di produrre una firma valida senza conoscere la chiave privata s

Crittografia a Chiave Pubblica Parte II

DIGITAL SIGNATURE STANDARD (DSS)

DSS Introduzione
Il National Institute of Standards and Technology (NIST) nel 1991
ha proposto un algoritmo per la firma digitale basato su ElGamal lalgoritmo noto come DSA: Digital Signature Algorithm le differenze tra DSA e ElGamal riguardano prevalentemente le prestazioni
anzich eseguire tutti i calcoli mod p; ove p un numero primo di 512 bit alcuni sono eseguiti mod q; ove q un numero primo di 160 bit che divide p 1 esponenti di 160 bit anzich di 512 rendono il calcolo della firma tre volte pi veloce

DSS Introduzione
tuttavia, alcune scelte fatte rendono DSS meno efficiente di quanto poteva essere
in particolare, unoperazione dinversione deve essere eseguita da entrambe le parti; dal firmatario e da chi verifica la firma si poteva optare per una soluzione pi facile e al tempo stesso (complessivamente) pi efficiente, in cui linversione deve essere eseguita solo dal firmatario invece DSS, permette al firmatario di pre-calcolare il suo inverso prima ancora di avere il messaggio, a scapito di richiedere anche a chi verifica la firma di calcolare un inverso

DSS Introduzione
DOMANDA: perch si deciso di favorire il firmatario a discapito di chi deve verificare la firma?
per ogni firma c almeno una verifica, altrimenti non ci sarebbe la necessit di firmare!

RISPOSTA: tale decisione pu rendere pi efficiente lautenticazione fatta tramite smart card (applicazioni in cui DSS usata)
una smart card dotata di un processore molto lento il log in di un utente si basa sulla firma e verifica della firma linversione loperazione computazionalmente pi dispendiosa una smart card impiegherebbe alcuni minuti per eseguirla conviene pertanto alleggerire il costo computazionale della firma digitale sul lato smart card; anche se ci comporta un processo di verifica pi dispendioso, ma ci tollerabile dato che la verifica viene eseguita da calcolatori molto veloci

Algoritmo DSS Generazioni chiavi


0.1 Genera p e q (che saranno pubblici); q un numero primo di 160 bit, p un numero primo di 512 bit tale che p = kq + 1 0.2 Genera un numero g (che sar pubblico), tale che gq = 1 mod p 0.3 Scegli una coppia chiave pubblica/privata a lungo termine PU, PR = T, S; ove S < q un numero random e T = gS mod p 1.0 Scegli una coppia chiave pubblica/privata associata al messaggio PUm, PRm = Tm, Sm; generando un numero random Sm e ponendo Tm = ((gSm mod p) mod q). 1.1 Calcola linverso Sm-1 mod q ci permette di guadagnare tempo evitando di eseguire linversione in fase di firma.

Algoritmo DSS Firma del messaggio m


2.0 Calcola un message digest dm del messaggio.
Il NIST raccomanda di usare la funzione di hash SHS in congiunzione con DSS.
SHS calcola un hash di 160 bit che per pura casualit coincide con la lunghezza di q. 160 bit sono una scelta adeguata perch garantiscono la sicurezza dellhash e sono un multiplo intero di 32 pi semplice la memorizzazione in sistemi con word di 32 bit. DSS pu essere usato con ogni funzione di hash, sebbene luso di hash con pi di 160 bit non comporta un aumento di sicurezza

2.1 Calcola la firma Xm =Sm-1(dm + STm) mod q 2.2 Trasmetti la seguente terna di informazioni m, Tm, Xm: il messaggio m il valore pubblico associato al messaggio Tm la firma Xm

Le informazioni associate alla chiave pubblica, cio T, p, q e g, sono gi note e non necessario trasmetterle con il messaggio.

Algoritmo DSS Verifica della firma


3.0 Calcola linverso mod q della firma Xm-1 3.1 Calcola il digest del messaggio dm 3.2 Calcola xm = dm Xm-1 mod q 3.3 Calcola ym = Tm Xm-1 mod q

3.4 Calcola zm = (gxm Tym mod p) mod q 3.5 Se zm = Tm la firma autentica

DSS Prova di correttezza


Per provare che la procedura di verifica corretta necessario mostrare che
zm coincide con Tm se le quantit m, Tm, Xm e T, p, q, g non sono alterate

PROVA
innanzi tutto, essendo gq = 1 mod p esponente e si ha che ge mod q mod p = ge mod p
infatti, ge mod p = gre + keq mod p = (gre gkeq) mod p = = (gre mod p) (gkeq mod p) = (ge mod q mod p) (gq mod p) ke = = (ge mod q mod p) 1 ke = ge mod q mod p

sia vm = (dm + STm)-1 mod q allora

DSS Prova di correttezza


Xm-1 = [Sm-1(dm + STm) mod q]-1 = [Sm(dm + STm)-1 mod q] Xm-1 = Smvm mod q da cui sostituendo risulta xm = dm Xm-1 mod q = dmSmvm mod q ym = Tm Xm-1 mod q = TmSmvm mod q quindi zm = (gxm Tym mod p) mod q = = (gdmSmvm mod q gSTmSmvm mod q mod p) mod q = = (gdmSmvm gSTmSmvm mod p) mod q = = (g(dm + STm)Smvm mod p) mod q = (gSm mod p) mod q = Tm

Generazione di p e q - osservazioni
La generazione dei numeri primi
p (512 bit) e q (160 bit) tali che p = kq + 1 computazionalmente molto dispendiosa
ma non deve essere eseguita molto frequentemente

p e q essendo pubblici potrebbero essere


definiti una volta per tutte (per lo meno p) ed inseriti nello standard

tutti potrebbero usare lo stesso p, con alcuni accorgimenti di sicurezza

Generazione di p e q - osservazioni
tuttavia la questione molto controversa!
si dice che possibile per qualcuno generare un p in modo tale che questi possa violare le operazioni crittografiche fatte con quel p e che nessuno sia in grado di accorgersi di tale violazione un particolare valore di p definito nello standard non ben accetto inoltre, se esiste un unico p, vero che si ha una maggiore efficienza (non necessario generare nuovi p e q), ma gli attacchi allalgoritmo sarebbero pi semplici in quanto dovrebbero funzionare solo per quel valore di p

Requisiti di Sicurezza
Per sicurezza si intende che valgono le seguenti propriet
Firmare qualcosa non divulga la chiave privata S Nessuno dovrebbe essere in grado di generare una firma per un dato messaggio senza conoscere S Nessuno dovrebbe essere in grado di generare un messaggio avente una data firma Nessuno dovrebbe essere in grado di modificare un messaggio firmato in modo tale che la firma resti valida

DSS Sicurezza
Domanda
DSS soddisfa tutti i requisiti di sicurezza?

Risposta
non esistono delle vere e proprie prove formali, ci sia affida al Fundamental Tenet of Cryptography inoltre, DSS ha la benedizione della NSA, ove lavorano probabilmente i migliori crittografi del mondo tuttavia, c chi sostiene che NSA mai proporr un algoritmo che non in grado di violare!

Sulla scelta del numero segreto Sm


Sia DSS che ElGamal richiedono che il firmatario generi un unico numero segreto Sm

Usando uno stesso Sm per firmare due messaggi distinti si esporrebbe la chiave privata S del firmatario Similmente, se Sm fosse prevedibile o facilmente indovinabile, si esporrebbe S Domande
D1) Perch la chiave privata S del firmatario risulta essere esposta una volta noto Sm? D2) Perch S risulta essere esposta quando due messaggi vengono firmati usando lo stesso Sm?

Sulla scelta del numero segreto Sm


Risposta 1 (caso DSS)
essendo Xm =Sm-1(dm + STm) mod q la firma di m ove Xm, dm, Tm, q sono note (almeno a chi verifica la firma) se anche Sm fosse noto S si otterrebbe calcolando il primo membro della seguente uguaglianza (XmSm dm)Tm-1 mod q = S mod q conoscendo S diventa banale forgiare una firma DSS

Sulla scelta del numero segreto Sm


Risposta 2 (caso DSS)
siano m e m* due messaggi firmati con lo stesso Sm; cio Sm = Sm* Sm-1 = Sm*-1 e Tm = Tm* Xm = Sm-1(dm + STm) mod q Xm* = Sm-1(dm* + STm) mod q (Xm Xm*) = Sm-1(dm + STm dm* STm) mod q (dm dm*) mod q = (Xm Xm*)Sm mod q (Xm Xm*)-1(dm dm*) mod q = Sm mod q

Sulla scelta del numero segreto Sm


pertanto calcolando (Xm Xm*)-1(dm dm*) mod q si otterrebbe Sm e da Sm si otterrebbe S (vedi Risposta 1)

Ne consegue che fondamentale scegliere Sm in modo tale che sia unico e al tempo stesso non prevedibile/indovinabile

Numeri segreti unici e non prevedibili


Ci sono diversi modi per generare un numero segreto unico e non prevedibile/indovinabile
Usare numeri veramente casuali
ci richiede un hardware speciale it's difficult enough to make hardware predictable, but it's even harder to make it predictably unpredictable

Usare un generatore di numeri pseudo-random per applicazioni crittografiche; Cryptographically Secure Pseudo-Random Number Generator (CSPRNG)
necessaria memoria non-volatile per salvare lo stato

Numeri segreti unici e non prevedibili


Usare un hash crittografico di una combinazione del messaggio con la chiave privata del firmatario
necessario conoscere il messaggio, non possono essere eseguite operazioni in anticipo, si perde il vantaggio in efficienza di ElGamal e DSS rispetto RSA

Crittografia a Chiave Pubblica Parte II

ZERO KNOWLEDGE PROOF SYSTEMS

Concetti base
La dimostrazione della conoscenza di un segreto alla base di molte tecniche di autenticazione
nelle tecniche di autenticazione a chiave segreta il segreto appunto la chiave condivisa tra i due principal

nei protocolli a chiave pubblica il segreto noto solo ad un principal il quale deve dimostrare allaltro che detiene il segreto senza fornire delle informazioni che possano consentire ad un impostore di eseguire la prova

Dimostrazione a conoscenza zero


nellambito dei sistemi a chiave pubblica

Una dimostrazione a conoscenza zero (Zero Knowledge Proof ZKP) se


1) permette di provare la conoscenza di un segreto
che deve essere associato alla chiave pubblica

2) senza fornire delle informazioni che permettano ad un impostore di eseguire la prova (in seguito)
2.1) la prova non deve rivelare il segreto, 2.2) la prova non deve rivelare eventuali informazioni che pur non essendo il segreto consentano comunque ad un impostore di effettuare la prova

Concetti base
Le dimostrazioni a conoscenza zero sono impiegate nei protocolli/sistemi di autenticazione
i cosiddetti Zero Knowledge Proof Systems (ZKPS) RSA un esempio di ZKPS
possibile provare la conoscenza di un segreto associato alla chiave pubblica; si pensi alla firma di una sfida senza rivelare la chiave privata o altre informazioni che permettano ad un impostore di impersonare il proprietario della chiave privata

tuttavia, esistono ZKPS molto pi efficienti di RSA anche se non permettono di cifrare e/o di firmare

ZKP La storia di Peggy e Victor


[Wiki-en, Wiki-it] In una dimostrazione a conoscenza zero sono sempre coinvolte due parti
il dimostratore Peggy: lentit che dimostra di possedere il segreto, e il verificatore Victor: lentit che verifica la correttezza della prova

Storia di Peggy e Victor


Peggy conosce la parola segreta per aprire la porta magica di una caverna, che si richiude automaticamente la caverna ha la forma di un cerchio, con l'entrata su un lato e la porta magica che blocca l'altro lato

ZKP La storia di Peggy e Victor


Victor dice che la pagher per il segreto, ma non fino a quando sar sicuro che lei lo conosca veramente Peggy dice che gli dir il segreto, ma non prima di ricevere i soldi Pianificano quindi uno schema con il quale Peggy pu provare di conoscere la parola senza dichiararla a Victor Prima, Victor aspetta fuori dalla caverna mentre Peggy entra Etichettiamo il sentiero sinistro e quello destro partendo dall'entrata con AeB Peggy sceglie a caso uno dei due sentieri

ZKP La storia di Peggy e Victor


Quindi, Victor entra nella caverna e grida il nome del sentiero che Peggy dovr utilizzare per ritornare indietro, fra A e B, preso a caso Se si ipotizza che lei conosca veramente la parola magica, facile: apre la porta, se necessario, e ritorna attraverso il sentiero desiderato da notare che Victor non conosce il sentiero per il quale Peggy entrata

ZKP La storia di Peggy e Victor


Comunque, supponiamo che Peggy non conosca la parola
allora, sarebbe in grado di tornare attraverso il sentiero chiamato se Victor avesse scelto il nome dello stesso sentiero per cui lei era entrata poich Victor ha scelto A o B a caso, avrebbe il 50% di probabilit di indovinare correttamente se i due ripetessero questo trucco molte volte, diciamo venti volte una dopo l'altra, l'opportunit per Peggy di anticipare correttamente tutte le richieste di Victor diventerebbe statisticamente molto piccola (in virt della probabilit di eventi indipendenti)

Perci, se Peggy appare in modo affidabile all'uscita chiamata da Victor, questo pu concludere che molto probabilmente conosca davvero la parola segreta

Autenticazione a conoscenza zero


Uno schema di autenticazione a conoscenza zero (Zero Knowledge Authenication Scheme ZKAS) consiste in unautenticazione che sfrutta una ZKP
non si tratta di una tecnica deterministica, ma probabilistica
anche RSA in fondo probabilistica

deve poter essere resa arbitrariamente piccola la probabilit che


un dimostratore onesto fornisca una prova errata un verificatore onesto fornisca una verifica errata quando il dimostratore onesto un dimostratore disonesto fornisca una prova corretta

ZKAS Requisiti
Uno schema di autenticazione a conoscenza zero deve soddisfare i seguenti requisiti
a) ad ogni entit associato un segreto privato s e una chiave pubblica ks, cio una coppia s, ks
ovviamente, Ks non deve esporre s

b) lautenticazione consiste nel provare la conoscenza del segreto s c) la prova deve essere a conoscenza zero
le informazioni addotte dal dimostratore non devono poter essere riutilizzate con successo (in seguito) da un impostore la prova non consente di rivelare s

ZKAS Requisiti
d) chi non conosce il segreto s non deve poter eseguire la prova con successo e) chi non conosce il segreto s deve poter verificare la correttezza della prova utilizzando la chiave pubblica ks dellentit che si sta autenticando
senza la chiave pubblica non deve essere possibile verificare la correttezza della prova

Impiego di problemi difficili


I requisiti a), b), c), d), e) suggeriscono di realizzare uno ZKAS partendo da un problema matematico P ritenuto difficile
un problema classificato come NP-Hard ideale un problema per il quale non noto un algoritmo polinomiale, ma non ancora classificato NP-Hard pu andare ma
in futuro qualcuno potrebbe trovare un algoritmo polinomiale!

Impiego di problemi difficili


sia P il problema difficile che si vuole usare per realizzare un ZKAS indicheremo con
X: lo spazio delle istanze (input) di P Y: lo spazio delle soluzioni (output) xX: una particolare istanza di P yxY: una soluzione di P relativa allistanza x algP: un algoritmo che risolve P, cio un algoritmo in grado di calcolare la soluzione yx associata ad una qualunque istanza x x algP

yx

Impiego di problemi difficili


i requisiti a), b), c), d), e) pongono un certo insieme di vincoli sulla scelta del problema P

d) chi non conosce il segreto deve risolvere il problema P nella sua forma generale b) il problema si deve semplificare notevolmente per chi conosce il segreto
il segreto deve influenzare le istanze del problema chi conosce il segreto non deve risolvere la versione generale del problema, ma una sua restrizione tale restrizione deve essere risolvibile in tempo polinomiale (meglio se in tempo costante o in tempo lineare)

Impiego di problemi difficili


e) la prova (probabilistica) consiste nel fornire delle coppie x, y dove
x: unistanza di P dipendente dal segreto s cio x = x(s) (x(s) non nota al verificatore perch non conosce il segreto s) yx : la soluzione di P per linput x

il verificatore usando la chiave pubblica ks del dimostratore deve poter verificare, con elevata probabilit, che yx veramente la soluzione corrispondente a x

Impiego di problemi difficili


se tutti i requisiti sono soddisfatti tranne il requisito c), per soddisfare questultimo basta procedere nel seguente modo
il dimostratore deve prevedere due versioni del problema; la versione PA e la versione PB yxA sar la soluzione di PA per linput x yxB sar la soluzione di PB per linput x inoltre, ottenere yxA da yxB e viceversa, deve continuare ad essere un problema difficile
(N.B.: non necessario che entrambe le soluzioni siano verificabili con la chiave pubblica ks; una delle due, diciamo yxB, pu anche essere verificata senza luso di ks)

Impiego di problemi difficili


a questo punto, il protocollo pu modificarsi come segue

il dimostratore anzich fornire direttamente delle coppie x1, yx1, x2, yx2, , xN, yxN fornisce prima una sequenza di istanze x1, x2, , xN poi, il verificatore, attribuisce in modo random ad ogni istanza xi una di due etichette
ad esempio 0 o 1 (oppure A e B)

per ciascun input xi, il dimostratore fornisce la soluzione di


PA se xi era etichettato con 0 PB se xi era etichettato con 1

Impiego di problemi difficili


il dimostratore pu comunque fornire un numero adeguato di coppie xi, yxiA i = 1, , N
basta che N sia sufficientemente grande

al contempo, il verificatore ha una scarsa probabilit di impersonare il dimostratore riciclando vecchi input xi
poich per ogni istanza xi ha il 50% di probabilit di conoscere la relativa soluzione yxiA e il 50% di probabilit di conoscere yxiB mai dispone di entrambe le soluzioni al crescere di N la probabilit di rispondere correttamente a tutte le istanze tende a zero ovviamente, si assume che lo spazio delle istanze X sia enorme e che sia estremamente improbabile che una stessa istanza capiti in due sequenze qualsiasi

ZKAS schema generale

Im Peggy, x1, x2, x3, , xN-1, xN

Peggy

Hi Peggy, here is my selection x1, A, x2, B, x3, B, xN-1, A, xN, A y1A y2B y3B yN-1A yNA

Victor

Problema di isomorfismo di grafi


[KPS02] propone una ZKAS che sfrutta il problema di isomorfismo di grafi (Graph Isomorphism Problem GIP)

Due grafi con lo stesso numero di vertici sono isomorfi se possibile rinominare i vertici di uno con i nomi dellaltro ottenendo questultimo
pi formalmente

Due grafi G1 = (V1, E1) e G2 = (V2, E2), con lo stesso numero di vertici, sono isomorfi se esiste una biiezione f : V1 V2 tale che (u, v)E1 se e solo se (f(u), f(v))E2

Esempio Due grafi isomorfi


G1
a g 1

G2
2

f
f(a) 1 f(b) 6

f(c) 8
f(d) 3 f(g) 5 f(h) 2 f(i) 4 7 3 f(j)

ZKAS con P ottenuto da GIP


Si osservi che ad oggi
non noto un algoritmo polinomiale per risolvere GIP; tuttavia non esiste una prova che GIP sia NPhard dati due grafi isomorfi G1 e G2, calcolare la biiezione f tra i loro vertici non praticabile in un tempo ragionevole

viene pertanto illustrato come usare GIP per realizzare un ZKAS

ZKAS con P ottenuto da GIP


il dimostratore, Peggy, genera un grafo GA molto grande (diciamo di 500) rinominando in modo casuale i vertici di GA ottiene un grafo GB isomorfo per costruzione a GA Peggy, pertanto conosce la biiezione f che trasforma GA in GB f il segreto s di Peggy, cio la sua chiave privata
nessun altro pu calcolarla in un tempo ragionevole

la chiave pubblica ks di Peggy la coppia di grafi GA, GB

ZKAS con P ottenuto da GIP


per provare a Victor che lei realmente Peggy, rinominando in modo casuale i vertici di GA (o di GB) genera un nuovo insieme di grafi G1, G2, , GK isomorfi a GA e pertanto anche a GB invia G1, G2, , GK a Victor poi Peggy, chiede a Victor di specificare per ciascun Gi se desidera ottenere la biiezione rispetto a GA oppure quella rispetto a GB
fondamentale che Victor non ottenga entrambe le biiezioni per ciascun Gi

ZKAS con P ottenuto da GIP


Peggy per ciascun grafo Gi invia a Victor la biiezione con GA o con GB coerentemente con la scelta di Victor per quel grafo
Im Peggy, G1, G2, G3, , Gk-1, Gk

Peggy

Hi Peggy, here is my selection G1, GA, G2, GB, G3, GB, Gk-1, GA, Gk, GA
f1A f2B f3B fk-1A fkA

Victor

ZKAS con P ottenuto da GIP


se un impostore cercasse di impersonare Peggy intercettando e memorizzando tutte le informazioni trasmesse avrebbe il 50% di probabilit di rispondere correttamente ad ogni istanza se k sufficientemente elevato, k = 30, avrebbe una probabilit pari a 1/230 di impersonare con successo Peggy

ZKAS con P ottenuto da GIP


si osservi che il protocollo appena illustrato realmente/completamente a conoscenza zero nel senso che terminata lautenticazione Victor oltre alla chiave pubblica conosce un insieme di grafi isomorfi o GA o a GB e il relativo mapping
tali grafi non gli consentono di impersonare Peggy un insieme analogo di grafi lo potrebbe benissimo generare da se

ZKAS basato su GIP inefficiente


Sfortunatamente, lo schema di autenticazione a conoscenza zero appena illustrato, che sfrutta lisomorfismo di grafi, troppo inefficiente per essere usato nella pratica!
si osservi inoltre che nel 2009 Dharwadker e Tevet hanno fornito un algoritmo polinomiale per il problema GIP, ma non stato pubblicato su alcuna rivista scientifica degna di nota viene di fatto ignorato dalla comunit scientifica!

ZKAS basato su GIP inefficiente


Nelle prossime slide, si illustrer un protocollo di autenticazione, estremamente efficiente, che sfrutta un problema difficile nellambito dellaritmetica modulare
a rigore tale schema di autenticazione non completamente a conoscenza zero, anche se nella pratica pu considerarsi tale

Tale protocollo stato pubblicato da Fiat-Shamir nel 1987

Problema della radice quadrata modulare


n = pq: numero intero dispari p, q: numeri primi m < n: un intero assegnato (avente una radice quadrata ordinaria non intera)
trovare un numero intero s tale che s2 mod n = m un problema difficile almeno quanto fattorizzare un numero intero s la radice quadrata modulo n (Modular Square Root MSR)

ZKAS basato su MSR Fiat-Shamir


Generazioni delle chiavi
Peggy calcola la chiave pubblica n, v
n = pq il prodotto di due primi grandi, come in RSA v un numero di cui Peggy conosce la radice quadrata modulare, ottenere v semplice, basta scegliere un numero random s e porre v = s2 mod n

s la chiave privata di Peggy da non rivelare


Peggy pu dimenticare i fattori p e q

n, v va divulgata a tutto il mondo

ZKAS basato su MSR Fiat-Shamir


Autenticazione
Peggy sceglie k numeri random r1, r2, , rk Per ogni ri invia a Victor ri2 mod n Victor attribuisce a ciascun ri2 unetichetta che vale o 1 o 0 e comunica tale etichettatura a Peggy Peggy invia a Victor sri mod n per ciascun ri2 etichettato con 1, e ri mod n per ciascun ri2 etichettato con 0 Victor eleva al quadrato ciascun numero della risposta di Peggy

ZKAS basato su MSR Fiat-Shamir


e verifica che tale quadrato valga vri2 mod n se il corrispondente ri2 aveva etichetta 1, oppure ri2 mod n se il corrispondente ri2 aveva etichetta 0
Im Peggy, r12, r22, r32, , rk-12, rk2

Peggy

Hi Peggy, here is my selection r12, 1, r22, 0, r32, 1,, rk-12, 0, rk2, 1 sr1 mod n, r2 mod n, sr3 mod n, , rk-1 mod n, srk mod n

Victor

ZKAS basato su MSR Fiat-Shamir


Supponiamo che Fred voglia impersonare Peggy allora egli in grado di rispondere in modo corretto agli ri2 che Victor etichetta con 0 ma non in grado di rispondere agli ri2 etichettati con 1
DOMANDA: Per quale ragione necessario che Victor etichetti con 0, ed in modo casuale, alcuni ri2?

ZKAS basato su MSR Fiat-Shamir


RISPOSTA In assenza di etichette 0, il protocollo si semplificherebbe Peggy si limiterebbe ad inviare delle coppie ri2, sri mod n tuttavia non si avrebbe pi un protocollo a conoscenza zero
Fred potrebbe infatti usare una precedente sequenza inviata di Peggy ed impersonarla con successo

ZKAS basato su MSR Fiat-Shamir


letichettatura scelta in modo casuale da Victor implica che Fred ha una probabilit del 50% di rispondere in modo corretto ad ogni ri2
Fred potrebbe generarsi autonomamente gli ri, ma in tal caso non saprebbe rispondere agli ri2 con etichetta 1 oppure potrebbe usare un insieme di ri2 etichettati in passato con 1 in una precedente autenticazione, ma allora non conoscerebbe i corrispondenti ri e non saprebbe rispondere nel caso in cui letichetta 0

se k sufficientemente grande la probabilit che Fred impersoni correttamente Peggy tende a 0

ZKAS basato su MSR Fiat-Shamir


ZKAS basato su MSR molto pi efficiente di RSA assumendo k = 30
Peggy deve effettuare 45 operazioni modulari (30 quadrati pi una media di 15 moltiplicazioni per s) Victor deve effettuare lo stesso numero di operazioni di Peggy

usando RSA Peggy deve eseguire una esponenziazione modulare


che consiste in una media di 768 moltiplicazioni modulari

mentre Victor se la cava con 3 moltiplicazioni nel caso in cui e = 3

Crittografia a Chiave Pubblica Parte II

ZERO KNOWLEDGE SIGNATURES

Zero Knowledge Signature


Ogni ZKPS pu essere trasformato in uno schema di firma a chiave pubblica
per lo meno da un punto di vista teorico
nella pratica, le prestazioni in termini di consumo di banda e di CPU escludono tale soluzione

In un qualsiasi sistema a conoscenza zero


Peggy ha un segreto che usa per trasmettere qualcosa a Victor ed in grado di rispondere ad ogni domanda posta da Victor inerente quel qualcosa trasmesso le domande di Victor possono essere di due tipi

Zero Knowledge Signature


un impostore pu rispondere in modo corretto soltanto alle domande di uno solo dei due tipi
ad ogni domanda ha il 50% di probabilit di rispondere correttamente per rispondere correttamente a tutte e k le domande ha una probabilit di (1/2)k

in generale, Victor invia a Peggy una sfida, ovvero una stringa binaria che codifica il tipo di domanda a cui Peggy dovr rispondere si tratta pertanto di uno schema interattivo

Zero Knowledge Signature Idea Base


Uno schema di firma non interattivo
non esiste alcun Victor che invia a Peggy una sfida lo schema unidirezionale, Peggy ha un messaggio m che desidera firmare lidea quella di sostituire la sfida di Victor con il digest di qualcosa dipendente dal messaggio
Peggy non potr predire loutput del digest, ma conoscendo il segreto sar in grado di rispondere ad ogni domanda; cosa che non pu fare un impostore

inoltre Victor deve poter verificare la firma con la chiave pubblica di Peggy

Zero Knowledge Signature Fiat-Shamir


segue uno schema di firma derivato da Fiat-Shamir

Peggy sceglie k numeri random r1, r2, , rk


k deve coincidere con il numero di bit dellalgoritmo di digest utilizzato, es. k = 128 bit nel caso di MD5

Concatena il messaggio m con i valori ri2 mod n e calcola il digest di quanto ottenuto, cio h(m||r12 mod n||r22 mod n||||r1282 mod n) I bit del digest vengono usati come surrogato di Victor La firma di m consiste nei k valori ri2 mod n pi le relative k risposte di Peggy

Zero Knowledge Signature Fiat-Shamir


Si noti che la firma di un messaggio, a differenza dellautenticazione, pu calcolarsi anche off-line
un impostore ha pi tempo per selezionare un insieme opportuno di ri per i quali in grado di calcolare la radice quadrata mod n di vri2 tuttavia, usando algoritmi di digest con almeno 64 bit tale rischio scongiurato

Bibliografia
[DES81] DES Modes of Operation, FIPS PUB 81, National Bureau of Standards, U.S. Department of Commerce, 1981. [KPS02] C. Kaufman, R. Perlman, M. Speciner. Network Security Private Communication in a Public World. Prentice Hall. [PFL08] C. P. Pfleeger, S. L. Pfleeger. Sicurezza in Informatica. Pearson, Prentice Hall. [STA07] W. Stallings. Sicurezza delle reti. Pearson, Prentice Hall. [Wiki-it] http://it.wikipedia.org/wiki/ [Wiki-en] http://en.wikipedia.org/wiki/ [ISECOM] Institute for Security and Open Methodologies

Potrebbero piacerti anche