Fragen? Antworten! Siehe auch: Alternativlos
Ich dachte mir, ich skizziere mal kurz, wie man da rangehen würde, damit ihr versteht, was das Problem ist.
Nehmen wir also mal an, Bluetooth ginge nicht durch Wände und mein Telefon hätte Daten darüber, welche Geräte in den letzten zwei Wochen im Radius von 2m waren.
Aus Datenschutzgründen speichern wir nicht die echte ID des Gerätes, sondern dein Handy generiert für jedes 2m-Radius-Ping ein neues zufälliges Token. Das Token wäre so, dass dein Gerät es wiedererkennen kann, aber sonst niemand es deinem Gerät zuordnen kann. Wenn du jetzt herausfindest, dass du dir Covid eingefangen hast, dann gehst du mit der Liste der Tokens der letzten beiden Wochen zu einem Server und lädst sie dort hoch.
Da haben wir das erste größere Privacy-Problem. Der Server sieht deine IP und dass du infiziert bist. Das ist schonmal nicht gut. Aber nehmen wir mal an, das ginge irgendwie, vielleicht über Tor anonymisiert.
Wie teilt denn der Server jetzt den Betroffenen mit, dass sie ein Problem haben? Die Tokens konnte man ja nicht zuordnen! Das war ja absichtlich so designed.
Also müsste man das so machen, dass alle Geräte periodisch auf dem Server die Liste aller Tokens abholen, und dann gucken, ob sie betroffen waren. Das wären sehr schnell sehr große Downloads. Das ist also auch kacke. Man würde also lieber ein System basteln, indem die Tokens zwar nicht direkt zuordnungsfähig sind, aber wo man bei der Abfrage einen Wert hochlädt, anhand dessen dann der Server die Tokens identifizieren kann, die mich betreffen. Diesen Wert könnte man z.B. im Telefon täglich oder stündlich neu vergeben, um die Zuordnung zu erschweren. Aber wenn wir das machen, dann kann der Server sehen, ob ich infiziert bin, weil die Antwort an mich nicht leer ist.
Das ist also auch Mist. Die offensichtliche Lösung wäre, entweder auch über Tor zu gehen (das kann man bandbreitentechnisch mal vergessen, das würde das Tor-Netz vermutlich krass überfordern). Oder man baut in die Daten der Infizierten auch lauter "blinde" Tokens ein, die "nicht infiziert" heißen, aber das kann nur das Endgerät des Betroffenen sehen. Dann müssten aber alle Endgeräte die ganze Zeit immer zwei Tokens hochladen, das Blind-Token und das echte Token, damit der Server nicht sieht, welches welches ist. Das wäre vom Traffic und dem Speicherplatz für die Datenbank her prohibitiv teuer.
Ich sehe da ehrlich gesagt nicht viel Luft für eine datenschutzrechtlich einwandfreie Lösung.
Da muss man schon echt die Augen zukneifen und viel mit den Händen herumwedeln, um sich von der nervigen Realität abzulenken. Da kommen dann so Modelle wie "Ja gut, aber die IP speichern wir ja nicht, das wäre ja böse. Vertrauen Sie uns. Wir sind die Guten." raus. Oder "wir machen das mit Google/Apple/Vodafone/Telekom, die haben eh eure Daten". Ja super.
Bleiben so Modelle wie "wir zwingen einfach die Telcos dazu, diesen Traffic kostenlos zu machen". Oder "Wir teilen das in zwei Teile auf; Google macht den einen, Apple den anderen. Der Kapitalismus schützt uns dann schon davor, dass die Kartellbildung machen." Mag sein, aber der Kapitalismus schützt uns nicht davor, dass Hacker bei beiden einbrechen oder dass der Staat einfach per Durchsuchungsbeschluss bei beiden die Daten rausträgt und verknüpft.
Update: Eine Krypto-Lösung ist einem Kumpel noch eingefallen. Man macht das so, dass man die Tokens mit einem Pseudozufallszahlengenerator generiert. Die funktionieren so, dass man sie mit einem (hoffentlich tatsächlich echt zufälligen) Zufallswert füttert und der Rest der augespuckten Werte sieht zufällig aus und ist auch praktisch nicht vorhersagbar, wenn man nicht den Initialwert kennt. Das könnte man nutzen, indem man im Infektionsfall den Seed veröffentlicht, und die Tokens bleiben auf den Endgeräten. Dann könnte mein Handy vom Server die Liste der Seeds holen und gucken, ob es damit irgendwelche der gespeicherten Tokens generieren kann. Nachteil: Das wäre eine sehr akkuunfreundliche Operation. Und man müsste die Initialwerte einmal pro Woche neu auswürfeln, damit nicht beliebig lange in die Vergangenheit Treffer rausfallen würden.
Update: Man kann da noch Bandbreite optimieren, z.B. mit einem Bloom-Filter. Wenn ihr davon noch nie gehört habt, googelt das mal. Das zum ersten Mal erklärt bekommen löst in manchen Menschen eine religiöse Erfahrung aus :-)
Da der Hebel so hoch ist (jedes Endgerät im Land einmal pro Tag) ist das aber immer noch sehr viel Traffic.
Update: Liebe Leute, der Punkt dieses Beitrags war nicht, eine Lösung zu finden. Der Punkt war, euch ein Gefühl dafür zu geben, was da so ein paar der Dimensionen des Problemraums sind. Mein Eindruck ist, dass im Moment viele Leute so „mein Cousin kann PHP, der hätte da schon längst was gehackt” drauf sind, und gar nicht verstehen, wieso man da überhaupt so lange berät und wieso da nicht einfach kurz jemand was hackt.