Una discussione al bar tra Paolo e Mario

argomento bitcoin (parte seconda)

Scritto dalla redazione il 13 novembre 2017

Paolo: Ho visto il video che mi hai consigliato ieri, impressionante. Non dire nulla, vediamo se ho capito la "lezione". I computer utilizzati per la produzione di bitcoin consumano tanta elettricità perchè devono effettuare tantissimi calcoli, ma più che calcoli direi tentativi di trovare la soluzione o il risultato di una "semplice" fattorizzazione di numeri primi, non è così?
Mario: Ci siamo quasi, la prima parte del tuo ragionamento è corretto, ma quello che devono trovare non sono i fattori di una operazione di moltiplicazione ma qualcos'altro che ancora non ti ho spiegato
Paolo: Ah, immagino questo sia l'argomento di oggi?
Mario: Sì, esatto, e per farlo cominciamo col parlare di IBAN, Codice fiscale e Partita IVA
Paolo: Cosa? Ieri il Lotto e oggi mi parli di banche e fisco?
Mario: Non proprio, sai cosa hanno in comune i tre codici che ti ho detto poco fa?
Paolo: No, cosa hanno?
Mario: Sono dei codici numerici o alfanumerici che hanno al loro interno, in genere alla fine o all'inizio, uno o più caratteri di controllo. Prendiamo un codice fiscale a caso (in questa pagina trovi codici fiscali inventati), il codice è formato da 16 caratteri, l'ultimo dei quali è un carattere di controllo dei precedenti 15. Ciò significa che se io sbaglio a comunicare un codice fiscale, ad esempio ad una pubblica amministrazione, perchè magari ho scambiato uno ZERO con una O, allora il software, grazie al codice di controllo mi dirà subito che è errato. Stessa cosa per la partita iva o per l'IBAN, in questo ultimo caso, ad esempio in un IBAN del genere, IT09D0760116600932112345678 i caratteri di controllo sono addirittura tre, il terzo, il quarto e il quinto
Paolo: Tutto chiaro, continua
Mario: Avere un solo carattere di controllo però non ti mette al riparo dagli errori, ti faccio un esempio, prendiamo questo codice fiscale: DSDBVN55R02C715Q e sbaglio a scriverlo, scambiando lo ZERO con la O, quindi diventa DSDBVN55RO2C715Q, il software di controllo calcola l'ultimo carattere e ci risponde che è errato, perchè dovrebbe essere E e non Q. Ma se, per eccesso di sfortuna, dovessi sbagliarne due di caratteri, ad esempio lo ZERO e il 2 successivo, scambiandoli con la O e il 7, allora il codice di controllo tornerebbe ad essere Q (DSDBVN55RO7C715Q) e quindi per il software di controllo quel codice fiscale potrebbe andare bene
Paolo: E il tizio è rovinato, eheheheh
Mario: Quella che ho appena fatto, in gergo tecnico si chiama "collisione", cioè ho rimescolato i primi 15 caratteri in modo da avere un carattere di controllo identico a quello cercato
Paolo: E no, ieri mi avevi promesso che non avresti usato termini tecnici, e questo vale anche per oggi
Mario: OK, capisci bene comunque che un singolo carattere di controllo può anche non essere sufficiente per una "parola" di 15 caratteri, figuriamoci per testi più lunghi
Paolo: E quindi come si fa, si scelgono più caratteri di controllo?
Mario: Esatto, rimanendo comunque all'interno di un codice limitato di caratteri per non appesantire troppo il codice finale, bisogna cioè trovare un giusto compromesso
Paolo: Non ci stiamo allontanando troppo dall'argomento bitcoin?
Mario: Tranquillo, ora ci torniamo. Dicevamo dei caratteri di controllo, a partire dagli anni '60 con l'incremento delle comunicazioni digitali si è avvertita la necessità di controllare che i dati trasmessi giungessero integri all'altro capo del filo. Si sono studiati e messi in pratica diversi sistemi, che ti evito di elencare (ma ti do solo il link di partenza) fino ad arrivare ad un codice di controllo, non si chiama così in termini tecnici ma l'idea è la stessa, di 32 caratteri
Paolo: Fammi un esempio, che mi sto perdendo
Mario: Più che un esempio di do il link di un sito in cui c'è un tool, un programmino, che calcola online questo famoso codice di controllo, detto hash
Paolo: Finalmente è uscito fuori questo hash, che ho letto in un sacco di posti ma che non ho capito mai cosa effettivamente fosse, grazie Mario
Mario: Ad essere precisi hash è la funzionalità, l'azione, infatti in inglese significa tritare, sminuzzare, pasticciare. Il codice, il risultato dell'operazione di hash invece si chiama digest, sempre in inglese deriva da digerire, dovrebbe tradursi quindi con digerito ma nel nostro caso possiamo dire che si tratta di un riassunto
Paolo: OK, per oggi direi di fermarci qui, un giorno per consolidare queste nuove nozioni e domani riprendiamo
Mario: Ciao Paolo, a domani
Paolo: Ciao Mario, e grazie.