Calcolo dell'hash SHA-3

Calcola in tempo reale nel browser l'hash SHA-3 (Keccak) del testo inserito. È la funzione hash di nuova generazione standardizzata dal NIST nel 2012 e adotta la «costruzione a spugna», radicalmente diversa da quella di SHA-2.

Copiato!

Consigli

  • SHA-3 si basa sull'algoritmo Keccak, vincitore del concorso internazionale indetto dal NIST fra il 2007 e il 2012. Come SHA-2 prevede più lunghezze di output; questo strumento usa quella a 256 bit.
  • Mentre SHA-2 adotta la costruzione di Merkle–Damgård, SHA-3 segue una filosofia completamente diversa, la «costruzione a spugna». È pensata come riserva nel caso in cui in futuro venga trovato un attacco contro SHA-2.
  • Per SHA-3 non è nota alcuna vulnerabilità. La sua diffusione, però, non regge il confronto con SHA-256: se conta la compatibilità con i sistemi esistenti, SHA-256 resta la scelta pratica.
  • Ethereum adotta il proprio Keccak-256, ossia la versione precedente alla standardizzazione. Differisce leggermente dallo SHA-3 del NIST, quindi per i suoi hash serve un'implementazione dedicata.
  • SHA-3 è costruito su operazioni bit a bit e si presta a implementazioni hardware efficienti (FPGA e ASIC). Via software, invece, può risultare leggermente più lento di SHA-256.

Domande frequenti

Se serve compatibilità con sistemi esistenti, SHA-256; per un progetto nuovo in cui si vuole un margine di sicurezza maggiore, SHA-3. Allo stato attuale sono entrambe sicure.

No. Ethereum adotta il Keccak precedente alla standardizzazione NIST e, poiché il riempimento è diverso, produce hash differenti a parità di input. Per calcolare gli indirizzi Ethereum serve un'implementazione dedicata.

No. SHA-3 è una funzione hash a senso unico e ricavare i dati di partenza dall'hash è computazionalmente impossibile. Può quindi essere usata in sicurezza per il confronto delle password.
Tool-kun

A proposito — la nascita di Keccak e i cinque anni del concorso NIST

Nel 2006, di fronte alla crescente concretezza degli attacchi di collisione contro SHA-1, il NIST avviò il «concorso SHA-3». Da tutto il mondo arrivarono 64 algoritmi e, dopo circa cinque anni di valutazione, nell'ottobre 2012 fu scelto Keccak, progettato da un gruppo belga (Joan Daemen, Gilles Van Assche, Guido Bertoni e Michaël Peeters). Daemen aveva già partecipato alla progettazione di AES (Rijndael): una sorta di doppietta nella storia della crittografia.

Il tratto curioso del concorso è che il NIST non chiese un algoritmo «per sostituire SHA-2», bensì un'«assicurazione nel caso SHA-2 venisse violato». SHA-2 è tuttora sicuro e SHA-3 resta uno standard affiancato al primo. La differenza radicale di impostazione garantisce che un eventuale attacco a SHA-2 non sia trasferibile a SHA-3.

La «costruzione a spugna» di Keccak è un modello intuitivo: assorbe i dati in ingresso e ne «strizza» fuori la quantità di output desiderata. Da questo schema derivano anche le funzioni hash a output esteso (XOF) come SHAKE128 e SHAKE256, capaci di produrre risultati di lunghezza arbitraria: una porta aperta su nuove possibilità crittografiche.