Funzioni Hash Impronta Digitale Impronta digitale di un messaggio L’impronta digitale deve essere – – – facile da calcolare difficile da invertire unica L’impronta digitale viene utilizzata per – – h() h() garantire l’integrità del messaggio evitare di lavorare sul messaggio intero se questo è troppo grande (ad esempio: cifratura/firma a chiave pubblica) L’impronta digitale viene detta anche – digest, fingerprint, hash Funzioni Hash 1 Esempio Nel Nelmezzo mezzodel delcammin cammindi dinostra nostravita vita mi miritrovai ritrovaiper peruna unaselva selvaoscura oscura che' che'la ladiritta dirittavia viaera erasmarrita. smarrita. Ahi Ahiquanto quantoaadir dirqual qualera erae` e`cosa cosadura dura esta selva selvaggia e aspra esta selva selvaggia e aspraeeforte forte che chenel nelpensier pensierrinova rinovala lapaura! paura! h() h() d94f329333386d5abef6475313755e94 128 bit La dimensione della hash è fissa (generalmente, minore di quella del messaggio) nota: h = MD5 Funzioni Hash 2 Message Integrity Code MIC garantisce l’integrità di un messaggio unsecure channel h() h() h() h() Digest OK?! Authentic channel Funzioni Hash 3 Sistema insicuro con componenti insicure unsecure channel Funzioni Hash 4 Hash e Cifratura K: chiave segreta e condivisa da Alice e Bob unsecure channel d=h(m) c = E(K, (m, d)) 〈Alice, c〉 (m, d) = D(K, c) d = h(m) ? Funzioni Hash 5 Hash e Firma Digitale È più efficiente firmare l’impronta di un messaggio piuttosto che il messaggio stesso unsecure channel d=h(m) s = S(PRIVA, d) 〈Alice, M, s〉 d′ = h(m) V(PUBA, d′, s) ≡ VERO? Funzioni Hash 6 Esempio di Applicazione Alice vuol poter provare che ad un determinato istante t possedeva un certo documento m senza però rivelarlo Notaio d = h(m) 〈Alice, d〉 t = clock() s = S(PRIVN, (d, t)) Alice può esibire m, t, s 〈Notaio, t, s〉 Funzioni Hash La firma s lega d a t indissolubilmente 7 Attacchi ATTACCO I (2nd preimage). Dato m, l’avversario determina un messaggio m′ tale che h(m′) = h(M). • ESEMPIO. Alice ha firmato h(m), ma l’avversario può sostenere che Alice ha firmato m′ ATTACCO II (collision). L’avversario determina una coppia di messaggi m ed m′ tali che h(m) = h(m′) • ESEMPIO 1. (1) Mallet prepara due versioni di un contratto, m ed m′, rispettivamente favorevole e sfavorevole per Alice 2. Mallet fa firmare h(m) a Alice e poi sostituisce m con m′ L’attacco II è più “facile” dell’attacco I Funzioni Hash 8 Il Paradosso del Compleanno Si consideri una stanza con N persone. PROBLEMA I (l’attacco I può essere ricondotto a questo problema) – – Qual è il valore di N per cui probabilità che almeno una persona abbia una predeterminata data di nascita sia 0.5? SOLUZIONE: N = 253 PROBLEMA II (l’attacco II può essere ricondotto a questo problema) – – Qual è il valore di N per cui la probabilità che almeno una coppia di persone abbia la stessa data di nascita sia 0.5? SOLUZIONE: N = 23 Funzioni Hash 9 Proprietà Una funzione hash h: X → Y deve avere le seguenti proprietà: Efficienza. Dato x è facile calcolare y = h(x) Output fisso. h() trasforma un input x di lunghezza arbitraria in un output y = h(x) di lunghezza fissa (m bit) One-way. Dato y = h(x) è difficile trovare x Weak Collision Resistance. Dati x ed h(x), è difficile trovare x′, x′ ≠ x, tale che h(x′) = h(x) Strong Collision Resistance. È difficile trovare una coppia di input x ed x′, x′ ≠ x, tali che h(x) = h(x′) Funzioni Hash 10 Forza di una Funzione Hash Se h() soddisfa le cinque proprietà, allora l’unico attacco possibile è quello a forza bruta, quindi se m è il numero di bit dell’output, si può dimostrare che: – – Violare Weak Collision Resistance richiede O(2m) operazioni Violare Strong Collision Resistance richiede O(2m/2) operazioni Esempio: m = 64, un elaboratore che produce 106 hash al secondo impiega – – circa 600000 anni per violare Weak Collision Resistance circa un’ora per violare Strong Collision Resistance Funzioni Hash 11 Funzione hash: struttura generale x0 x1 x2 xn-1 d0 128 f: funzione di compressione 512 f f d0: valore iniziale (costante, non segreto) f padding su xn-1 se necessario d: digest f d Funzioni Hash 12 Algoritmi Nome Blocco Hash (bit) (bit) Definizione Note MD2 8 128 RFC-1319 obsoleto MD4 512 128 RFC-1320 obsoleto MD5 512 128 RFC-1321 buono SHA-1 512 160 FIPS-180-1 ottimo RIPEMD 512 160 ISO/IEC 10118-3 ottimo Funzioni Hash 13 Message Integrity Code MIC richiede un meccanismo aggiuntivo: un canale autentico m h() h() h() h() Digest OK?! PROBLEMA Alice vuole prove che il messaggio m proviene proprio da Bob Funzioni Hash 14 Message Authentication Code MAC garantisce sia l’integrità sia la provenienza di un messaggio aggiungendo una chiave/password alla hash d = HMAC(m, k) MAC viene anche detta “funzione hash con chiave” (keyed hash function) Funzioni Hash 15 Message Authentication Code Alice e Bob condividono una chiave segreta k HMAC HMAC m, d = HMAC HMAC OK!? K K K Funzioni Hash 16 HMAC: Un’Applicazione Diversa COMUNICAZIONE CONFIDENZIALE USANDO HMAC? Alice vuole spedire a Bob il messaggio segreto m = “Ci vediamo alle 19:00” Alice e Bob – non possono usare la cifratura, ma – hanno a disposizione solo una funzione HMAC e – condividono un segreto: chiave K Funzioni Hash 17 Mac: Un’Applicazione Diversa Alice costruisce n messaggi di cui – – uno “buono” (mj = m) ed n −1 di “disturbo” (es. mi≠j = “Ci vediamo alle 8:00”) calcola – – un MAC “buono” dj = HMAC(k, mj) (n −1) di (i≠j) di “disturbo”, cioè di ≠ HMAC(K, mi) invia a Bob tutte le coppie 〈mi, di〉, 1 ≤ i ≤ n Bob scarta le coppie di “disturbo” e rimane con mj Funzioni Hash 18 Mac: Un’Applicazione Diversa Un qualunque avversario non può determinare qual è il messaggio buono mi perché non può determinare il digest buono di perché non conosce il segreto K Funzioni Hash 19 Checksums and hash functions Checksum (parity, CRC) provide protection against accidental or non-malicious errors on channels which are subject to transmission errors. – – While of use for detection of random errors, checksums are not of cryptographic use, because typically a data string checksumming to any target value can be easily created Checksums thus do not provide one-wayness as required for hash functions In contrast to checksums, data integrity mechanisms based on (cryptographic) hash functions are specifically designed to preclude undetectable intentional modification – Semantically, hash functions should exhibit no predictable relationships or correlations between inputs and outputs Funzioni Hash 20