A dirla tutta, molti sviluppatori qui a Lotrèk si sono impegnati nel sviluppare un SDK della verifica del green pass, ovvero un programma che è in grado di capire se un green pass è valido o meno. Esatto, ogni tanto ci piace uscire un po’ fuori dagli schemi.
Cos’è un SDK?
Prima di addentrarci nei dettagli, cerchiamo di capire le basi. Quindi che cos’è un SDK?
SDK è un acronimo che sta per “Software Development Kit”, ma tranquilli, il significato è molto più semplice di quanto il nome possa lasciar intendere. Non è altro che un sistema che offre funzionalità relativamente complesse per facilitare lo sviluppo di un programma più grande, come un’app. Si tratta di un componente di un programma, come il motore di una macchina o l’obiettivo di una macchina fotografica. In questo caso, il nostro SDK, data l’immagine di un green pass o il suo contenuto, è in grado di verificare la sua validità.
In questo modo chi volesse sviluppare un qualche applicativo in cui dovesse essere incorporata la verifica dei green pass, col nostro SDK si risparmierebbero tutta la parte di programmazione e mantenimento del sistema di verifica. Andando così ad agevolare i tempi e lo sforzo degli sviluppatori.
In che modo un green pass viene verificato
Dietro all’incomprensibile aspetto dei QR Code dei green pass, vengono contenute diverse informazioni utili per la verifica.
- Data di emissione del green pass
- I dati essenziali relativi alla persona, ovvero il nominativo e la data di nascita.
- Altre informazioni in base alla tipologia del green pass (vaccinazione, tampone, esenzione o guarigione). Ad esempio, nel caso di una vaccinazione viene riportato il numero della dose, ma questo dato non è presente nel caso di una guarigione.
Con questi dati possiamo già fare tanto, ma non hanno valore finché non verifichiamo che questo green pass sia effettivamente ufficiale e non una riproduzione falsa. Per questo motivo tutti i green pass vengono firmati con una firma certificata.
Attenzione, non stiamo parlando delle classiche firme scritte a mano che siamo abituati a vedere sui documenti. Queste sono firme digitali studiate per funzionare con sistemi crittografici. La crittografia è sempre un aspetto molto complicato, quindi non verrà approfondito in questo articolo e non è necessario conoscerla per proseguire la lettura. Basta immaginarsi che nel QR Code del green pass, oltre ai dati elencati precedentemente, ci sono altri dati che rappresentano la firma. Per applicare queste firme è necessario essere in possesso di una chiave privata (una chiave è un numero molto molto grande). Queste chiavi sono segrete e sono in possesso solo dalla zecca di stato.
Perfetto, ma come facciamo a controllare queste firme e sapere sono effettivamente ufficiali? Il ministero della salute ha messo a disposizione pubblicamente dei certificati di firma digitale, che sono in costante aggiornamento e scaricabili da chiunque. Con l’aiuto di questi certificati digitali, abbiamo la possibilità di verificare se un green pass è legittimo o meno.
Sembra che il gioco sia ormai fatto, ma manca ancora una cosa piuttosto importante, ovvero le impostazioni di verifica. Anche queste, come i certificati, sono pubbliche. Il loro scopo è quello di provvedere vari dettagli e indicazioni che influenzano la verifica del green pass. Ad esempio, dentro queste impostazioni vi è definito dopo quanti giorni dalla somministrazione del vaccino il green pass è valido. Quindi se le autorità decidono di cambiare il numero di giorni di attesa, al ministero basta modificare queste impostazioni. Di conseguenza ogni SDK, compreso il nostro, si aggiornerebbe senza alcun intervento da parte di uno sviluppatore. Anche se a volte è necessario un mantenimento attivo da parte degli sviluppatori degli SDK per implementare nuove regole più complesse.
Come abbiamo implementato il green pass
Ora che sappiamo a grandi linee il percorso di verifica, possiamo dividerlo in 3 passi principali:
- Ottenimento dei dati all’interno del QR Code
- Scaricamento delle impostazioni e dei certificati di verifica
- Analisi dei dati del QR Code e dichiarazione se valido o meno
Ci siamo divisi quindi in 3 gruppi differenti. Ogni gruppo si è occupato di un punto sopra elencato. In questo modo siamo riusciti a parallelizzare il lavoro e concluderlo brevemente.
Il linguaggio in cui l’SDK è stato scritto è Python. Ci sono diversi SDK per la Verifica C19 ognuno in un linguaggio differente. Appena abbiamo notato che mancava l’SDK in Python, ci siamo immediatamente fiondati a svilupparlo. Il Python è uno dei linguaggi preferiti qui a Lotrèk, e inevitabilmente abbiamo molta familiarità e competenza nello sviluppo con tale linguaggio.
Considerazioni finali
Il nostro lavoro non è stato fatto per svago, ma abbiamo mandato in approvazione il nostro SDK al Ministero della Salute, per aumentare il valore del progetto, renderci fieri del nostro impegno ed essere di utilità a chi implementerà in futuro soluzioni di verifica basate su Python.
Siamo fiduciosi che il nostro SDK verrà utilizzato ampiamente, del resto è stato sviluppato in Python, uno dei linguaggi più popolari e amati.
Puoi trovare la nostra repository qui se ti interessa rimanere aggiornato sulle ultime novità, spulciare nel nostro codice o addirittura per contribuire.