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