Smartwatche są z nami od dobrych kilku lat. Analizujemy swoją aktywność fizyczną, badamy sen, odbieramy powiadomienia. Jednak niewiele osób zdaje sobie sprawę, jak mnóstwo informacji o nas jest przesyłane do podmiotów trzecich. Zapraszamy do przeczytania artykułu, w którym analizujemy politykę prywatności oraz kod aplikacji Mi Fit.

Odcinek #15

Ten sam temat poruszamy w najnowszym odcinku podcastu, którego możecie posłuchać tutaj:

Do czego służy aplikacja Mi Fit?

Mi Fit to oficjalna aplikacja dostarczana przez firmę Huami dla popularnych opasek Xiaomi Mi Band oraz zegarków Amazfit. Jej zadaniem jest między innymi monitorowanie aktywności fizycznej, liczenie kroków oraz analiza snu. Ponadto możemy dzięki niej sprawdzić pogodę czy odebrać powiadomienie na swoim zegarku.

Poszukiwania polityki prywatności 🔍

Dotarcie do aktualnej wersji polityki prywatności w języku polskim stanowi nie lada wyczyn. Na stronie producenta próżno szukać odnośników do polityki prywatności w wersjach innych niż angielska bądź chińska. W sklepie Google Play odnośnik do polityki prywatności również kieruje do anglojęzycznej wersji.

Aby móc przeczytać politykę prywatności w języku polskim należy:

  • zainstalować aplikację Mi Fit 🤦‍♂️;
  • przejść do widoku zakładania konta;
  • wybrać region Polska;
  • kliknąć w link polityki prywatności.

Uważam, że powinniśmy móc przeczytać dokument w dogodnej dla nas formie i języku jeszcze przed instalacją aplikacji na naszym urządzeniu.

Polityka prywatności wyświetlona w aplikacji Mi Fit

Czytanie takiego dokumentu na ekranie smartfona nie jest najwygodniejszą opcją. Polityka prywatności jest często pisana zawile i rozwlekle. W tym przypadku zawiera ona 7851 słów, przez co jej przeczytanie może zająć średnio od 59 do 78 minut.

Opierając się na linku do angielskiej wersji dokumentu, postanowiłem znaleźć link do wersji polskiej. W tym celu pobrałem pierwsze 15000 plików z serwera producenta rozpoczynając od adresu https://upload-cdn.huami.com/tposts/1. Następnie przeszukałem katalog z pobranymi plikami pod kątem wystąpienia wybranej frazy w tym przypadku: „24 czerwca 2020 roku”. Wyszukiwanie zwróciło jeden wynik, co pozwoliło ustalić adres docelowego dokumentu.

Analiza polityki prywatności

Śledzenie aktywności internetowej użytkownika

W sekcji dotyczącej rodzajów gromadzonych danych możemy przeczytać:

Możemy automatycznie gromadzić pewne informacje za pośrednictwem naszych stron internetowych, produktów, usług lub innych metod analizy, (...) [takie jak informacje o] stronach odwiedzanych przed i po skorzystaniu z usług, dacie i czasie wizyty, czasie spędzonym na każdej stronie, informacji o klikniętych łączach i stronach przeglądanych w ramach usług oraz innych działaniach podejmowanych w ramach korzystania z usług (...)

Już na samym początku producent informuje nas o możliwości śledzenia naszej historii przeglądania. Tego typu dane można pozyskać np. przez użycie nagłówka HTTP referer.

Logowanie za pomocą kont Mi, WeChat, Google, Facebook

Jeżeli korzystamy z logowania się za pośrednictwem kont podmiotów trzecich, takich jak media społecznościowe, to potencjalnie przekazujemy informacje, których moglibyśmy nie chcieć udostępniać.

Źródło: https://unsplash.com/photos/GL689nIE1Xg

Niektóre serwisy umożliwiają ustawienie preferencji w tym zakresie. Ta polityka nie wskazuje dokładnie, które dane będą przekazane, jeżeli skorzystamy z logowania przez Facebooka, a które przez Google czy WeChat...

Możemy zbierać i wykorzystywać następujące elementy: logowanie do konta przy użyciu danych uwierzytelniających z kont Mi, WeChat, Google lub Facebook (za zgodą Użytkownika), awatary, płeć, adres e-mail, status w mediach społecznościowych, który Użytkownik udostępnia, pseudonimy, relacje rodzinne, strefy czasowe, języki i regiony.

Przykładem dobrych praktyk w tym zakresie jest OLX, który klarownie przedstawia w swojej polityce, jakie dane zostaną mu udostępnione podczas rejestracji konta za pośrednictwem firmy trzeciej. Poniżej zamieszczam fragment na temat Facebooka:

jeśli rejestrujesz się z wykorzystaniem konta Facebook: gromadzimy imię i nazwisko w formie w jakiej występują na Twoim koncie Facebook oraz numer identyfikacyjny (Facebook ID). W sytuacji, gdy w ramach ustawień prywatności aplikacji Facebook (takie ustawienia pojawią się zaraz przed zalogowaniem się do naszego Serwisu), udzielisz swojego pozwolenia, możemy pozyskać również informacje na temat Twojej płci, wieku, identyfikatora email;

Logowanie się za pomocą konta podmiotu trzeciego jest dużo wygodniejsze, ale udostępnia więcej danych niż założenie konta bezpośrednio w aplikacji Mi Fit.

Rejestrowanie naszej lokalizacji

W kontekście rejestrowania lokalizacji producent zaznacza, że może gromadzić informacje o lokalizacji:

Informacje o lokalizacji: W przypadku korzystania przez Użytkownika z usług lub funkcji programu opartych na lokalizacji możemy gromadzić informacje o jego lokalizacji, takie jak informacje GPS, dane dotyczące śledzenia, długość i szerokość geograficzna, za pośrednictwem telefonu komórkowego.

Producent nie wyjaśnia, w jaki sposób informacje o lokalizacji będą powiązane z innymi danymi identyfikującymi użytkownika. Rozwijam ten wątek w sekcji dotyczącej analizy kodu aplikacji.

Przekazywanie danych osobowych spółkom stowarzyszonym oraz partnerom, których nie znamy 💸

Czytając dalej politykę prywatności natknąłem się na sekcję „W jaki sposób są wykorzystywane dane osobowe”:

Gromadzimy, przechowujemy, wykorzystujemy i przetwarzamy dane osobowe w różnych celach biznesowych, w tym w celu świadczenia usług i/lub dostarczania produktów dla Użytkownika, odpowiadania na żądane informacje i spełniania wymogów prawnych z naszej strony zgodnie z obowiązującymi przepisami prawa. Możemy również przetwarzać i ujawniać dane osobowe naszym spółkom stowarzyszonym (działającym w branży komunikacji, mediów społecznościowych, technologii i usług w chmurze) oraz Usługodawcom zewnętrznym dla celów określonych w niniejszej Polityce prywatności.

W całym dokumencie nie ma żadnej informacji o podmiotach trzecich i usługodawcach zewnętrznych, którym Huami może przekazywać nasze dane osobowe. Producent wskazuje, jedynie z jakiego sektora pochodzą podmioty, z którymi współpracuje 😒:

możemy od czasu do czasu ujawniać dane osobowe Użytkownika innym firmom stowarzyszonym z HUAMI (w sektorze komunikacji, mediów społecznościowych, technologii lub chmury).
Do naszych Usługodawców zewnętrznych należą między innymi nasze domy wysyłkowe, dostawcy usług dostawy, firmy telekomunikacyjne, centra danych, urządzenia do przechowywania danych, dostawcy usług obsługi klienta, dostawcy usług reklamowych i marketingowych. Tacy zewnętrzni dostawcy usług będą przetwarzać Twoje dane osobowe w imieniu HUAMI albo dla jednego lub więcej celów wymienionych w niniejszym dokumencie.

Niemniej jednak analizując stronę internetową Huami ciężko wywnioskować, jakie to podmioty, za wyjątkiem samego Xiaomi oraz spółek powiązanych w systemie zwanym Mi Ecosystem:

Udostępnianie innym firmom w Mi Ecosystem HUAMI może ujawniać dane osobowe Użytkownika spółce Xiaomi lub innym spółkom Mi Ecosystem, aby móc dostarczać Użytkownikowi i doskonalić istniejące produkty i usługi (zarówno w zakresie sprzętu, jak i oprogramowania) z Mi Ecosystem

Sprawdziłem, tych spółek jest ponad 90... Taka informacja powinna być umieszczona w polityce prywatności. Użytkownik nie powinien być zmuszany do poszukiwań na własną rękę.

Inne informacje, inne cele... 🙃

Producent postanowił pozostawić sobie furtkę, aby zbierać inne informacje, które wg Huami będą anonimizowane:

Źródło: https://unsplash.com/photos/yBroAF1cN3I
Inne informacje: Możemy również gromadzić inne rodzaje informacji, które nie są w sposób pośredni czy bezpośredni związane z daną osobą i które są agregowane, anonimizowane lub pozbawiane elementów umożliwiających identyfikację.

Szkoda, że nie podano przykładu takich informacji. Nie odpowiedziano również na pytanie: czy pozbawianie elementów umożliwiających identyfikację będzie odbywać się na urządzeniu użytkownika, czy dopiero na serwerach Huami. Takie zabiegi sprawiają, że polityka prywatności nie spełnia swojego podstawowego zadania, czyli informowania użytkowników, jakie dane są zbierane oraz w jakim celu. 🤦‍♂️

Badania i rozwój Możemy wykorzystywać dane osobowe do tworzenia nieidentyfikowalnych informacji, które możemy wykorzystywać samodzielnie lub w połączeniu z informacjami uzyskanymi z innych źródeł, aby pomóc nam w optymalnym dostarczaniu naszych istniejących produktów i usług lub w opracowywaniu nowych produktów i usług.

Zatem możemy się tylko domyślać, że producentowi może chodzić o dane z mediów społecznościowych lub dane wyciągnięte z telefonu. Jeszcze raz podkreślę, że zapis, jakie są to informacje, z jakich źródeł mogą one być pozyskiwane oraz w jakim celu będa przetwarzane powinien zostać zawarty w dokumencie. 🤷

Analiza zdekompilowanego kodu i zachowania aplikacji

Aplikacja wg Play Store waży prawie 130 MB. Jak na aplikację, która ma tylko rejestrować naszą aktywność fizyczną i synchronizować ją z chmurą, to całkiem sporo. Dla porównania open-source'owy Gadgetbridge zajmuje jedyne 5,5 MB, wspomnieliśmy o nim w odcinku podcastu o aplikacjach z F-Droida.

Wymuszony dostęp do lokalizacji

Jeżeli nie zaakceptujemy dostępu do lokalizacji, to nie będziemy w stanie sparować naszego zegarka ze smartfonem poprzez aplikację:

Komunikat informujący o zbieraniu danych o lokalizacji podczas połączenia Bluetooth

Warto wspomnieć, że dla Androida 8 i nowszych da się zaimplementować rozwiązanie, które umożliwi sparowanie urządzenia Bluetooth z naszym smartfonem bez obowiązku włączania geolokalizacji. Niestety aplikacja Mi Fit nawet w nowszych systemach celowo wymusza włączenie geolokalizacji (z uwagi na zdeprecjonowane rozwiązanie Google dotyczące beaconów Bluetooth).

W przypadku niektórych wersji systemu Android i/lub posiadanego zegarka można obejść ten problem poprzez sparowanie urządzenia korzystając z systemowych ustawień Bluetooth.

Ekran systemowych ustawień Bluetooth (Android 10, LineageOS)

Pogoda na nadgarstku ⛈️

Mi Fit umożliwia wysyłanie na zegarek informacji o aktualnej pogodzie. W tym celu wykorzystywana jest lokalizacja naszego smartfona. Sprawdziliśmy, że aplikacja wysyła nie tylko precyzyjną lokalizację, ale także np. informacje o identyfikatorze użytkownika czy posiadanym urządzeniu do serwerów Huami:

https://api-mifit-us2.huami.com/city/search?r=a698f493-xxxx-xxxx-xxxx-a3f962e50a4e&t=1611757133493&deviceSource=25&userid=XXXXXXXX&appid=4281XXXXXXXXXXXX&callid=1611XXXXXXXX&channel=play&country=XC&cv=50392_4.9.0&device=android_28&device_type=android_phone&isGlobal=true&lang=en_XC&latitude=52.2XXXXXXXX&locale=en_XC&longitude=20.9XXXXXX&timezone=Europe%2FWarsaw&v=2.0

Lokalizacja jest tak dokładna, że jesteśmy w stanie wskazać w OpenStreetMap numeru budynku, przy którym się znajdujemy. W odpowiedzi na przesłane dane aplikacja uzyskuje identyfikator miasta i pobiera dla niego pogodę. Identyfikator miasta wskazuje, że Huami korzysta z AccuWeather.

Do wskazania pogody nie potrzebujemy tak precyzyjnej lokalizacji. Pondato aktualizacja pogody nie powinna wymagać przekazywania informacji o naszej lokalizacji do serwerów producenta.

Trackery zaszyte w aplikacji 🕵️

Dzięki serwisowi εxodus możemy sprawdzić, z jakich skryptów śledzących korzysta aplikacja Mi Fit:

Raport Mi Fit w serwisie εxodus

W przypadku Mi Fit dla najnowszej wersji 4.9.0 są to trackery związane z Amap oraz Facebookiem:

  • AutoNavi / Amap – używany do geolokalizacji i wyświetlania map w aplikacji;
  • Facebook Login – używany do logowania się do aplikacji przez konto Facebooka;
  • Facebook Places – używany prawdopodobnie do map w aplikacji;
  • Facebook Share – używany do udostępniania aktywności na Facebooku (w Mi Fit możemy udostępniać informacje do Twittera, jednak nie zostało to zakwalifikowane jako skrypt ślędzący).

W przypadku starszych wersji były też trackery związane z analityką, reklamami od Twittera, Facebooka oraz Google. Więcej o samych trackerach możecie przeczytać tutaj.

Napakowana aplikacja na Androida, która dodatkowo nie jest w 100% natywnym rozwiązaniem

W kodzie aplikacji jest użyty szereg bibliotek, w tym Flutter oraz React Native. Są to dwie konkurencyjne technologie służące do tworzenia aplikacji mobilnych. Jak widać, chińskim inżynierom udało się użyć obu w jednej aplikacji: 👍

Pozostałe biblioteki

W aplikacji znaleźliśmy również biblioteki odpowiedzialne za obróbkę i rozpoznawanie obrazów, jak i bibliotekę do przetwarzania audio/wideo. Są to odpowiednio OpenCV oraz FFmpeg:

Pokaźna liczba bibliotek powoduje, że Mi Fit zajmuje tak wiele...
Udostępnianie swojego osiągnięcia do mediów społecznościowych

Użycie tej pierwszej może wynikać z potrzeby przetwarzania zdjęcia profilowego na telefonie użytkownika czy generowania zrzutu ekranu swoich osiągnięć do social mediów.

Nie wiadomo do końca, w jakim celu została użyta druga biblioteka. Być może jest ona używana do odtwarzania plików wideo️ w aplikacji za pośrednictwem kolejnej zależności – Ijkplayera. Warto tutaj wspomnieć, że aplikacja Mi Fit domyślnie wymaga wielu uprawnień (ponad 40). Jednym z ciekawszych uprawnień jest możliwość nagrywania dźwięku poprzez uzyskanie dostępu do mikrofonu naszego urządzenia. Przypomnę, że do przetwarzania plików audio można wykorzystać bibliotekę FFmpeg. 🪄

Mapy w aplikacji

Aplikacja Mi Fit w trakcie wyświetlania mapy lub rejestrowania śladu GPS korzysta z dodatkowej zależności zwanej Amap, która wg serwisu εxodus jest skryptem śledzącym.

Amap.com, ciekawskim polecamy sprawdzenie jak wygląda Europa :)

Najwidoczniej niektórym deweloperom nie wystarcza korzystanie z dostępnych w systemie usług geolokalizacyjnych, jak Google Maps czy Apple Maps, nie wspominając o OpenStreetMap.

Czy muszę wybrać – smartwatch albo prywatność?

Na szczęście nie – istnieją alternatywy dla aplikacji Mi Fit. My polecamy Gadgetbridge. Jest to aplikacja umożliwiająca sparowanie zegarka z naszym smartfonem od takich producentów jak: Xiaomi, Amzafit, Zepp, Pebble. Pełna lista obsługiwanych urządzeń znajduje się na stronie Gadgetbridge. Aplikacja dla systemu Android jest dostępa w repozytorium F-Droid oraz Google Play Store.

Aplikacja nie wymaga konta. Pozwala ona gromadzić dane o naszych aktywnościach bez potrzeby wysyłania tych informacji do serwerów producenta. Dodatkowo poszerza funkcjonalności dostępne w zegarku, jak np. wysyłanie powiadomień z dowolnej aplikacji, czego Mi Fit nie umożliwia.

Kilka powodów dla, których warto wypróbować Gadgetbridge

Kilkukrotnie wspominaliśmy w naszym podcaście o Gadgetbridge. Poniżej przedstawiam powody, dla których warto skorzystać z tej aplikacji:

  • Gadgetbridge jest darmową aplikacją open-source;
  • Chcesz wykonać kopię zapasową danych z Twojego urządzenia? Proszę bardzo, aplikacja umożliwia wykonywanie cyklicznych kopii zapasowych;
  • Aplikacja nie korzysta z usług podmiotów trzecich (jedynie z OpenWeatherMap w celu wyświetlania pogody, ale domyślnie ta funkcja jest wyłączona);
  • Do wyświetlania mapy wykorzystywany jest zainstalowany provider w telefonie. W przypadku braku usług Google, Gadgetbridge przekazuje zapisaną ścieżkę GPS do dowolnej aplikacji, która wspiera pliki gpx, np. OsmAnd, AAT
  • Niektóre aplikacje nie mają możliwości zgrania plików gpx i wrzucenia ich do dowolnego serwisu pokroju Strava, MapMyRun (dawniej Endomondo), tutaj jest to możliwe!
  • Gadgetbridge umożliwia wyświetlanie na ekranie zegarka powiadomień z dowolnej aplikacji, a nie tylko tych błogosławionych przez Mi Fit;
  • Mamy również możliwość połączenia zegarka bez korzystania z Internetu, konta firmy trzeciej czy lokalizacji GPS;
  • Aplikacja nie ma trackerów – kodu pozwalającego na aktywne szpiegowanie użytkowników;
  • Możemy ustawić niestandardowe akcje pod przyciski urządzenia i ukrywać niepotrzebne dla nas elementy interfejsu (np. AliPay, z którego nie skorzystamy w Polsce);
  • Gadgetbridge zajmuje ekstremalnie mało miejsca w pamięci telefonu.

Uwaga dla posiadaczy Xiaomi Mi Band 4, 5 i nie tylko

Huami (Xiaomi) aktywnie walczy z aplikacjami trzecimi pokroju Gadgetbridge, dlatego w przypadku Mi Band 4 i nowszych wymagane jest skorzystanie z serwisu Huami w celu wygenerowania klucza autoryzującego połączenie z telefonem. Jest to proces jednorazowy i wymaga on zainstalowania na chwilę aplikacji Mi Fit. 😢

Podsumowanie

Polityka prywatności Huami (dostawcy aplikacji Mi Fit) nie spełnia swojej podstawowej funkcji. W wielu miejscach nie definiuje rodzaju zbieranych danych oraz celów. Dokument nie jest wystarczająco szczegółowy, co stanowi pole do dowolnej interpretacji przez producenta.

Pod względem kodu aplikacja jest przeładowana oraz posiada wiele zbędnych elementów, które z jakiegoś powodu pozostają w kodzie. Ponadto, aplikacja w kontekście lokalizacji udostępnia wiele danych umożliwiających identyfikację użytkownika, nie informując o tych powiązaniach w polityce prywatności.

Dla użytkowników Androida proponuję wypróbowanie bezpiecznego i przede wszystkim szanującego prywatność rozwiązania w postaci aplikacji Gadgetbridge.

Co z użytkownikami iOS?

Użytkownicy iPhone'ów mają utrudniony dostęp do instalowania aplikacji spoza AppStore. Otwarte aplikacje alternatywne dla Mi Fit nie istnieją - przede wszystkim z uwagi na brak interoperacyjności ze strony Apple, o której opowiedzieliśmy w naszym pierwszym materiale.

Źródło: https://alternativeto.net/software/mi-fit/?license=opensource&platform=iphone

Co z innymi zegarkami?

Zagraniczny portal Wearable przygotował ciekawe zestawienie polityk prywatności różnych popularnych producentów smartwatchy. Jeżeli korzystacie z Garmina, Apple Watcha czy Samsunga warto przeczytać ciekawostki, do których dotrał Wearable. Zaznaczam, że dokonano tam analizy samej polityki prywatności, tak jak we wspomnianym przez Kubę w podcaście badaniu polityki prywatności aplikacji do monitorowania cykli miesiączkowych wykonanych przez Panoptykon.

Podziękowania dla patronek 🥰

Artykuł powstał przy wsparciu technicznym naszych patronek Patrycji oraz Lauren Liberda, którym serdecznie dziękuję!

Źródła