ministero-salute / it-dgc-verificaC19-android

VerificaC19 is the official Italian customization of the EU Digital COVID Certificate Verifier App for the Android Operating System
https://www.dgc.gov.it
Apache License 2.0
101 stars 54 forks source link

Scaricamento database in app #173

Closed jumpjack closed 3 years ago

jumpjack commented 3 years ago

Non ho capito una cosa di questa app: ogni giorno scarica l'intero database di 200 milioni di abitanti europei, per determinare se un QR è valido? oppure invia il qrcode al server, e questo risponde con la validita'? Nei QR dei testati non vedo date di scadenza, come anche in quelli dei vaccinati; solo quelli dei guariti contengono il dato della scadenza.

enricomiletto commented 3 years ago

I certificati COVID in Europa sono basati su un sistema abbastanza decentralizzato. Non è necessario un database europeo dei vaccinati e in teoria non sarebbero neanche necessario un'anagrafe vaccinati/testati/guariti a livello dei singoli stati membri per il corretto funzionamento dei certificati COVID. Questo è sia per motivi di privacy (non sarebbe probabilmente molto popolare tra i cittadini la creazione di un database a livello europeo dei vaccinati/testati/guariti) ma anche per motivi tecnici (come tu stesso sottolinei sarebbe difficile scaricare su ogni app di verifica centinaia di milioni di certificati).

Il funzionamento dei certifcati COVID è invece basato sull'uso delle firme digitali (it.wikipedia.org/wiki/Firma_digitale). In modo simile al quale io posso mandati un PDF firmato ad es con ArubaSign (o attraverso un'altra autorità di certificazione) e tu puoi verificare con certezza che sono stato io il vero firmatario, ogni paese (in alcuni paesi non è fatto a livello nazionale ma da autorità locali) può firmare digitalmente i certificati COVID da esso emessi e chiunque abbia la chiave pubblica [^1] del rispettivo paese(/autorità locale) puo verificare che il certificato è stato veramente firmato da tale paese.

Questa lista delle chiave pubbliche dei diversi paesi è pubblica (puoi ad esempio vederla qui https://de.dscg.ubirch.com/trustList/DSC/ ) ed è quello che l'app VerificaC19 si scarica ogni 24h (le chiavi pubbliche non cambiano ogni giorno, ma un paese potrebbe deciderne di aggiungerne una nuona) e ciò basta per effettuare la verifica.

Quindi i dati del certificato [^2] sono salvati direttamente all'interno del codice QR che l'app legge assieme alla firma apposta dallo stato che ha emesso il certificato COIVD e l'app verifica che la firma è autentica grazie alla chiave pubblica che si è scaricata.

Per quanto riguarda la questione delle date, dato che è presente sul certificato la data e ora di emissione del certificato l'app di verifica controlla semplicemente se è passato un'anno (per i vaccini) o 48h/72h (per i test) dal momento dell'emissione per controllare se è ancora valido il certificato. La mancanza della data di scadenza per questi certificati permette anche di avere la flessibilità da parte degli stati di prolungare il periodo di durata (almeno per i vaccini) senza dover riemettre nuovi certificati per la stessa persona.

Spero di essere stato utile.

PS: sono un privato cittadino, non sono affiliato a Sogei o al Ministero della Salute. Se ho scritto qualcosa di errato vi prego di lasciare un commento

[^1]: se ti interessa informati sulla crittografia a chiave pubblica, è un concetto molto importante ed alla base di gran parte della sicurezza online

[^2]: nome, cognome, data di nascita, data di emissione, tipo di certificato (vaccino/test/guarigione), marca del vaccino/marca del test ...

jumpjack commented 3 years ago

c'è qualcosa che non torna: se oggi ho in tasca un greenpaas valido, ma mi fanno un tampone che risulta positivo, il vecchio greenpass resta valido?!? È statico, e non viene confrontaton con niente, l'app controlla solo se la firma, valida per milioni di altri greenpass, è valida. Oltretutto se è un greenpass da vaccinazione, potrebbe restare valido ancora per mesi, anche se sono positivo! O no? Che roba complicata.

enricomiletto commented 3 years ago

il vecchio greenpass resta valido?!?

Si, resta valido. (https://www.wired.it/attualita/tech/2021/08/13/green-pass-revoca-positivita-covid/)

Teoricamente si potrebbe comunque implementare un sistema di revoca facendo l'uso di una lista di certificati COVID revocati (ogni certificato ha il suo Unique Identifier) che si sincronizza assieme alla lista delle public keys. Il sistema svizzero (anche loro hanno il certificato UE) fa esattamente questo.

Su questo tema si è anche parlato lungamente nella issue #103

Oltretutto se è un greenpass da vaccinazione, potrebbe restare valido ancora per mesi, anche se sono positivo!

Vero, anche se il problema si presenta solo nel periodo di positività, dopo il quale è giusto che il certificato sia valido.

Enrico204 commented 3 years ago

Notare che "green pass" non è il nome ufficiale. Il vero nome è "Certificazione Verde", oppure in inglese "Digital Green Certificate".

Come già detto da @enricomiletto , nella issue #103 c'è scritto chiaramente che l'obiettivo è quello di creare un certificato di avvenuta vaccinazione, non un pass per entrare. Dunque, in teoria non ha senso revocare un certificato di avvenuta vaccinazione all'infezione, perché il virus non "elimina" la vaccinazione.

Dopodiché, c'è stato chiaramente un problema di comunicazione tra governo, giornalisti e la popolazione (sfociato in un DPCM in cui si allude alla possibilità di revocare il DGC).

enricomiletto commented 3 years ago

@jumpjack se la domanda originale è stata risposta e non ti restano dubbi, direi che è forse opportuno chiudere questa issue. Che ne pensi?

jumpjack commented 3 years ago

per me ok.