L'hashing è una tecnica per convertire i dati in un codice. Questo codice è chiamato hash e di solito viene utilizzato per proteggere dati importanti o per il mining. In questa lezione parleremo di hashing. Non è certo facile, ma non ci lasceremo scoraggiare. Ecco come procedere.
✔️ L'hash consiste nel convertire una raccolta di dati in un codice, l'hash, utilizzando un calcolo predeterminato.
✔️ L'hashing è spesso utilizzato per proteggere le password in modo che solo l'utente possa leggerle e per confrontare le checksum quando si scaricano i file.
✔️ Le firme digitali utilizzano l'hashing per l'autenticazione, mentre il destinatario ha bisogno della chiave privata per decifrare il messaggio.
✔️ Le criptovalute utilizzano l'hashing per il mining, che richiede ai computer di utilizzare la loro potenza di calcolo per risolvere puzzle e ricevere ricompense.
Definizione:
L'hash è il processo con cui una serie di dati viene convertita da una funzione in un codice, l'hash. Come si dice?
Spieghiamo innanzitutto cos'è un hash. Un hash è il risultato di un qualche tipo di calcolo basato su condizioni predefinite. Un hash consiste in una serie di numeri e lettere.
Facciamo un esempio di hashing, per renderlo un po' più visivo. Con SHA (Secure Hashing Algorithm) 256, puoi ottenere un hash per qualsiasi tipo di informazione testuale. Creerò due frasi molto simili, ma il cui risultato (l'hash) è molto diverso.
La frase "cos'è l'hash" (l'input) produce il seguente hash:
a85eaf708bd0da1c0b7206ab8d69c30403b34be19588b71702d420ff9b21f09c (l'uscita)
La frase "Cos'è l'hash" produce un hash molto diverso:
4bc6139ce79a8c6aeca74cd9397259fb54d4ea4fc7b930bb74404cfe94c34bcd
SHA-256 produce un hash lungo 256 bit (64 caratteri).
Per inciso, gli hash funzionano in una sola direzione. Puoi creare l'hash di una frase, ma non puoi ricostruire una frase dall'hash.
Un hash dovrebbe essere impostato in modo da richiedere uno sforzo inaccettabile per indovinare l'hash basato sulla forza bruta (controllando semplicemente tutte le possibilità 1 a 1). Più caratteri genera una funzione hash, più è difficile decifrare un input.
Ora l'idea dell'hashing deve aver preso forma nella tua immaginazione.
Bello, un tale vaso di hashing. Ma cosa si può fare realmente con esso?
In generale, possiamo dire che l'hashing viene utilizzato per proteggere i dati. Più comunemente, viene utilizzato in ambito informatico per proteggere le password.
Supponiamo che tu crei una password e debba inviarla via internet inserendola da qualche parte. Se viene inviata in chiaro senza crittografia o hash, gli hacker possono leggere ciò che inserisci. Ecco perché oggi le password vengono convertite in hash, in modo che solo l'utente possa leggere ciò che inserisce.
L'hash può essere utilizzato anche per scaricare i file. Prima di scaricare il file, si calcola l'hash e poi si controlla se il cosiddetto checksum è lo stesso. Se entrambi i valori sono uguali, il file è l'originale. Molto utile se non vuoi che virus o cavalli di Troia passino attraverso le porte.
Un fenomeno ben noto nel mondo della crittografia è la firma digitale. In questo caso, ci sono un mittente e un destinatario. Viene creato un hash di un messaggio. Senza la chiave privata, il messaggio non può essere letto. Il destinatario del messaggio ha quindi bisogno della chiave segreta per decifrare il messaggio. Se l'hash del messaggio corrisponde all'hash che può essere calcolato con questa chiave, allora il messaggio è identico a quello originale.
Nelle cryptocurrency, lavorano con le chiave privata e la chiave pubblica per visualizzare il tuo indirizzo (pubblico) o per stabilire se puoi spendere questa somma di denaro (chiave privata).
Viene utilizzato anche per i dati personali. Quando ordini un prodotto online da un negozio, prima crei un account. La maggior parte dei tuoi dati viene sottoposta a hashtag, quindi puoi ordinare in modo anonimo, ma la consegna può avvenire al tuo indirizzo.
L'hash può essere ulteriormente protetto con tecniche chiamate sale e pepe. Il sale permette di aggiungere un numero generato in modo casuale all'hash, dopodiché viene creato un nuovo hash, rendendo ancora più difficile per gli hacker decifrare il codice.
Con il pepe, si aggiunge la stessa stringa di 32 caratteri casuali a tutti i record, eliminando virtualmente un attacco di forza bruta.
Quando si fa mining di Bitcoin, si parla spesso di hashrate. Forse ora sei in grado di indovinare il significato di questo termine.
L'hashrate di un computer è la potenza di calcolo che possiede per eseguire un'operazione difficile. crittografico un rompicapo da risolvere. Questo difficile rompicapo consiste nell'indovinare l'input di un hash. Chi indovina per primo aggiunge un nuovo blocco alla blockchain e riceve una ricompensa sotto forma di commissioni di transazione e nuovi Bitcoin.
Il tasso di hashrate del Bitcoin La rete è la potenza di calcolo totale di tutti i computer che effettuano il mining di Bitcoin. Se aumenta, il rompicapo diventa più difficile. Il fatto è che un nuovo block deve essere trovato circa ogni 10 minuti, secondo i dati di Satoshi Nakamoto. Se la potenza di calcolo diminuisce, ad esempio se molti Miner abbandonano, il rompicapo deve diventare più semplice, altrimenti quei 10 minuti diventano presto 11 o 12 minuti e si mette in crisi.
Quando in Bitcoin viene creato un nuovo blocco, questo è composto da diverse sezioni. Ogni blocco contiene un hash del blocco precedente. Questo per garantire che tutti i blocchi siano memorizzati in modo sequenziale.
Successivamente, si incontra il tx_root, che è il valore hash radice del Merkle tree che contiene tutte le transazioni. Un Merkle tree può essere considerato come una collezione di hash. Si tratta di un diagramma ad albero in cui tutte le transazioni ricevono un hash e vengono unite fino a quando non rimane un solo record con tutte le transazioni (hash) in un unico hash, la radice Merkle o anche chiamata hash radice. Con questo metodo, un blocco è molto meno popolato rispetto a quello in cui si dovrebbero scrivere tutte le transazioni, il che migliora la velocità.
Segue il timestamp. Questo contiene l'ora in cui il block è stato creato. In questo modo, puoi creare solo block in avanti nel tempo.
Poi viene il nonce. Si tratta di un hash che il Miner deve indovinare per essere autorizzato a creare un nuovo block.
Nelle cryptocurrency, l'hashing viene utilizzato perché funziona bene e velocemente. L'hashing dà anche un importante contributo alla sicurezza perché è un sistema unidirezionale. È possibile generare un hash molto facilmente, ma indovinare l'input dall'hash è quasi impossibile.
Poiché l'hashing è essenziale per la sicurezza, verrà utilizzato ancora per molto tempo. Tuttavia, con l'avvento dei computer quantistici, sarà necessario inventare un nuovo trucco.