In meinem letzten Blog habe ich versprochen, Sie über die Corona-Warn-App auf dem Laufenden zu halten, die wir zusammen mit der Deutschen Telekom und rund 25 Partnern entwickeln, darunter auch Start-Ups, die Input und Expertise bereitstellen. Insgesamt haben wir bedeutende Fortschritte erzielt.
Wir haben inzwischen schon das Scoping-Dokument, das Architekturdokument, den Code of Conduct sowie den ersten Quellcode für die App auf GitHub veröffentlicht Wir aktualisieren die Website kontinuierlich, um alle über den Projektverlauf zu informieren und damit jeder Feedback geben und/oder mitarbeiten kann. Denn für uns ist ein offener, agiler und transparenter Entwicklungsprozess äußerst wichtig.
Lassen Sie mich nochmal auf das WARUM eingehen: Warum entwickeln wir die Corona-Warn-App?
- Wir möchten den Zeitraum zwischen einem Test, bei dem jemand positiv getestet wird (Index Case), und dem Zeitpunkt, zu dem er darüber informiert wird, so kurz wie möglich halten. So wird das Infektionsrisiko für andere so gering wie möglich gehalten. Wie wir das schaffen? Indem wir den kompletten Ablauf vom Arzt bis zum Labor und zurück zum Patienten digitalisieren.
- Bürger sollen schnellstmöglich benachrichtigt werden, falls sie sich über einen bestimmten Zeitraum in der Nähe eines Infizierten aufgehalten haben.
- Wir möchten so viele Bürger wie möglich informieren, falls sie sich in der Nähe eines Infizierten aufgehalten haben (z.B. im Zug oder Restaurant), diesen aber nicht persönlich kennen.
Über allem steht dabei unser Ziel, so wenig personenbezogene Daten wie möglich offenzulegen.
Das folgende Schaubild zeigt zusätzliche Informationen zur technischen Grundlage und den Prozessen der Corona-Warn-App. Dies umfasst Details zur App selbst, dem Verifizierungsprozess der Laborergebnisse und der Runtime-Umgebung in der Open Telekom Cloud dargestellt.
Corona-Warn-App
Die Corona-Warn-App wird nativ für die Betriebssysteme iOS von Apple und Android von Google entwickelt. Für Geräte von Apple wird eine Betriebssystemversion von mindestens 13.5 benötigt, damit das System funktioniert. Für Android werden die Funktionen in die Google-Play-Dienste integriert, sodass nur diese spezielle Anwendung aktualisiert werden muss, damit sie funktionieren. Zur Entwicklung der App verwenden wir das Exposure Notification Framework (ENF), das von Apple und Google bereitgestellt wird. Es verwendet die Technologie Bluetooth Low Energy (BLE). Dabei fungieren die einzelnen Smartphones als Beacons, die ständig ihre eigene temporäre ID aussenden, während sie gleichzeitig nach IDs anderer Smartphones suchen. Um vollständigen Datenschutz zu gewährleisten und die Verfolgung von Bewegungsmustern der Nutzer zu verhindern, sind die gesendeten IDs nur temporär und ändern sich alle 15 Minuten. Neue IDs werden von einem Schlüssel abgeleitet, der sich täglich durch ein kryptografisches Verfahren ändert.
Die gesammelten IDs anderer Nutzer werden lokal auf jedem einzelnen Smartphone innerhalb des ENF gespeichert. Wenn Nutzer positiv auf SARS-CoV-2 getestet wurden, können sie der App eine Verifizierung ihres positiven Tests zur Verfügung stellen, indem sie die Option auswählen, dass ihre eigenen pseudonymisierten IDs geteilt werden. Als Folge werden ihre temporären Schlüssel der letzten 14 Tage auf einen Server hochgeladen. Auf diesem Server werden alle Schlüssel der Personen, die positiv getestet wurden, aggregiert. Diese Liste aller IDs wird dann allen betroffenen Smartphones, auf denen die Corona-Warn-App installiert ist, zur Verfügung gestellt. Um damit Millionen von Smartphones erreichen zu können, werden diese aggregierten Daten über ein Content Delivery Network (CDN) bereitgestellt.
Nachdem alle positiven Schlüssel auf das Smartphone heruntergeladen wurden, analysiert das ENF, ob eine der vom Smartphone gesammelten IDs mit den IDs einer infizierten Person übereinstimmt. An dieser Stelle möchte ich einen sehr wichtigen Aspekt bezüglich Datenschutz und Sicherheit hervorheben: Personen, die Kontakt mit einer positiv getesteten Person hatten, werden nicht von einer zentralen Instanz informiert, sondern ihr Smartphone ermittelt lokal das Risiko eines erfolgten Kontaktes. Diese Information bleibt auf dem Smartphone des Nutzers und wird nicht aktiv an andere weitergegeben. Ich möchte das noch einmal ganz klar sagen: Niemand kann feststellen, mit wem eine Person Kontakt hatte. Es können keine Informationen zur Nachverfolgung, Verhaltensprofile oder ähnliche Muster zentral erstellt werden.
Verifizierungsprozess für die Labortestergebnisse
Um Missbrauch zu verhindern, müssen die Nutzer zuerst verifizieren, ob sie positiv getestet wurden, bevor sie ihre Schlüssel hochladen können. Durch diese Integration sind die positiven Testergebnisse bereits verifiziert und die Diagnoseschlüssel können direkt hochgeladen werden, nachdem die Nutzer ihr Einverständnis gegeben haben. Wenn das Labor die direkte elektronische Übertragung der Testergebnisse auf das Smartphone der Nutzer nicht unterstützt oder wenn Nutzer sich gegen die elektronische Übertragung ihrer Testergebnisse entschieden haben, ist auch eine manuelle Verifizierung möglich.
Nachfolgend beschreibe ich kurz, wie der Interaktionsfluss im geplanten Verifizierungsprozess für den Nutzer Schritt für Schritt aussieht.
- Schritt 1:Wenn ein Test durchgeführt wird, erhalten die Nutzer einen individuellen QR-Code, der einen Global Unique Identifier (GUID) enthält. Die Nutzer können dann den QR-Code mit der Corona-Warn-App scannen. Wenn der Code gescannt wird, wird ein Webservice-Aufruf (REST) an den Verifizierungsserver gerichtet, der das Smartphone mit den Daten aus dem QR-Code über ein Registrierungs-Token verknüpft. Das Token wird auf dem Server generiert und auf dem Smartphone gespeichert.
- Schritt 2: Die Proben werden zusammen mit einem „Probenbegleitschein“, der einen maschinenlesbaren QR-Code sowie mehrere andere Barcodes (z. B. Labor-ID, Proben-IDs) enthält, zum Labor transportiert.
- Schritt 3: Sobald das Testergebnis vorliegt, überträgt die lokal im Labor laufende Software das Testergebnis zusammen mit dem GUID aus dem QR-Code an das Laborinformationssystem. Im Laborinformationssystem werden der GUID mit Hash und das Testergebnis zusammen gespeichert. Dies wird dem Verifizierungsserver über eine REST-Schnittstelle zur Verfügung gestellt.
- Schritt 4:Nach der Anmeldung für Benachrichtigungen in Schritt 1 richten die Smartphones der Nutzer regelmäßig Anfragen an den Verifizierungsserver, der wiederum beim Laborinformationssystem abfragt, ob Testergebnisse verfügbar sind. Ist dies der Fall, wird der Nutzer informiert. Erst nach dem Öffnen der App wird das Ergebnis zusammen mit Empfehlungen für das weitere Vorgehen angezeigt.
Falls der Test positiv ist, werden die Nutzer gebeten, ihre Schlüssel hochzuladen, damit andere herausfinden können, dass sie Kontakt mit einer infizierten Person hatten. Wenn die Nutzer zustimmen, ruft die App ein Token (TAN), das nur für eine kurze Zeit gültig ist, vom Verifizierungsserver ab. Die TAN wird zusammen mit den Diagnoseschlüsseln der letzten 14 Tage auf den Corona-Warn-App-Server hochgeladen.
Runtime-Umgebung Open Telekom Cloud
Um die Infektionsketten wirkungsvoll zu durchbrechen, ist eine hohe Akzeptanz der App erforderlich. Gemeinsam mit der Bundesregierung, der Deutschen Telekom und unseren Partnern hoffen wir auf eine hohe Anzahl an aktiven Nutzern. Das Backend mit der erforderlichen Bandbreite wird über die Open Telekom Cloud (OTC) zur Verfügung gestellt. Die Server befinden sich in Deutschland. Dies stellt zusammen mit dem Content Delivery Network (CDN) von Telekom sicher, dass der geschätzte Durchsatz und die Zahl der Anfragen bewältigt werden können – auch zu Spitzenzeiten. Und natürlich kommen hierbei auch die zuverlässigen Magenta Security Services aus Deutschland zum Einsatz.
Ich kann nicht oft genug unterstreichen, dass Sicherheit und Datenschutz bei diesem Projekt an vorderster Stelle stehen. Nachfolgend ein Beispiel, wie wir die Datenschutz- und Sicherheitsfunktionen in das Backend integrieren: Um zu vermeiden, dass erkennbare Muster entstehen, sendet die App zufällig Anfragen an das Backend, selbst wenn ein Benutzer nicht positiv getestet wurde. Sie lassen sich serverseitig leicht ignorieren, aber von außen sieht dies genauso aus, wie wenn ein Benutzer ein positives Testergebnis hochgeladen hat. Dies trägt dazu bei, die Privatsphäre der Nutzer zu schützen, die wegen positiver Testergebnisse tatsächlich ihre Diagnoseschlüssel hochladen. Alle von der App verarbeiteten Daten dienen genau zwei Zielen: Einen Nutzer wissen zu lassen, dass er engen Kontakt zu einem infizierten Nutzer hatte, ohne die jeweilige Identität offenzulegen, und Testergebnisse abzurufen. Und dieser Prozess ist unter genauester Einhaltung der DSGVO gut geschützt.
Ich bin fest davon überzeugt, dass wir durch einen offenen, agilen und transparenten Entwicklungsprozess das Vertrauen der Menschen gewinnen und dies wiederum zu einer hohen Akzeptanz der App führt. Wir werden alle von einer App profitieren, die uns warnt, wenn wir uns in der Nähe einer Person befunden haben, die sich nachweislich mit SARS-CoV-2 infiziert hat. Dadurch können wir die Infektionsketten so früh wie möglich durchbrechen, ohne auf unser Recht auf Datenschutz und Sicherheit verzichten zu müssen. Wir werden Sie über unsere Fortschritte in den nächsten Wochen auf dem Laufenden halten. Sie können das Projekt auch auf GitHub verfolgen, um sich über die Fortschritte zu informieren, Feedback zu geben oder daran mitzuarbeiten.
Nun wünsche ich Ihnen weiterhin alles Gute. Bleiben Sie gesund und passen Sie gut auf sich und Ihre Mitmenschen auf!
Weitere Informationen zu den COVID-19-Aktivitäten von Telekom und SAP finden Sie hier:
- Offizielle Seite des Open-Source-Projektes für die Corona-Warn-App
- Podcast: Corona-Warn-App – der digitale Virus-Wachhund
- Themenseite der Bundesregierung zur Corona-Warn-App
- Themenseite der Deutschen Telekom zur Corona-Warn-App
- Die Antwort der SAP auf COVID-19