Hash

Indice dei contenuti

    Una funzione di hash (dall’inglese to hash, sminuzzare, mescolare) è un algoritmo matematico che riceve in input un dato di lunghezza arbitraria (che sia una singola parola o un intero file video) e restituisce in output una stringa alfanumerica di lunghezza fissa, detta digest (o semplicemente hash).

    In ambito informatico e crittografico, una buona funzione di hash deve possedere proprietà imprescindibili:

    1. Determinismo: lo stesso input produce sempre esattamente il medesimo output.
    2. Effetto valanga: una minima variazione dell’input (anche un solo bit cambiato) stravolge completamente l’output, rendendolo irriconoscibile rispetto al precedente.
    3. Resistenza alla preimmagine (unidirezionalità): dato un hash in output, deve essere computazionalmente impossibile (o estremamente oneroso) ricostruire matematicamente il dato originale di input.
    4. Resistenza alle collisioni: deve essere estremamente improbabile trovare due input diversi che generino lo stesso output.

    Queste caratteristiche rendono le funzioni di hash (come la famiglia SHA-256 o SHA-3) i pilastri della sicurezza informatica moderna. Sono impiegate per:

    • Verifica dell’integrità: per assicurarsi che un file scaricato non sia stato corrotto o manomesso.
    • Archiviazione delle password: nei database non si salvano le password in chiaro, ma solo i loro hash. Durante il login si ricalcola l’hash della password inserita per verificarne la corrispondenza.
    • Strutture dati: nelle Hash Table, per accedere in tempo costante O(1)O(1) alle informazioni indicizzate.
    • Blockchain: per concatenare i blocchi e garantire l’immutabilità della catena nel tempo.

    Ultimo aggiornamento: