Fidarsi di un numero

Dovete sapere che tra le navi spaziali della federazione c’è questo codice: 3 = amico, 4 = nemico; eravamo dalle parti di Orione quando dietro un asteroide vien fuori un’astronave; immediatamente puntiamo su di loro i missili a perforazione atomica, intanto il telegrafista di bordo trasmette: 3 o 4 ? e subito riceviamo la risposta: 3 ! che fare ?

Arcadia by Gabriele Rescaldani

Arcadia by Gabriele Rescaldani

Dunque come si diceva nel post “Abbondanti risorse digitali”, nell’età digitale tutto è trasformato in numero.

Oggi vorrei provare a spiegare prima di tutto a me stesso, con un linguaggio comprensibile, di come ci si possa fidare di un numero. Questo è un tema attualissimo e ricco di implicazioni politiche, per cui corro volentieri il rischio di sbordare e finire a parlare di algoritmi, digests, codifica simmetrica e asimmetrica, web of trust, blockchain, distributed hash tables … L’unica parola che prometto di non usare è crittografia, che spaventa e non serve (userò codifica).

Ma perchè dovremmo fidarci di un numero ? Supponiamo di ricevere un numero (potrebbe essere un file mp3) che pare contenga l’ultima opera musicale di Kronos Quartet, come faccio a sapere che davvero è opera loro e non un apocrifo alterato da qualche buontempone che gli ha sovrapposto una base ritmica dei Righeira ?

Nel mondo (andato per sempre) a metà strada tra il fisico e il digitale il numero poteva arrivarmi stampato su un CD (vi ricordate ?); in quel bel mondo se si trattava di un CD copiato col titolo scritto col pennarello ci fidavamo dell’amico che ce lo passava. Nel caso di un CD originale, completo di lato stampato e adesivo ologrammato SIAE sulla copertina c’erano delle garanzie (fisiche) ancora maggiori. Ma oggi che siamo digitali al 100% il file mp3 ci arriva per vie strane, magari ce lo manda una persona che non conosciamo … lo scarichiamo da un server chissàdove …

Il primo problema dunque è autenticare dei dati statici e immutabili, ad esempio delle opere dell’ingegno.

Una prima possibile soluzione è la firma digitale simmetrica. Vuol dire che il mittente prende il numero (cioè il file mp3), gli applica un algoritmo 1 (!) per ottenere un impronta (in inglese digest che vuol dire riassunto: non è altro che un numero più corto che lo rappresenta in modo praticamente univoco). Poi applica all’impronta un algoritmo 2 dove entra un altro numero (chiave segreta), ottenendo un terzo numero, la firma. A questo punto ci trasmette la firma insieme al file mp3 del Kronos Quartet. Noi alla ricezione spacchettiamo il tutto, e applichiamo i due algoritmi 1 e 2 per calcolare prima l’impronta e poi la firma (notare che per far ciò dobbiamo avere anche noi la chiave segreta); se otteniamo lo stesso numero che ha ottenuto lui (la firma) ci fidiamo. La chiave deve essere mantenuta segreta tra il mittente e il ricevente; infatti se un terzo ne venisse in possesso, potrebbe aggiungere la base ritmica dei Righeira, firmare nuovamente e mettere in giro l’apocrifo.
Ma spetta noi di chi ci fidiamo allora ? E come facciamo ad avere la sua chiave ? Questo sistema simmetrico va bene solo per rendere affidabile la comunicazione tra due parti che hanno avuto modo preventivamente di condividere la chiave.
Se molte persone devono scambiarsi informazioni, si può fare ma dovranno creare una chiave segreta per ogni coppia di persone che vogliono comunicare.
Con la codifica simmetrica la comunicazione uno-verso-molti è proprio impossibile perché i Kronos Quartet dovrebbero dare la loro chiave segreta a .. molti, e alcuni di questi potrebbero da lì in poi firmare gli aprocrifi in loro vece.
La comunicazione molti-verso-uno con la codifica simmetrica è quasi la stessa cosa del sistema utente-password che usiamo per identificarci con i vari fornitori di servizi. Possiamo avere lo stesso nome utente con la banca, la posta, lo spazio nel cloud e per il social network, ma sarebbe meglio non avere la stessa password (chiave segreta) tra tutti questi account ! Se no la banca potrà fare accesso al nostro conto sul social network (e viceversa). In quest’analogia, la password corrisponde alla chiave segreta della firma digitale simmetrica.

Per ovviare a queste scomodità e limitazioni della codifica simmetrica si può usare il sistema asimmetrico, che usa due numeri associati: una chiave privata e una chiave pubblica. Qui il mittente prende il numero, calcola l’impronta con l’algoritmo 1 come prima, poi applica all’impronta un nuovo algoritmo 2A dove entra un numero segretissimo (la chiave privata), ottenendo la firma. Alla ricezione dobbiamo calcolare l’impronta e verificare la firma, ma questa volta usando un nuovo algoritmo 2B che serve solo a verificare (non a firmare) che non richiede la chiave privata, ma solo la chiave pubblica associata alla chiave privata che è stata usata per firmare.
La codifica asimmetrica è possibile perché esiste un algoritmo 3 (e dajje) che permette facilmente di calcolare dalla chiave privata la chiave pubblica, ma molto difficile da applicare all’indietro: quindi dalla chiave pubblica è praticamente impossibile riottenere la chiave privata.
Con questo sistema asimmetrico la chiave pubblica può essere diffusa senza vanificare l’affidabilità della comunicazione. Se molte persone devono scambiarsi informazioni, è più facile di prima perché ognuno di loro deve creare un’unica coppia di chiavi e far arrivare tutti i suoi corrispondenti una sola chiave pubblica. Anche la comunicazione uno verso molti diventa possibile.

Tornando ai Kronos Quartet, vediamo cosa succede quando loro pubblicano l’ultimo lavoro come mp3. OK lo firmano con la codifica asimmetrica, ma come fanno a inviarci la chiave pubblica a noi che siamo i loro fans ? La pubblicano sul loro sito web ? E se poi un gruppo di hacker ne assume il controllo ? O i Righeira ?
Il fatto è che dopo questo tripudio di algoritmi, impronte e chiavi abbiamo fatto solo un primo piccolo passo in avanti: adesso ci dobbiamo fidare di un solo numero (la chiave pubblica dei Kronos Quartet), poi possiamo verificare tutti i numeri che ci loro mandano.
Ma resta il problema di come esser certi che la sedicente chiave pubblica dei Kronos Quartet che abbiamo trovato scritta da qualche parte (ad esempio nei cessi di un’autogrill) sia effettivamente la loro.

Insomma bisogna associare al processo tecnico di firma asimmetrica un processo sociale che la faccia funzionare nel mondo reale! E qui usciamo dall’ambito degli algoritmi e entriamo nella sfera politica.

Per distribuire le chavi pubbliche ci sono tre sistemi, a contenuto autoritario decrescente:

  1. chain of trust (catena della fiducia)
  2. web of trust (rete della fiducia)
  3. il consenso.

Nel chain of trust tutti si fidano del re. Il re poi si fida dei duchi, e i duchi si fidano dei vassalli.
Allora uno dei vassalli incontra i Kronos, si fa dare la loro chiave pubblica, la mette in un messaggio: “Io sono il vassallo Pippino, e garantisco che questa è la chiave pubblica dei Kronos Quartet: 123456….9999“, lo converte in un numero e lo firma. Poi scrive sui cessi di tutti gli autogrill il messaggio, e la sua firma.
Ma come facciamo a fidarci del Vassallo Pippino ? Risposta, perché il duca Pippone conosce il vassallo Pippino, si fa dare la sua chiave pubblica, la mette in un messaggio: “Io sono il duca Pippone, e garantisco che questa è la chiave pubblica del vassallo Pippino: 123456….9999“, lo converte in un numero e lo firma. Poi scrive sui cessi di tutti gli autogrill il messaggio, e la sua firma.
Ma come facciamo a fidarci del Duca Pippone ? Risposta, perché il re Pappone conosce il duca Pippone, si fa dare la sua chiave pubblica, la mette in un messaggio: “Io sono il re Pappone, e garantisco che questa è la chiave pubblica del duca Pippone: 123456….9999“, lo converte in un numero e lo firma. Poi scrive sui cessi di tutti gli autogrill il messaggio, e la sua firma.
Toh sembra una barzelletta quando devo ridere ? Niente non si deve ridere siamo alla fine, resta solo un piccolo problema: come facciamo a fidarci del re ? Boh.

Comunque questo è il sistema usato per garantire la sicurezza delle comunicazioni su internet attraverso il protocollo https.

Vediamo adesso il web of trust. Qui siamo tutti anarchici, nessuno si fida del re: che fare ? Mi fido solo dei miei amici. E dei loro amici, e degli amici degli amici.
Allora io incontro il compagno Peppone, ci scambiamo le chiavi pubbliche, io firmo la sua e lui firma la mia poi decidiamo di mettere i messaggi firmati in una bacheca. Poi io vado a una festa dove incontro Rino, Lino e Pino e ci firmiamo vicendevolmente le chiavi pubbliche. Nel frattempo Peppone va a un’altra festa e si scambiano le chiavi pubbliche lui, Lillo, Lello e Lollo. Se tutta questa gente mette i messaggi firmati nella stessa bacheca, quando Lello riceve una notizia da Tino va in bacheca, vede che io mi fido di Tino, e Peppone si fida di me, allora lui decide di fidarsi di Tino.

Infine il consenso. Qui si sfrutta una molteplicità di canali indipendenti per verificare l’associazione tra un numero ed un emittente di messaggi. Ad esempio ci potrebbe essere un libro stampato (!) con un elenco di chiavi pubbliche di entità di “primo livello” (stati, ONG, aziende….), poi una serie di server indipendenti operati da privati che si sono identificati con le entità di primo livello, ognuno dei quali pubblica un “elenco”. Se la maggioranza di questi dice che la chiave pubblica dei Kronos Quartet è 123456….9999, allora mi fido. Questo procedimento è abbastanza anarchico, ma non c’è una garanzia certa quindi non sembra indicato quando abbiamo bisogno di certezze.

Ma torniamo allo sketch d’apertura. In quel caso ci interessa sapere se l’informazione contenuta nel messaggio è vera adesso: ne va della nostra astronave ! Questo problema si potrebbe porre anche per delle informazioni non così letali ma importanti, come sapere se un’immobile OGGI è ipotecato (si/no, 1/0) oppure se una ragazzina che vuole comprare del tabacco da fiuto OGGI è maggiorenne (“Quanti anni hai ? 18 signor tabaccaio !”).
In questo esempio le informazioni non sono più statiche, e possono cambiare. Infatti potrebbe essere un’astronave della federazione caduta in mano ai ribelli ! Oppure ci potrebbe essere stata un’ipoteca fino a ieri ma è stata sciolta. O la ragazzina potrebbe diventare maggiorenne solo domani. Insomma il numero che si serve e di cui vorremmo essere certi è il risultato di calcoli !

Nella prossima puntata: come fidarsi di una somma di numeri e altri calcoli più complessi.

Leave a Reply