5 Funzioni di hash e MAC
Una funzione di hash è una
funzione che, dato un qualunque messaggio di lunghezza arbitraria,
ne produce un'impronta (detta digest)
di lunghezza prefissata (di solito dell'ordine di 100-200 bit).
L'utilità di una funziona di hash sta nel poter utilizzare
l'impronta come rappresentazione compatta del messaggio stesso,
tipicamente firmando l'impronta anziché l'intero messaggio; perchè
questo possa avvenire è desiderabile che la funzione presenti due
proprietà particolari, sia cioè senza collisioni e
unidirezionale.
- Una funzione di hash
è detta debolmente senza
collisioni se, dato un messaggio
, è computazionalmente
impraticabile trovare un messaggio
tale che
.
- Una funzione di hash
è detta fortemente senza
collisioni se è computazionalmente impraticabile trovare due
messaggi
e
tali che
e
.
- Una funzione di hash
è detta unidirezionale se,
data un'impronta
, è computazionalmente impraticabile
trovare un messaggio
tale che
.
Le funzioni di hash possono essere utilizzate insieme con delle
chiavi segrete per ottenere autenticazione e integrità dei
messaggi, realizzando così dei MAC (Message Authentication
Code). Più precisamente, possiamo definire algoritmo di MAC una
funzione
, parametrizzata da una chiave
, con le seguenti proprietà:
- Dati una chiave
e un input
, è facile calcolare
.
Tale valore è detto brevemente MAC.
- Dato un input
di lunghezza qualsiasi la funzione genera un output
di lunghezza prefissata.
- Noto un certo numero di coppie
è computazionalmente impraticabile calcolare qualunque altra
coppia
per un
qualsiasi nuovo input
senza conoscere
.
©2001 Davide Cerri