Ein technischer Einblick in die Kontaktverfolgungs-App NHS COVID-19

Veröffentlicht Aktualisierte
Cover image for: Ein technischer Einblick in die Kontaktverfolgungs-App NHS COVID-19

Die Beta-Version zur Kontaktverfolgung von NHS COVID-19 ist jetzt Open Source für iOS und Android , zusammen mit einigen Dokumentationen . Im Anschluss an unseren Beitrag „ Am Leben bleiben “ haben wir uns eingehend mit dem Quellcode befasst. Es ist angenehm überraschend, dass es unter MIT lizenziert ist, was auf ein NHSX-Engagement für Transparenz und Qualität hinweist.

In den letzten zwei Tagen haben einige Ingenieure die App überprüft, um herauszufinden, ob - und wie! - Es kann am Leben bleiben. CoreBluetooth dies zu verstehen, muss das relevante CoreBluetooth Framework CoreBluetooth als die meisten Entwickler. Es ist kein Framework, mit dem sich Ingenieure normalerweise befassen müssen.

Ziemlich früh haben wir entdeckt und berichtet, wie der Trick für Android-Geräte funktioniert. Heute Abend teilen wir nur, was unter iOS passiert. Lassen Sie uns durchgehen.

Erster Start

Beim ersten Start PUT die App eine PUT Anfrage an https://api.svc-covid19.nhs.uk/api/devices/registrations mit einem Aktivierungscode, einem Push-Benachrichtigungstoken und der ersten Hälfte des vom Benutzer eingegebenen Postleitzahl. Als Antwort antwortet der Server mit einer linkingId , die in den Einstellungen der App gespeichert ist. Die App fordert erwartungsgemäß auch Push-Benachrichtigungen und Bluetooth-Berechtigungen an. Es werden keine Standortberechtigungen angefordert und die Postleitzahl des Benutzers wird daher nicht überprüft. Es sind nur die ersten Ziffern einer Postleitzahl erforderlich.

Es wurde behauptet, dass die Android-App auf Standortdaten zugreift, da die Eingabeaufforderung für den Bluetooth-API-Zugriff auf Android-Geräten anscheinend nach Standortberechtigungen fragt. Wir haben dies jedoch gestern entlarvt: Dies ist eine Folge davon, wie Android Anfragen nach Bluetooth-Berechtigungen verwaltet .

Auf Android am Leben bleiben

Das Verhindern, dass eine App im Hintergrund schläft, ist unter Android trivial, da die Standard-APIs diese Funktionalität unterstützen und Ingenieuren einen einfachen Zugriff auf Bluetooth-Hardware ermöglichen.

Unter iOS ist die Geschichte jedoch nicht ganz so einfach. Wenn Apps unter iOS im Hintergrund ausgeführt werden, ist ihre Funktionalität erheblich eingeschränkt. Dies ist auch bei CoreBluetooth der Fall , dem Apple-Framework, mit dem Entwickler auf Bluetooth zugreifen können. Dies erschwert es der App erheblich, iPhones zu erkennen, die möglicherweise im Hintergrundmodus ausgeführt werden. Wir haben mit einer Reihe von iOS-Geräten getestet, die über mehrere Stunden allein gelassen wurden, und festgestellt, dass Abfragen seltener stattfanden, die Geräte jedoch weiterhin über Nacht kommunizierten.

Verwenden von Android zum Aufwecken von iPhones

Gestern haben wir auch berichtet, dass iOS-Apps im Hintergrund weiterhin Bluetooth-Werbung senden, jedoch auf eine andere Art und Weise, die für Apple spezifisch ist. Wir waren der Meinung, dass die NHSX / Pivotal-Ingenieure dies rückentwickelt und die Android-App unterstützt haben. Wir können bestätigen, dass dies der Fall ist, und ihre technischen Details dazu finden Sie hier . Dies bedeutet, dass Android-Geräte nicht nur iOS-Geräte im Hintergrund halten können, sondern auch ein „schlafendes“ iOS-Gerät aktivieren können, unabhängig davon, wie lange es im Hintergrund gespeichert wurde.

Was bedeutet das? Damit die App funktioniert, muss sich ein iPhone ziemlich oft in Reichweite eines Android-Geräts befinden, damit es Keepalives senden kann, um sich selbst im Hintergrund zu halten. Das allein ist vielleicht keine praktikable Lösung, aber ...

Verwenden von iOS-Geräten zum Aufwecken… anderer iOS-Geräte

Im gestrigen Beitrag " Staying Alive " haben wir berichtet, dass wir der Meinung sind, dass die iOS-App "Keepalives" verwendet, um Hintergrundbeschränkungen zu umgehen. Nach Prüfung des Quellcodes der iOS-App kamen wir zu dem Schluss, dass dies tatsächlich der Fall ist. Wie genau funktionieren sie?

Einfach ausgedrückt ist ein Keepalive - in diesem Zusammenhang - eine Idee, die sich die Entwickler der App ausgedacht haben: Es ist eine Benachrichtigung, die zwischen zwei iOS-Geräten gesendet wird, auf denen die App ausgeführt wird, um die Verbindung zwischen den Geräten aufrechtzuerhalten. Das Interessante daran ist, dass es auch dazu führt, dass die App wesentlich länger wach bleibt. Wenn ein Gerät ein Keepalive erhält, ermöglicht iOS der App, wach zu bleiben, um zusätzliche Verarbeitungen durchzuführen.

Aus praktischer Sicht bedeutet dies, dass die App ihren lebendigen Zustand beibehalten kann, da sie sich in der Nähe anderer Geräte befindet. In gewissem Sinne ist dies das Grundprinzip des COVID-19-Rückverfolgungsprojekts: Auch ohne diesen technischen Trick muss eine kritische Masse von Benutzern die Rückverfolgungs-App ausführen, um ein gutes Ergebnis für die öffentliche Sicherheit zu erzielen.

Unabhängig davon schläft die App nicht sofort ein und wechselt im Hintergrund in einen angehaltenen Zustand. Es stellt sich daher die Frage, ob die meisten Benutzer über genügend iOS- oder Android-Geräte verfügen, um die Problemumgehungen zu ermöglichen. Wir sind der Ansicht, dass dies wahrscheinlich ist, und dies umso mehr für Benutzer, die sich häufiger in besiedelten Gebieten befinden. Bluetooth hat eine anständige effektive Reichweite.

Einige Beobachter haben vorgeschlagen, dass die App aufgrund der Fähigkeit, stille Benachrichtigungen zu erhalten, diese Funktionen verwendet, um sich aus der Ferne aufzuwecken. Diese Funktionen werden jedoch lediglich verwendet, um den Benutzer darüber zu informieren, ob er sich in der Nähe von Personen befunden hat, die COVID-19 unter Vertrag genommen haben. Die App verwendet auch lokale Benachrichtigungen, die erkennen, wann die App vom System beendet wird, und Benutzer anweisen, die App erneut zu öffnen. Eine ähnliche Benachrichtigung wird verwendet, wenn der Benutzer Bluetooth deaktiviert.

Aidan Fitzpatrick, CEO von Reincubate, sagt:

Ja, das kommende Apple ExposureNotification Framework in iOS 13.5 macht diese Keepalives überflüssig. Es ist jedoch erwähnenswert, dass:

  • iOS 13.5 wurde nicht veröffentlicht und ist möglicherweise einige Wochen lang nicht verfügbar
  • Vor gestern hatte die letzte Beta- Version von iOS 13.5 eine große Sicherheitslücke , was darauf hindeutet, dass in den Entwicklungsteams von Apple schwere Anstrengungen unternommen werden
  • Sobald es veröffentlicht ist, wird es wahrscheinlich Monate dauern, bis die Mehrheit der iOS-Benutzer es installiert hat (ungewöhnlich kann die entsprechende Android-Einführung schneller sein ).
  • Ältere iOS-Geräte - wie das iPhone 6 - können iOS 13 nicht ausführen und können die Apple-Technik nicht verwenden
  • Es gibt keinen Grund, warum die NHS COVID-19-App in Zukunft nicht automatisch auf das Apple-Framework umsteigen kann - oder sogar beide Mechanismen doppelt ausführen kann

Die App wird immer effektiver, je mehr Menschen sie nutzen, und der Vorteil der Masseneinführung wird in diesem Sinne einen Schwungradeffekt erzeugen. Die australische COVIDSafe-App hatte Probleme, da sie das Erkennen von iOS-Geräten im Hintergrund von einem Android-Gerät nicht unterstützte und nicht über diesen cleveren Keepalive-Mechanismus von iOS zu iOS verfügte.

Es ist wichtig zu überlegen, unter welchen Umständen eine solche Technologie angemessen eingesetzt werden kann. Wenn die Kontaktverfolgung erfolgreich Leben rettet, welche Kriterien sollten dahingehend bewertet werden, ob sie für zukünftige Krankheiten angewendet wird? Gibt es ein Argument dafür, dass diese Technologie nach der Festlegung des Präzedenzfalls zur Bekämpfung bereits bestehender Infektionskrankheiten eingesetzt werden könnte? Es ist absehbar, dass verschiedene Gesellschaften die Kompromisse unterschiedlich bewerten.

Datenschutz

Während das Verfassen einer detaillierten Analyse der Mathematik hinter dem Protokoll für diesen Beitrag etwas außerhalb des Rahmens liegt, haben wir uns die Datenschutzbestimmungen angesehen. Die App scheint sich strikt an das von der NCSC veröffentlichte Papier zu halten. Wir können bestätigen, dass keine Schlüsseldaten das Gerät des Benutzers verlassen, bis sie Symptome melden, und erst dann die anonymisierten Schlüssel von Geräten, die sich in unmittelbarer Nähe befanden, um das Gerät zu verlassen. Die erste Hälfte der vom Benutzer eingegebenen Postleitzahl wird im Rahmen des Registrierungsdienstes an die API gesendet.

Letztendlich deutet der Code darauf hin, dass die Verwendung der App nur ein geringes technisches Datenschutzrisiko darstellt, bis ein Benutzer Symptome meldet und den NHS kontaktiert, um einen Test zu arrangieren. Zu diesem Zeitpunkt würde das Testergebnis vom NHS verwaltet, obwohl dies mit oder ohne App nicht anders ist. Wenn jedoch mehrere Benutzer in Kontakt kommen, Symptome melden und Tests unter Verwendung der von der App bereitgestellten Kennung arrangieren, können sie möglicherweise zentral miteinander verknüpft werden oder nicht. Das ist eine Back-End-Frage, und wie NHSX in seinem App-Datenschutzbericht feststellt, ist Code in dieser Hinsicht die Wahrheit .

Schutz vor falschen Berichten

Da das Back-End des Systems nicht aus Open-Source-Quellen stammt, kann dies nicht bestätigt werden. Es scheint jedoch, dass keine Push-Benachrichtigungen an andere Geräte gesendet werden, bis die Bürger positiv auf COVID-19 getestet haben. Sobald ein Benutzer Symptome meldet, erhält er einen Referenzcode, mit dem er einen Test buchen kann. (Dieser Code entspricht zufällig der linkingId wir im Registrierungsabschnitt beschrieben haben.)

Bemerkungen (1)

The termination notification seems unreliable in my testing of the production app. Might be that the app sometimes terminates before the notification has been scheduled.

They probably need to always have one scheduled a few minutes ahead and keep updating it further into the future on a timer while the app is running. That way when the app dies or is killed the notification is already scheduled.


Können wir diesen Artikel verbessern?

Wir hören gerne von Nutzern: Warum schicken Sie uns nicht eine E-Mail, schreiben Sie einen Kommentar oder tweeten Sie @reincubate?

© 2008 - 2020 Reincubate Ltd. Alle Rechte vorbehalten. Registriert in England und Wales #5189175, VAT GB151788978. Reincubate und Camo sind Marken. Datenschutz-Bestimmungen & Begriffe. Wir empfehlen die Multi-Faktor-Authentifizierung. Mit Liebe in London gebaut.