Deze longread verschijnt in de allereerste editie van ons e-magazine, en is geschreven door Koen Vervloesem, IT-journalist én board member bij Ministry of Privacy. Meer van dit? Word dan lid, en ontvang op geregelde basis ons e-magazine!
De smartphone is niet het goede platform voor contact tracing
Een app die je waarschuwt als je in de buurt van een met het COVID-19 besmette persoon geweest bent. Dat lijkt voor velen de oplossing te zijn om uit de coronacrisis te raken. Maar het concept rammelt aan alle kanten. Als je dan toch technologie wilt inzetten voor contact tracing, doe het dan goed: gebruik er geen smartphone voor maar ontwerp een apparaatje specifiek voor deze taak.
Ik volg al sinds begin april de ontwikkelingen van apps voor contact tracing. Daarbij was ik vooral onder de indruk van het werk van DP-3T, afkorting van Decentralized Privacy-Preserving Proximity Tracing: gedecentraliseerd, opensource en de ontwikkelaars verwelkomden vanaf het begin al discussies in hun GitHub-project en bleken zelf een groot respect voor privacy te hebben.
Het was duidelijk dat overheden hun zinnen hadden gezet op een corona-app, ook in België. Ik ben niet overtuigd van het nut van zo’n app. Maar als er dan toch een moet komen, dan het liefst een die het systeem van DP-3T volgt.
Hoe werkt zo’n app?
Een app die het protocol van DP-3T implementeert, werkt ruwweg als volgt. Via Bluetooth stuurt je smartphone continu een code uit, die regelmatig verandert. Ook anderen met dezelfde app sturen continu zo’n code uit. Je app luistert naar die codes van personen bij je in de buurt en houdt die 14 dagen bij.
Als je nu ziek bent, ga je naar de dokter voor een test. Als je positief test voor COVID-19, scan je bij de dokter een QR-code met je app. De codes die jouw app de laatste 14 dagen uitgestuurd heeft, worden naar een centrale server gestuurd. De app van iemand anders controleert deze lijst met ‘geïnfecteerde’ codes regelmatig. Als meerdere van deze codes voorkomen in de lijst met codes die de app van deze persoon in de laatste 14 dagen gezien heeft, krijgt die een waarschuwing dat hij zelf mogelijk besmet is. Dan kan die persoon bijvoorbeeld thuis blijven om verdere verspreiding te voorkomen.
Omdat de codes zo vaak veranderen, en opgeslagen blijven op je eigen smartphone, blijft je privacy beschermd. De onderzoekers hebben een ingenieus algoritme ontwikkeld waardoor er zo weinig mogelijk data over je gedeeld wordt met de centrale server. In ieder geval blijft je locatie geheim: er wordt op geen enkele manier van geolokalisatie gebruikgemaakt.
DP-3T
Een factor 1000 verschil
Dat werkt in theorie. Maar al vanaf het begin was duidelijk dat de uitwerking van DP-3T in een smartphone-app met haken en ogen aan elkaar hing. We gaan hier even al voorbij aan de vraag of het met Bluetooth wel mogelijk is om betrouwbaar de nabijheid tot andere personen te bepalen op basis van de gemeten signaalsterkte, want dat is niet zo vanzelfsprekend.
Het probleem met smartphones is dat er zoveel verschillende modellen bestaan. Zo varieert de signaalsterkte van Bluetooth afhankelijk van de chipset, batterij en het ontwerp van de antenne tot een factor 1000, blijkt uit de whitepaper van BlueTrace, de contact tracing app uit Singapore. De afstandsberekening van een app voor contact tracing moet dus gekalibreerd worden voor elk model smartphone.
Weinig transparant besturingssysteem
Een tweede probleem was dat zo’n app continu toegang tot Bluetooth moet hebben om zijn codes uit te sturen. Vooral voor iPhones was dat problematisch, omdat een iOS-app niet op de achtergrond kon luisteren naar Bluetooth-signalen. Het gevolg? Een iOS-app voor contact tracing werkte alleen als je continu de app open had en je scherm aan. Op Android-telefoons bleek de batterij dan weer snel leeg te lopen door de app.
Android en iOS dienden dus in het besturingssysteem zelf ondersteuning te krijgen om apps voor contact tracing goed te doen werken. Overheden en ontwikkelaars van apps klopten bij Google en Apple aan, en beide bedrijven sloegen de handen in elkaar om de Exposure Notification API te ontwikkelen. Daarmee losten ze de praktische problemen op waarmee DP-3T te maken kreeg op beide mobiele platforms.
Maar dat introduceerde dan weer fundamentelere problemen. Een analyse van de op DP-3T gebaseerde Zwitserse app SwissCovid door de Franse cryptograaf Serge Vaudenay vorige maand zegt genoeg:
“Although the source code of the app is available, we cannot compile it, run it, and make it work without signing an agreement with Apple or Google. We do not find it compatible with the notion of open source.”
En:
“A big part of the contact tracing protocol (which was originally the DP3T protocol) is implemented by Apple-Google in a part of the system called GAEN. This part has no available source code although the law requires disclosure of the source code of all components of the system.”
Apple en Google hebben zich als redders van de wereld opgeworpen met hun gezamenlijke API, maar door deze zo diep in het besturingssysteem in te bouwen, was er weinig transparantie over wat de code exact doet. Er bleef zo niet veel “open” meer over van het opensource DP-3T-project.
Geen contact tracing zonder verlies van privacy
Onlangs publiceerden onderzoekers van het Trinity College Dublin in Ierland nog een kritische paper Contact Tracing App Privacy: What Data Is Shared By Europe’s GAEN Contact Tracing Apps. Daarin zeggen ze:
“The health authority client app component has generally received considerable public scrutiny, with publication of detailed Data Protection Impact Assessment documents etc, and we recommend that a governance arrangement that imposes a similar level of scrutiny over the Google/Apple component of the GAEN system is urgently needed.”
Ze hebben helemaal gelijk: van de apps zelf zoals de Zwitserse en de Duitse (waarop de Belgische gebaseerd zal worden) is de broncode wel helemaal uitgekamd en weten we ondertussen wat de zwakheden en risico’s zijn. Maar kritieke onderdelen daarvan zitten ondertussen diep in het besturingssysteem verscholen dankzij GAEN (Google/Apple Exposure Notification), en we weten helemaal niet wat daar gebeurt.
Hun paper gaat bovendien in op welke data Google Play Services op Android allemaal doorstuurt. Op Android maakt de GAEN-service immers onderdeel uit van die Google Play Services, en die stuurt heel wat data naar Google, zelfs als je allerlei privacy-instellingen aanvinkt: het IMEI-nummer en serienummer van je telefoon, het serienummer van je simkaart, je telefoonnummer, het MAC-adres van het Wi-Fi-netwerk waarmee je verbonden bent, het e-mailadres van je Google-account en de apps die je draait.
Gebruikers die geen Google Play Services willen omwille van de verregaande informatieverzameling door Google, installeren bijvoorbeeld het opensource Android-gebaseerde besturingssysteem LineageOS met microG. Maar zij kunnen niet van GAEN (en dus van de officiële apps voor contact tracing) gebruikmaken. Willen ze dat wel, dan zijn ze verplicht om er de datahongerige Google Play Services mee te installeren. Hetzelfde probleem hebben nu ook gebruikers van Huawei-smartphones ontdekt: de nieuwe en toekomstige Huawei-smartphones hebben door de Amerikaanse boycot geen toegang tot Google Play Services en dus ook niet tot GAEN. Gaan we al die mensen uitsluiten van contact tracing, een techniek die maar werkt als zoveel mogelijk mensen de app installeren?
Doet de code wat ze belooft?
Pas enkele dagen geleden publiceerden Google en Apple (delen van) hun code:
Je zou nu kunnen zeggen: ok we kunnen deze broncode inkijken en nagaan of er geen beveiligingsfouten en privacyinbreuken in zitten. Maar dat is niet voldoende. Merk op dat in de beschrijving van de repository van Gogogle “snippets of code that show how the Exposure Notifications API works inside the Google Play services layer” staat. Welke “snippets” dat zijn, en wat er niet in de code zit en waarom, dat wordt niet uitgelegd.
Maar nog belangrijker is: hoe weet je zeker dat het deze code is die effectief op je Android-telefoon of iPhone draait? Dat kan met reproduceerbare builds. Dat laatste is ook een van de vereisten van de Chaos Computer Club voor contact tracing apps. Als Google en Apple reproduceerbare builds van hun GAEN-service zouden uitbrengen, zouden wij de code zelf kunnen compileren en het resultaat vergelijken met de service die op onze smartphone draait. Zo kunnen we verifiëren of de code inderdaad doet wat ze belooft en er niet een of ander extra achterpoortje in zit.
Verkeerde instellingen
Daar bleef het allemaal niet bij. Zo heeft de Duitse corona-app miljoenen gebruikers wekenlang niet of te laat gewaarschuwd voor besmettingen omdat de app door een batterijbesparende instelling geen updates kreeg. Deze en alle hierboven besproken problemen hebben één en dezelfde oorzaak: men wil per se contact tracing doen op een algemeen mobiel besturingssysteem, dat hiervoor veel te complex is en daardoor onveilig, een ramp voor je privacy en heel foutgevoelig.
Het is me een raadsel waarom men voor deze aanpak gekozen heeft. Het is veel logischer om voor contact tracing speciaal een Bluetooth-beaconapparaatje te ontwikkelen. Zo’n draagbaar beacon werkt dan exact zoals DP-3T en stuurt continu veranderende codes via Bluetooth rond, maar doet niets anders. Er is dan maar kalibratie van één type apparaat nodig, er draaien geen services op de achtergrond die een inbreuk op je privacy vormen, je kunt eenvoudig de volledige broncode (inclusief de firmware) publiceren, en je kunt de code optimaliseren voor deze ene taak die ze moet uitvoeren, waardoor ze veel betrouwbaarder werkt.
Bluetooth-beacon
Dit is geen nieuwe aanpak: op 17 april al verwees ik op Twitter naar decode-proximity-hw, een project van het Amsterdamse collectief Dyne, dat DP-3T op een specifiek Bluetooth-beaconapparaatje wil ontwikkelen. Het proof-of-concept, ontwikkeld door Daniele Lacamera, werkt op de nRF52 Development Kit, de Arduino NANO 33 IoT en de Pinetime. Maar terwijl er in alle landen geld genoeg blijkt te zijn om mobiele apps te ontwikkelen, slaagt dit project er blijkbaar niet in om financiering te krijgen. Ik informeerde dit weekend bij Denis “Jaromil” Roio van Dyne, en volgens hem werkt het proof-of-concept, maar is er financiering nodig om er mee verder te gaan.
In Singapore, het land dat als eerste ervaring had met het gebruik van een app voor contact tracing (TraceTogether), heeft men ook TraceTogether-beacons ontwikkeld. Die beacons worden verspreid onder ouderen die geen smartphone hebben. Als een gebruiker met zo’n beacon positief test voor COVID-19, moet hij het apparaatje aan het Ministerie van Gezondheid geven. De menselijke contact tracer van het Ministerie leest de logs uit het apparaatje uit om te kijken met wie de persoon in contact is geweest en kan dan met die personen contact opnemen.
Zo’n Bluetooth-beacon kost ruwweg 5 tot 10 euro.
Zo’n Bluetooth-beacon kost ruwweg 5 tot 10 euro. Als je de hele Belgische bevolking van zo’n beacon voorziet, kijk je dus tegen een kostprijs van 50 tot 100 miljoen euro aan. Maar dan heb je wel hardware die geoptimaliseerd is voor zijn taak, in plaats van je er goedkoop vanaf te maken en te hopen dat alle mogelijke smartphones in België die taak er wel bij zullen nemen.
De ontwikkeling van de firmware kost uiteraard ook nog wat en het onderhoud en het in de lucht houden van de serverinfrastructuur ook. De Duitse app heeft 20 miljoen euro gekost om te ontwikkelen en zou met onderhoud en support zo’n 69 miljoen euro kosten. De ontwikkeling van de Belgische app, gebaseerd op de broncode van de Duitse, zou 850.000 euro kosten. Denis Roio verwacht dat er voor de ontwikkeling van de firmware en het hardware-ontwerp voor een Bluetooth-beacon dat DP-3T gebruikt minder dan een miljoen euro nodig is.
Veiliger en betrouwbaarder
Het systeem van Singapore maakt geen gebruik van DP-3T en biedt dus niet de bijbehorende privacygaranties. Maar het maakt duidelijk dat een smartphone-app niet de enige oplossing is. Als je het concept van zo’n gespecialiseerd apparaatje met het gebruik van DP-3T combineert zoals in het proof-of-concept van Dyne, heb je het beste van twee werelden. Als je met gebruik van zo’n beacon dan positief test voor COVID-19, dien je de codes die jouw beacon de laatste 14 dagen uitgestuurd heeft, naar een centrale server te sturen. Dat kan met een eenvoudige app op je smartphone, die de codes op een veilige manier via usb of Bluetooth vanaf je beacon inleest en dan doorstuurt.
Het is dus niet zo dat er met gebruik van een beacon geen app meer nodig is. Het is de bedoeling dat je de hele dag met je beacon rondloopt en ’s avonds de codes die je beacon heeft opgevangen inleest in de app. Die app downloadt dan ook de codes van geïnfecteerde personen van de centrale server en zal die vergelijken met de codes van je beacon om je dan een waarschuwing te geven of je zelf mogelijk besmet bent. Je zou dit zelfs in een programma voor Windows, macOS of Linux kunnen doen als je niet graag mobiele apps gebruikt.
De app is dan alleen nog maar verantwoordelijk voor data uitlezen en doorsturen. Alle taken die in de huidige contact tracing apps voor problemen zorgen, gebeuren in een speciaal daarvoor ontwikkeld apparaatje, het beacon. Dat is daardoor minder complex, eenvoudiger om te onderhouden, veiliger, beter voor je privacy en betrouwbaarder. Als we contact tracing willen doen lukken om COVID-19 in te dammen, hebben we juist die eigenschappen nodig.
–
Dit stuk werd geschreven door Koen Vervloesem, freelance IT-journalist én board member van Ministry of Privacy. Meer stukken van zijn hand kan je lezen op zijn website. Wil je meer diepgravende stukken zoals dit? Word dan lid (160 leden gingen je al voor!) & ontvang op geregelde basis ons e-magazine.