Funzioni di Hashing Blockchain: cosa sono, esempi, come funzionano

Foto dell'autore

Andrea Barbieri

 

Home > News feed > Competenze e tecnologie > Competenze informatiche > Blockchain > Funzioni di Hashing Blockchain: cosa sono, esempi, come funzionano

Funzioni di Hashing Blockchain, cosa sono

Le funzioni di hashing nelle blockchain sono algoritmi matematici che prendono un input (o ‘messaggio’) e restituiscono una stringa di lunghezza fissa, che appare casuale. Questa stringa è la “hash“. È estremamente sensibile ai dati in ingresso e, anche un piccolo cambiamento, produce una hash completamente diversa. Nelle blockchain, le funzioni di hashing sono usate per creare gli indirizzi dei blocchi, rendendo il dato originale irriconoscibile e inalterabile.

Differenze e Tipologie

Esistono diverse funzioni di hashing, ma non tutte sono adatte per l’uso in una blockchain. Alcune delle più popolari includono:

  • SHA-256 (utilizzata in Bitcoin): Produce un hash di 256 bit ed è attualmente la funzione di hashing più popolare in blockchain.
  • Keccak-256: Usata in Ethereum, è una delle varianti della famiglia SHA-3.
  • Scrypt: Utilizzata in Litecoin, è progettata per essere più resistente agli attacchi grazie alla sua richiesta di maggiore memoria.

Come funziona in breve

Una funzione di hashing prende un input e produce una stringa di lunghezza fissa, indipendentemente dalla lunghezza dell’input. Ad esempio, l’hash di “ciao” attraverso SHA-256 è:

2ef7bde608ce5404e97d5f042f95f89f1c2328712491bb4e6bb7e25104ae2a6f

Se cambiamo leggermente l’input in “Ciao”, l’hash diventa completamente diverso:

f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0

Questo dimostra la proprietà di sensibilità delle funzioni di hashing.

Funzioni di Hashing Blockchain: esempi

Bitcoin usa SHA-256

Bitcoin utilizza la funzione di hashing SHA-256 per creare gli indirizzi dei blocchi e garantire l’integrità dei dati.

Ethereum usa Keccak-256

Ethereum usa la funzione Keccak-256, una variante di SHA-3, per creare gli indirizzi e proteggere i dati.

Litecoin usa Scrypt

Litecoin usa Scrypt come funzione di hashing per complicare gli attacchi di forza bruta rendendo onerosa la verifica di molte combinazioni.

Zcash usa Equihash

Zcash, per promuovere il mining decentralizzato, utilizza Equihash, una funzione di hashing progettata per essere resistente all’hardware di mining specializzato.

Monero usa Cryptonight

Monero utilizza la funzione di hashing Cryptonight per garantire transazioni private e non tracciabili.

Tutorial: Calcolare l’hash SHA-256 di un messaggio in Python


import hashlib

# Funzione per calcolare l'hash SHA-256 di un messaggio
def sha256(message):
    hash_function = hashlib.sha256()
    hash_function.update(message.encode('utf-8'))
    return hash_function.hexdigest()

# Messaggio di esempio
message = "ciao"

# Calcolo dell'hash
hash_result = sha256(message)

# Stampa dell'hash
print("Hash SHA-256 del messaggio:", hash_result)

Questo script Python definisce una funzione sha256 che prende un messaggio in input, calcola il suo hash SHA256 e lo restituisce come una stringa esadecimale. Utilizzando il messaggio di esempio “ciao”, l’output sarà l’hash corrispondente di quel messaggio.

Applicazioni e casi d’uso

Le funzioni di hashing nella blockchain hanno applicazioni cruciali, dalla creazione di indirizzi fino alla verifica dell’integrità dei dati. Ad esempio:

  • Creazione di indirizzi di transazione univoci.
  • Verifica dell’integrità dei dati in un blocco.
  • Creazione di chiavi pubbliche a partire da chiavi private.
  • Uso in funzioni di consenso come Proof of Work.

Linguaggi di programmazione

I linguaggi di programmazione più comuni per lavorare con le funzioni di hashing blockchain includono:

  • Python: Con librerie come hashlib.
  • JavaScript: Con librerie come crypto-js.
  • Java: Utilizzando la libreria java.security.

Framework

Esistono diversi framework che facilitano la manipolazione delle funzioni di hashing in una blockchain, ad esempio:

  • Web3.js: Framework JavaScript per interagire con nodi Ethereum.
  • Truffle: Framework per lo sviluppo di smart contract.

Aziende

Aziende come IBM, Microsoft e Oracle offrono soluzioni blockchain che utilizzano funzioni di hashing per garantire l’integrità dei dati.

Funzioni di Hashing Blockchain: figure lavorative coinvolte

  • Blockchain Developer: Sviluppa applicazioni basate su blockchain e implementa le funzioni di hashing per garantire l’integrità dei dati.
  • Cryptographer: Specializzato nella scienza della crittografia, lavora per migliorare o sviluppare nuove funzioni di hashing.
  • Security Analyst: Monitora e analizza le misure di sicurezza, compreso l’uso delle funzioni di hashing.

Funzioni di Hashing Blockchain: risorse utili

Siti Web:

Libri:

  • “Applied Cryptography” di Bruce Schneier: Un libro completo sulla crittografia e le sue applicazioni.
  • “Mastering Bitcoin” di Andreas M. Antonopoulos: Un libro che copre aspetti tecnici di Bitcoin, inclusi gli algoritmi di hashing.

Domande comuni su Funzioni di Hashing Blockchain

Che cosa significa che una funzione di hashing è ‘deterministica’?

Significa che, dato lo stesso input, la funzione di hashing produrrà sempre lo stesso output.

È possibile invertire una funzione di hashing?

No, le funzioni di hashing sono progettate per essere unidirezionali e quindi non è possibile derivare l’input originale dall’output.

Cosa significa che una funzione di hashing è ‘collisione resistente’?

Significa che è molto difficile trovare due input diversi che producono la stessa output hash.

Come le funzioni di hashing contribuiscono alla sicurezza delle blockchain?

Aiutano a garantire l’integrità dei dati e rendono difficile per un attaccante modificare i dati senza essere scoperto.

Perché è importante che una funzione di hashing sia veloce?

Perché in un contesto di blockchain, la velocità è essenziale per la validazione rapida delle transazioni e dei blocchi.

Che cosa è un ‘attacco di preimmagine’ in termini di funzioni di hashing?

È un attacco in cui un malintenzionato cerca di trovare un input che corrisponda a un hash target specifico.

È possibile che due hash differenti abbiano lo stesso valore?

Teoricamente sì, si chiama collisione, ma le buone funzioni di hashing sono progettate per minimizzare questa possibilità.

Come si genera una chiave pubblica da una privata in blockchain?

Una chiave privata viene messa attraverso una serie di funzioni matematiche (compresa una funzione di hashing) per generare una chiave pubblica corrispondente.

Perché Bitcoin usa la funzione SHA-256?

SHA-256 è stata scelta per la sua robustezza in termini di sicurezza e la sua capacità di resistere a collisioni, rendendola adatta per l’uso in una blockchain.

Che differenza c’è tra hashing e crittografia?

L’hashing produce una stringa di lunghezza fissa da un input, mentre la crittografia trasforma i dati in un formato leggibile solo da chi possiede una chiave segreta.

Lascia un commento