Bitcoin utilizza la crittografia per consentire la circolazione delle somme e garantire la immutabilità della blockchain. La crittografia consente il funzionamento della moneta digitale e decentralizzata nota come Bitcoin: un impiego innovativo rispetto all'uso tradizionalmente assegnato alla crittografia, ossia la cifratura delle comunicazioni.
In questo articolo introduciamo la crittografia asimmetrica o a chiave pubblica: vediamo come questa consente la cifratura e la firma digitale, per poi passare al ruolo che la crittografia gioca nel funzionamento di bitcoin e della blockchain in generale.
Per una analisi più completa del funzionamento di Bitcoin, leggi Come funziona Bitcoin?
Indice
Bitcoin: nuovi impieghi per la crittografia
La crittografia deve la sua nascita ad una necessità molto antica: come rendere un messaggio comprensibile solo ad uno o più destinatari determinati e nasconderlo a tutti gli altri?
Bitcoin utilizza la crittografia per finalità diverse da quelle "tradizionali", ossia cifrare e decifrare messaggi: le transazioni che viaggiano sulla rete di Bitcoin, paragonabili ai messaggi da trasmettere, non hanno bisogno di essere cifrate.
Bitcoin utilizza la crittografia per un fine diverso ed originale: da essa si fa dipendere la titolarità delle somme e dunque la legittimazione alla disposizione delle stesse. Per una tecnologia che si propone di realizzare un sistema monetario decentralizzato, non è poco.
Come stiamo per vedere, ogni utente di Bitcoin dispone di una coppia di chiavi: una pubblica e una privata. La coppia di chiavi consente l'incasso e il trasferimento di bitcoin. Vedremo in seguito come questo accade: per adesso, possiamo dire che il meccanismo si serve di un tipo particolare di crittografia, nota come "asimmetrica" o "a chiave pubblica".
Chiavi pubbliche e private : la crittografia asimmetrica
La crittografia asimmetrica prevede una coppia di chiavi, generate da un algoritmo, partendo da un numero casuale. Tra le due chiavi vi è una relazione matematica in base alla quale dalla chiave privata si ricava la chiave pubblica; non è però possibile il procedimento inverso: dalla chiave pubblica non è possibile risalire alla chiave privata.
Questo consente di assegnare alle chiavi funzioni diverse, per quanto in un certo senso complementari; la chiave privata è da tenere segreta, quella pubblica da condividere liberamente.
Nella sua applicazione originaria la crittografia asimmetrica ha due impieghi:
- cifratura;
- firma digitale:
- provare l'effettiva provenienza di un messaggio da parte del mittente
- provare che il messaggio ricevuto non sia stato modificato (e dunque intercettato) dopo l'invio.
Vediamo come queste due funzioni vengono svolte per mezzo della coppia di chiavi secondo la crittografia a chiave pubblica o asimmetrica.
Cifratura
Il titolare di una coppia di chiavi rende la propria chiave pubblica disponibile a chiunque intenda inviargli un messaggio cifrato.
Il mittente utilizza la chiave pubblica del destinatario per cifrare il proprio messaggio: questo potrà essere decrittato solo da chi dispone della chiave privata "sorella" di quella pubblica con cui si è cifrato il messaggio. Pertanto, solo il titolare della chiave pubblica, in possesso della corrispondente chiave privata, sarà in grado di decifrare il messaggio inviatogli.
La sicurezza e dunque la segretezza della comunicazione dipende da quanto segreta si riesca a mantenere la sola chiave privata.
Crittografia asimmetrica e firma digitale
L crittografia asimmettica rende possibile la firma digitale attraverso un algoritmo di hash. La caratteristica di un efficace algoritmo di hash è quello di tradurre un determinato input in un codice univoco: ove l'input cambi anche di una virgola, l'hash cambierà sensibilmente e in maniera non prevedibile.
Pertanto, con la firma digitale:
Il mittente firma un messaggio
- produce l'hash del messaggio che intende inviare
- lo cifra con la propria chiave privata
- infine: allega l'hash cifrato (la "firma") al messaggio e li invia insieme
Il destinatario verifica la firma digitale
- produce l'hash del messaggio ricevuto con lo stesso algoritmo usato dal mittente
- decritta l'hash cifrato ricevuto con la chiave pubblica del mittente.
- infine: confronta l'hash decrittato così ottenuto con la "firma" allegata al messaggio dal mittente. Ove le firme coincidano, è provata la provenienza del messaggio così come l'originalità del messaggio: se questo venisse intercettato e modificato, il procedimento praticato dal destinatario produrrebbe un risultato diverso dalla firma digitale allegata al messaggio. Come abbiamo visto, l'hash del messaggio sarebbe diverso da quello prodotto e cifrato dal mittente.
La sicurezza della crittografia a chiave pubblica dipende dalla relazione tra le due chiavi e dunque dall'algoritmo che crea la chiave pubblica dalla privata: dalla chiave pubblica non deve essere possibile risalire alla chiave privata.
Quanto alle applicazioni pratiche di tutto questo, abbiamo visto come cifrare e firmare con la firma digitale le email con il nostro articolo su crittografia e Thunderbird.
La crittografia asimmetrica e bitcoin
Con Bitcoin, la crittografia asimmetrica o a chiave pubblica viene impiegata in maniera originale per finalità diverse da quelle tradizionali: non per secretare messaggi, ma per consentire l'incasso e il trasferimento delle somme in bitcoin.
Ogni utente di Bitcoin dispone di due chiavi, tra esse "imparentate", così come accade per l'utilizzo "classico" della crittografia asimmetrica o a chiave pubblica che abbiamo appena visto.
In particolare:
una chiave pubblica dalla quale si ricava l'indirizzo bitcoin: un codice che consente di ricevere bitcoin, che possiamo paragonare al codice Iban di un conto bancario. Così come con la chiave pubblica, l'indirizzo bitcoin, che dalla chiave pubblica discende, può essere condivisa liberamente. Pertanto, per la creazione di un indirizzo bitcoin viene utilizzata la crittografia a chiave pubblica.
una chiave privata, da tenere segreta, che consente di spendere le somme incassate per mezzo della corrispondente chiave pubblica e dunque indirizzo bitcoin.
Transazioni
Nella sua applicazione originaria la crittografia a chiave pubblica ha ad oggetto un messaggio da cifrare. Con Bitcoin però, non c'è un messaggio bensì una transazione: a questa spetta il trasferimento di bitcoin. Chiunque voglia spendere bitcoin dovrà firmare con la propria chiave privata una transazione.
Più precisamente, applicando la chiave privata alla transazione, per l'esattezza a parte dei dati in essa contenuti, si produrrà un codice: una firma digitale secondo lo schema proprio alla crittografia a chiave pubblica.
Data la connessione tra le chiavi, la chiave privata, usata per firmare la transazione, autorizza il trasferimento di quei bitcoin ricevuti per mezzo della corrispondente chiave pubblica e relativo indirizzo bitcoin.
La verifica delle transazioni
Affinché la transazione possa efficacemente trasferire la titolarità di bitcoin, dovrà essere verificata la firma digitale. La verifica consiste nel dimostrare il collegamento tra la firma e la chiave privata utilizzata per produrla; questo, senza rivelare la chiave privata, che deve rimanere inaccessibile.
A tal fine, l'algoritmo che verifica la firma prenderà in considerazione:
- la transazione
- la firma
- la chiave pubblica del firmatario
La firma risulterà verificata ove si accerti la sua relazione con la chiave privata che ha prodotto la chiave pubblica presa in considerazione per la verifica: si prova la relazione tra firma e chiave privata senza che questa possa essere rivelata.
Detto altrimenti, data la chiave pubblica, la firma e la transazione, la firma risulta verificata ove si accerti che questa non può che provenire dalla chiave privata che ha generato quella pubblica "fornita" per la verifica.
Una volta verificata, la transazione è idonea al trasferimento delle somme da un indirizzo ad un altro, e verrà inclusa in un blocco da aggiungere alla blockchain: questa altro non è che un registro di tutte le transazioni intercorse nella rete, e che dunque cristallizza la situazione complessiva circa il saldo di ciascun utente, o sarebbe meglio dire indirizzo bitcoin.
Conclusioni
Abbiamo fin qui visto come Bitcoin si serva della crittografia a chiave pubblica o asimmetrica ed impieghi in maniera originale ed innovativa il sistema della coppia di chiavi: non più per cifrare e decifrare messaggi, ma per fondare un sistema monetario decentralizzato basato sulle sole regole della scienza, della tecnica e della matematica.
Read this article in English:
Public key and private key: what does Bitcoin do with cryptography?
Vincenzo Lalli
Di formazione legale, appassionato da sempre di tecnologia ed informatica; esperienza professionale acquisita a cavallo tra i due mondi, finora piuttosto lontani tra loro. Mi dedico ad esplorare le crescenti interazioni tra il Diritto e la tecnologia, e a dare il mio contributo alla causa dell'innovazione nel settore legale; a tal fine, ho dato vita ad Avvocloud.net.