Garantire l’integrità delle transazioni nella Blockchain

In che modo viene garantita l’integrità delle transazioni all’interno della Blockchain?

È ciò di cui ci occuperemo ora, analizzando le diverse funzionalità crittografiche, come lo hashing e gli hash digests, sottolineando le differenze esistenti con gli algoritmi di crittografia veri e propri.

Mostreremo infine un esempio pratico di calcolo di un hash digest utilizzando la classe di algoritmi SHA impiegata nella implementazione della Blockchain, ricorrendo a dei semplici tools disponibili online.

Partiamo subito mostrando gli hash digests, considerati le “impronte digitali” dei blocchi della Blockchain.

Hash digests: le impronte digitali dei blocchi

Come abbiamo detto, l’integrità delle transazioni all’interno della blockchain viene conseguita mediante l’uso delle hash functions.

Le hash functions costituiscono una classe di algoritmi che rendono computazionalmente improbabile che stringhe alfanumeriche differenti diano origine a uguali valori degli hash.

Gli algoritmi di hashing sono specificamente progettati per essere sensibili perfino alle minime variazioni nei dati di input.

Crittografia e hashing: differenze

Una proprietà interessante degli hashing algorithms è che essi non sono reversibili, a differenza degli algoritmi di crittografia.

Reversibile vuol dire che è possibile convertire un testo cifrato nel suo originario testo in chiaro, utilizzando la funzione di decrypting, che è l’inverso della funzione di encrypting:

Encryption - Decryption

A differenza della crittografia, non c’è una funzione inversa per lo hashing.

Questo vuol dire che non possiamo convertire il valore di hash calcolato nel suo input originario, poichè lo hashing è un processo unidirezionale per definizione.

Vediamo adesso in che modo è possibile sfruttare le caratteristiche degli algoritmi di hashing per garantire l’integrità delle transazioni all’interno della Blockchain.

Hashing e integrità delle transazioni

Gli algoritmi di hashing sono progettati per prevenire le collisioni, vale a dire la possibilità di ottenere lo stesso hash value in corripondenza di due differenti stringhe di input.

Grazie a queste caratteristiche, gli hash possono essere considerati una specie di impronta digitale dei dati:
ogni variazione, anche minima, nei dati originari determinerà come risultato un valore calcolato di hashing molto differente.

Utilizzando le hash functions all’interno della blockchain, chiunque può verificare l’integrità dei blocchi e delle transazioni, calcolando i loro corrispondenti hash values e confrontandoli con i valori archiviati all’interno della blockchain.

Esistono diverse famiglie di algoritmi di hashing: la Blockchain di bitcoin adotta l’algoritmo di hashing SHA-256.

SHA hash value: Esempio di calcolo

Nell’esempio che segue, vediamo come il valore di hash generato dall’algoritmo di hashing cambia anche a seguito di variazioni minime nei dati in ingresso.

L’immagine sotto riportata mostra i risultati ottenuti utilizzando il tool di hashing disponibile online al link http://www.sha1-online.com

SHA Digest

Come è facile notare dall’output prodotto, anche minime variazioni nelle stringhe di input determinano valori di output completamente diversi e non riconducibili ai valori originari.