Che cos’è la Funzione di Hash in Bitcoin?
La funzione di hash è una funzione matematica che, dato un input di dimensioni variabili, restituisce un risultato di dimensioni fisse.
In Bitcoin si sente spesso parlare di SHA256 (funzione che restituisce un risultato di 256 bit, ovvero 32 byte) e RIPEMD160 (funzione che restituisce un risultato di 160 bit, ovvero 20 byte). Fare l’hash di un dato equivale a crearne l’impronta digitale.
Le impronte digitali sono diverse da persona a persona e dall’impronta digitale non è possibile risalire all’identità della persona (a meno che i due dati non vengano collegati e archiviati). Proprio come per l’impronta digitale, a input diversi corrispondo hash diversi e non è possibile ricostruire il dato se non andando per tentativi.
La probabilità di collisione (hash uguali per input diversi) e la probabilità di risalire al dato originario dal suo hash (preimmagine) è così bassa che, usando risultati a 256 o 160 bit, è un’evenienza trascurabile. In ogni caso, quando un algoritmo di hash genera una collisione, esso viene deprecato e abbandonato.
Per rendere chiara la dimensione dei numeri coinvolti, un hash a 256 bit ha 10^77 possibili risultati diversi. Dal momento che si stima che nell’intero universo vi siano 10^80 atomi, una collisione (o una preimmagine) ha, circa, la stessa probabilità che Alice e Bob, scegliendo a caso nell’intero universo, scelgano lo stesso atomo.
Dal momento che al minimo variare del dato immesso l’hash risultante è significativamente diverso, la funzione può essere usata per: verificare l’integrità di dati crittografare dati strutturare dati ad albero firme digitali.
di CypherGatto