Appunti Blockchain

Prima dei bitcoin 2/2 – Breve storia della moneta digitale: dalla crittografia a chiave pubblica ai token di Finney.

RSA, PGP e la crittografia digitale

La crittografia probabilmente nacque insieme alla scrittura. Se era possibile trasmettere informazioni in forma scritta e interpretabile da tutti si doveva escogitare un modo per “nascondere” un messaggio affinché non fosse compreso se non dal destinatario. La guerra e lo spionaggio, soprattutto, sono stati per secoli i grandi “committenti” della crittografia; basti pensare al cifrario di Cesare o al codice Enigma dei tedeschi durante la seconda guerra mondiale.

Verso la metà degli anni ’70 del XX secolo si avvertì l’esigenza di avere sistemi crittografici non simmetrici, in cui non esistesse un’unica chiave segreta di criptazione, difficile da gestire tra mittente e destinatario. Questi sistemi si basano su problemi matematici legati a numeri interi molto grandi, facili in una direzione, difficilissimi nell’altra. Per esempio, mentre è facile moltiplicare due numeri primi, non lo è l’operazione opposta, risalire ai due numeri originari.

Nel 1976 due esperti del settore, Whitfield Diffie e Martin Hellman, pubblicarono il primo algoritmo non simmetrico, anche detto a chiave pubblica. Il funzionamento è il seguente:

  • Le due parti, Tristano e Isotta, individuano insieme (e “in chiaro”, nel senso che non sussistono problemi di sicurezza) due numeri primi, uno più grande, l’altro minore del primo. Diciamo viene scelto il numero H e il numero k, dove H > k. La coppia (H,k) è la chiave pubblica.
  • Ognuna delle due parti crea poi un altro numero che verrà tenuto segreto: questa è la chiave privata. Diciamo che Tristano sceglie a e Isotta b.
  • Tristano invia A=ka a Isotta. Isotta invia B=kb a Tristano.
  • Tristano calcola Ba=kb*a, Isotta Ab=ka*b. Entrambi ora hanno una stessa chiave segreta, C= ka*b con cui criptare i loro messaggi.

Il punto è che anche intercettando tutte le informazioni che vengono trasmesse, per una terza parte sarà praticamente impossibile arrivare a conoscere la chiave segreta.

L’anno successivo Ronald Rivest, Adi Shamir e Leonard Adleman realizzarono un altro algoritmo a chiave pubblica, RSA, ritenuto uno dei più sicuri in assoluto.[1]

Questa tipologia di algoritmi risultò particolarmente utile nel nascente universo del web. La procedura è sostanzialmente sempre la stessa; se due computer, un sito e un utente, o altri attori della rete devono comunicare in maniera sicura i passi saranno:

  • Tristano utilizza la chiave pubblica di Isotta per inviare quella che si chiama chiave di sessione
  • Isotta decifra questa chiave di sessione con la propria chiave privata
  • Tristano e Isotta comunicano attraverso la chiave di sessione.

Verso la metà degli anni ’90 la rete si stava consolidando. Allo stesso tempo in diversi ambienti aumentò il timore che i governi potessero usarla per spiare i cittadini, soprattutto leggendo le email. L’attivista anti-nucleare Steve Zimmermann, laureato in Fisica e Matematica, assemblò tecniche e algoritmi già esistenti per creare PGP (“Pretty Good Privacy” ovvero “Riservatezza niente male”), un programma software di facile uso che permetteva la crittazione delle email. Zimmermann lo rilasciò in formato open source non appena ultimato.[2]

PGP utilizza, tra l’altro, RSA e l’SHA (“Secure Hash Algorithm”), un algoritmo capace di creare un’”impronta” di lunghezza fissa a partire da un messaggio di lunghezza qualsiasi.

Verso i bitcoin

Wei Dai, un ingegnere informatico, nel 1998 postò in una mailing-list dei cypherpunks un’ipotesi di protocollo per la creazione e gestione di un “mezzo di scambio” ovvero una moneta chiamata “b-money”; secondo tale protocollo[4] chi inviava e chi riceveva moneta era sotto pseudonimo digitale e ogni transazione era criptata. Inoltre chiunque poteva creare nuova moneta, risolvendo un problema computazionale (Dai, 1998). Le poche idee esposte in questa proposta rispunteranno un decennio più tardi, inglobate nel documento-genesi Bitcoin.

Nello stesso periodo apparve un’altra proposta per una moneta digitale da parte dell’informatico Nick Szabo. Chiamò la sua ipotetica valuta “bit gold” (Szabo, Bit gold, 2005), termine derivato dalle sue riflessioni su come trasformare i bit in qualcosa di valore come l’oro. Per Szabo una moneta digitale doveva essere un bene scarso (come l’oro); per crearne un’unità si doveva risolvere un problema matematico che fosse computazionalmente oneroso per un computer. La risoluzione di questo problema, una stringa di bit marcata temporalmente, rappresentava la prova del lavoro svolto (la proof of work già incontrata) e veniva inviata per verifica a tutti i nodi della rete. Se convalidata, costituiva il punto di partenza per il successivo problema da risolvere. Cosa importante, questa prova (che valeva anche come certificato di proprietà), era conservata in un registro distribuito

Nel 2004 una proposta simile fu lanciata da un altro informatico Hal Finney, già incontrato all’inizio di questo capitolo; nella sua visione un client poteva creare un “token” (un gettone, un’unità di moneta) risolvendo una RPOW (“Reusable Proof of Work”) e inviando la stringa firmata con una chiave privata a un server centrale che la memorizzava. Il token poteva essere ceduto a un altro utente, utilizzando una chiave pubblica per la transazione. Il sistema che Finney aveva in mente era centralizzato ma, citando le sue parole, “con un eccezionale grado di sicurezza fisica unito a un livello senza precedenti di trasparenza e visibilità nel funzionamento del server RPOW (Finney, 2004).”

Lo sviluppo successivo, nel 2009, si chiamò Bitcoin. Era nata la prima criptovaluta e con essa la tecnologia blockchain.

Originariamente pubblicato su the grove -Medium


Note

[2] Zimmermann fu indagato e poi prosciolto dal governo statunitense per le ragioni esposte nella nota precedente.

[3] Si legge nel “A Cypherpunk’s Manifesto” del 1993: “La privacy è il potere di rivelare selettivamente se stessi al mondo.” (cit. in (PetriB, 2018))

[4] In realtà i protocolli ipotizzati erano due, il primo dei quali a detta dall’autore stesso non realizzabile perché basato su un canale di comunicazione irrealistico (sincrono e non “hackerabile”)


Riferimenti

Dai, W. (1998). bmoney. Retrieved 03 19, 2018, from weidai.com: http://www.weidai.com/bmoney.txt

Finney, H. (2004). RPOW Security. Retrieved 03 20, 2018, from Satoshi Nakamoto Institute: http://nakamotoinstitute.org/finney/rpow/security.html

Giovannini, D. (2011). Introduzione alla crittografia. Diffie-Hellman e RSA. Retrieved 03 16, 2018, from unitn.it: http://www.science.unitn.it/~sala/events2011/LEZ1_DH-RSA.pdf

May, T. C. (1992, 11 26). The Crypto Anarchist Manifesto. Retrieved 03 19, 2018, from activism.net: https://www.activism.net/cypherpunk/crypto-anarchy.html

PetriB. (2018, 01 26). The untold history of Bitcoin: Enter the Cypherpunks. Retrieved 03 18, 2018, from The Startup: https://medium.com/swlh/the-untold-history-of-bitcoin-enter-the-cypherpunks-f764dee962a1

Rosa, C. A. (2009). Sicurezza di rete. In C. A. Rosa, Sistemi di cifratura. Storia, principi, algoritmi e tecniche di crittografia. (pp. 314–319). Santarcangelo di Romagna : Maggioli Editore.

Satoshi Nakamoto Institute. (2004). RPOW — Reusable Proofs of Work. Retrieved 03 20, 2018, from Satoshi Nakamoto Institute: http://nakamotoinstitute.org/finney/rpow/

Szabo, N. (2005). Bit gold. Retrieved 03 19, 2018, from unenumerated.blogspot.i: http://unenumerated.blogspot.it/2005/12/bit-gold.html