La sicurezza della chiave privata

Esistono 2^256 diverse possibili combinazioni di chiavi private e 2^160 diverse combinazioni di possibili indirizzi. Questo significa che per ogni indirizzo esistono approssimativamente (2^256)/(2^160)= 2^96 chiavi private. Conoscendo un indirizzo o indovinandone uno fra i 2^160 possibili è possibile appropriarsi dei suoi bitcoin se si scopre una fra le approssimativamente 2^96=7.922816251×10^28 chiavi private associate a quell’indirizzo sulle 2^256 chiavi esistenti. Lavoro tutt’altro che semplice se si pensa che 2^96 è una minuscola frazione di 2^256, all’incirca è lo 0,000…(50 zeri)..001%.

Per cercare di avere un’idea molto approssimativa di queste grandezze, si pensi che tutti i granelli di sabbia su tutte le spiagge della terra sono 2^63 (secondo una stima molto grossolana), mentre gli atomi dell’universo fra i 10^72 e 10^87 (vedi qui), ovvero fra circa 2^240 e 2^280. Quindi possiamo vedere i granelli di sabbia come il numero di chiavi private esistenti per ciascun indirizzo e il totale degli atomi dell’universo come il numero di chiavi private possibili. Perciò, data una chiave pubblica, abbiamo la stessa probabilità di aprirla che avremmo di incontrare un granello di sabbia della terra vagando in modo del tutto casuale fra i miliardi di miliardi di galassie nell’universo e soffermandoci a controllare ogni atomo. Dovremmo inoltre sperare di trovare tale granello in tempo utile (nell’arco di una vita umana) per goderci i bitcoin rubati, e dobbiamo tenere in conto che vagare così per l’universo ci costa parecchia energia elettrica da utilizzare come potenza di calcolo della nostra astronave (la potenza computazionale del computer). Se avessimo un computer che riesce a controllare un miliardo di miliardi di atomi al secondo (10^18) e lavorasse nel tempo per un miliardo di miliardi di secondi (10^18), ovvero molti milioni di miliardi di anni, non riuscirebbe comunque a controllare tutti gli atomi ma solo 10^36 atomi, che è una cifra minuscola rispetto a 10^72. Se venisse inventato un supercomputer di eccezionale potenza (che controlli ogni atomo a incredibile velocità) lo script OP_HASH256 previsto dal protocollo bitcoin può comunque aumentare il numero di indirizzi possibili, diminuendo il numero di possibili chiavi private associate a ciascun indirizzo e dunque la probabilità di individuarle. Se infatti gli indirizzi fossero, per esempio, 2^256, tanti quanti le chiavi private, si dovrebbe trovare quella singola chiave privata associata alla chiave pubblica che vogliamo aprire, senza avere la possibilità di indovinarne una a caso fra le 2^96 disponibili.

Share this page:
Facebooktwitterredditpinterestlinkedinmail

4 Risposte

  1. michele ha detto:

    ciao,
    nell’esempio c’è una cosa non chiarissima. quando dici “possibilità di trovare un granello in un atomo” intendi: in uno degli atomi dell’intero universo c’è un qualsiasi granello. la probabilità è uguale al trovare il granello in un certo atomo dell’universo”. oppure: facciamo finta che dipingiamo di rosso un granello della terra, e dopo mettiamo un granello casuale in un atomo dell’universo. la probabilità è uguale a trovare proprio il granello dipinto di rosso in un certo atomo dell’universo”
    grazie

    • Alberto De Luigi ha detto:

      Si non è chiarissimo. Riformuliamo così:
      si stima che i granelli di sabbia della terra siano 2^63, ma gli atomi appartenenti a questi granelli sono certamente molti di più. Facendo una super-approssimazione diciamo che sono 2^160, come gli indirizzi bitcoin.
      Ora, si stima che gli atomi dell’universo siano fra i 2^256 e 2^280, approssimiamo e diciamo che siano 2^256.
      Quindi:
      atomi dei granelli di sabbia della terra = 2^160
      atomi dell’universo = 2^256
      Immaginiamo ora che la terra esploda fortissimo, tipo se Goku gli ha scagliato contro la sfera genkidama. E gli atomi di questi granelli di sabbia si sparpagliano in tutto l’universo.
      Ora, il tuo compito è trovare un atomo che in passato apparteneva a un granello di sabbia della terra. Se lo fai, hai vinto i bitcoin scritti in quel granello di sabbia. Quindi andrai a scandagliare atomo per atomo in tutto il cosmo. Preso un atomo qualsiasi sui 2^256 esistenti, hai la possibilità che quello sia un atomo di un granello di sabbia della terra di 2^-96 (cioè 2^160 / 2^256) che è un numero vicinissimo a zero.

  2. Carl ha detto:

    “singola chiave privata associata alla chiave pubblica che vogliamo aprire”..ma non basta avere solo la chiave privata (senza conoscere la pubblica) per spendere i bitcoin?

    • Alberto De Luigi ha detto:

      Per avere i btc ti basta conoscere la chiave privata, anche se non sai l’indirizzo. Qui però parto dal presupposto che tu vuoi rubare i btc su un particolare indirizzo che conosci. Quello che dico sopra è che potrebbe non esserci una sola chiave privata, ma più di una per quel particolare indirizzo.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *