#MT05 – Come le curve matematiche consentono una comunicazione avanzata

Questo è il quinto di una serie di articoli che ci accompagneranno, durante una breve gita nella “tana del coniglio” matematico, alla scoperta di un argomento che tange – come molti altri – lo studio di #bitcoin: la crittografia.

Tradotto dall’originale di Jordana Cepelewicz – pubblicato il 19 set 2022

Iscriviti ora

Condividi Bitcoin in Italiano

Dato un insieme di punti nello spazio, è possibile trovare un certo tipo di curva che passi per tutti i punti? Questa domanda – una versione del cosiddetto problema dell’interpolazione – ha interessato i matematici fin dall’antichità. All’inizio di quest’anno, i matematici Eric Larson e Isabel Vogt lo hanno risolto completamente.

Ma se il lavoro ha suscitato grande entusiasmo tra i matematici puri, l’interpolazione ha conseguenze pratiche che vanno ben oltre il regno della geometria. L’interpolazione è fondamentale per la memorizzazione e la comunicazione di dati elettronici, per la costruzione di schemi crittografici e altro ancora. È il motivo per cui si può graffiare un CD e continuare a sentire la musica, o sporcare un codice QR e continuare a scansionarlo. È per questo che missioni spaziali come il programma Voyager possono inviare immagini digitali chiare alla Terra. È per questo che un cluster di computer può eseguire un calcolo complesso anche se uno di essi si guasta.

Tutte queste applicazioni si basano su un uso straordinariamente bello e concettualmente semplice dell’interpolazione: i cosiddetti codici Reed-Solomon e i codici che si basano su di essi.

Punto per Punto

Supponiamo di voler inviare un messaggio composto da due numeri: 2 e 7. È possibile che alcuni dei dati trasmessi vadano persi o corrotti, ad esempio che il 2 si trasformi in un -2. Quindi, invece di inviare semplicemente i dati, si possono aggiungere informazioni aggiuntive per aiutare il destinatario a identificare e risolvere gli errori che potrebbero verificarsi. Questo è il cosiddetto codice a correzione di errore.

L’esempio più semplice di un codice di questo tipo consiste nel trasmettere più volte lo stesso messaggio. Per consentire al destinatario di identificare se si è verificato un errore, inviare due volte lo stesso messaggio: 2, 7, 2, 7. Se i numeri nelle posizioni corrispondenti non corrispondono (ad esempio, se la trasmissione recita 2, 7, -2, 7), il destinatario saprà che uno dei due è sbagliato, ma non quale. Per farglielo capire e correggere l’errore, inviate lo stesso messaggio per tre volte: 2, 7, 2, 7, 2, 7. Il destinatario non deve far altro che prendere in considerazione il numero di numeri che si trovano nelle posizioni corrispondenti. Il destinatario deve semplicemente prendere la maggioranza dei voti per capire qual è il messaggio che intendete inviare.

Ma questo modo di correggere gli errori è estremamente inefficiente. Ecco un approccio più intelligente: Codificare il messaggio come una curva e inviare informazioni sufficienti per consentire al destinatario di ricostruire la curva.

Nel nostro caso semplice di trasmissione di 2 e 7, la curva sarebbe la retta y =2x + 7. Valutate questa curva a due valori predeterminati di x e trasmettete i valori di y risultanti. Il destinatario ha ora due punti e, poiché il problema dell’interpolazione ci dice che due punti determinano un’unica retta, deve semplicemente trovare la retta che passa per i punti ricevuti. I coefficienti della retta rivelano il messaggio che si intende trasmettere.

Per evitare errori, si aggiungono ancora una volta informazioni supplementari. In questo caso, si invia il valore y che corrisponde a un’altra coordinata x predeterminata. Se i tre punti non cadono sulla stessa linea, si verifica un errore. Per capire dove si trova l’errore, basta inviare un altro valore, cioè quattro numeri in totale, invece dei sei richiesti dal metodo precedente.

Il vantaggio cresce con le dimensioni del messaggio. Supponiamo di voler inviare un messaggio più lungo – 1.000 numeri. Il codice meno efficiente richiederebbe l’invio di 2.000 numeri per identificare un errore e di 3.000 per correggerlo. Ma se si utilizza il codice che prevede l’interpolazione di un polinomio attraverso determinati punti, sono necessari solo 1.001 numeri per individuare l’errore e 1.002 per correggerlo. (È possibile aggiungere altri punti per identificare e correggere un maggior numero di potenziali errori). Con l’aumentare della lunghezza del messaggio, la differenza di efficienza tra i due codici diventa più netta.

Il codice più efficiente è chiamato codice Reed-Solomon. Dalla sua introduzione nel 1960, i matematici hanno fatto ulteriori progressi, sviluppando algoritmi in grado di correggere più errori con maggiore efficienza. “È molto elegante, pulito e concreto“, ha dichiarato Swastik Kopparty, matematico e informatico dell’Università di Toronto. “Può essere insegnato a un laureando del secondo anno in mezz’ora“.

I codici Reed-Solomon sono stati particolarmente utili per la memorizzazione e la trasmissione di informazioni per via elettronica. Ma lo stesso concetto è stato essenziale anche nella crittografia e nell’informatica distribuita.

Prendiamo la condivisione dei segreti: Supponiamo di voler distribuire un segreto tra più persone in modo che nessuno possa accedere all’intero segreto, ma che lo possano fare insieme. (Immaginate una chiave di crittografia, per esempio, o un codice di lancio di un missile). Si codificano i numeri in un polinomio, si valuta tale polinomio in un insieme predeterminato di punti e si distribuisce ogni risultato ad una persona diversa.

Più recentemente, i codici Reed-Solomon sono stati impiegati in settori come il cloud computing e la tecnologia blockchain. Supponiamo che dobbiate eseguire un calcolo troppo complicato per il vostro computer portatile, quindi lo fate eseguire a un grande cluster di calcolo, ma ora dovete verificare che il calcolo che vi viene restituito sia corretto. I codici Reed-Solomon consentono di richiedere informazioni aggiuntive che il cluster probabilmente non sarà in grado di produrre se non ha eseguito correttamente il calcolo. “Funziona magicamente“, ha dichiarato Jade Nardi, ricercatrice presso l’Istituto di matematica di Rennes in Francia. “Questo processo è davvero meraviglioso e il modo in cui si basa su [questi codici] mi lascia senza parole“.

In un test di prova, gli scienziati della NASA hanno codificato la Monna Lisa su un raggio laser e l’hanno inviata dalla superficie terrestre a una navicella lunare. I codici Reed-Solomon sono stati utilizzati per correggere gli errori di trasmissione introdotti dall’atmosfera terrestre.

Ma i codici Reed-Solomon hanno anche un vincolo importante. Sono costruiti in modo tale da poter valutare il polinomio solo per un insieme fisso (e di solito relativamente piccolo) di valori. In altre parole, si è limitati a utilizzare un certo insieme di numeri per codificare il messaggio. La dimensione di questo insieme, o alfabeto, limita a sua volta la lunghezza dei messaggi che si possono inviare, e più grande è l’alfabeto, più potenza di calcolo è necessaria per decodificare i messaggi.

Per questo i matematici hanno cercato un codice ancor più ottimizzato.

Codici futuri

Un codice più generale e più potente permetterebbe di memorizzare o inviare messaggi più lunghi senza dover aumentare le dimensioni dell’alfabeto. Per fare ciò, i matematici hanno ideato codici che prevedono l’interpolazione di una funzione – che vive in uno spazio speciale associato a una curva più complicata – attraverso determinati punti di tale curva. Questi codici, detti di geometria algebrica, “sono venuti fuori dal nulla e sono migliori di qualsiasi altro codice che sappiamo fare [con un alfabeto più piccolo]“, ha detto Kopparty. “Questo batte tutto. È stato un vero shock“.

C’è solo un problema. In pratica, implementare un codice Reed-Solomon è molto, molto più facile che implementare un codice a geometria algebrica. “È lo stato dell’arte, ma è ancora in fase di studio per diventare qualcosa di pratico“, ha detto il crittologo Simon Abelard. “Si tratta di una matematica piuttosto astratta ed è difficile gestire questi codici su un computer“.

Per ora, questo non è preoccupante: Nelle applicazioni reali, i codici Reed-Solomon e le relative forme di correzione degli errori sono sufficienti. Ma potrebbe non essere sempre così. Ad esempio, se in futuro saranno disponibili potenti computer quantistici, questi saranno in grado di violare gli attuali protocolli di crittografia. Di conseguenza, i ricercatori sono alla ricerca di schemi in grado di resistere agli attacchi quantistici. Uno dei principali contendenti per tali schemi richiederebbe qualcosa di più forte dei codici Reed-Solomon. Alcune versioni di codici a geometria algebrica potrebbero funzionare. Altri ricercatori sono fiduciosi sul ruolo che i codici a geometria algebrica potrebbero svolgere nel cloud computing.

Ma anche in assenza di questi potenziali utilizzi, “nella storia della matematica a volte si scoprono cose nuove che non hanno applicazioni al giorno d’oggi“, ha detto Elena Berardini, ricercatrice della Eindhoven University of Technology nei Paesi Bassi che si occupa di codici di geometria algebrica. “Ma poi, dopo 50 anni, si scopre che potrebbe essere utile per qualcosa di completamente inaspettato“, proprio come l’antico problema dell’interpolazione.

Jordana Cepelewicz

Come acquistare Bitcoin?

Reputo il miglior servizio quello offerto da Relai.

Per acquistare bitcoin risparmiando lo 0,5% in commissioni puoi usare il codice “REL3166”.

Si tratta di un’applicazione sviluppata da un’azienda svizzera che applica una politica di KYC light: a differenza dei grandi exchange non richiede registrazioni o dati personali, tutto ciò che serve per acquistare è il tuo IBAN.

E’ lo strumento ottimale per impostare dei piani di accumulo (DCA).

Per ridurre al massimo le commissioni di acquisto, ti consiglio di:

effettuare acquisti maggiori di 100€ (-0,5%)

impostare un piano di accumulo settimanale o mensile (-0,5%)

applicare il codice invito REL3166 (-0,5%)

Una delle migliori caratteristiche è il servizio non-custodial. Gli euro bonificati a Relai vengono convertiti automaticamente in bitcoin e trasferiti su un wallet di cui sei solo tu ad avere il controllo. I grossi exchange, al contrario, non forniscono le chiavi private ai clienti. In più Relai non vende centinaia di inutili criptovalute, ma solo bitcoin.

Cosa ci guadagno? Quello che fanno guadagnare i referral code. In questo caso se acquisti usando il codice “REL3166” risparmi lo 0,5% sulle commissioni e io ricevo (in bitcoin) lo 0,5% dell’importo che hai deciso di investire.

Per ulteriori informazioni, o per effettuare il primo acquisto, premi sul pulsante sottostante e ti verrà mostrata una dettagliata guida in italiano.

Guida all’acquisto in italiano

NOTA – Questo NON è un messaggio pubblicitario. Relai è un servizio che utilizzo personalmente e che reputo tra i migliori sul mercato in termini di affidabilità, sicurezza e facilità d’uso. Lo consiglio spesso ad amici e parenti.

Articolo originale: Read More