Een biertje met vrienden in een café, genieten van een theatervoorstelling, concert of sportwedstrijd en zelfs toiletbezoek als je op een terras zit. Het kan alleen nog met een geldig coronatoegangsbewijs in de vorm van een QR-code. Ben je gevaccineerd, recent getest of heb je een herstelbewijs? Dan kun je die QR-code oproepen in de CoronaCheck app op je smartphone. De QR-code thuis printen of per post thuisgestuurd krijgen kan ook.
QR-codes zijn niet nieuw. Ze worden de laatste jaren wel steeds vaker gebruikt op toegangsbewijzen en bij het internetbankieren. En door de coronapandemie zijn de pixelige zwart-wit vierkantjes definitief doorgebroken. In de vorm van dat coronatoegangsbewijs, maar ook om het contact in café en restaurants te beperken door digitaal bestellen en betalen via het scannen van een QR-code.
Hoe werken deze Quick Response (snelle reactie) codes? En welke informatie zit er verborgen in de CoronaCheck-code?
Barcodes
„Technisch gezien zijn QR-codes hetzelfde als streepjes- of barcodes; het zijn beide manieren om informatie om te zetten in iets dat eenvoudig uitgelezen kan worden”, zegt André Smulders van onderzoeksorganisatie TNO. „Bij een barcode worden de streepjes in de lengterichting gescand met een laser. Bij een QR-code leest de camera van je telefoon zowel horizontaal als verticaal de zwarte en witte pixels. De streepjes en pixels worden vervolgens omgezet in informatie die een applicatie (app) of computerprogramma begrijpt.” Bij de streepjescode staan de strepen voor cijfers. Die cijfercode codeert voor een product waar in de kassa de juiste prijs aan gekoppeld is. Barcodes kunnen maar twintig tot hooguit veertig tekens (letters en cijfers) bevatten.
De QR-code is een uitbreiding op de streepjescode. Het werd in 1994 bedacht door Masahiro Hara die bij het Japanse auto-onderdelenbedrijf Denso Wave werkte. Daar hadden dozen met onderdelen soms wel tien barcodes die een voor een gescand moesten worden. Geïnspireerd door het bordspel Go, waarbij zwarte en witte stenen op een vierkant bord met twee keer negentien lijnen gelegd worden, bedacht Hara een tweedimensionale code die in twee richtingen gelezen kan worden. Door dat patroon van zwarte en witte pixels, kan een QR-code veel meer informatie bevatten dan een streepjescode. Bij Denso Wave hoefden de werknemers voortaan nog maar één code te scannen.
Hoe handig ook, de QR-code had een hobbelige start. Tien jaar geleden kwam de smartphone met camera op en kon iedereen de pixelige vierkantjes scannen. Bedrijven en adverteerders sprongen daar gretig op in waardoor QR-codes – die vooral naar websites verwezen – overal verschenen: op bushokjes, flyers, verpakkingen en zelfs grafstenen. Het werd een gimmick, waardoor steeds minder mensen ze scanden.
Volwassener
Inmiddels is de techniek volwassener en heeft het zijn plek gevonden. De meeste telefooncamera’s hebben nu een ingebouwde QR-scanner en de codes worden specifieker ingezet, bijvoorbeeld voor coronatoegangsbewijzen, maar ook bij banktransacties en op rijbewijzen. „Het is een trend die je bij meer opkomende technieken ziet”, zegt Ivo Jansch, die betrokken was bij de ontwikkeling van de CoronaCheck app. „Eerst wordt het voor van alles toegepast, dan volgt een dipje omdat men er moe van wordt en zich afvraagt wat we ermee moeten. En tenslotte belandt het in een stabiele fase waarbij de techniek gebruikt wordt voor echt nuttige toepassingen.”
„Een QR-code kan tot drie kilobyte aan informatie bevatten”, vertelt Jansch. Dat kan een tekst zijn van een paar honderd woorden, maar een QR-code kan ook andere digitale informatie bevatten, zoals de URL van de website van een bedrijf of een foto. Er bestaan inmiddels veertig verschillende versies van de QR-code, oplopend in het aantal pixels. In versie 40 – een vierkant van 177 bij 177 pixels – kan je de meeste informatie kwijt, maar die is ook het lastigst te scannen. Daarvoor heb je een duidelijke weergave en een goede camera nodig.
„Voor de CoronaCheck gebruiken we een versie rond 25”, vertelt Peter Boncz, hoogleraar bij het Centrum Wiskunde & Informatica (CWI) en ook betrokken bij de ontwikkeling van de CoronaCheck. „Die kan ongeveer 1,2 tot 2 kilobyte aan informatie bevatten. Dan werkt het tonen en scannen ervan ook met oudere telefoons.”
Om een QR-code te maken, wordt de digitale informatie die de code moet bevatten via een speciale coderingsmethode omgezet in een patroon van pixels. Dat gebeurt niet een op een. „Er wordt een foutcorrectie ingebouwd”, vertelt Jansch. „Simpel gezegd zit de informatie twee keer opgeslagen in de QR-code.” Daardoor kun je de informatie nog steeds terughalen als een deel van de pixels beschadigd is, bijvoorbeeld doordat de QR-code op een verfrommeld papiertje staat of op een telefoonscherm waar een barst in zit. „Uit een QR-code kan je nog steeds alle gegevens halen als tot 30 procent van de pixels onleesbaar is”, zegt Jansch. Sommige bedrijven gebruiken die foutcorrectie om in het midden van QR-codes hun logo te zetten. „Dat is een risico, want er mag dan minder misgaan met de overige pixels.”
In drie hoeken
Naast informatie en foutcorrectie is een deel van de QR-pixels gereserveerd voor extra, ondersteunde informatie. In drie van de hoeken zie je bijvoorbeeld altijd een vierkantje met een blokje erin. Hiermee herkent de camera dat het een QR-code is en wat de uitlijning en oriëntatie zijn; dus wat boven en onder is en wat links en rechts. QR-codes kun je daarom probleemloos ondersteboven en schuin scannen. Bij grote QR-codes, met meer pixels, zijn er extra oriëntatiepunten. Verder zijn er een aantal pixels, vlakbij de drie grote oriëntatiepunten, die bijvoorbeeld aan je telefoon vertellen om welke QR-code versie het gaat en welke foutcorrectietechniek is toegepast.
En hoe zit het met de coronatoegangsbewijzen? Wat zit, naast de ondersteunde informatie, in die QR-codes verborgen? „Het doel bij de Nederlandse CoronaCheck is om zo min mogelijk privacy gevoelige informatie in de QR-code te hebben”, vertelt Boncz. „De QR-code verraadt bijvoorbeeld niet waarom iemand een groen vinkje krijgt. Er staat niet in of dat komt door vaccinaties, een negatieve test of een herstelbewijs.” De enige informatie in de Nederlandse CoronaCheck-code is óf je een groen vinkje krijgt, hoe lang de code geldig is, wat je initialen zijn en twee elementen van je geboortedag – zoals de dag en de maand. Dit is nodig om zeker te zijn dat de QR-code bij jou hoort. Daarom moet je naast de CoronaCheck identificatie tonen. „Soms wordt er informatie weggelaten, bijvoorbeeld als je initialen weinig voorkomen”, vertelt Jansch.
„Dat is anders bij de Europese QR-code (Digital Green Certificate), die je ook kunt genereren met de CoronaCheck-app”, vervolgt Jansch. „Daar staat meer informatie in, bijvoorbeeld of je getest, hersteld of gevaccineerd bent en wanneer dat was. Dat is nodig omdat de regels per land kunnen verschillen. Soms krijg je tien dagen na het vaccin een geldig coronatoegangsbewijs terwijl een ander land veertien dagen aanhoudt.”
„En om vervalsing te voorkomen worden de CoronaCheck-codes voorzien van een digitale handtekening”, voegt Boncz toe. Alleen gezondheidsautoriteiten zoals de GGD krijgen die digitale sleutel zodat ze kunnen vastleggen of je gevaccineerd, getest of hersteld bent. Een tweede sleutel, die nodig is om de coronatoegangsbewijzen uit te lezen, is wel voor iedereen toegankelijk. Dat heeft als voordeel dat horeca en theaters geen speciale scanapparatuur hoeven aan te schaffen, maar simpelweg een app kunnen downloaden. Iedereen met een camera kan de informatie uit de QR-code lezen, bijvoorbeeld met de CoronaCheck Scanner app die je kan downloaden om de Nederlandse CoronaCheck-codes uit te lezen. Zo zou je zelfs bij een huisfeestje coronatoegangsbewijzen kunnen controleren.