₿itcoinItaliaNetwork 

Entropy

Entropia

Difficoltà: intermedio

Argomento: tecnologia


DEFINIZIONE

L'entropia nella crittografia, nei bitcoin e nelle criptovalute è un concetto fondamentale, perché ha a che fare con le chiavi private, come vengono generate, e quanto possono essere sicure.

L'entropia utilizzata nella crittografia è l'entropia di Shannon, che fa parte della teoria dell'informazione, e non deve essere confusa con l'entropia della fisica. Nella teoria dell'informazione, l'entropia di una variabile casuale rappresenta il livello medio di "informazione", "sorpresa" o "incertezza" associato ai possibili risultati della variabile stessa. L'unità di misura dell'entropia è il bit, che può assumere solo i valori 0 o 1.

Nella teoria dell'informazione l'entropia di una sorgente di messaggi è l'informazione media contenuta in ogni messaggio emesso. L'entropia di una sorgente risponde a domande come:

  • qual è il numero minimo di bit che servono per memorizzare in media un messaggio della sorgente?
  • Quanto sono prevedibili i messaggi emessi dalla sorgente?

Per illustrare questo concetto, supponiamo che due persone, Alice e Bob, possano comunicare solo tramite bit, utilizzando un'applicazione per SMS con soli tre pulsanti: "0", "1" e "INVIA". Alice sta osservando un evento casuale che Bob non può vedere e deve comunicare a Bob l'esito dell'evento casuale utilizzando il minor numero possibile di bit. Prima dell'evento, Alice e Bob possono concordare insieme cosa rappresenteranno i bit.

Il primo evento casuale che Alice deve osservare è il lancio di 10 monete in successione, utilizzando una moneta equa. In questo caso, "equa" significa che la moneta non è truccata e quindi la probabilità di ottenere testa è uguale alla probabilità di ottenere croce. Supponiamo che, da ora in poi, tutto sia equo e che non ci siano monete o dadi truccati. Alice e Bob decidono di utilizzare un bit uguale a zero per rappresentare testa e un bit uguale a uno per rappresentare croce. Alice osserva i 10 lanci della moneta, li registra e li invia a Bob: "1101000111". Questa informazione contiene 10 cifre binarie che rappresentano 10 bit di entropia relativi ai 10 eventi casuali, ovvero i 10 lanci della moneta. Le possibili combinazioni di messaggi che Alice avrebbe potuto inviare a Bob sono 2^10, ovvero 1024 combinazioni (2x2x2x2x2x2x2x2x2x2=1024). Alice è stata in grado di esprimere il risultato corretto con soli 10 bit.

Per creare un seed (seme) di 12 parole abbiamo bisogno di 128 bit di informazioni (il livello di sicurezza delle firme ECDSA and Schnorr). Ciò equivale a lanciare una moneta 128 volte e a registrare i risultati come ha fatto Alice per Bob. Come prima, possiamo dedurre che esistono 2128 combinazioni. Si tratta di un numero piuttosto grande, circa 3,4 × 1038 o circa 340.000.000.000.000.000.000.000.000.000.000.000.000.000.

Se vogliamo creare un seed di 24 parole, sono 256 bit di entropia, una quantità così grande che le possibilità di indovinare il seed sono paragonabili alla possibilità di selezionare lo stesso atomo tra tutti gli atomi dell'universo.

L'utilizzo di una passphrase di 24 parole per creare un seed non è necessariamente più sicuro di utilizzarne 12, questo perché le tecniche di crittografia utilizzate (ECDSA e Schnorr) garantiscono una sicurezza a 128 bit, e una passphrase di 12 parole è sufficiente per generare 128 bit di informazioni. Utilizzare una passphrase di 24 parole, anche se può generare una entropia ancora maggiore, non può aumentare la sicurezza a 128 bit di ECDSA e Schnorr, ma aumenta la probabilità di commettere errori nella trascrizione o di dimenticare una delle parole. Quindi, anche se una passphrase più lunga sembra più sicura in teoria, potrebbe in realtà essere meno sicura se ciò porta a errori o problemi di memorizzazione.

Per sfruttare al meglio questa sicurezza, è importante che i valori di entropia provengano da una forte fonte di casualità. Ciò significa lanciare una moneta che non abbia alterazioni, lanciare un dado equo, misurare il rumore, ecc.

NON utilizzate frasi tratte da libri, testi di canzoni, il vostro compleanno o l'indirizzo della vostra strada, la digitazione della tastiera o qualsiasi cosa pensiate sia casuale, perché è molto probabile che non lo sia abbastanza per le esigenze di questo strumento, né tanto meno per mantenere al sicuro i vostri fondi.

I computer, essendo macchine deterministiche, eseguono istruzioni in modo deterministico, dove lo stesso input produce sempre lo stesso output. Questa prevedibilità è fondamentale per la loro affidabilità ma contrasta con il concetto di casualità vera necessaria per produrre una buona entropia.
Un generatore di numeri pseudo-casuali (PRNG) standard utilizza algoritmi matematici che, partendo da un "seme" iniziale, producono una sequenza che appare casuale ma è completamente deterministica e quindi prevedibile se si conosce l'algoritmo e il seme. Per ottenere vera entropia, i computer devono attingere a fonti di casualità esterne al sistema deterministico. Alcune di queste fonti includono:

  • Fenomeni fisici: rilevazione di rumore termico, decadimento radioattivo, o fluttuazioni quantistiche
  • Eventi hardware: timing impreciso tra componenti indipendenti, jitter nell'esecuzione delle istruzioni
  • Input umano: movimenti del mouse, tempi di battitura sulla tastiera o dei sensori touch
  • Eventi di rete: timing dei pacchetti, variazioni nel traffico

Sistemi moderni come Linux utilizzano un "entropy pool" che raccoglie dati da queste fonti imprevedibili e li distilla in entropia utilizzabile. Il dispositivo /dev/random, ad esempio, blocca quando l'entropia disponibile è insufficiente.
Per applicazioni critiche per la sicurezza come la crittografia, vengono utilizzati generatori di numeri casuali hardware (TRNG, True Random Number Generators) che sfruttano fenomeni fisici imprevedibili per generare vera casualità.
Un approccio ibrido comune consiste nell'utilizzare una piccola quantità di vera entropia per inizializzare un PRNG, creando così un compromesso tra vera casualità e efficienza computazionale.


aggiornato il 2025-02-28