CHIAVE PUBBLICA E CHIAVE PRIVATA:
cosa sono e a cosa servono su blockchain

È giunto il momento di affrontare un tema importantissimo che riguarda la tecnologia blockchain e di cui sicuramente avrai sentito parlare, se l’argomento ti appassiona: i concetti di chiave pubblica e chiave privata.

Cosa sono e a cosa servono?

In questo post affrontiamo insieme questo pilastro fondamentale della tecnologia blockchain.

 Vediamo di cosa si tratta.

Ogni singola transazione che avviene su blockchain sfrutta il meccanismo di chiave pubblica e chiave privata. 

Ti sembra un argomento complesso? Non preoccuparti, come abbiamo sempre fatto nel nostro blog, lo affronteremo in modo semplice e divertente.

Iniziamo 🙂

 

Indice argomenti

1. Cos'è la crittografia

La crittografia è la disciplina che studia le tecniche per “nascondere” un’informazione e comunicarla ad altri trasmettendola su un canale non sicuro, cioè un canale dove, oltre al destinatario dell’informazione, ci sono altri possibili attori in ascolto, a cui però non è indirizzato il messaggio. 

Crittografia e messaggi segreti

Se per esempio voglio dare un’informazione riservata e segreta al mio amico Davide, ma siamo in un bar affollato, è sconsigliato farlo ad alta voce in quel luogo e in quel momento. Il canale non è sicuro perché altre persone all’interno del locale potrebbero ascoltare il mio messaggio segreto.

Come posso dunque recapitare il mio messaggio a Davide? 

Ho due soluzioni:

– cambiare canale, cioè aspettare di uscire dal locale per dare al mio amico l’informazione segreta

– Rendere l’informazione comprensibile soltanto a lui, in modo che, nonostante tutti ricevano lo stesso messaggio, solo il mio amico sarà in grado di capirlo e interpretarlo.

Ti viene in mente come poterlo fare?

Per esempio, potrei usare una lingua che in quel locale solo io e Davide conosciamo. Così, tutti potrebbero sentire ciò che diciamo, ma nessuno riuscirebbe a capire il messaggio. Semplice, ma efficace.

Ma utilizzare un’altra lingua è l’unica soluzione possibile?

No, proviamo ad immaginare una soluzione diversa.

Potrei per esempio decidere di trasmettere il mio messaggio scrivendo le parole o le sillabe che compongono una parola al contrario, ovvero invertendo l’ordine delle sillabe che compongono il messaggio.

Un procedimento come questo appena descritto rappresenta un possibile algoritmo di cifratura. Quindi se, per esempio, volessi dare al mio amico questa informazione:

“ci vediamo domani alle 12 in Piazza Maggiore”

utilizzando l’algoritmo di cifratura delle sillabe al contrario dovrei dire: 

“ci modiave nimado leal 12 in zapiaz regiomag”

In questo modo, sono abbastanza sicuro che difficilmente altre persone all’interno del locale potranno capire il messaggio. Questo, almeno, la prima volta, perché in realtà, se, dopo l’invio del messaggio, qualcuno viene a sapere che ci siamo incontrati in Piazza Maggiore, la prossima volta che sente ‘zapiaz regiomag’, anche se non capisce cosa vuol dire, potrebbe immaginare dove ci incontreremo.

Ciò succede perché l’algoritmo di cifratura utilizzato è piuttosto semplice.

Potrei allora provare a complicare un po’ le cose, utilizzando ad esempio sia un algoritmo di cifratura sia una chiave segreta, ovvero un parametro configurabile per rendere più casuali e meno omogenei gli output e inserire così artificialmente del ‘rumore’ nei messaggi cifrati.

Chiave segreta e algoritmo di cifratura

La crittografia si basa spesso sul concetto di chiave segreta, che viene impiegata all’interno di sistemi che utilizziamo tutti i giorni, a volte inconsapevolmente, per la cifratura di dati o messaggi.

Dal Cifrario di Cesare...

Questa invenzione non è però dei nostri tempi.

Pensa che già Giulio Cesare durante le sue guerre inviava dispacci ai suoi militari utilizzando un algoritmo crittografico e una chiave segreta, in modo tale che i nemici non capissero il contenuto del messaggio.

Il suo sistema è divenuto famoso col nome di Cifrario di Cesare.

Si basava su un meccanismo per cui si utilizzavano sostituzioni tra le diverse lettere dell’alfabeto, facendo ad esempio coincidere la prima lettera dell’alfabeto con una lettera diversa da quella reale.

Consideriamo ad esempio il Cifrario di Cesare con chiave 3: stiamo dicendo che ogni lettera deve essere spostata di 3 unità, ossia che la lettera D corrisponderà alla lettera A, la C alla Z e così via.

Proviamo a cifrare la parola ‘CIAO’: invece della C dovremmo scrivere F, al posto della I la N, della A la D, e infine della O la R. Il messaggio ‘CIAO’, dunque, diventerebbe ‘FNDR’, comprensibile soltanto a chi sa che stiamo usando il Cifrario di Cesare, con chiave 3.

Per poter utilizzare questa soluzione nella comunicazione con il mio amico Davide, lui deve essere già a conoscenza sia dell’algoritmo di cifratura sia della chiave segreta, altrimenti non è in grado di decifrare il mio messaggio. Purtroppo io non potrei in alcun modo spiegargli come funziona il Cifrario di Cesare e comunicargli la chiave segreta attraverso il canale insicuro, perché altrimenti anche tutte le altre persone in ascolto sarebbero poi in grado di leggere e capire i miei messaggi diretti soltanto a lui.

…agli strumenti della crittografia…

È molto importante definire in modo chiaro due punti:

  1. l’algoritmo di cifratura è il procedimento con cui nascondo il messaggio
  2. la chiave segreta è l’informazione che viene utilizzata all’interno dell’algoritmo di cifratura, a scopi diversi:
  • rendere configurabile l’algoritmo di cifratura, in modo da non ottenere lo stesso risultato ogni volta che cifro la stessa parola, come avviene nel Cifrario di Cesare. Riprendendo l’esempio di “FNDR”, vedendo che tutti o comunque la maggior parte dei messaggi inviati cominciano o terminano con questa parola, qualcuno potrebbe intuire che corrisponde al saluto ‘CIAO’. Usando chiavi diverse, però, posso ottenere codifiche diverse che permettono di aumentare la casualità dei messaggi cifrati: usando la chiave 4, ad esempio, la parola ‘CIAO’ viene codificata con la parola ‘GMES’, del tutto diversa da ‘FNDR’ e non facilmente riconducibile ad essa;
  • rendere impossibile la ricostruzione dei messaggi anche a chi è perfettamente a conoscenza dell’algoritmo di cifratura, se non conosce anche l’informazione della chiave segreta. Nel cifrario di Cesare, l’algoritmo di cifratura è rappresentato dal fatto di far coincidere la prima lettera dell’alfabeto con una lettera diversa e di conseguenza assegnare una nuova identità a tutte le altre lettere. La chiave segreta indica di quante lettere dobbiamo scalare per assegnare un nuovo valore alla lettera da cifrare. Risulta quindi evidente che le chiavi che possono essere utilizzate sono molto poche: una volta raggiunto un numero pari al numero di lettere dell’alfabeto (26 nel caso dell’alfabeto latino), infatti, la codifica diventa banale, ovvero ‘CIAO’ corrisponde a ‘CIAO’, perché abbiamo fatto tutto il giro delle lettere. Da quel valore in poi, le chiavi si ripetono all’infinito: ad esempio la chiave 29 (ovvero 26 + 3) risulta equivalente alla chiave 3, trasformando nuovamente la parola ‘CIAO’ in ‘FNDR’. Un numero di chiavi pari a 25 (escludiamo la 26esima chiave perché porta ad una codifica banale) non basta per rendere l’informazione associata alla chiave sufficientemente difficile da indovinare, perché chiunque potrebbe facilmente scoprire la chiave segreta con un numero esiguo di tentativi, e quindi in un tempo estremamente limitato.

…alla tua chiave segreta!

Il Cifrario di Cesare è quindi un sistema in cui la conoscenza dell’algoritmo di cifratura coincide praticamente con la conoscenza della chiave (che può infatti essere scoperta con uno sforzo davvero ridotto). In questo senso, quindi, il Cifrario di Cesare è molto simile all’algoritmo usato nell’esempio in cui voglio trasmettere il mio messaggio parlando al contrario, ovvero un algoritmo che deve restare segreto, pena il decadimento della segretezza dei messaggi trasmessi.

Cosa significa questo?

Una volta che scopri che sto parlando al contrario, il meccanismo è tutto da buttare, non posso più utilizzarlo per altri messaggi. Lo stesso concetto vale per il Cifrario di Cesare, ovvero se le persone in ascolto conoscono il Cifrario di Cesare dovranno effettuare un massimo di 25 tentativi per riuscire a decifrare il messaggio, e quindi questo meccanismo di cifratura funziona solo se nessun ascoltatore indesiderato è a conoscenza dell’algoritmo utilizzato. 

Quindi ricapitolando: se per cifrare un messaggio utilizziamo soltanto un algoritmo di cifratura, nel momento in cui qualcuno scopre l’algoritmo di cifratura, il messaggio diventerà alla mercé di tutti e dovrai buttare l’algoritmo di cifratura, non più sicuro, e inventarne uno nuovo.

Diverso è invece il caso in cui, oltre all’algoritmo di cifratura, introduci anche una chiave segreta. A questo punto l’algoritmo di cifratura può anche essere reso noto (anzi, di solito è buona norma che sia proprio così): l’importante è che nessuno, al di fuori di chi vuoi tu, abbia la chiave segreta.

Cosa succede se qualcuno scopre la chiave segreta? Molto semplicemente puoi creare una nuova chiave segreta senza dover cestinare l’algoritmo di cifratura. Basta cambiare la chiave.

2. La crittografia simmetrica o a chiave privata

Tecnicamente, il meccanismo appena descritto viene definito schema di cifratura simmetrica.

Il concetto di crittografia simmetrica è molto semplice: dato un messaggio da trasmettere, posso applicare un algoritmo di cifratura e una chiave segreta al messaggio stesso per cifrarlo e poi un algoritmo di decifratura con la stessa chiave segreta per decifrarlo.

La chiave segreta non cambia, rimane sempre la stessa sia per cifrare sia per decifrare il messaggio, ovvero sia per nascondere il vero contenuto del messaggio sia per rivelarlo e leggerlo correttamente. In altre parole, riprendendo l’esempio del Cifrario di Cesare, data la chiave segreta X, l’algoritmo di cifratura sposterà le lettere avanti di X posizioni, mentre quello di decifratura sposterà indietro le lettere sempre di X posizioni, in modo simmetrico.

Vantaggi e svantaggi del sistema

Il primo svantaggio è che, come abbiamo appena visto, il mio amico Davide deve conoscere la chiave segreta per poter decifrare il mio enigmatico messaggio.

Ovviamente devo concordare con Davide la chiave segreta prima di entrare nel locale, altrimenti il mio amico avrà serie difficoltà a capire il mio messaggio, non essendo in possesso della chiave segreta per decifrarlo. Se non condivido a priori la chiave segreta con Davide, non posso pensare di portare a termine questo passaggio all’interno del locale perché rischierei di compromettere la sicurezza dell’intero messaggio.

Il vantaggio principale della crittografia simmetrica invece è che basta poco sforzo per poter cifrare un messaggio e trasmetterlo all’interno di un canale non sicuro.

La crittografia simmetrica viene anche definita “crittografia a chiave privata” in quanto basta essere a conoscenza della chiave segreta (o privata) per poter cifrare e decifrare i messaggi.

Da cosa dipende la sicurezza di un sistema crittografico?

Un principio fondamentale della crittografia è rappresentato dal fatto che la sicurezza di un sistema non deve dipendere dalla segretezza dell’algoritmo utilizzato, ovvero delle regole del gioco, ma dalla chiave segreta che viene utilizzata.

In campo informatico, la chiave segreta è fondamentalmente un numero (molto grande), la cui dimensione viene misurata in numero di bit.

Più è lunga la chiave (ovvero maggiore è il numero di bit) e più sarà difficile infrangere il messaggio cifrato. Per esempio una chiave da 32bit significa che per decifrare il messaggio si dovrebbe ricercare una soluzione tra 2 elevato alla 32 possibili soluzioni.

Giusto per dare un’idea di che numero rappresenta 2 elevato alla 32, considera che nel mondo siamo meno di 8 miliardi di persone, un numero che corrisponde a circa 2 elevato alla 33.

3) La crittografia asimmetrica

A questo punto potresti chiederti: “ma esiste un modo per comunicare in modo sicuro col mio amico Davide senza aver condiviso in precedenza con lui una chiave segreta? Altrimenti, mi ritrovo a poter usare il sistema appena visto solo con persone che conosco già e con cui mi sono già messo d’accordo…come farei ad usarlo, ad esempio, su internet?”.

Esistono vari metodi (es: algoritmo di Diffie Hellman), ma quello che ti propongo ora è quello della crittografia asimmetrica. Seguimi.

I concetti di chiave pubblica e chiave privata

Mentre ero al bar col mio amico Davide, mi è venuta questa idea. Il mio amico aveva con sé il lucchetto per la catena della sua bicicletta, che aveva appena portato a riparare. Ho preso il lucchetto e una scatola. Ho scritto il mio messaggio su un biglietto: “ci vediamo domani alle 12 in Piazza Maggiore”, poi ho messo il biglietto nella scatola e l’ho chiusa con il lucchetto di Davide. Chi è l’unico che può aprire il lucchetto della scatola? Solo chi detiene la chiave del lucchetto, in questo caso l’unico che può aprire il lucchetto è Davide.

Immagina che tutti nel locale mi abbiano visto compiere questa operazione e chiudere la scatola con il lucchetto. Paradossalmente, la scatola contenente il messaggio potrebbe anche aver fatto il giro di tutto il locale passando di mano in mano tra clienti e baristi.

Tutti potrebbero aver visto scatola e lucchetto, ma nessuno (tranne Davide, ovviamente 😜) può avere accesso al contenuto. L’unico che può aprire la scatola con la chiave del lucchetto è il mio amico Davide. In questo modo, sono riuscito a trasmettere un messaggio in modo sicuro attraverso un canale insicuro, utilizzando una coppia di chiavi collegate tra loro: una pubblica (il lucchetto) e una privata (la chiave che apre il lucchetto). 

A differenza della crittografia simmetrica, dove cifriamo e decifriamo con la stessa chiave, nella crittografia asimmetrica con una chiave cifriamo e con un’altra decifriamo.

La prima chiave, ovvero il lucchetto, è una chiave pubblica, visibile a tutti.

Chiunque nel locale avesse preso il lucchetto aperto di Davide avrebbe potuto scrivere un messaggio e chiuderlo in una scatola. Ma anche in questo caso solo Davide avrebbe potuto aprire il lucchetto perché sarebbe stato l’unica persona in possesso della chiave privata per decifrare il messaggio.

La seconda chiave è invece la chiave privata e serve per aprire il lucchetto.

Questa chiave appartiene solo al proprietario del lucchetto. E il proprietario del lucchetto deve stare bene attento a conservarla per evitare che cada nelle mani di qualche malintenzionato che, oltre a leggere il messaggio segreto, potrebbe anche rubargli la bicicletta!

Crittografia asimmetrica e blockchain

Per capire meglio come funziona questo meccanismo, prova ad immaginare che Davide crei 100 copie identiche dello stesso lucchetto e le distribuisca all’interno del locale. Ora tutti potrebbero scrivergli e mettere il messaggio in una scatola chiusa con uno dei suoi lucchetti. Ovviamente solo Davide sarebbe in grado di leggere i 100 messaggi diversi che giungono a lui perché sarebbe l’unico a possedere la chiave per aprire i lucchetti.

Abbiamo visto in questo esempio come grazie alla crittografia asimmetrica il messaggio cifrato può viaggiare attraverso un canale insicuro senza che nessuno (tranne chi è in possesso della chiave del lucchetto) possa venirne a conoscenza, e senza la necessità di concordare insieme una chiave segreta per la cifratura. È sufficiente che qualcuno crei in autonomia una coppia di chiavi (pubblica e privata, lucchetto e chiave per aprirlo) e poi distribuisca (comunichi pubblicamente) la sua chiave pubblica (distribuisca i lucchetti), in modo tale che chiunque possa utilizzare la chiave pubblica per cifrare messaggi che soltanto il possessore della chiave privata sarà però in grado di leggere e interpretare.

Ma c’è di più: questo meccanismo può essere usato anche per implementare qualcosa di cui hai sicuramente sentito parlare molto spesso: la firma digitale.

Come è possibile? E come si può usare la crittografia asimmetrica per firmare una transazione su blockchain?

Vediamolo insieme.

4) Firma (d'amore) digitale

Proviamo ad immaginare di voler inviare un messaggio d’amore. Voglio inviare un messaggio d’amore ad una ragazza e voglio poterlo firmare in modo tale che lei, leggendolo, possa essere sicura che sono stato davvero io a scriverlo.

Come posso farlo utilizzando tutti i pezzi del puzzle che abbiamo visto fino a questo momento? Tieniti forte e allaccia le cinture, hai la possibilità di sperimentare in prima persona tu stesso la magia di questo meccanismo.

Algoritmo di hashing e chiave privata

Facciamo un esempio reale: partiamo da un algoritmo di hashing che abbiamo visto in uno dei nostri post precedenti, lo SHA256 (attivare “post” con link a https://knobs.it/blockchain-cose-un-hash/ ).

Lo SHA256 è una funzione di HASH, ovvero un algoritmo che permette di associare unidirezionalmente una stringa («input») ad un’altra («output» o «hash»). Come abbiamo detto poco sopra, la segretezza del messaggio non deve dipendere dall’algoritmo ma dalla chiave. E infatti lo SHA256 è un algoritmo noto.

Cosa potrei fare avendo a disposizione questo algoritmo? 

Potrei prendere il mio messaggio d’amore e calcolarne l’HASH.

Immaginiamo di voler scrivere alla bella ragazza oggetto del nostro amore questo messaggio: 

“Ti amo Anna! by Andrea” (viva la fantasia!)

Anzi, facciamolo proprio. Da questo link https://andersbrownworth.com/blockchain/hash  possiamo vedere lo SHA256 in azione e scrivere, nella parte dedicata all’input, il nostro “Ti amo Anna! by Andrea”

Va scritto esattamente così, senza spazi vuoti all’inizio o in fondo alla frase.

Come puoi vedere, l’algoritmo restituisce un output di 64 caratteri: 

ba63aaba09bc237b0799c2d512249a9f4d0bee35a7d8aa66a8a9897a9a1dd386

A questo punto posso firmare l’HASH appena ottenuto con la mia chiave privata, apponendo quindi la mia firma digitale al messaggio. In questo modo Anna può essere sicura che sono io che l’ho firmato e che non si tratta di uno scherzo.

Quindi prendo l’HASH del mio messaggio d’amore e lo cifro con la mia chiave privata, ottenendo un nuovo codice alfanumerico che rappresenta l’HASH del messaggio “Ti amo Anna! by Andrea” (ottenuto in precedenza) firmato con la mia chiave segreta.

Possiamo farlo insieme su questo sito: https://www.devglan.com/online-tools/rsa-encryption-decryption

Ecco i passaggi da seguire:

– clicco su “Generate RSA Key Pair”: il sistema genera una chiave pubblica e una chiave privata. La chiave privata, come intuibile, la tengo per me e la nascondo, non devo farla vedere a nessuno. La chiave pubblica invece la diffondo: la pubblico sul mio sito internet e la stampo sui miei biglietti da visita.

– copio la mia chiave privata e la uso per firmare l’HASH, copiando l’HASH ottenuto e incollandolo nel box “Enter plain text to encrypt”

– lo firmo con la mia chiave privata, selezionando “Private Key” nel checkbox “RSA Key Type” e copiando nel box “Enter Public/Private key” la chiave privata che il sistema ci ha fornito

– clicco su “Encrypt” e ottengo, infine, l’output alfanumerico che rappresenta il messaggio firmato digitalmente con la mia chiave privata 

Firma digitale certificata

Siamo all’ultimo passaggio: ora devo recapitare il messaggio alla bella ragazza.

Come faccio?

Immaginiamo che sia un tipo un po’ teatrale. Scrivo su un muro a caratteri cubitali il mio messaggio: “Ti amo Anna! by Andrea”

Benissimo! Abbiamo già fatto un bel passo in avanti per conquistare il cuore di Anna.

Ma di quale Anna e di quale Andrea si tratta? Come facciamo a capirlo così, con una semplice scritta? Come faccio a dare ad Anna la certezza che sono proprio io l’Andrea che ha scritto il messaggio?

Subito sotto il messaggio sul muro, riporto anche l’HASH del messaggio cifrato con la mia chiave segreta, cioè copio Encrypted Output (base64), sul muro. Ecco il risultato:  

MwF+rbywa6qd54OByBmdBkKnZs+qQU37nqIFLqDgeDaQgSTis/HN4VlpoYEjJonPELQAf7wTTOLbOj2TSc1i3i5obPLDAijo/dT6QF6/WF0dVJ2inv3++ACCNpXT0Tz0lkumF85zPbJsTqSFHm/jM/Yk7t27j3dSvvsA9DMJrH4=

A questo punto abbiamo tutti gli ingredienti che ci servono: il messaggio, la firma digitale sul muro, la diffusione della nostra chiave pubblica (in questo caso l’abbiamo anche pubblicata sul nostro sito, eccola qui)

Ora, colpo di scena e gran finale: porto la ragazza davanti al muro, la guardo negli occhi e le dico: “guarda cos’ho fatto per te! Sono stato io”. 

Lei guarda il muro e vede scritto: 

Ti amo Anna! by Andrea

firma: MwF+rbywa6qd54OByBmdBkKnZs+qQU37nqIFLqDgeDaQgSTis/HN4VlpoYEjJonPELQAf7wTTOLbOj2TSc1i3i5obPLDAijo/dT6QF6/WF0dVJ2inv3++ACCNpXT0Tz0lkumF85zPbJsTqSFHm/jM/Yk7t27j3dSvvsA9DMJrH4=”

Poi le prendo la mano e le lascio uno dei biglietti da visita che abbiamo stampato in precedenza e che riporta la chiave pubblica (già pubblicata anche sul sito):

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6cMZgQhy4qeAEyDMe+RyZMWBEHRJaKhpnnYaBbVkjHSpED3ecV5b4OWldl+hcNQtry8tMSL5jzlyvR4VPkT7V5dtikxrKi6NPykQW7sYFCa+AWO5yY4yR27MhEQur+rITVS9Jt+jiQQqqkMK+Lxs7dNJuRZUJLTMu4Vj6Ik/P1QIDAQAB

Lei mi guarda negli occhi e mi dice: “Scemo! Perché hai imbrattato il muro?”. 

Le spiego che si tratta di un esperimento scientifico e si tranquillizza. 

Ma come fa a capire che sono stato davvero io? Innanzitutto deve aver letto questo post. Se provate a fare la stessa cosa con una ragazza o con un ragazzo senza avergli fatto leggere prima questo post siete spacciati. Quindi, la ragazza legge questo post. 

E ora, andiamo per gradi.

Prima di tutto deve decifrare la firma digitale che ricordo essere stata firmata con una chiave segreta.

Come si fa in crittografia asimmetrica a decifrare un messaggio cifrato con chiave segreta? Con una chiave pubblica

La mia chiave pubblica è scritta sul biglietto da visita e anche sul nostro sito, facile. 

La bella quindi va sul sito che stiamo usando per questo post: https://www.devglan.com/online-tools/rsa-encryption-decryption e poi:

– nel box “Enter Encrypted Text to Decrypt (Base64)” della colonna di destra, copia e incolla la mia firma digitale: MwF+rbywa6qd54OByBmdBkKnZs+qQU37nqIFLqDgeDaQgSTis/HN4VlpoYEjJonPELQAf7wTTOLbOj2TSc1i3i5obPLDAijo/dT6QF6/WF0dVJ2inv3++ACCNpXT0Tz0lkumF85zPbJsTqSFHm/jM/Yk7t27j3dSvvsA9DMJrH4=

– seleziona il campo Public Key nella checkbox RSA Key Type e nel box “Enter Public/Private Key” incolla la mia chiave pubblica (la trova sui biglietti da visita e sul sito): MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6cMZgQhy4qeAEyDMe+RyZMWBEHRJaKhpnnYaBbVkjHSpED3ecV5b4OWldl+hcNQtry8tMSL5jzlyvR4VPkT7V5dtikxrKi6NPykQW7sYFCa+AWO5yY4yR27MhEQur+rITVS9Jt+jiQQqqkMK+Lxs7dNJuRZUJLTMu4Vj6Ik/P1QIDAQAB

– clicca su “Decrypt”

Cosa trova? Un codice, quello che dovrebbe essere l’HASH del messaggio “Ti amo Anna! by Andrea”, se fossi stato proprio io a firmarlo

ba63aaba09bc237b0799c2d512249a9f4d0bee35a7d8aa66a8a9897a9a1dd386

E cosa se ne fa di questo codice? 

Prende il messaggio “Ti amo Anna! by Andrea”, si sposta su questo sito:  https://andersbrownworth.com/blockchain/hash ed inserendo il testo “Ti amo Anna! by Andrea” (sempre senza apici e senza spazi vuoti prima e dopo il testo) calcola l’HASH e vede se l’HASH del messaggio coincide con il codice appena scoperto decifrando la firma digitale

Prendendo il testo “Ti amo Anna! by Andrea” e inserendolo nel campo input dello SHA256, trova:

ba63aaba09bc237b0799c2d512249a9f4d0bee35a7d8aa66a8a9897a9a1dd386

Fantastico! L’HASH del messaggio e la firma digitale decifrata coincidono! 

Questo significa che sono stato proprio io a firmare quel messaggio con la mia chiave privata, io e nessun’altro perché se non fossi stato io a firmare l’HASH del messaggio “Ti amo Anna! by Andrea” con la mia chiave privata avremmo ottenuto una firma digitale non coerente.

Ma visto che i due HASH, calcolati nei due modi descritti, corrispondono, significa che il mittente è esattamente il possessore della chiave privata che fa coppia con la chiave pubblica che la bella ragazza ha utilizzato per la decifratura. Ovvero, la bella ragazza o chiunque riceva il messaggio firmato, può essere certo della provenienza del messaggio, proprio come accade quando ricevi un documento cartaceo firmato con la classica penna blu!

Ecco come possiamo rappresentare questo scenario:

5) Come vengono firmate le transazioni su blockchain

Questo è proprio il meccanismo che viene utilizzato per firmare le transazioni su blockchain.

Ogni volta che creiamo un wallet, vengono generate una coppia di chiavi, una pubblica e una privata.

La chiave pubblica corrisponde all’indirizzo del wallet (o, più precisamente, dalla chiave pubblica è possibile derivare l’indirizzo), ovvero al codice IBAN, la stringa alfanumerica che rappresenta il mio wallet e che devo comunicare agli altri se voglio ricevere delle criptovalute. Si tratta quindi di un dato che ha una validità ed una funzione pubblica.

La chiave privata è invece la chiave segreta che devo imparare a memoria o custodire in un posto sicurissimo e che mi serve per accedere al mio wallet e disporre delle criptovalute o dei token che vi sono custoditi.

Benissimo, siamo arrivati in chiusura. Ora rimangono due cose da fare.

Prima di tutto, dobbiamo andare a pulire il muro dalle scritte perché non è bello imbrattare i muri, neanche per scopi scientifici. 

In secondo luogo, dobbiamo salutarci. Ti lasciamo con questo messaggio: 

Congratulazioni! Sei arrivato fino in fondo! 

La blockchain è meglio dei server centralizzati!

by KNOBS

Firma: q4SEnNSeT1D54Mw3qJaTtLOjhn0obDapNjyIcFMIYY2VcotqE0CtVIDdMXjka0yaVdtq6cbrTl6FVFqsxr+C8F6NBt3L4Jemhxrc0LiCzUPNwZPWgMWYcGLkns7QzFzv1a0pf3rJ/gvIX7dh0cUFvPCa1TefKGgcEKaZ+vi+P90= 

Come fai a capire che l’abbiamo scritto realmente noi?

Ti basterebbe avere la nostra chiave pubblica (che guarda caso è stata resa pubblica a questo link) e ripercorrere i passaggi illustrati in questo post, grazie all’aiuto di un paio di siti:

https://www.devglan.com/online-tools/rsa-encryption-decryption, per sperimentare con chiave pubblica e chiave privata

https://andersbrownworth.com/blockchain/hash, per sperimentare con le funzioni di hash

Buon divertimento! 🙂 

Vuoi scoprire di più sulla tecnologia blockchain
e su come puo' far crescere il tuo business?

|   Chi siamo

KNOBS è una società di sviluppo software specializzata in tecnologia blockchain. Dal 2014.

|   KNOBS srl

Bastioni di Porta Volta, 9
20121 Milano (MI) – Italia
info@knobs.it
knobs@legalmail.it
P. IVA 08560240965
SDI X2PH38J

|   Orari di apertura

Dal lunedì al venerdì 9.00 – 18.00

|   Seguici

|   Newsletter

Iscriviti alla newsletter e ricevi subito il PDF
Blockchain in parole semplici