Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Luca Grilli
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
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
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
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
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
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
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
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
Bob
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
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
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?
si consideri allora la seguente procedura di autenticazione, dove KAB la chiave segreta condivisa ottenuta con DiffieHellman
scambio chiavi Diffie-Hellman
Alice
Bob
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?
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
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
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
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
{ 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
[ 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
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
SOLUZIONE
chiave pubblica di Bob pB, gB, TB
Bob
Bob inattivo
calcola KBA = (TA*)sB mod pB decifra E(KAB, msg) msg = D(KBA, E(KAB, msg))
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
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
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
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
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
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.
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
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
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!
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?
Ne consegue che fondamentale scegliere Sm in modo tale che sia unico e al tempo stesso non prevedibile/indovinabile
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
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
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
Perci, se Peggy appare in modo affidabile all'uscita chiamata da Victor, questo pu concludere che molto probabilmente conosca davvero la parola segreta
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
yx
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)
il verificatore usando la chiave pubblica ks del dimostratore deve poter verificare, con elevata probabilit, che yx veramente la soluzione corrispondente a x
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)
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
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
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
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)
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
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
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
inoltre Victor deve poter verificare la firma con la chiave pubblica di Peggy
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
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