De voorbije week maakte @JorenVermeersc1 een heel spel over het “Covid Safe Ticket” (CST), waarop @Knack (ja, op mijn vraag) een factcheck deed en Joren “groen licht” gaf. Maarrrr... we gaan die fact check eens fact checken. 😼 1/
Waarschuwing, dit wordt een vrij lang en technisch draadje, waarbij verschillende technische kwetsbaarheden van de QR code aan bod komen. Maar, fundamenteler toont het wat je er allemaal *niet* mee kan doen. 2/
Daarbij dient ook opgemerkt te worden dat @Knack toch wel een erg strategische fout maakt door enkel te rade te gaan bij de makers van de applicatie. Die hebben namelijk een duidelijke incentive om bepaalde problemen geen ruchtbaarheid te geven. 3/
Op dat vlak geven de makers ook een duidelijke hint: “Even belangrijk, volgens Preneel, is dat de app zo snel mogelijk wordt gedumpt, eens de pandemie voorbij is.”
Dat kan er op wijzen dat men weet dat er serieuze issues zijn. 4/

knack.be/nieuws/factche…
Nu wat is die QR code eigenlijk? (Voor de non-nerd uitleg, skip een paar tweets.)

Het is een base45 encoded string van een zlib gecomprimeerd digitaal getekend ondertekend COBR (Concise Binary Object Representation) bestand.

5/
En ja, je kan die zelf “lezen”, bijvoorbeeld met dcc-utils:
npmjs.com/package/dcc-ut…

Dat is interessant, want daardoor kan je controleren of er inderdaad in zit wat Europa zegt dat er in zit:
ec.europa.eu/health/sites/d…
6/
Voor wie zin heeft:
- Gebruik een generisch QR scanner om de inhoud van de code op te halen. Start met “HC1” (Health Certificate 1”)
- sla op in QR.txt
- “npm i dcc-utils”
- voor scriptje uit 👇

7/
#!/usr/bin/env node
require('dcc-utils').DCC.fromRaw(require('fs').readFileSync('QR.txt', 'utf8'))
.then(dcc => console.log(JSON.stringify(dcc._payload, null, 2)))
.catch(console.error)

🤓
8/
Nu, dit geeft ons al een pak informatie. Zo zie je meteen enkele objectieven van het technisch opduiken én de praktische problemen waarmee men te kampen heeft. Zonder dat we nog maar naar de inhoud kijken!

9/
Langs de éne kant is het duidelijk dat men een systeem wou waarbij er *geen* opzoeking in een databank nodig is. Dit is cruciaal om de QR code te begrijpen. De primaire reden kan je ook wel raden:
Het systeem moet werken, ook als er geen internetverbinding beschikbaar is.

10/
Het geeft ook voordelen qua privacy: Iedereen draagt alle nodige informatie zelf mee in de eigen QR code, waardoor er bijvoorbeeld geen privacy-gevoelig info over het internet moet knallen of je een zeer kwetsbare API beschikbaar moet zetten om QR codes op te zoeken.

11/
Maar, om te voorkomen dat je zo'n QR code zelf kan maken is er dus die digitale handtekening. Dat is een cryptografisch bewijs dat de code gemaakt is door een overheid (ja, eender welke) in de EU. En *dat* is ook waar allerlei beperkingen vandaan zullen komen.
12/
(Zijdelingse noot, het is wellicht ook waarom de N-VA het een strategisch interessant dingetje vindt om over te klagen, want Vlaanderen heeft geen cryptografische sleutel, België wel. Politieke oorlog voeren tegen België is hun full-time taak tegenwoordig.)
13/
Maar in feite is de QR code een Europese uitvinding. En dan zie je meteen een zeer zware beperking: Onze overheden (Vlaams of Federaal) kunnen helemaal niet kiezen wat er in de QR code staat. Dat wordt (werd) op EU niveau beslist.
14/
Onderliggend is het ook belangrijk dat die QR codes in *alle* Europese landen werken. Zelfs als je lokaal iets anders zou willen doen, kom je in de problemen zo gauw er iemand uit een ander EU land niet “mee” is in je systeem.
15/
Dus, dat is stelling nummer 1: Nee, de overheid kan niet zomaar eender wat in die QR code steken. Dat maakt ook dat alles wat je met de inhoud wil doen (zwaar) beperkt is door wat er in zit. Dus nee, je kan niet eender welke criteria bedenken.
16/
Een praktisch voorbeeld: De QR code bevat enkel een naam en een geboortedatum qua personalia, maar bijv geen adres of geslacht. Je zou dus geen COVID criteria kunnen maken op basis van waar je woont of welk geslacht je hebt. Maar wél bijv op basis van hoe oud je bent.
17/
Maar zelfs dan nog klopt het verhaaltje van “willekeurige criteria” nog altijd niet, want er zit een enorme technische kwetsbaarheid in de opzet die het mogelijk maken om allerlei zaken te omzeilen. (Nu komen we bij de échte issues.)
18/
Buiten die (extreem beperkte) personalia, bevat de code immers - zoals de naamgeving belooft - medische info. Specifiek kan je er vaccinaties, testen en “herstel na ziekte” in zetten. Als er al criteria ingevoerd worden, zullen die grotendeels hierop gebaseerd moeten zijn.
19/
Ook hier weer: De klacht van Joren wordt wel een beetje absurd als je weet dat Vlaanderen voortdurend “criteria” heeft ingevoerd die je “vrijheid beperken”. Denk aan: verplichte mondkapjes, verplaatsingsverbod, nachtelijk uitgaansverbod in oa Antwerpen, etc.
20/
Alleen, die criteria kan je niet “testen” met de QR code, omdat de nodige informatie er niet voor is. Bijvoorbeeld woonplaats staat er niet in, dus hyper-lokale reisverboden kan je er niet handhaven. Ongetwijfeld hadden authoritaire typetjes dat wel leuk gevonden.
21/
Je kan - in theorie - wel het land waarin het certificaat is uitgegeven gebruiken (misbruiken) om criteria in te voeren. Maar het is niet zo simpel. Het is immers niet de nationaliteit van de eigenaar vd QR code, dus bijvoorbeeld een test in het buitenland kan het ook zijn.
22/
Het is niet moeilijk te zien dat Europa niet wou dat authoritair-nationalistische partijen zoals de N-VA de QR code konden gebruiken om een identitaire agenda door te drukken. (Kan je je voorstellen dat er VLA/BRU/WAL in zou staan? 😱)
23/
Maar dan. 🥁🥁🥁

Zelfs als je criteria invoert, gebaseerd op de medische data, heb je een enorm issue: De software-architecten hebben er duidelijk *geen* rekening mee gehouden dat daar retroactief aan gepoterd zou moeten worden.
24/
Wat is immers het probleem? Herinner je dat de QR code offline moet werken! Dat betekent dat een QR code “bevroren” kan worden in een bepaalde staat.
Concreet kan je bijvoorbeeld een PDF/QR met je (actuele) status downloaden via “Mijn Gezondheid”.
25/
Dat betekent concreet dat de volgende situatie perfect mogelijk is:
- Je bent gevaccineerd en print je “certificaat”. In die QR code staat dus *enkel* dat je gevaccineerd bent.
- Je test positief, maar print geen nieuwe QR code af.
- Je passeert toch voorbij de scanner.
26/
Dat komt omdat de QR scanners dus geen live opzoeking (mogen) doen. Je QR code is in principe “outdated”, maar dat is dus niet te controleren. Overigens werkt dit ook als je een screenshot maakt van je CovidSafe app scherm en dat presenteert aan zo'n scannner.
27/
Vanuit technisch standpunt is de invoering van dat nieuwe criterium dus al zo lek als een zeef. Het is ook *niet* op te lossen, zonder groteske architecturale aanpassingen, die bovendien overal in Europa moeten ingevoerd worden. Succes!
28/
Maar het wordt nog (veel) erger. Herinner je dat de validiteit van het certificaat afhangt van een cryptografische handtekening. Wat als de cryptografische sleutel van eender welk EU land zou lekken? Dan kan je arbitraire QR codes maken, voor eender welke identeit.
29/
Het lijkt er op dat er al minstens twee van zulke cryptografische sleutels in omloop zijn in het hacker-milieu. (Dus er zal ook al wel een zwarte markt voor QR codes zijn.)
Om maar te zeggen, je kan je de paniek bij de developers wel voorstellen.
30/
Maar het probleem gaat dieper. Stel bijvoorbeeld dat men plots zou besluiten dat men een fout heeft gemaakt bij het uitdelen van QR codes in het verleden of men probeert een fundamenteel idee aan te passen (bijv aantal verplichte inentingen per vaccin).
31/
Bij zulke wijzigingen aan het Covid-QR-systeem moet je zulke wijziging ongeveer gelijktijdig in alle “scanner apps” in alle landen invoeren. Want, uiteraard heeft iedereen z'n eigen spul gebouwd. Succes!
32/
Voor sommige wijzigingen, of bijvoorbeeld gelekte cryptografische sleutels, zal men zelfs de sleutels van bepaalde (of alle) landen moeten terugroepen. Probleem is dan wel dat “oude” QR codes en niet-geupdate apps dan voor gigantische problemen zorgt.
33/
Vraag het maar aan Israel, waar men twee weken heeft zitten knoeien owv zo'n wijziging. Kan je je voorstellen hoe dat op EU niveau zou lopen? C.H.A.O.S.
Gevolg? De kostprijs van zo'n wijziging van criteria is gewoon veel te hoog, tenzij in de meest extreme situaties.
34/
Dus, grosso modo kan je écht niet zomaar fundamentele aannames (criteria) wijzigen zonder OF het triviaal te maken om te omzeilen OF voor (internationale) chaos te zorgen.

Dat is waarom die hele statement onzinnig is en ook de fact check van @Knack zo de bal mis slaat.
35/
Maar bon, wellicht was iedereen al na tweet 7 vertrokken. Zulk technisch inzicht interesseert media gewoon niet, I know, I know. Ze willen gewoon een quote van een “autoriteit” en dan is het opgelost.
36/
Hetzelfde is gebeurd bij de fake wachtrij voor vaccins. De overheid heeft toen gewoon psycho-sociale wapens ingezet. Software die fundamenteel liegt tegen gebruikers, om ze een artificieel gevoel van schaarste te bezorgen. Niemand was geïnteresseerd.
37/
Maar bon, mij kan het niet zo veel schelen. Heel dat QR systeem is goed bedoeld, maar technisch zitten er zeer fundamentele problemen in, die je er niet meer uit krijgt.
38/
De QR code is géén (grote) privacy-dreiging en het is al zeker geen potentieel drukkingsmiddel vd overheid, behalve bij totale idioten. (Maar bon, dan weet je eigenlijk al hoe het gaat aflopen.)
39/
Dat was het.

FIN/

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Thomas Goorden 😼

Thomas Goorden 😼 Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @tgoorden

12 Oct
Een draadje over een zijspoor in #PFOSgate waar mijn haren in ieder geval van gaan rechtstaan. Het betreft informatie over PFAS in ons voedsel. *Theoretisch* zou het allemaal openbare informatie moeten zijn, want het betreft uiteraard gewoon data over onze leefomgeving, maar...
Op 20 augustus gaf @KarlVrancken een “voortgangspresentatie” in de PFOS onderzoekscommissie olv @HannesAnaf.
Daarin haalde hij drie onderzoeken naar PFAS in ons voedsel aan, van resp de UAntwerpen, FAVV en ERM. Dit was de overzichtsslide, maar hij besprak ze ook kwalitatief.
De eerste twee onderzoeken werden als geruststellend gepresenteerd:
- "Zeer lage aanwezigheid van PFAS" bij de UA.
- "Voldoet aan kwaliteitseisen FAVV"
Maar het ERM onderzoek is al een stuk... waziger.
Read 16 tweets
11 Oct
OK, eens even een samenvatting maken van de situatie rond milieuhandhaving bij grote bedrijven in Vlaanderen. Wacht even tot een half uur na het eten en ga zitten, want dit wordt een 🤮 draadje.
1/ Er is nauwelijks milieuhandhaving, want die diensten zijn letterlijk kapot bespaard. (Zie getuigenissen onderzoekscommissie.)
2/ Is er milieuhandhaving, dan is de wetgeving meestal totaal uitgehold omdat grote bedrijven hun eigen milieunormen mogen schrijven. (Zie emissienormen in vrijwel elk bedrijf in de haven.)
Read 14 tweets
24 Sep
OK. Even tegen 2x snelheid door de namiddagvergadering rond PFOS gaan en alles aangeven dat verkeerd of misleidend is in de antwoorden.
#PFOSgate
Heeft Zwijndrecht bezorgdheden geuit?
Lantis: "Gemeente was bezorgd over goede praktijk."

Wat ze niet zeggen is dat Lantis aan Zwijndrecht verzekerd heeft dat er geen issue was met het grondwater, terwijl ze al sinds 2017 dat er *ook* verspreiding mogelijk was via lucht.
Met andere woorden, Lantis heeft Zwijndrecht actief misleid over wat er mogelijk in de omgeving gaande was en gerustgesteld met een verhaaltje over grondwater dat wel klopte, maar dus niet relevant was.
Read 18 tweets
22 Sep
Er is nooit goed nieuws over PFAS. Het is een trage, zware vaststelling die sinds halverwege januari door mijn hoofd knarst. Vaak gedacht dat het toch écht niet zo erg kon zijn en telkens met de neus op de feiten geduwd.

De enige opluchting is de duidelijkheid: Dit is corruptie.
Na al die maanden heeft er ook altijd nog letterlijk *niemand* toegegeven dat ze fouten hebben gemaakt. Niemand. Lantis niet, 3M niet, OVAM niet, VITO niet, Vrancken niet, Tytgat niet, partijeen zéker niet, etc etc.

Maar na maanden is ook dit duidelijk: No justice, no peace.
Als we iets van vooruitgang willen na de verschrikkelijke #PFOSgate onthullingene, dan moet er een prijs zijn voor de verantwoordelijken. En dan moeten we aan tafel zitten met @PersAtOVAM @PortofAntwerp FAVV, etc om te praten over de toekomst.
Read 4 tweets
20 Aug
Aangezien de helfies het maar niet kunnen laten om elke keer opnieuw te zeveren over het "Groen" bestuur in Zwijndrecht:

De (waanzinnige) milieuvergunning van 3M is quasi eigenhandig afgeleverd door de eerste deputé van prov Antwerpen, een knalgele N-VA-er.
Ook voor de bemalingsvergunning van Fluxys, hetzelfde verhaal. Zelfde deputé, zelfde laksheid. Daarbij is zelfs een advies van VMM over beperking van PFAS lozingsnormen regelrecht van tafel geveegd, zonder enige logische verklaring.
Dus, als dit politieke zever-argument blijft bovenkomen, moeten we met z'n allen maar eens beginnen wijzen naar de eerste deputé van de provincie Antwerpen, die een LOEIZWARE verantwoordelijkheid draagt in dit dossier. Mét (recent) bewijsmateriaal deze keer hé. 😘
Read 4 tweets
19 Aug
OK en dan vragen jullie jullie misschien af: Hoe kan het dat niemand wist dat er FBSA geproduceerd én geloosd wordt bij 3M Zwijndrecht?

Wel, dit wordt een pijnlijk draadje.
PFAS metingen in het labo van de milieuinspectie worden nog steeds geregeerd door WAC/IV/A/025, een document uit... 2011. Voor de kenners in dit verhaal, dat is de spreekwoordelijke oudheid.

esites.vito.be/sites/reflabos…
Als het niet op deze lijst van 18 moleculen staat, wordt er in feite niet naar gezocht. Wetende dat er honderden PFAS op de markt zijn, mag je je sowieso al zorgen maken.
Read 9 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Thank you for your support!

Follow Us on Twitter!

:(