Nella sicurezza informatica, la funzione hash è molto importante per garantire l'integrità del trasferimento e della registrazione delle informazioni che richiedono alti livelli di protezione.
Le funzioni hash vengono utilizzate in azioni come la convalida e l'autenticazione dell'utente, la firma di documenti e anche in criptovalute come metodo per evitare la falsificazione delle transazioni e prevenire azioni dannose.
Una funzione hash è una procedura crittografica in cui viene utilizzato un algoritmo specifico per trasformare informazioni specifiche (ad esempio, testo) in una singola sequenza alfanumerica di lunghezza fissa, chiamata hash.
Come abbiamo già spiegato in dettaglio cos'è un hash Nel capitolo precedente, non entreremo molto nei dettagli, ma evidenzieremo che un hash non è il risultato di una crittografia, ma piuttosto che è un riepilogo unidirezionale perché il processo è irreversibile, cioè le informazioni originali non possono essere decrittografate / recuperate da partendo dall'hash finale se non sta tentando di hash senza fermarsi fino a trovare il testo originale, poiché l'hash trovato corrisponderà a quello che stavi cercando e che già conoscevi.
Nel corso degli anni sono apparsi molti modi (algoritmi) per generare hash, ovvero ci sono molti tipi di funzioni hash, ma dDa un punto di vista tecnico, tutti devono possedere una serie di caratteristiche per svolgere correttamente la loro missione:
- Unidirezionalità: Se abbiamo un documento M, l'hash ci permette di fare un hash di riepilogo chiamato h (M), ma da questo hash è impossibile conoscere il contenuto del documento originale M.
- Compressione: Il peso del documento M è indifferente poiché l'hash risultante avrà sempre la stessa lunghezza con lo stesso numero di bit.
- Facilità di calcolo: Dovrebbe essere facile calcolare h (M) da "M" per una generazione rapida e senza sprechi di tempo, energia e potenza di calcolo.
- Trasmissione bit: L'hash h (M) deve essere una funzione complessa del messaggio originale "M". Se fosse il caso che M fosse modificato ovunque, e anche se fosse una modifica minima, l'elemento h (M) cambierebbe completamente.
- Debole resistenza alle collisioni: Sarà computazionalmente impossibile che M noto, possiamo trovare un altro M 'tale che h (M) = h (M'). Prima pre-immagine.
- Forte resistenza alle collisioni: Deve essere computazionalmente difficile trovare una coppia (M, M ') tale che h (M) = h (M'). Seconda pre-immagine.
Sicurezza hash
Sì. Puoi trovare il testo originale di un file hash. Ma è praticamente impossibile. Solo con la forza bruta.
Ad esempio, l'hash a 128 bit (una versione di base dell'hash) ha 2 ^ 128 diverse possibilità e la probabilità del 50% sarebbe la radice quadrata di 2 ^ 128, risultando in 2 ^ 64 di un'istanza che si verifica. Da ciò si ricava che a livello statistico è più facile rompere la collisione che rompere la resistenza dell'immagine precedente.
Quindi è vero, non esiste una funzione hash al mondo che sia priva di collisioni, ma se non ha un difetto nel suo design, farlo rompere è molto complicato e richiederebbe molto tempo, a volte miliardi di anni con una capacità calcolo superiore a quello dell'intero pianeta terra.
Funzione hash in Bitcoin
Uno degli algoritmi della funzione hash per eccellenza è SHA-256, viene utilizzato in innumerevoli casi dato il suo equilibrio tra sicurezza e complessità di generazione (in termini di dispendio di tempo ed energia)
Uno delle centinaia di migliaia di luoghi in cui viene utilizzato è su Bitcoin.
All'interno ecosistema bitcoin La funzione hash è molto importante fintanto che è efficiente, e affinché questo sia il caso, l'hash deve essere complesso, offrendo così un alto grado di sicurezza, il che implica che ci vuole più tempo per calcolarlo e il processo è più inefficiente.
La funzione hash in Bitcoin viene utilizzata in due aree.
1. Creazione dell'indirizzo
Uno degli usi più comuni della funzione hash è nel processo di generazione dell'indirizzo Bitcoin.
La funzione hash SHA256 viene utilizzata fino a 3 volte nel processo di generazione dell'indirizzo.
Grazie a questa funzione, l'indirizzo è più corto della chiave pubblica da cui proviene. Si ottiene anche che sia coerente nel suo insieme generando caratteri di controllo (checksum).
Se ancora non sai come viene generato un indirizzo, puoi andare tramite il seguente collegamento.
2. Estrazione mineraria: prova di lavoro
Come abbiamo già spiegato in dettaglio nel capitolo su mining di bitcoin, è l'azione compiuta da alcune persone che decidono di offrire la propria potenza di calcolo alla rete Bitcoin per la verifica delle diverse transazioni.
Le funzioni hash sono un processo chiave in creazione di blocchiInoltre, viene utilizzato anche in più passaggi, poiché il miner deve associare le transazioni al blocco. A tale scopo, utilizzare la funzione hash per creare il file Merkle Tree.
Con quel risultato, oltre all'hash risultante dal blocco precedente e un'informazione che deve essere inventata (chiamata nonce) dovrebbe fare in modo che l'hash risultante abbia un certo pattern. Se lo fai, avrai risolto il problema matematico, avrai estratto un blocco e guadagnerai quasi € 50.00 attualmente (giugno 2020).
In questo modo è possibile collegare completamente tutte le transazioni nuove e passate, generando integrità e immutabilità totali
Eseguire il processo di hashing una volta è estremamente facile, ma il miner deve farlo milioni di volte. È come fare uno squat, che è facile, ma non milioni di volte.
Infine, per il nodi verifica che tutto sia corretto, rifanno il processo una sola volta, applicando nuovamente la funzione hash nelle diverse parti del processo.
Ora sai cos'è una funzione hash e quali ruoli svolge all'interno delle criptovalute. Ti invitiamo a continuare la formazione per diventare un esperto di criptovalute e tecnologia blockchain.