Crittografia. Firme Digitali e Funzioni di Hash. Corso di Laurea Specialistica. in Informatica

Documenti analoghi
schema di firma definizione formale

logaritmo discreto come funzione unidirezionale

Funzioni di hash sicure: MD5 e SHA-1

Crittografia. Corso di Laurea Specialistica. in Informatica. Generatori di Numeri PseudoCasuali

sia G un gruppo ciclico di ordine n, sia g un generatore di G

da chi proviene un messaggio?

Funzioni Hash. Impronta Digitale. L impronta digitale viene utilizzata per

sia G un gruppo ciclico di ordine n, sia g un generatore di G bisogna determinare l unico intero x con 1 x n 1 tale che g x = y

problema del logaritmo discreto

Crittografia. Nozioni di Algebra. Corso di Laurea Specialistica. in Informatica

SHA %&'(& lunghezza arbitraria. 160 bit

Sicurezza della comunicazione tra due entità. Prof.ssa Gaia Maselli

!"### "$ " Applicazioni. Autenticità del messaggio M Integrità del messaggio M. Stelvio Cimato DTI Università di Milano, Polo di Crema

Schemi di Autenticazione per il Protocollo HTTP. a cura di Nicola Ferrante

Firme digitali. Firma Digitale. Firma Digitale. Firma Digitale. Equivalente alla firma convenzionale. Equivalente alla firma convenzionale

Crittografia a chiave pubblica

Funzioni Hash. Impronta Digitale. L impronta digitale viene utilizzata per

maggiore velocità per cifratura/decifratura l uso di chiavi più corte comporta: memorizzazione efficiente Alberto Leporati Corso di Crittografia 2

Funzioni hash. Funzioni Hash. Uso delle funzioni hash. Firme digitali e Funzioni hash. Funzione Hash. Firme digitali. Integrita dei dati

Identificazione, Autenticazione e Firma Digitale. Firma digitale...

Firma Digitale. Firma Digitale. Firma digitale. Firma digitale. Firma Digitale. Equivalente alla firma convenzionale

Corso di Crittografia

Applicazioni. Cosa si intende per sicurezza di uno schema di un MAC? Dobbiamo definire. Autenticità del messaggio M Integrità del messaggio M

CRITTOGRAFIA 2014/15 Appello del 13 gennaio Nome: Cognome: Matricola:

Crittografia. Crittosistemi a Chiave Pubblica. Corso di Laurea Specialistica. in Informatica

Cryptographic Hash Functions. by Paolo Bernardi

M firma. M firma. Firma Digitale. Firma Digitale. Firma digitale. Firma digitale. Firma Digitale. Equivalente alla firma convenzionale

sia G un gruppo ciclico di ordine n, sia g un generatore di G

Firme digitali. Firma Digitale. Firma Digitale. Firma Digitale. Equivalente alla firma convenzionale. Equivalente alla firma convenzionale

si cerca di scegliere e non troppo grande e tale che nella scrittura binaria di e ci siano pochi 1 e piccolo = cifratura più veloce

Corso di Crittografia

Crittografia. Corso di Laurea Specialistica. in Informatica. Crittosistemi basati sulle Curve. Ellittiche

funzione φ di Eulero, o funzione toziente è definita sugli interi positivi φ(n) è il numero di interi positivi n che sono coprimi con n

ITC Mossotti - Novara. Verica di Informatica. Nome e Cognome:... 1) Nella cifratura convenzionale. 2) Nella crittograa a chiave pubblica

Corso di Crittografia Prof. Dario Catalano. Firme Digitali

La firma digitale, o firma elettronica qualificata, basata sulla tecnologia della crittografia a chiavi asimmetriche, è un sistema di autenticazione d

idea della crittografia a chiave pubblica

FUNZIONI HASH ONE-WAY ITERATE

da chi proviene un messaggio?

Crittografia a chiave pubblica

Cifrari asimmetrici. Cifratura. Cifratura. Crittosistema ElGamal. file pubblico utente chiave pubblica. Alice. file pubblico utente chiave pubblica

Introduzione alla FIRMA DIGITALE

Cifrario di Rabin. Chiara Gasparri

una possibile funzione unidirezionale

La crittografia moderna e la sua applicazione

idea della crittografia a chiave pubblica

RETI DI CALCOLATORI II

(G, ) un gruppo moltiplicativo di ordine n l ordine di un elemento g G, o(g), è il minimo intero positivo m tale che g m = 1

Firme digitali. Firma Digitale. Firma Digitale. Corso di Sicurezza su Reti Lezione del 17 novembre Equivalente alla firma convenzionale

Reti di Calcolatori. Crittografia & Java Cryptographic Architecture (JCA) A.A. 2010/2011 Reti di Calcolatori 1 (Es. 6)

Gestione della chiave

Sicurezza nella comunicazione in rete: integrità dei messaggi, firma elettronica, protocolli di autenticazione

Crittografia per la sicurezza dei dati

delle funzioni di verifica V = {ver: Pä Aä K Ø {vero,falso}} è l insieme Alberto Leporati Corso di Crittografia 2 Firme Digitali e Funzioni di Hash

NUMERI PRIMI E CRITTOGRAFIA

Una curva ellittica è una curva definita da un equazione in due incognite del tipo:

Sicurezza nella comunicazione in rete: integrità dei messaggi, firma elettronica, protocolli di autenticazione

Seminario sulla Crittografia. Corso: T.A.R.I Prof.: Giulio Concas Autore: Ivana Turnu

Crittografia simmetrica (a chiave condivisa)

una possibile funzione unidirezionale

Altre alternative a RSA interessanti e praticabili

Le firme elettroniche e i sistemi di firma. Approcci al problema della sicurezza

La funzione Hash. Garanzia dell integrità dei dati e autenticazione dei messaggi

Pr(x y) = Pr(x) si può riformulare questa definizione in termini di indistinguibilità x 0, x 1 P e y C, scelta in modo casuale una chiave k K

RSA e firma digitale

Sicurezza nelle applicazioni multimediali: lezione 5, funzioni di hash. Funzioni crittografiche di hash

idea della crittografia a chiave pubblica

Corso di Crittografia Prof. Dario Catalano. Advanced Encryption Standard

Crittografia Moderna. Segretezza Perfetta: nozioni

Sicurezza nelle reti: protezione della comunicazione

Message Authentication Code

Privacy e firma digitale

una possibile funzione unidirezionale

Autenticazione, firme digitali e certificati digitali

Il protocollo SSL! Il protocollo SSL! (Secure Socket Layer)! "Uno dei protocolli più diffusi nelle comunicazioni sicure:!

Cifratura Asimmetrica

A cosa serve la crittografia? La crittografia serve ad aiutare due utenti, Alice e Bob, a comunicare in modo sicuro...

Calcolo Numerico Laurea di base in Ingegneria Elettronica, Ingegneria delle Comunicazioni

Equazioni e sistemi non lineari

Equazioni e sistemi non lineari

Lauree scientifiche Crittografia. RSA CRT

Crittografia avanzata Lezione del 21 Marzo 2011

Esercitazione per la prova scritta

Elementi di Algebra e di Matematica Discreta Cenno di un applicazione alla crittografia

Esercizi Capitolo 7 - Hash

Dati e Algoritmi I (Pietracaprina) Esercizi sul Text Processing

Introduzione alla crittografia. Diffie-Hellman e RSA

Algoritmi Greedy. Tecniche Algoritmiche: tecnica greedy (o golosa) Un esempio

Teoria dell informazione

Corso di Qualità del Servizio e Sicurezza nelle reti A.A. 2014/2015. Lezione del 11 Maggio 2015

Corso di Laurea Specialistica in Ingegneria Meccanica e Ingegneria Energetica Progetto numerico al calcolatore

Esercitazione 03. Sommario. Gnu Privacy Guard (GPG) Chiavi GPG (1/2) Andrea Nuzzolese. Gnu Privacy Guard (GPG) Descrizione esercitazione

Crittografia a chiave pubblica

Crittografia con Python

Sistemi di numerazione

Digital Signature Standard

Elementi di Algebra e di Matematica Discreta Numeri interi, divisibilità, numerazione in base n

crittosistemi a flusso

Transcript:

Crittografia Corso di Laurea Specialistica in Informatica Firme Digitali e Funzioni di Hash Alberto Leporati Dipartimento di Informatica, Sistemistica e Comunicazione Università degli Studi di Milano Bicocca e-mail: alberto.leporati@unimib.it leporati@disco.unimib.it

Firme digitali Uno schema per le firme digitali è una quintupla (P,A,K,S,V) dove: P è l insieme dei possibili messaggi da firmare A è l insieme delle possibili firme K è l insieme delle possibili chiavi S = {sig: Pä K Ø A} è l insieme delle funzioni di firma V = {ver: Pä Aä K Ø {vero,falso}} è l insieme delle funzioni di verifica Alberto Leporati Corso di Crittografia 2

Firme digitali come per le funzioni di cifratura e decifratura, fissando una chiave k œ K si selezionano due funzioni: sig k : P Ø A ver k : P ä A Ø {vero,falso} tali che " x œ P e " y œ A ver k (x, y) = vero ñ y = sig k (x) una coppia (x, y) siffatta viene detta un messaggio firmato Alberto Leporati Corso di Crittografia 3

Firme digitali differenze rispetto alle firme autografe: la firma y è separata dal documento x la firma non è sempre uguale: cambia al variare del documento la firma digitale autentica il mittente del messaggio: solo chi conosce una certa informazione segreta può aver prodotto la firma del messaggio Alberto Leporati Corso di Crittografia 4

Firme digitali supponiamo che Alice voglia firmare un messaggio m: sceglie una coppia (sig k, ver k ) di algoritmi tiene segreto sig k, e rende pubblico ver k calcola σ = sig k (m) supponiamo ora che Bob voglia verificare la firma calcolata da Alice: considera la coppia (m, σ) preleva l algoritmo ver k accetta la firma come valida se e solo se ver k (m,σ) = vero Alberto Leporati Corso di Crittografia 5

Firme digitali possibili obiettivi di Eve: rottura totale dello schema: in qualche modo, Eve riesce a determinare la chiave segreta k (e quindi la funzione di firma sig k ) di Alice existential forgery: avendo osservato alcune coppie (x 1, y 1 ),, (x i, y i ) di messaggi con le relative firme, quando arriva un nuovo messaggio Eve riesce a produrre una firma valida (solo per quel messaggio, o per una classe di messaggi simili tra loro) Alberto Leporati Corso di Crittografia 6

Firme digitali ogni crittosistema a chiave pubblica può essere usato come schema per le firme digitali: si firma usando la chiave privata si verifica usando la chiave pubblica quindi, solo chi possiede la chiave privata è in grado di firmare chiunque può verificare la firma in questo modo, si riesce ad autenticare il mittente di un messaggio usando solo un crittosistema a chiave pubblica (vedere prossime slide) Alberto Leporati Corso di Crittografia 7

Firme digitali supponiamo che Alice voglia inviare a Bob il messaggio m Alice possiede una coppia (E A, D A ) di funzioni di cifratura e decifratura tiene segreta D A rende pubblica E A Bob possiede la coppia di funzioni (E B, D B ) tiene segreta D B rende pubblica E B Alberto Leporati Corso di Crittografia 8

Firme digitali Alice cifra il messaggio m per Bob, e poi lo firma, calcolando D A (E B (m)) e invia il risultato a Bob Bob verifica la firma di Alice applicando E A, e poi decifra: D B (E A (D A (E B (m)))) = m problema: anche Eve conosce E A! può applicare E A, e poi usare D E per sostituirsi ad Alice soluzione corretta: Alice firma il messaggio m e poi lo cifra per Bob: E B (D A (m)) Alberto Leporati Corso di Crittografia 9

Schema di firma di El Gamal pubblicato nel 1985 una versione modificata è stata adottata come standard (DSA Digital Signature Algorithm) dal NIST è non deterministico Ø ci sono molte firme valide per ogni messaggio sia p un numero primo sia g un generatore di p * i messaggi da firmare sono elementi di p * le firme sono coppie (γ, δ), con γ œ p * e δœ p-1 Alberto Leporati Corso di Crittografia 10

Schema di firma di El Gamal supponiamo che Alice voglia firmare un messaggio m œ p *; anzitutto genera la propria coppia di chiavi: sceglie una chiave segreta a, con 0 < a < p-1 calcola β = g a mod p la chiave pubblica è la terna (p, g, β) per firmare m : sceglie a caso k œ p-1 * calcola γ= g k mod p e δ= (m aγ )k -1 mod (p-1) la coppia (γ, δ) è la firma di m Alberto Leporati Corso di Crittografia 11

Schema di firma di El Gamal Bob accetta la firma come valida se e solo se β γ γ δ ª g m mod p supponiamo che la firma sia stata prodotta correttamente; allora: β γ γ δ ª g aγ ÿ g kδ ª g m mod p la congruenza g aγ + kδ ª g m mod p vale se e solo se aγ + kδ ª m mod p-1, ovvero se e solo se γ e δ sono stati calcolati come nella slide precedente Ø Bob accetta e rifiuta correttamente Alberto Leporati Corso di Crittografia 12

Schema di firma di El Gamal: sicurezza supponiamo che Eve voglia produrre una firma per m, senza conoscere a se Eve sceglieγ e vuole calcolare il δ corrispondente, deve calcolare il logaritmo discreto log γ g m β -γ se Eve sceglieδe vuole calcolare γ, deve risolvere l equazioneβ γ ÿγ δ ª g m mod p, rispetto a γ problema diverso dal logaritmo discreto non si conosce un metodo di risoluzione polinomiale problema poco studiato Alberto Leporati Corso di Crittografia 13

Schema di firma di El Gamal: sicurezza se Eve sceglieγ e δ, e vuole calcolare un m corrispondente, deve calcolare il logaritmo discreto log g β γ ÿγ δ tuttavia, Eve può calcolare γ, δ e m insieme: supponiamo di scrivere γ = g i ÿβ j mod p, con 0 i, j p-2 la condizione di verifica è: g m ªβ γ ÿ (g i ÿβ j ) δ mod p che equivale a: g m - iδ ªβ γ + jδ mod p Alberto Leporati Corso di Crittografia 14

Schema di firma di El Gamal: sicurezza se imponiamo m iδª0 mod p-1 e γ + jδª0 mod p-1 allora questa congruenza vale dati i e j, se MCD(j, p-1) = 1 è facile trovare m, δ e γ che verificano queste due congruenze: γ = g i ÿβ j mod p δ = -γÿj -1 mod p-1 m= -γÿiÿ j -1 mod p-1 si verifica facilmente che i valori (γ, δ) sono una firma valida per m Alberto Leporati Corso di Crittografia 15

Firme digitali problema: usando un crittosistema a chiave pubblica per firmare, le firme hanno la stessa dimensione del messaggio! es: firma digitale dell immagine ISO di un CD con El Gamal le firme hanno dimensione doppia! ci vorrebbe una funzione che: prende in ingresso un messaggio di dimensione arbitraria produce un output piccolo sia one-way soluzione: le funzioni di hash prevengono anche l attacco allo schema di El Gamal Alberto Leporati Corso di Crittografia 16

Funzioni di hash calcolano un impronta (o message digest) dei dati di input l impronta è piccola, e solitamente di lunghezza prefissata es: 128 bit per MD5, 160 bit per SHA-1 possono essere usate per verificare l integrità dei dati (cioè come MAC Message Authentication Codes) vengono usate nelle firme digitali: anziché firmare tutto m, si firma la sua impronta h(m) Ø la firma è piccola, e sempre della stessa lunghezza Alberto Leporati Corso di Crittografia 17

Funzioni di hash come per i crittosistemi, le funzioni di hash possono essere selezionate da una famiglia, scegliendo una chiave definizione: una famiglia hash è una quadrupla (X, Y, K, H) dove: X è l insieme dei possibili messaggi Y è l insieme delle possibili impronte K è l insieme delle chiavi H = {h k : X Ø Y k œ K} è l insieme delle funzioni di hash Alberto Leporati Corso di Crittografia 18

Funzioni di hash l insieme X può essere finito (es: {0,1} n ) oppure infinito l insieme Y è sempre finito se X è finito, si assume X Y ; anzi, spesso, si assume X 2 Y in tal caso, h: X Ø Y viene detta anche funzione di compressione (da non confondere con i formati di compressione zip, arj, ecc.) Alberto Leporati Corso di Crittografia 19

Funzioni di hash deve essere difficile risolvere i seguenti problemi preimage: input: h: X Ø Y e y œ Y output: x œ X tale che h(x) = y Ø h deve essere una funzione one-way second preimage: input: h: X Ø Y e x œ X output: x œ X tale che x x e h(x ) = h(x) collision: input: h: X Ø Y output: x, x œx tale che x x e h(x ) = h(x) Alberto Leporati Corso di Crittografia 20

Collisioni osservazione: collision è più facile di second preimage algoritmo per collision si suppone di poter valutare h per q volte FindCollision (h, q) scegli X 0 Œ X, con X 0 = q for each x œ X 0 do y x = h(x) if y x = y x per qualche x x then return (x, x ) else return fallimento Alberto Leporati Corso di Crittografia 21

Collisioni teorema: posto M = Y, la probabilità di successo di FindCollision è: ε = M 1 M 2 M q + 1 1 L M M M dimostrazione: sia X 0 = {x 1,, x q } per 1 i q, sia E i l evento h(x i ) {h(x 1 ),, h(x i-1 )} allora Pr[E 1 ] = 1, e 1 2 Pr[ E 1 E 2 L E q ] = L M M M M M q + M 1 da cui segue il risultato. É Alberto Leporati Corso di Crittografia 22

Collisioni allora, la probabilità di non avere collisioni è: 1 1 2 q 1 1 1 L 1 = M M M i q 1 i= 1 M se x è un numero reale piccolo, allora 1- x º e -x quindi, Pr[no collisioni] pertanto, Pr[almeno una q i 1 = 1 e i M collisione] = = 1 e 1 M q 1 i = e q ( i= 1 2 q ( q 1 ) M e 2 =ε q M 1) Alberto Leporati Corso di Crittografia 23

Collisioni da cui: q ( q 2 M e q q 2 q 1) ( q 2 M q 2 = = 1) M 1 2 = M ln ε ln(1 1 ln 1 1 ε 1 ε ) ε questo termine lo ignoriamo Alberto Leporati Corso di Crittografia 24

Collisioni se ε = ½, allora q º 1.17 ovvero: calcolando l hash di circa elementi scelti a caso abbiamo una collisione con probabilità ½ quindi: Y = {0,1} 40 Ø M = 2 40 Ø M = 2 20 @ 10 6 (insicura!) M M Y = {0,1} 128 Ø M = 2 128 Ø M = 2 64 (sicura per poco tempo!) solitamente si richiede: Y = {0,1} 160 Ø M = 2 160 Ø M = 2 80 Alberto Leporati Corso di Crittografia 25

Collisioni esempio: paradosso del compleanno Quante persone occorre avere in una stanza in modo che abbia un probabilità uguale a ½ di trovare due persone con lo stesso compleanno? M = 365 Ø q @ 23 nonostante il nome, non è un paradosso, è solo un risultato controintuitivo Alberto Leporati Corso di Crittografia 26

Funzioni hash iterate data una funzione di compressione compress: {0,1} m+t Ø {0,1} m, con t 1 mostriamo come usarla per costruire una funzione di hash h, usando la tecnica delle funzioni hash iterate la tecnica consiste di tre fasi: pre-elaborazione elaborazione trasformazione dell output (opzionale) pre-elaborazione: data una stringa di input x, di lunghezza x m+t+1, si costruisce una stringa y tale che y ª 0 mod t Alberto Leporati Corso di Crittografia 27

Funzioni hash iterate solitamente si usa una funzione di padding pad(x) che incorpora il valore x e pone (ad esempio) i bit rimanenti a zero; si pone quindi: y = x pad(x) si divide y in r blocchi di t bit ciascuno: y = y 1 y 2 y r la fase di pre-elaborazione deve assicurare che la funzione f: x Ø y da essa calcolata sia iniettiva, cioè: x x fl f(x) f(x ) altrimenti si potrebbero generare collisioni in h è possibile assicurare l iniettività, dato che y = rt x Alberto Leporati Corso di Crittografia 28

Funzioni hash iterate elaborazione: sia IV una stringa (pubblica) di m bit (valore di inizializzazione) si calcola: z 0 = IV z 1 = compress(z 0 y 1 ) z 2 = compress(z 1 y 2 ) z r = compress(z r-1 y r ) Alberto Leporati Corso di Crittografia 29

Funzioni hash iterate trasformazione dell output (opzionale): sia g : {0,1} m Ø {0,1} l una funzione (pubblica) si pone h(x) = g(z r ) la funzione di hash iterata costruita in questo modo è: i h : {0,1} {0,1 } i= U m + t + 1 l (quindi, prende in input una stringa x di lunghezza arbitraria m+t+1, e produce in output una stringa h(x) di lunghezza fissata l) Alberto Leporati Corso di Crittografia 30

Costruzione di Merkle-Damgård utilizza la tecnica delle funzioni di hash iterate si riesce a dimostrare che se compress è resistente alle collisioni allora anche la funzione hash h risultante è resistente alle collisioni supponiamo che x = n m+t+1 e che t 2 se dividiamo x in k blocchi di t-1 bit ciascuno: x = x 1 x 2 µ x k allora x k = t 1 d, con 0 d t 2 e il valore di h(x) è dato dall output del seguente algoritmo k = t n 1 Alberto Leporati Corso di Crittografia 31

Costruzione di Merkle-Damgård Merkle-Damgård(x) @ compress: {0,1} m+t Ø {0,1} m, con t 2 n = x ; k = n/(t-1) ; d = n k(t-1) for i = 1 to k-1 do y i = x i y k = x k 0 d @ padding y k+1 = rappresentazione binaria (di t-1 bit) di d z 1 = 0 m+1 y1 g 1 = compress(z 1 ) for i = 1 to k do z i+1 = g i 1 y i+1 g i+1 = compress(z i+1 ) return g k+1 @ h(x) = g k+1 Alberto Leporati Corso di Crittografia 32

Costruzione di Merkle-Damgård teorema [Stinson, pag. 129]: se compress è resistente alle collisioni, lo è anche h se t = 1, occorre una costruzione diversa supponiamo quindi che x = n m+2, e che compress: {0,1} m+1 Ø {0,1} m codifichiamo x con f(x), dove f è definita su {0,1} come segue: f(0)=0 f(1) = 01 il valore di h(x) è dato dall output del seguente algoritmo Alberto Leporati Corso di Crittografia 33

Costruzione di Merkle-Damgård Merkle-Damgård2(x) n = x y = 11 f(x 1 ) f(x 2 ) µ f(x n ) sia y 1, y 2,, y k la sequenza di bit di y g 1 = compress( 0 m y 1 ) for i = 1 = k-1 do g i+1 = compress( g i y i+1 ) return g k @ h(x) = g k Alberto Leporati Corso di Crittografia 34

Costruzione di Merkle-Damgård si ottiene una funzione di hash: i h : U {0,1} {0,1 } i= m + 2 l teorema [Stinson, pag. 132]: se compress è resistente alle collisioni, lo è anche h Alberto Leporati Corso di Crittografia 35

Funzioni di hash la prima funzione di hash, MD4, è stata proposta da Rivest nel 1990 MD5 è una modifica di MD4 (costanti diverse, più iterazioni) più resistente agli attacchi sono stati trovati metodi per generare collisioni nelle funzioni di compressione di MD4 e di MD5 (ma non nella versione completa di MD4 e di MD5) SHA è stata proposta come standard dal NIST nel 1993, ed è stata adottata nel documento FIPS 180 si conosce una tecnica per generare collisioni in SHA con 2 61 tentativi Ø più efficiente del birthday attack, che ne richiede 2 80 SHA-1 (descritto in FIPS 180-1) è una piccola modifica di SHA che non rende possibile questo attacco Alberto Leporati Corso di Crittografia 36

Funzioni di hash nel 2001 il NIST ha annunciato la proposta per le nuove funzioni SHA-256, SHA-354 e SHA-512 i numeri si riferiscono alla dimensione del message digest si basano sempre sulla tecnica delle funzioni hash iterate la loro descrizione è più complicata di quelle di MD5 e SHA-1 vediamo ora le funzioni hash attualmente più utilizzate: SHA-1 e MD5 Alberto Leporati Corso di Crittografia 37

SHA-1 message digest da 160 bit tutte le operazioni sono basate su word da 32 bit operazioni usate:,,.,, Ÿ (bit a bit) + (addizione intera modulo 2 32 ) rotl s (X) (rotazione a sinistra di X di s posizioni, con 0 s 31) indichiamo con m il messaggio si assume che m 2 64 1 Ø l = rappresentazione binaria di m è lunga al massimo 64 bit Alberto Leporati Corso di Crittografia 38

SHA-1: padding prima operazione: padding di m SHA-1-PAD(m) d = (447 - m ) mod 512 l = rappresentazione binaria di m, con l = 64 @ se l < 64 si aggiungono zeri a sinistra finché l = 64 y = m 1 0 d l osservazioni: l 1 si aggiunge sempre, anche se m = 0 m 1 0 d ha lunghezza ª 448 mod 512 y ha lunghezza ª 0 mod 512 Alberto Leporati Corso di Crittografia 39

SHA-1 dopo il padding, y può essere suddivisa in blocchi y = M 1 M 2 µ M n dove ogni blocco M i è di 512 bit definiamo le funzioni f 0,, f 79 come segue: B, C, D sono word (da 32 bit) l output è una word f i ( B, C, D ) = ( B C ) (( B ) D ) se 0 B C D se 20 ( B C ) ( B D ) ( C D ) se 40 B C D se 60 i 19 i i i 39 59 79 Alberto Leporati Corso di Crittografia 40

SHA-1 inoltre, definiamo le word costanti K 0,, K 79 come segue (espresse in esadecimale): K i = 5A827999 6ED9EBA1 8F1BBCDC CA62C1D6 se se se se 0 20 40 60 i i i i 19 39 59 79 si usano 5 registri H 0, H 1, H 2, H 3, H 4 da 32 bit (che alla fine conterranno il risultato), più 5 registri A, B, C, D, E (di 32 bit) di appoggio Alberto Leporati Corso di Crittografia 41

SHA-1: pseudocodice SHA-1(m) y = SHA-1-PAD(m) sia y = M 1 M 2 µ M n, dove ogni M i è un blocco di 512 bit H 0 = 67452301 H 1 = EFCDAB89 H 2 = 98BADCFE H 3 = 10325476 H 4 = C3D2E1F0 @ inizializzazione dei registri Alberto Leporati Corso di Crittografia 42

SHA-1: pseudocodice for i = 1 to n do sia M i = w 0 w 1 µ w 15, dove ogni w i è for t = 16 to 79 una word do w t = rotl 1 (w t-3 w t-8 w t-14 w t-16 ) A = H 0 ; B = H 1 ; C = H 2 ; D = H 3 ; E = H 4 for t = 0 to 79 do temp = rotl 5 (A) + f t (B, C, D) + E + w t + K t E = D; D = C; C = rotl 30 (B); B = A A = temp Alberto Leporati Corso di Crittografia 43

SHA-1: pseudocodice @ indentato sotto for t = 0 to 79 H 0 = H 0 + A H 1 = H 1 + B H 2 = H 2 + C H 3 = H 3 + D H 4 = H 4 + E return (H 0 H 1 H 2 H 3 H 4 ) come si vede, SHA-1 segue il modello delle funzioni hash iterate Alberto Leporati Corso di Crittografia 44

MD5 message digest da 128 bit è diventato uno standard de facto efficiente su macchine a 32 bit più lento ma più sicuro di MD4 operazioni usate (le stesse di SHA-1):,,.,, Ÿ (bit a bit) + (addizione intera modulo 2 32 ) rotl s (X) (rotazione a sinistra di X di s posizioni, con 0 s 31) indichiamo con mœ {0,1} b il messaggio Alberto Leporati Corso di Crittografia 45

MD5: padding la lunghezza b di m è arbitraria, nel caso in cui b 2 64 1 (circa 2.15 miliardi di GB), si considera la rappresentazione binaria solo dei 64 bit meno significativi di b prima operazione: padding di m MD5-PAD(m) d = (447 - m ) mod 512 l = rappresentazione binaria di b, con l = 64 @ se l < 64 si aggiungono zeri a sinistra finché l = 64 y = m 1 0 d l Alberto Leporati Corso di Crittografia 46

MD5: padding il padding è uguale a quello di SHA-1 unica differenza: la doppia word che contiene la rappresentazione binaria di b viene attaccata al contrario (prima la word meno significativa) analogamente, in MD5 all interno di ogni word compare prima il byte meno significativo nei byte, invece, compare prima il bit più significativo queste incongruenze sono state corrette con SHA-1 valgono le stesse osservazioni fatte per SHA-1: l 1 si aggiunge sempre, anche se m = 0 m 1 0 d ha lunghezza ª 448 mod 512 y ha lunghezza ª 0 mod 512 Alberto Leporati Corso di Crittografia 47

Alberto Leporati Corso di Crittografia 48 la lunghezza di y è anche un multiplo di 16 word (= 16 x 4 byte = 16 x 4 x 8 bit = 512 bit) quindi, dopo il padding, y può essere suddivisa in word: y = M 0 M 1 µ M -1 dove è un multiplo di 16 definiamo le funzioni F, G, H, I come segue: ) ( ),, ( ),, ( ) ( ) ( ),, ( ) ( ) ( ),, ( Z X Y Z Y X I Z Y X Z Y X H Z Y Z X Z Y X G Z X Y X Z Y X F = = = = MD5

MD5: pseudocodice X, Y, Z sono word (da 32 bit) l output è una word si usano 4 registri A, B, C, D da 32 bit (che alla fine conterranno il risultato) più 4 registri AA, BB, CC, DD (di 32 bit) di appoggio inoltre, si usa un array T[1..64] di 64 word il valore di T[i] è dato dalla parte intera di: 4294967296 ÿ sin(i) dove i è espresso in radianti l elaborazione avviene un blocco di 16 word alla volta; il blocco attuale è contenuto in un buffer X[0..15] di 16 word Alberto Leporati Corso di Crittografia 49

MD5: pseudocodice MD5(m) y = MD5-PAD(m) sia y = M 0 M 1 µ M N-1, dove ogni M i è una word di 32 bit, ed N è un multiplo di 16 A = 01234567 B = 89ABCDEF C = FEDCBA98 D = 76543210 @ sono gli stessi valori @ usati per H0, H1, H2, H3 @ in SHA-1 Alberto Leporati Corso di Crittografia 50

MD5: pseudocodice for i = 0 to N/16 1 do for j = 0 to 15 do X[j] = M[i*16 + j] AA = A BB = B CC = C DD = D @ per ogni blocco da 16 word @ copia il blocco in X @ salva il contenuto dei registri @ nei registri di appoggio @ seguono quattro round @ per modificare il valore dei registri @ A, B, C e D Alberto Leporati Corso di Crittografia 51

MD5: pseudocodice @ primo round @ [abcd k s i] è un abbreviazione per @ a = b + rotl s (a + F(b,c,d) + X[k] + T[i]) [ABCD 0 7 1] [DABC 1 12 2] [CDAB 2 17 3] [BCDA 3 22 4] [ABCD 4 7 5] [DABC 5 12 6] [CDAB 6 17 7] [BCDA 7 22 8] [ABCD 8 7 9] [DABC 9 12 10] [CDAB 10 17 11] [BCDA 11 22 12] [ABCD 12 7 13] [DABC 13 12 14] [CDAB 14 17 15] [BCDA 15 22 16] Alberto Leporati Corso di Crittografia 52

MD5: pseudocodice @ secondo round @ [abcd k s i] è un abbreviazione per @ a = b + rotl s (a + G(b,c,d) + X[k] + T[i]) [ABCD 1 5 17] [DABC 6 9 18] [CDAB 11 14 19] [BCDA 0 20 20] [ABCD 5 5 21] [DABC 10 9 22] [CDAB 15 14 23] [BCDA 4 20 24] [ABCD 9 5 25] [DABC 14 9 26] [CDAB 3 14 27] [BCDA 8 20 28] [ABCD 13 5 29] [DABC 2 9 30] [CDAB 7 14 31] [BCDA 12 20 32] Alberto Leporati Corso di Crittografia 53

MD5: pseudocodice @ terzo round @ [abcd k s i] è un abbreviazione per @ a = b + rotl s (a + H(b,c,d) + X[k] + T[i]) [ABCD 5 4 33] [DABC 8 11 34] [CDAB 11 16 35] [BCDA 14 23 36] [ABCD 1 4 37] [DABC 4 11 38] [CDAB 7 16 39] [BCDA 10 23 40] [ABCD 13 4 41] [DABC 0 11 42] [CDAB 3 16 43] [BCDA 6 23 44] [ABCD 9 4 45] [DABC 12 11 46] [CDAB 15 16 47] [BCDA 2 23 48] Alberto Leporati Corso di Crittografia 54

MD5: pseudocodice @ quarto round @ [abcd k s i] è un abbreviazione per @ a = b + rotl s (a + I(b,c,d) + X[k] + T[i]) [ABCD 0 6 49] [DABC 7 10 50] [CDAB 14 15 51] [BCDA 5 21 52] [ABCD 12 6 53] [DABC 3 10 54] [CDAB 10 15 55] [BCDA 1 21 56] [ABCD 8 6 57] [DABC 15 10 58] [CDAB 6 15 59] [BCDA 13 21 60] [ABCD 4 6 61] [DABC 11 10 62] [CDAB 2 15 63] [BCDA 9 21 64] Alberto Leporati Corso di Crittografia 55

MD5: pseudocodice A= A + AA B = B + BB C = C + CC D = D + DD return (A B C D) osservazione: i byte di A, B, C e D vanno stampati dal meno significativo al più significativo Alberto Leporati Corso di Crittografia 56

Uso delle funzioni di hash supponiamo che Alice voglia firmare un messaggio m, usando un crittosistema a chiave pubblica calcola h(m), dove h è una funzione di hash calcola D A (h(m)) spedisce a Bob il messaggio firmato (m, D A (h(m))) Bob, per verificare la firma: calcola x = h(m) calcola y = E A (D A (h(m))) accetta la firma come valida se e solo se x = y come MAC: Alice spedisce a Bob la coppia (m, h(m)) = (x, y) Bob accetta m come genuino solo se y = h(x) Alberto Leporati Corso di Crittografia 57

Digital Signature Algorithm (DSA) siano: p un primo da L bit tale che il logaritmo discreto sia intrattabile in p *, dove L ª 0 mod 64 e 512 L 1024 q un primo da 160 bit che divide p-1 α œ p * una radice q-esima di 1 modulo p α ha ordine q, cioèα q ª 1 mod p basta prendere un generatore g di p *, e porre α = g (p-1)/q mod p lo spazio dei messaggi è P = {0,1}* Alberto Leporati Corso di Crittografia 58

Digital Signature Algorithm (DSA) lo spazio delle firme è A = p *µ p * Ø ogni firma è lunga 320 bit lo spazio delle chiavi è: K = {(p, q, α, β) : β ªα a mod p} con 0 a q-1 chiave pubblica: (p, q, α, β) chiave privata: a per firmare m œ P, Alice sceglie a caso r, con 1 r q-1, e calcola: sig k (m, r) = (γ, δ) Alberto Leporati Corso di Crittografia 59

Digital Signature Algorithm (DSA) dove: γ = (α r mod p) mod q δ = (SHA-1(m) + aγ )ÿ r -1 mod q se viene γ = 0 oppure δ = 0 si sceglie un nuovo valore r per verificare che (γ, δ) œ q *µ q * è una firma per m œ {0,1}*, si calcola: e 1 = SHA-1(m) ÿδ -1 mod q e 2 = γÿδ -1 mod q Alberto Leporati Corso di Crittografia 60

Digital Signature Algorithm (DSA) e si accetta la firma come valida (cioè ver k (x, (γ, δ)) = vero) se e solo se: (α e 1β e 2 mod p) mod q = γ la verifica della validità del criterio di accettazione richiede alcuni conti (delicati) modulo p e modulo q DSA è stato proposto nel 1991 dalla NSA, ed è diventato uno standard del NIST a causa del progresso degli algoritmi per il calcolo del logaritmo discreto, nell ottobre 2001 il NIST ha proposto di fissare L = 1024 Alberto Leporati Corso di Crittografia 61

PKI (Public Key Infrastructures) problema della crittografia a chiave pubblica: il canale non è autenticato chi riceve un messaggio non può essere certo del mittente chi spedisce un messaggio, non può essere certo del destinatario le firme digitali (prima firmo, poi cifro) risolvono il problema? Alice deve mandare un messaggio m a Bob chiede a Bob la chiave pubblica quando Bob spedisce E B, Eve la intercetta e la sostituisce con E E Alberto Leporati Corso di Crittografia 62

PKI (Public Key Infrastructures) Alice manda E E (D A (m)) a Eve Eve calcola E A (D E (E E (D A (m)))) e ricava m Eve spedisce a Bob E B (D A (m)) Alice e Bob non si accorgono di nulla le firme digitali assicurano che m è stato prodotto da Alice, non che è stato spedito da Alice! il problema è: quando ad Alice arriva una chiave pubblica, come fa a essere certa che è quella di Bob? Alberto Leporati Corso di Crittografia 63

PKI (Public Key Infrastructures) soluzione: Certification Authorities (CA) Alice e Bob si iscrivono presso la CA per iscriversi devono mostrare dei documenti di identità la CA fornisce a ciascuno una coppia (chiave pubblica, chiave privata) la CA mette le chiavi pubbliche in un elenco, ad es. disponibile su Internet quando Alice vuole la chiave pubblica di Bob, la preleva dall elenco Alberto Leporati Corso di Crittografia 64

PKI (Public Key Infrastructures) così facendo, però, la CA diventa un collo di bottiglia per le comunicazioni! prima soluzione: la CA delega e autorizza altre CA CA si forma una gerarchia di CA (PKI Infrastruttura a chiave pubblica) CA CA problema: mantenere aggiornate le informazioni quando viene fatta una modifica in una CA, questa si deve propagare velocemente alle altre Alberto Leporati Corso di Crittografia 65

PKI (Public Key Infrastructures) seconda soluzione: all atto dell iscrizione, ogni utente riceve un certificato: sig CA (Bob, E B, data iniziale, data finale) che indica: qual è la chiave pubblica a chi si riferisce l intervallo temporale in cui il certificato è valido volendo, si possono aggiungere altre informazioni utili Alberto Leporati Corso di Crittografia 66

PKI (Public Key Infrastructures) il certificato è firmato dalla CA la chiave segreta della CA deve essere molto difficile da falsificare la chiave pubblica della CA deve essere facilissima da trovare (quotidiani, riviste, radio, televisione, telefono, Internet, SMS, ) Ø quando la CA cambia chiavi, bisogna aggiornarle dappertutto quando Alice vuole la chiave di Bob, Bob le dà il proprio certificato fornito dalla CA Alberto Leporati Corso di Crittografia 67

PKI (Public Key Infrastructures) per imbrogliare, Eve dovrebbe costruire un certificato del tipo: sig CA (Bob, E E, data iniziale, data finale) se Bob pensa che la propria chiave segreta sia compromessa, può revocare le chiavi (e quindi il certificato) quando Bob revoca le chiavi, la CA mette il certificato corrispondente in una lista, che si chiama Certificate Revocation List (CRL) quando Alice riceve il certificato da Bob, deve controllare che non sia nella CRL Alberto Leporati Corso di Crittografia 68

PKI (Public Key Infrastructures) la CRL può essere pubblicata dalla CA oppure distribuita a tutti gli utenti problema: distribuzione rapida delle modifiche problema a monte: bisogna fidarsi della CA le persone possono essere corrotte, e comunque non riescono a svolgere il lavoro a mano i computer hanno un sacco di problemi di sicurezza altro modello: Web of Trust adottato da PGP non richiede alcuna autorità centrale Alberto Leporati Corso di Crittografia 69

Web of Trust idea: ciascuno assegna un punteggio alle persone con cui comunica il punteggio può essere dato direttamente oppure calcolato il calcolo del punteggio si basa su regole del tipo: se mi fido di A (punteggio alto) e A si fida di B, il punteggio di B sale se mi fido di A e A non si fida di B, il punteggio di B scende quindi, il punteggio di B è calcolato come combinazione lineare su tutte le persone che lo conoscono (e che io conosco) Alberto Leporati Corso di Crittografia 70