Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book
Aplikacje mobilne mające powiadamiać o kontakcie z osobą zarażoną COVID-19. Jak to wygląda w różnych krajach?
Pamiętajmy, że wszystko w temacie „appek COVID” zmienia się bardzo dynamicznie. Jednym z problemów które rozwiązują appki to fakt, że ludzie zarażają zanim jeszcze pojawią się objawy (niektórzy zupełnie nie mają objawów albo są one bardzo skąpe). Czyli spotykałeś się z całkiem zdrową osobą, która już infekowała – skąd masz więc wiedzieć że mogłeś być eksponowany? Właśnie z appki (na marginesie być może tutaj będą i inne rozwiązania – np. super czułe testy).
W zasadzie wszystkie rozwiązania bazujące na analizie bliskiego kontaktu z chorym, opierają się o Bluetooth (BLE). Zbierają więcej lub mniej danych, przechowują dane głównie lokalnie lub głównie na serwerach. Mają też różne podejście do prywatności czy bezpieczeństwa.
Po pierwsze mamy tutaj różne koncepcje (frameworki / protokoły): PACT, Covid-Watch, DP-3T (chyba mój faworyt) czy Bluetrace. Istnieją też bardzo ogólne koncepcje (Pan-European Privacy-Preserving Proximity Tracing – ciekawe podejście europejskie, choć np. nie precyzujące do końca jeszcze czy system klasy scentralizowanej czy zdecentralizowanej).
Po drugie możemy mieć różne implementacje tego samego frameworku – i to w tym miejscu mogą pojawić się podatności (np. podatna appka przez, którą atakujący mogą potencjalnie dostać się do naszego telefonu, rozszerzenia appki które niby „implementują” dany standard ale jednak dokładają coś od siebie. Duże problemy mogą też mieć miejsce w backendzie – np. ktoś klasycznymi podatnościami webowymi uzyskuje pełen dostęp do serwera).
Większość rozwiązań sprowadza się do wymiany komunikatów przez Bluetootha, przy jednoczesnym mierzeniu siły sygnału oraz czasu ekspozycji. Z drugiej strony następuje kontakt ze służbami medycznymi (które potwierdzają że ktoś jest chory) i dalej rozpropagowanie informacji do osób, które mogły być eksponowane. W taki obrazkowy sposób tłumaczy to projekt DP-3T:
No dobrze, po tym wstępie zobaczmy na kilka różnych krajów, które w nieco inny sposób podeszły do wyboru rozwiązania na którym bazować będzie „narodowy system”. Będzie też kilka słów o koncepcji Google / Apple.
Szwajcaria / Austria / Estonia
Wdrażany projekt ma bazować na DP-3T (Decentralized Privacy-Preserving Proximity Tracing) – projekcie rozwijanym przez międzynarodową ekipę. Jak czytamy na stronie projektu:
This repository contains a proposal for a secure and decentralized privacy-preserving proximity tracing system. Its goal is to simplify and accelerate the process of identifying people who have been in contact with an infected person, thus providing a technological foundation to help slow the spread of the SARS-CoV-2 virus. The system aims to minimise privacy and security risks for individuals and communities and guarantee the highest level of data protection.
Ważnym elementem zawartym w projekcie są dokumentacje np. zawierające analizę ryzyka i to w szerokim kontekście samego zagadnienia systemów mających na celu pewne namierzanie użytkowników w kontekście bliskiego kontaktu z pewnym obiektem czy osobą. Rozważane są tu np. takie scenariusze:
- Ktoś celowo rozpyla fałszywe informacje o zakażeniach siejąc chaos (wystarczy odpowiednio mocny nadajnik BLE ?)
- Zakłócanie komunikacji od zakażonych
- Namierzanie zakażonych (np. po adresie MAC) i samodzielna ich geolokalizacja
- Zagrożenia wynikające z komunikacji appki z backendem (np. ujawnienie szczegółowych informacji o zakażonym)
- Dostęp do backendu przez służby (niekoniecznie medyczne), crackerów, czy nieostrożnych adminów.
Istotne spostrzeżenie – różne klasy systemów będą miały różne ryzyka (np. systemy zbierające dane lokalnie vs. systemy wysyłające całość na serwer). Jak widzicie dokument nie jest przygotowany tylko dla systemu DT-3T; to bardziej ogólne podejście próbujące uchwycić całość zagadnienia:
Co ciekawe, twórcy DP-3T wskazują projekt Apple/Google (o którym nieco więcej za moment) jako inspirujący się wczesną wersją projektu DP-3T. Wskazując też możliwości podniesienia bezpieczeństwa rozwiązania; w tym zachęcają do wykonania zewnętrznego testu bezpieczeństwa:
Their proposal is very similar to our early proposal named „Low-cost decentralized proximity tracing”. (…)
But, we also strongly believe that Apple and Google should adopt our subsequent enhancements, detailed in later versions of our white paper, which increase user privacy. We also strongly encourage both companies to allow an external audit of their code to ensure its functionality corresponds to its specification.
Dobra, jak poznać szczegóły działania DP-3T ? Zachęcamy na początek do zapoznania się z… komiksem.
Projekt udostępnia też przykładowe implementacje appek (Andorid & iOS) oraz backendu. Appka może wyglądać np. tak:
Warto też zapoznać się z FAQ – gdzie są m.in. wskazane pewne subtelne rozróżnienia. Np. kwestia dlaczego system klasyfikowany jest jako zdecentralizowany, choć posiada backend serwerowy?
Austria już udostępniła swoją appkę – co więcej, teraz czas na prawdziwą gratkę – dostępny jest raport z audytu rozwiązania. Robiono go wprawdzie pod presją czasu (i będzie najprawdopodobniej kontynuowany). Zakres to zarówno kwestie prawne jak i techniczne (obszary testów to kody źródłowe appki na Androida / iOS czy backendy (w tym obsługujący komunikację SMS)).
Appka szwajcarska ma być gotowa 11. maja. DP-3T ma wykorzystać również Estonia.
Singapur
Baza dla wielu krajów (w tym być może Polski). Tutaj został stworzony protokół BlueTrace, a później otwartoźródłowa implementacja OpenTrace. Przynajmniej w deklaracjach mamy tutaj podejście poważnie traktujące prywatność: nie jest przekazywana lokalizacja użytkowników, stosowne logi są przechowywane na telefonie (nie w backendzie), a jeśli zajdzie potrzeba wysłania logów do serwera, użytkownik wprost jest proszony o wyrażenie takiej zgody. Jeśli jej nie da – nic się nie dzieje. W pewnym uproszczeniu lokalnie zbieranych jest kilka podstawowych informacji (model telefonu, czas kontaktu, tymczasowe ID-ki okolicznych użytkowników). Po stronie serwerowej przechowywany jest ID użytkownika (zaszyfrowany kluczem prywatnym serwera) oraz jego numer telefonu:
Your phone will store the temporary IDs from nearby phones, together with information about the nearby phone’s model, Bluetooth signal strength, and time. All this information is stored locally on your phone, and not sent to MOH, unless you are contact traced.
W pewnym stopniu martwić mogą pewne ręczne akcje które trzeba wykonać (np. żeby wykasować swoje „konto” z serwera):
You can also request for your mobile number and User ID to be removed from the server by sending an email to support@tracetogether.gov.sg
Niemcy
Niemcy miały wdrożyć system zcentralizowany, jednak nastąpiła zmiana – będzie decentralizacja. Sama appka (która prawdopodobnie będzie tą oficjalną) bazuje na DP-3T. Ten przypadek wydzieliłem specjalnie – nie ma co upierać się przy jednym rozwiązaniu, jeśli inne jest po prostu lepsze :-)
Kolumbia
Co ciekawe appka używana w tym kraju bazuje na innym rozwiązaniu, które zostało stworzone kilka lat temu w temacie zagrożenia wirusem Zika czy Dengą:
This application is a legacy of another Brazilian application that was used in the 2014 soccer world cup to track epidemics, in those days of Dengue, Zika and Chikunguña and that the National Institute of Health of Colombia tried to implement for those same purposes.
Ciekawostka – za używanie appki dostajemy tu extra 1 GB ruchu (oraz 100 minut rozmów) od operatora telco (finansuje to Rząd; bardziej skrupulatni powiedzą – finansują to wszyscy obywatele).
Dostępna jest też analiza aplikacji pod względem bezpieczeństwa.
Rozwiązanie Google / Apple
Tutaj współpraca jest o tyle sensowna, że umożliwi sprawną wymianę informacji pomiędzy telefonami pracującymi na iOS oraz Androidzie. W maju 2020 firmy mają udostępnić API umożliwiające sprawną współpracę pomiędzy platformami (w tym sprawne tworzenie autorskich aplikacji), w kolejnych miesiącach już pełny „ekosystem” – być może będą to po prostu gotowe aplikacje wbudowane w system operacyjny (Apple będzie miał tu nieco łatwiejszą sytuację – w nowej aktualizacji, którą dostaną wszystkie wspierane urządzenia, pojawią się po prostu nowe funkcje):
Second, in the coming months, Apple and Google will work to enable a broader Bluetooth-based contact tracing platform by building this functionality into the underlying platforms. This is a more robust solution than an API and would allow more individuals to participate, if they choose to opt in, as well as enable interaction with a broader ecosystem of apps and government health authorities.
Same ustawienia związane z tematem mogą wyglądać tak:
Projekt jest zdecentralizowany (większość informacji jest przechowywana na końcowych telefonach), choć zobaczymy jak z tym pójdzie. W pierwszym etapie to lokalna służba zdrowia ma przygotować aplikacje (w tym serwer centralny) – wiele elementów może pójść tutaj „nie tak”. Sama appka też w zasadzie może zbierać i robić wszystko, a korzystać będzie tylko z API dostarczanego przez system operacyjny. Więcej o projekcie można poczytać tutaj.
Korea Południowa
To jeden z przykładów gdzie zastosowano rozwiązania niemal całkowicie „totalne” i to w kraju uznawanym za demokratyczny. Analizowana jest lokalizacja telefonów (od operatorów telco), zapisy z monitoringu CCTV, historia płatności kartami, baza zawierające dane imigrantów. Można powiedzieć – żadna appka nie jest potrzebna, choć tak duża inwazja w prywatność raczej nie spotkała się z gorącym przyjęciem w innych krajach – tym bardziej że szczegółowe informacje dotyczące zakażonych są publikowane bez większej krępacji:
When a person tests positive, their city or district might send out an alert to people living nearby about their movements before being diagnosed. A typical alert can contain the infected person’s age and gender, and a detailed log of their movements down to the minute — in some cases traced using closed-circuit television and credit-card transactions, with the time and names of businesses they visited. In some districts, public information includes which rooms of a building the person was in, when they visited a toilet and whether or not they wore a mask
Play już oferuje 1 GB za 3 dni spędzone w domu
To jest chore; Chyba trzeba zacząć się modlić o zdrowie?
bo modlitwa o Rozum, jest już mocno spóźniona. Jest na nią za – późno.
Brakuje mi tu Wielkiej Brytanii gdzie ma być scentralizowany system i dostęp do danych będzie mieć GCHQ ;-)
Update pewnie niebawem o: UK/Indie/Rosję
„Po stronie serwerowej przechowywany […] jego numer telefonu” – czyli g., nie prywatnosc!
A ta pseudo-uspokajajaca mozliwosc:
„You can also request for your mobile number and User ID to be removed from the server by sending an email to support@tracetogether.gov.sg”
przypomina mi oszukancze „Odeslij list z tematem „NIE” aby wiecej nie dostawac od nas wiadomosci” stosowane (dawniej?) przez spamerow. Jaaaasne…
I jest nawet gorsze, bo w bazie w serwerze nastapi dodatkowo powiazanie numeru telefonu z adresem email jego wlasciciela.
Ktos powie: przeciez mozna napisac z „jednorazowego” adresu… Ale, po pierwsze, chyba wiekszosc ludzi nie jest wystarczajaco ostrozna, aby tak zrobic, a po drugie: przy odrobinie staran sluzb, jednorazowy adres email tez doprowadzi do czlowieka.
A jak inaczej kogoś identyfikować a tym samym powiadamiać?
Z drugiej strony też warto spojrzeć. Zobacz jak można obserwować katastrofę wiedząc, że dane osoby miały kontakt z zarażonym a olewają sprawę i chodzą wszędzie rozsiewając to dalej. Zobacz ilu było uciekinierów ze szpitali bo bali się niewiadomo czego. Zobacz jak ludzie bez sensu masowo zaczęli wracać z wysp do Polski bo wirus, przywożąc go do kraju, mimo, że mogli zostać na miejscu. Ludzie niestety często nie potrafią myśleć racjonalnie.
W ogóle śmieszne jest to,że ludzie którzy tak dużo mówią o prywatności rozmawiają o tym na FB :)
Polska wersja komiksu: https://github.com/DP-3T/documents/blob/master/public_engagement/cartoon/pl/Comic.md
super inicjatywa ale popraw drobne błędy jeśli to Twój projekt – np.: „abyz acząć zarażać”
Dzięki. Poprawki w PR
A jak tego typu programy działając w tle będą się komunikować ze sobą po bluetooth? Do komunikacji potrzebne jest pełne uruchomienie programu.
Jak to będzie to się okaże – a na pewno bardzo dużo pomoże API w OS (Apple & Android) – i tutaj wszystko będzie się działo zapewne niezależnie czy appka jest odpalona czy nie.
W kwestii DP3T polecam zapoznać się także z artykułem https://eprint.iacr.org/2020/399.pdf
Czesi mają już od przeszło tygodnia swoje rozwiązanie – https://www.seznam.cz/zastav-covid/