Quando ero piccolo, a Palermo, tutti avevano una tessera di qualcosa. Era il periodo dei videonoleggi sotto casa e dei club di amici. Un cartoncino plastificato con il nome scritto a penna, mezzo sbiadito dal portafoglio. E se ci pensate un attimo, quella tessera valeva una cosa sola: la faccia di chi te l'aveva data. Se il presidente del circolo ti conosceva, entravi. Se non ti conosceva, la tessera potevi pure incorniciarla.

Le tessere che vogliamo noi sono una cosa seria, digitale per davvero. Vogliamo rispettare ed onorare il nostro manifesto con una tessera digitale degna di questo nome.

Quindi ci siamo messi a studiare gli standard, le tecniche più attuali per far sì che ogni socio abbia la sua tessera sempre con sè. Dopo qualche giorno di studio serio abbiamo la prima versione e ve la presentiamo qui, tecnicamente com’è giusto che sia.

Partiamo dalla ceralacca

Una volta le lettere importanti si chiudevano con la ceralacca. Il sigillo non nascondeva niente: chiunque poteva guardarlo. Ma nessuno poteva rifarlo uguale, e se qualcuno apriva la lettera si vedeva subito. Il sigillo proteggeva la fiducia, il contenuto era facile da ottenere in ogni caso.

La tessera di Faidda funziona così, solo che la ceralacca è matematica.

Ogni tessera è in gergo una Verifiable Credential. Ci siamo rifatti a uno standard del W3C, lo stesso ente che scrive gli standard del web. In pratica è un documento digitale firmato con chiave crittografica asimmetrica: noi la firmiamo con una chiave privata che custodiamo, e chiunque al mondo può verificarla con la chiave pubblica. Come dite? Volete la chiave pubblica? Eccola qui.

Non serve fidarsi di noi. Non serve scrivere alla segreteria. Chiunque può prendere la credenziale di un socio e verificarla per conto suo, con strumenti standard, senza chiedere niente a nessuno. È lo stesso modello che si usa nei sistemi di identità digitale europei. E noi mica siamo da meno!

Il QR che non si fa i fatti tuoi

Sulla tessera c'è un QR code. Ora, la tentazione per fare le cose veloci era di metterci dentro tutto: nome, cognome, codice fiscale, magari pure la mail. Comodo, no? Comodo per chiunque lo scansioni, anche chi non dovrebbe.

Il nostro QR contiene una cosa sola: un indirizzo di verifica con un codice casuale. Punto. Chi lo scansiona finisce su una pagina pubblica che dice nome, cognome, se la tessera è attiva o non valida, e da quando sei socio. Fine.

Se una tessera dovesse essere invalidata per qualsiasi ragione, resta tra noi. E se un socio chiede la cancellazione dei suoi dati, come è suo diritto, pure il nome sparisce dalla verifica. Il GDPR non è un fastidio burocratico, è un requisito di progetto.

E i dati veri, quelli che il QR non mostra, stanno nell'area soci. Che non si apre con la sola password: c'è l'autenticazione a due fattori con app authenticator, il codicino che cambia ogni trenta secondi. E non è una fissazione ingegneristica, lo giuro! La OWASP Foundation (la nonprofit più conosciuta al mondo per la sicurezza informatica) la mette tra i requisiti di verifica delle applicazioni, le linee guida NIST sull'identità digitale la raccomandano per proteggere dati personali, e in Europa la direttiva NIS2 la impone alle organizzazioni che contano davvero. Noi non siamo un'infrastruttura critica, siamo un'associazione. Ma ai dati dei nostri soci ci teniamo e gli standard di sicurezza hanno un pregio: sono già scritti, valgono per tutti, e seguirli non costa niente in più che ignorarli. Se la tessera è fatta come si deve, pure la porta di casa deve esserlo.

C'è anche un dettaglio più fine, per chi mastica la materia. Quando dobbiamo revocare una tessera non aggiorniamo un campo che chiunque può interrogare socio per socio: pubblichiamo una lista di bit anonima, seguendo un altro standard W3C che si chiama Bitstring Status List. Ogni credenziale punta a una posizione in quella lista. Chi verifica guarda un singolo bit: zero tutto a posto, uno revocata. Non vede quante tessere esistono, non vede di chi sono, non vede niente altro. Immaginatevi il tabellone delle chiavi di un albergo, ma con i numeri delle stanze mescolati e senza i nomi.

Internet non è sempre necessario

Chi ha organizzato almeno un evento lo sa: la rete inizia a fare cilecca appena ci sono più di dieci persone nella stanza. Il locale può essere bellissimo, il proiettore funzionare divinamente (e anche qui potremmo starne a dire) ma il WiFi morirà alla dodicesima persona. E lo staff all'ingresso deve controllare le tessere lo stesso.

Il problema di sicurezza classico dei sistemi offline è questo: se lo scanner lavora su una copia scaricata prima dell'evento, e quella copia è vecchia o manomessa, rischi di far entrare qualcuno con una tessera revocata che risulta ancora buona.

Ribaltiamo la domanda. Il pacchetto che lo scanner scarica prima dell'evento contiene solo l'elenco delle tessere revocate. Mai l'elenco di quelle valide. Sembra un dettaglio, ma cambia tutto: una copia vecchia o compromessa può al massimo dirti "questa tessera va rifiutata di sicuro", non potrà mai dirti "questa tessera è valida di sicuro".

Lo scanner si comporta come un semaforo onesto. Online: verde o rosso, verdetto pieno. Offline: rosso se la tessera sta nella lista dei revocati, altrimenti giallo, con scritto chiaro e tondo che non risultare revocati non è prova di validità. Il verde, offline, non esiste proprio. Il sistema preferisce ammettere di non sapere piuttosto che fingere di sapere. Che poi, a pensarci, è una qualità rara pure nelle persone. Socrate ne sarebbe fiero.

Ve la potete tenere in tasca

Stiamo lavorando per darvi la tessera dentro Apple Wallet e Google Wallet, accanto alla carta d'imbarco e alla tessera dei punti del supermercato. L'architettura è già pronta e c'è una scelta di fondo che vale la pena raccontare: il pass nel telefono non è la fonte di verità, vi permette di verificare dritti sul sito. Il QR dentro il wallet porta alla stessa identica pagina di verifica di cui parlavo prima. Un solo indirizzo canonico per tutto il sistema: pass, area soci, materiale stampato. Quando arriva, ve lo raccontiamo meglio. Aspettiamo che i big ci diano la possibilità di farlo

In più c'è un'altra strada che lo standard tiene aperta e che potrebbe essere interessante per il futuro: il W3C prevede anche le Verifiable Credentials dentro i barcode ottici, la credenziale firmata, tutta intera, stampata in un codice sulla tessera. È lo stesso approccio che si usa per mettere in sicurezza le patenti digitali americane. Vorrebbe dire poter verificare la firma di una tessera pure senza rete e senza pacchetto scaricato prima: resta fuori solo la revoca, che vive online. Il bello di costruire sopra uno standard è proprio questo: le estensioni sono già scritte, basta studiare.

Ma chi ve lo fa fare?

Domanda legittima. Tutto questo, credenziali firmate, rotazione delle chiavi, liste di revoca anonime, verifica offline che non mente: è roba che di solito trovi nei sistemi di identità governativi, tipo il wallet europeo di identità digitale. Non nella tessera di un'associazione siciliana.

Il manifesto dice che il problema della Sicilia non è la mancanza di competenze, è l'invisibilità. Allora la tessera non poteva essere un cartoncino plastificato, doveva essere una cosa che sta in piedi da sola, verificabile da chiunque, ovunque, senza dover credere a nessuno sulla parola.

La fiducia della faccia ce la teniamo stretta, è la parte più bella di casa nostra. Alla tessera abbiamo solo insegnato a portarla in giro per il mondo.