In informatica e crittografia un algoritmo di hash ha la funzione di mappare una stringa di lunghezza variabile, coprendola e di fatto proteggendola con una di lunghezza predefinita.
Ogni algoritmo di hash svolge le seguenti funzioni:
-
resistenza alla preimmagine: è quasi impossibile la ricerca di una stringa in input che dia un hash uguale a un dato hash;
-
resistenza alla seconda preimmagine: è computazionalmente intrattabile la ricerca di una stringa in input che dia un hash uguale a quello di una data stringa;
-
resistenza alle collisioni: è computazionalmente intrattabile la ricerca di unacoppia di stringhe in input che diano lo stesso hash.
Il funzionamento di un algoritmo di hash è abbastanza semplice e possiede le seguenti caratteristiche:
- L'algoritmo restituisce una stringa di numeri e lettere a partire da un qualsiasi flusso di bit di qualsiasi dimensione (può essere un file ma anche una stringa).L'output è detto
digest.
- La stringa di output è univoca per ogni documento e funge da identificatore dello stesso.
- L'algoritmo non è invertibile, ossia non è possibile ricostruire il documento originale a partire dalla stringa che viene restituita in output.
Queste caratteristiche rendono questo algoritmo fondamentale per adempiere allecaratteristiche della firma digitale, essa è definita come il digest di un documentocrittografato con chiave
privata.
In sintesi il documento viene “dato in pasto” all’algoritmo di hash che ne restituisce una chiave privata, la quale fa riferimento ad una pubblica, che servirà a chi vede il documento “hashato”
per decrittarlo.
La firma digitale è l'unico caso in cui l'uso delle chiavi è invertito: la chiave pubblica servea decrittare la firma e trovare il digest iniziale, mentre quella privata serve a crittografareuna
stringa anziché ad aprirla.
Nessun commento:
Posta un commento