matteoriso.it

Hash

Clicca qui per andare alla pagina del glossario informatico e imparare le parole dell'informatica.
Torna all'indice

Un hash è una funzione che trasforma un input (o “messaggio”) di qualsiasi lunghezza in un output di lunghezza fissa, che è tipicamente una stringa di caratteri. Questo output è chiamato “valore hash” o “digest”. Le funzioni hash sono ampiamente utilizzate in informatica per vari scopi, tra cui la sicurezza, l’integrità dei dati e l’indicizzazione.

Caratteristiche Principali di una Funzione Hash

  1. Deterministica: La stessa input produrrà sempre lo stesso output.
  2. Velocità: La funzione hash deve essere in grado di elaborare rapidamente l’input.
  3. Pre-immagine resistente: Dato un valore hash, dovrebbe essere difficile risalire all’input originale.
  4. Seconda pre-immagine resistente: Dato un input e il suo valore hash, dovrebbe essere difficile trovare un altro input che produce lo stesso valore hash.
  5. Resistente alle collisioni: Dovrebbe essere difficile trovare due input diversi che producono lo stesso valore hash.

Applicazioni delle Funzioni Hash

  1. Sicurezza: Le funzioni hash sono utilizzate per proteggere le password. Invece di memorizzare le password in chiaro, i sistemi memorizzano i valori hash delle password.
  2. Integrità dei Dati: Gli hash sono utilizzati per verificare l’integrità dei dati. Ad esempio, quando si scarica un file, si può confrontare il valore hash del file scaricato con quello fornito dal distributore per assicurarsi che il file non sia stato alterato.
  3. Indicizzazione: Gli hash sono utilizzati nelle strutture dati come le tabelle hash, che permettono un accesso rapido ai dati.

Principali algoritmi per l’hashing

  • MD4 (deprecato)
  • MD5 (sconsigliato)
  • SHA-1 (deprecato)
  • SHA-256
  • SHA-3
  • Keccak
  • SHAKE
  • RIPEMD-128
  • RIPEMD-160
  • Tiger
  • WhirlPool

Alcuni algoritmi col tempo dimostrano di essere diventati vulnerabili agli attacchi a causa dell’evoluzione tecnologica, oppure si scopre che il codice presenta un arrore di calcolo in grado di generare collisioni tra due input diversi: in tali circostanze, secondo la gravità del caso, l’algoritmo viene semplicemente sconsigliato o deprecato radicalmente perché non più sicuro.

La massima autorità nel campo dell’hashing e della crittografia è il NIST (National Institute of Standards and Technology) statunitense.

Esempio

La stringa Hello world! genera i seguenti hash.

  • MD5: 86fb269d190d2c85f6e0468ceca42a20
  • SHA-1: d3486ae9136e7856bc42212385ea797094475802
  • SHA-256: c0535e4be2b79ffd93291305436bf889314e4a3faec05ecffcbb7df31ad9e51a
  • SHA-3/512: 95decc72f0a50ae4d9d5378e1b2252587cfc71977e43292c8f1b84648248509f1bc18bc6f0b0d0b8606a643eff61d611ae84e6fbd4a2683165706bd6fd48b334
  • Whirlpool: bb4f1451ec1b8326643d25d74547591619cb01dd1f104d729a13494cbd95382d3526b00a2d3fdf448e1e4b39887c54fe2aea9767872b58ed361eb3a12075c5b5