De Tweede en Eerste Kamer stemmen in de komende tijd over een wetsvoorstel om '2G' in CoronaCheck mogelijk te maken. Daarmee kan CoronaCheck Scanner worden ingesteld om geen vinkje te tonen als iemand wil binnenkomen met een negatief testbewijs. Hoe werkt dat?
Demissionair minister Hugo de Jonge van Volksgezondheid heeft een wijziging van de Wet Publieke Gezondheid naar de Tweede Kamer gestuurd ter beoordeling. Dat is de wet die het gebruik van CoronaCheck mogelijk maakt. Daarin zit een grote wijziging. De minister wil het mogelijk maken om te werken met '2G' in plaats van het huidige '3G'.
:strip_exif()/i/2004802538.jpeg?f=imagenormal)
Dit heeft niets te maken met netwerkstandaarden. Dat is goed om te weten, want voor kenners van mobiele netwerken is het raar om te horen dat 1G echt beter werkt dan 3G bijvoorbeeld. Het heeft wel te maken met de voorwaarden voor toegang. Momenteel gebruiken we in Nederland CoronaCheck met 3G: je krijgt toegang als je gevaccineerd, genezen of negatief getest bent. Met 2G vervalt de mogelijkheid om te testen: je krijgt dan alleen toegang als je gevaccineerd of genezen bent. De optie van 1G betekent dat iedereen moet testen, ongeacht vaccinatiestatus.
Dit artikel gaat niet over de ethische kwesties rondom CoronaCheck. Veel politici én veel mensen hebben vragen bij het gebruik van CoronaCheck met 3G en zeker met 2G. Dit artikel gaat wel over de implementatie van 2G. Dat doen we op basis van de memorie van toelichting van het wetsvoorstel.
De huidige werking
Even terug naar hoe CoronaCheck nu werkt. Als gebruiker log je in met DigiD, waarna je bij de GGD of een testaanbieder een bewijs krijgt. Dat kan dus gaan om een vaccinatiebewijs, herstelbewijs of testbewijs. De app maakt vervolgens een QR-code aan, met daarin een paar gegevens: initialen, geboortedag en eventueel geboortemaand. Er staat in de QR-code niet of je bent gevaccineerd, genezen of getest. Daar staat een digitale handtekening bij die is gemaakt met Signature with Efficient Protocols, een methode van cryptografen Jan Camenisch en Anna Lysyanskaya.
Als je toegang wil tot een plek waar gecontroleerd wordt met CoronaCheck, dan kan iemand die QR-code scannen met de CoronaCheck Scanner-app. Die is niet geheim: hij staat gewoon in de App Store en Play Store. Zowel CoronaCheck als de Scanner-app werken offline, zodat er geen rijen komen als er een internetstoring is. Er zit geen database achter: het scannen gebeurt lokaal en resultaten worden niet opgeslagen of doorgeseind naar een server.
Na het scannen krijgt degene die checkt een scherm met daarin de gegevens die in de QR-code staan. Die zijn te controleren met behulp van een identiteitsbewijs. Daardoor weet degene die checkt dat degene van wie hij de code heeft gescand waarschijnlijk degene is die voor hem staat. Dat is om fraude met codes te voorkomen. De controleur moet in de app zeggen dat de gegevens kloppen en krijgt vervolgens een groen vinkje of rood kruis te zien.
De QR-code is elke paar minuten net anders om tracking tegen te gaan. Zo kun je met een valse scanner dus niet mensen volgen, omdat die codes niet te koppelen zijn. Dat zou wel kunnen met de papieren code, die er is voor mensen die dat verkiezen. Die wijzigt uiteraard niet en is uit te printen vanaf coronacheck.nl. De papieren versie is momenteel een jaar geldig.
Wat er gaat veranderen
Wat er precies gaat veranderen, staat in de memorie van toelichting bij het voorstel voor de wetswijziging. Een memorie van toelichting is een tekst, waarin uitleg staat over het hoe en waarom van de wetswijziging. Het gaat dus niet om de tekst van de wet zelf.
Ten eerste mag 2G niet overal waar 3G mag. De variant met 2G mag alleen bij cultuur, evenementen en horeca. CoronaCheck gebruiken met 2G mag niet bij jeugdactiviteiten, sport, in onderwijs, op de werkvloer en in niet-essentiële winkels. In essentiële winkels mag CoronaCheck sowieso helemaal niet worden gebruikt.
Voor gebruikers verandert er niks. CoronaCheck blijft werken zoals nu en de app blijft er hetzelfde uitzien. Ook de papieren QR-codes op basis van vaccinatie of herstel hoeven niet te wijzigen. Het enige dat wijzigt is de QR-code op basis van negatieve testen. Die krijgen een attribuut mee om te duiden dat het gaat om een negatieve test.
:strip_exif()/i/2004802508.jpeg?f=thumblarge)
Daarbij gaat het om V3 van de QR-codes, zo blijkt op GitHub. In de code is te zien dat het verschil tussen V2 en V3 is dat V3 een 'category'-attribuut bevat. Daarin kan een waarde staan die zegt dat het gaat om een negatieve test.
Niet alle QR-codes hoeven van het V3-type te zijn, want scanners kunnen compatibel blijven met de V2-codes die afgelopen maanden zijn aangemaakt na vaccinaties of een doorgemaakte besmetting. Testbewijzen zijn maar 24 uur geldig en dus zijn er binnen een dag geen V2-testbewijzen meer in omloop.
Aan de kant van de Scanner verandert er wel heel wat. Er komt een instelling om de Scanner te laten wisselen tussen 2G en 3G. Vervolgens geeft de Scanner bij 2G een rood kruis weer als gebruikers een testbewijs hebben.
:strip_exif()/i/2004802532.jpeg?f=imagenormal)
Een belangrijk detail is daarbij dat de scanner niet vertelt of het gaat om een negatief testbewijs of een andere reden waarom de QR-code niet geldig is. "De CoronaCheck Scanner-app geeft geen informatie waarom een rood scherm wordt getoond. Het kan betekenen dat de QR-code niet aan een van de toegangsregels voldoet, omdat de digitale handtekening ongeldig is of omdat de QR-code geblokkeerd is."
Nu zul je denken: je kan als controleur switchen tussen 2G en 3G en zo toch zien dat het gaat om een negatief testbewijs. Daar is aan gedacht. "Er zal een vertraging worden ingebouwd in de CoronaCheck Scanner-app. Dit voorkomt dat snel kan worden gewisseld tussen het scannen in 2G- en 3G-stand. Dit voorkomt dat snel een andere stand wordt gekozen om in geval van rood scannen in 2G-stand te controleren of de bezoeker inderdaad getest is." Die functie zit er ook in om bij een controle te voorkomen dat mensen de Scanner snel naar 2G zetten als dat vereist is, terwijl ze met 3G aan het scannen waren.
Ook krijgt de scanner een logbestand om te zien of de afgelopen dertig minuten is gescand met 2G of 3G. Daarin staat het tijdstip van de scans. "Het resultaat van de scans wordt niet gelogd", aldus de memorie van toelichting. Ook dat is om betere controle mogelijk te maken.
Hoe zie je of je gescand bent met een Scanner die op 2G staat? De kleur: waar 3G een groen vinkje geeft, zal het bij 2G gaan om een blauwpaars vinkje. "Met de afwijkende kleur wordt zowel aan de controleur als de bezoeker een visuele indicatie gegeven met welke toegangsregels wordt gescand."

De Scanner-app blijft met 2G vermoedelijk werken met buitenlandse QR-codes zoals dat nu gebeurt. Die bevatten al informatie over of het gaat om vaccinatie, herstel of test, dus dat kan de Scanner er makkelijk uithalen. Omgekeerd verandert er voor Nederlandse gebruikers van CoronaCheck niks als ze hun internationale QR-code moeten laten zien. Die blijft functioneren zoals nu.
Tot slot
Deze discussie staat helemaal los van die ándere discussie rond CoronaCheck, namelijk of gevaccineerden na een positieve test het groene vinkje tijdelijk moeten kunnen verliezen. Dat is nu niet zo en het zou een aanpassing betekenen aan de hele techniek achter CoronaCheck. De Tweede Kamer heeft een motie aangenomen dat gevaccineerden hun groene vinkje tijdelijk kwijt moeten raken. Het ministerie van VWS onderzoekt momenteel hoe dat het beste geïmplementeerd kan worden.
Er is nog geen besluit gevallen. De wetswijziging is vooralsnog een voorstel en de Tweede en Eerste Kamer moeten er nog mee instemmen. Dat is vooralsnog geen zekerheid, want alleen VVD en D66 hebben hun expliciete steun uitgesproken voor de 2G-optie in CoronaCheck. Andere partijen twijfelen nog of zijn faliekant tegen.
De bedoeling is natuurlijk dat als 2G komt, de apps dan snel klaar zijn voor gebruik van de Scanner in combinatie met 2G. De ontwikkeling binnen CoronaCheck gaat over het algemeen vrij rap en de basis is al gelegd: de V3-versie van de QR-codes met het vereiste attribuut is al gemaakt.
Het streven blijft natuurlijk dat CoronaCheck op zo kort mogelijke termijn overbodig is, omdat corona uit onze samenleving is verdwenen. De discussie over de app zal nog wel even voortduren, of het vinkje nu groen of blauwpaars is.