La recente scoperta di alcuni Green Pass falsi, ma validi, ha richiamato l’attenzione di tutti sul funzionamento del sistema Green Pass, sulle misure di sicurezza adottate nella gestione delle certificazioni Covid-19 e sulle possibili debolezze.
È dunque utile analizzare tutti questi aspetti critici con una premessa, fondamentale, che quanto segue descrive in modo semplice alcuni argomenti complessi per renderli facilmente fruibili a tutti e che sono stati omessi alcuni passaggi non rilevanti per la sicurezza informatica. Inoltre, servirebbe un libro per descrivere al meglio tutto e quindi alcuni aspetti sono del tutto tralasciati.
Green pass: linee guida aggiornate per PA e privati al decreto-bis, con i nuovi adempimenti privacy
Indice degli argomenti
Come funziona il sistema Green Pass
Il sistema Green Pass si compone, almeno in Italia, dei seguenti elementi:
- il Green Pass rilasciato dallo Stato;
- l’app VerificaC19 per la verifica del certificato
In realtà, sono da poco disponibili anche altri sistemi di verifica delle certificazioni Covid-19, ma solo dell’app VerificaC19 è possibile analizzare l’eseguibile e valutare il codice.
Il QR Code che è alla base del Green Pass è soltanto un mezzo che può essere interpretato da un dispositivo digitale e che può contenere informazioni quali indirizzi Internet, testi, numeri di telefono e via dicendo. Nel caso specifico del Green Pass, il contenuto del QR Code è composto da un messaggio e da una firma.
Il messaggio contiene le informazioni che l’Europa ha ritenuto di voler inserire e tra le quali compaiono il nome, il cognome, la data di inizio validità e la data di fine validità del Green Pass oltre ad altre informazioni sul motivo del rilascio (tampone negativo, vaccino ecc.) e l’ente che l’ha rilasciato (tipicamente il ministero della salute di uno degli stati membri dell’UE).
La firma che autentica il messaggio di validità del Green Pass
La firma autentica il messaggio e su questo aspetto vale la pena spendere qualche parola. La firma è un particolare uso della crittografia a chiave asimmetrica impiegata per verificare l’autenticità di un messaggio.
Diciamo, ad esempio, che voglio mandare un messaggio a Paolo: se lui avesse lasciato il lucchetto del suo motorino aperto potrei mettere il messaggio in una scatola e chiuderla con il lucchetto del suo motorino. A questo punto solo Paolo ha la chiave che apre quel lucchetto e quindi sono sicuro che, se Paolo non perde la chiave, solo lui può aprire la scatola e leggere il messaggio.
Questo è un esempio di crittografia a chiave asimmetrica dove il lucchetto è la chiave pubblica e la chiave del lucchetto è la chiave privata. Se invece del messaggio creassi un’impronta del messaggio stesso, un qualcosa che identifichi esattamente quel messaggio e mettessi quell’impronta nella scatola allora parleremmo di firma.
Nel sistema Green Pass viene creata un’impronta del messaggio che viene successivamente messa in una scatola chiusa a chiave e diventa quindi immodificabile. Se cambiassi il messaggio (falsificazione dei dati in chiaro del certificato) non sarei comunque capace di modificare la firma perché l’impronta del messaggio originale è chiusa dal lucchetto che ha messo lo Stato.
L’applicazione VerificaC19, in fase di installazione e periodicamente nel tempo, verifica se ci sono nuove chiavi e le scarica sul dispositivo per consentirgli di lavorare anche offline. All’applicazione è sufficiente aprire il lucchetto e verificare che l’impronta “sotto chiave” e quella del messaggio coincidano per autenticare il contenuto del messaggio.
Il messaggio e la firma sono poi codificati secondo un determinato standard pubblico, il risultato della codifica viene compresso e infine codificato nuovamente secondo un altro standard pubblico. Il risultato è una stringa di testo che viene poi utilizzata per generare il QR Code (se vogliamo è solamente una diversa rappresentazione di una stringa sotto forma di quadratini neri in un quadrato più grosso).
Verifica del Green Pass in azienda: ecco le linee guida aggiornate per il datore di lavoro
Com’è stato possibile generare Green Pass falsi
Ad oggi, da un punto di vista prettamente informatico ed escludendo altri sistemi che includono medici, farmacisti o hub compiacenti, non c’è modo di generare un certificato capace di passare i controlli dell’app VerificaC19.
Ma cosa può andare storto? Effettivamente diverse cose, proviamo a spiegarne alcune:
- l’algoritmo si basa su concetti matematici solidi ma poi c’è un’implementazione in un qualche linguaggio di programmazione. La storia ci insegna che non sempre le implementazioni vengono fatte nel modo corretto quindi nel tempo potrebbero uscire problematiche anche di sicurezza informatica;
- un ministero si lascia scappare la chiave privata (la matrice del lucchetto). Tutta la sicurezza del sistema di firma si basa sul fatto che c’è una chiave ed è privata ma se questa venisse smarrita o peggio rubata? Sono sempre più frequenti gli attacchi agli enti pubblici, e in quest’ultimo anno ai sistemi informatici della sanità pubblica (che appunto rilascia il Green Pass), quindi non ci sentiamo di escludere la possibilità che a un ministero venga rubata la chiave privata. Tra l’altro è notizia di poche ore fa (ancora da confermare/smentire) che alcune chiavi sono state rese pubbliche.
In relazione all’ultimo punto ci ritroveremmo in un bel pasticcio. Il sistema prevede meccanismi di revoca delle chiavi ma tutti i Green Pass rilasciati in quel momento non sarebbero più validi.
Quanto tempo ci vuole a generare qualche decina di milioni di certificati nuovi? Le infrastrutture dello Stato riuscirebbero a farlo in tempi ragionevoli o con l’arrivo dell’inverno non potemmo più mangiare al ristorante o andare a lavorare per qualche settimana? Bisogna poi considerare tutta quella fascia di popolazione meno digitalizzata che usa la versione cartacea del QR code e che subirebbe forse il disagio maggiore.
D’altronde, l’Europa ne è consapevole e lo descrive nelle sue linee guida pubblicamente accessibili sulla piattaforma GitHub.
Il ruolo dell’app VerificaC19
Per verificare o semplicemente leggere un Green Pass è necessario disporre di un’app che sia capace di decodificare il contenuto del QR Code.
A tale scopo lo Stato ha messo a disposizione l’app VerificaC19 per dispositivi Android e Apple. Ma cosa fa quest’applicazione? Semplicemente estrae il messaggio e la firma, verifica che il messaggio sia autentico grazie alla firma e quindi verifica la data di fine validità del Green Pass rispetto alla data impostata sul dispositivo (primo problema: se la data del dispositivo non è corretta?).
Sfatiamo innanzitutto qualche mito:
- l’applicazione VerificaC19 verifica l’autenticità del messaggio, quindi non è sufficiente modificare le informazioni del messaggio per passare un controllo ma servirebbe firmare nuovamente il messaggio con le chiavi a disposizione dei ministeri dell’UE;
- ad oggi l’applicazione non invia informazioni di nessun tipo a nessuno. Non si configurano quindi possibili monitoraggi di massa o chissà quale altro complotto. L’unica comunicazione è verso il dispositivo del “verificatore” che conserverà le chiavi per verificare il Green Pass in modalità offline;
- ad oggi l’applicazione VerificaC19 non memorizza nessuna informazione sul dispositivo quindi non si configurano scenari in cui chi verifica conserva anche informazioni sui verificati.
L’aspetto più importante di tutti è che stiamo parlando dell’app VerificaC19 e il vero rischio è che nascano applicazioni “parallele” che potrebbero non verificare correttamente il Green Pass. Un esempio su tutti è appunto la verifica dell’autenticità del messaggio contenuto nel QR code. Senza questo passaggio cade tutta la sicurezza sulla possibilità di falsificare il certificato verde.
Altre applicazioni potrebbero estrarre informazioni e utilizzarle a diversi scopi. Uno degli utilizzi più interessanti che vediamo è per finalità di marketing perché è posso conoscere il sesso, l’età ma anche la frequenza con cui un possessore di Green Pass viene nel mio locale. Vediamo meno probabili finalità diverse quali truffe o simili seppur possibili.
Greenpass50+: cos’è e come funziona il servizio INPS per la verifica Green Pass nei luoghi di lavoro
Serve sensibilizzare gli utenti
A nostro avviso sarebbe opportuna una campagna di sensibilizzazione da parte dello Stato affinché si istruiscano verificatori e verificati su qual è l’unica e vera applicazione che consente la verifica del Green Pass considerata la sua finalità di garantire la sicurezza pubblica.
Vedo estremamente complesso trovare un modo per garantire al verificato che il verificatore stia effettivamente usando l’app VerificaC19 e non qualche altra soluzione potenzialmente pericolosa.
Ma stiamo tralasciando qualcosa? Beh, si, diverse cose in effetti. Una cosa in particolare ritengo degna di nota: quando si sviluppa qualsiasi cosa si parte sempre da altro codice già scritto. Un produttore di automobili non reinventa la ruota ogni volta ma acquisterà una fornitura di ruote. Allo stesso modo l’implementazione degli algoritmi che decodificano e verificano l’autenticità del messaggio del Green Pass sono “forniti” da soggetti terzi.
Perché questo potrebbe inficiare la sicurezza del sistema? I motivi sono diversi, proviamo ad elencarne alcuni:
- non è raro che, anche a distanza di tempo, qualcuno identifichi delle vulnerabilità nelle implementazioni di alcuni algoritmi e che quindi venga scoperto un modo per generare certificati falsi anche se ad oggi non c’è evidenza che questo sia possibile;
- In relazione al punto precedente, gli standard utilizzati non sono proprio di uso comune (mi riferisco a COSE e CBOR per i più tecnici) e le relative implementazioni per i linguaggi con cui sono scritte le app sono poco mature e potenzialmente poco testate rispetto a standard più comuni le cui implementazioni sono molto più mature;
- questi soggetti terzi da cui si è partiti per costruire l’app potrebbero subire attacchi e qualcuno potrebbe modificare quel codice per introdurre delle vulnerabilità. Sono ormai tanti i casi in cui è il fornitore che subisce un attacco ad abbattere la sicurezza di un’altra organizzazione (supply chain attack). Mi sono preso la libertà di verificare alcune librerie di codice utilizzate ed è interessante notare come fossero progetti quasi abbandonati prima che l’Europa decidesse di usarli;
- infine, non ci sono evidenze che questi soggetti abbiano accordi tali per cui siano obbligati a manutenere, aggiornare o risolvere eventuali problemi anche relativi alla sicurezza. Nel caso in cui emergesse un problema in uno di questi pacchetti software, chi si occupa di provi rimedio?
Un altro aspetto spesso sottovalutato quando si parla di sicurezza è il dispositivo stesso! Anche se avessimo messo un diamante in una cassaforte non ci sogneremmo mai di lasciare la cassaforte in mezzo ad una strada incustodita e alla mercè di tutti.
A prescindere dalle misure che può adottare l’app VerificaC19, andrebbe considerata la sicurezza del dispositivo su cui la eseguiamo.
Conclusione
Il sistema Green Pass è teoricamente solido ma l’implementazione, la manutenzione e, al solito, il “fattore umano” possono rendere il sistema debole nella pratica.
Ad oggi l’unico vero problema da un punto di vista meramente tecnico-informatico è dato da come vengono custodite le chiavi private dai vari ministeri in quanto le chiavi private sono l’unico elemento che serve per poter generare certificati falsi.