Android - obrona przed trackingiem i reklamami w aplikacjach mobilnych

Wstęp

Internet stał się poletkiem dla wielu firm, które profilują nieustanie nasz "cyfrowy sposób bycia" nie tylko w przeglądarkach internetowych, ale też w aplikacjach i systemach operacyjnych. W większym lub mniejszym stopniu narażając na powiązanie ze sobą danych lub wycieki danych osobowych i haseł. Czego przykładem może być np. Firebase

Wszystko jest w sprytny sposób zestawiane ze sobą i codziennie jesteśmy bombardowani reklamami (nawet nieświadomie) bazującymi na naszych przyzwyczajeniach, sposobie użytkowania i ogólnie "cyfrowym stylu życia".

Problem w tym, że na komputerach przez lata przyzwyczailiśmy się do takiego stanu rzeczy i często wystarczy nam zwykły ad-block wbudowany w przeglądarkę, nie generuje nam zbytnich opóźnień, a marnowane zasoby sprzętowe łatwiej jest nam zaakceptować w szczególności, gdy posiadamy w miarę nowożytny sprzęt.
Sytuacja ta diametralnie się zmienia w przypadku urządzeń mobilnych działających na baterii. (akumulatorze - dla czepialskich :-) )

Mając już kilkuletniego smartfona/tableta (lub urządzenie z niższej półki) można odczuć spadek wydajności samego urządzenia. (w przypadku różnych producentów w różnym stopniu)
Również zasoby takie jak RAM, CPU, pamięć wewnętrzna nie wydają się z czasem już tak "na zapas". Bateria z biegiem czasu degraduje się i traci swoją pojemność, odczuwamy więc też zauważalnie krótszy czas pracy na baterii nie tylko w samej przeglądarce, ale używając też ulubionych mobilnych aplikacji.

Do niedawna uważałem, że to wyłącznie za sprawą starzejącego się sprzętu i systemu. Moja uwaga skupiła się na to, co codziennie dzieje się w tle w systemie jak i w aplikacjach, a także jak zmieniły się portale internetowe szukające na potęgę finansowania.

Z perspektywy czasu lawinowo wzrosła liczba podmiotów, do których nasze urządzenia wysyłają rozmaite dane. Jest ich cała masa, a "Androidowe" Google Play z którego zazwyczaj instalujemy i aktualizujemy nasze aplikacje w sposób symboliczny tylko informuje o takim stanie rzeczy małym skromnym napisem "Zawiera reklamy".
W istocie wcale nie muszą mieć charakteru reklam, a mogą oznaczać serwisy analizujące masę rzeczy związanych z naszą cyfrową aktywnością, a reklamy mogą być dystrybuowane już niekoniecznie tylko przez samą aplikację, lecz inne bardziej skuteczne kanały dystrybucji przez różne podmioty, korzystające z analityki.
Nietrudno bowiem, by z pozoru "anonimowe" dane stały się nieanonimowe, lub mniej anonimowe w połączeniu wielu wspólnych unikatowych cech naszych poczynań, danych z różnych aplikacji i serwisów, cyfrowych odcisków generowanych na postawie sprzętu lub konfiguracji.

Dla osób, które interesuje temat jak "po nitce do kłębka" można połączyć wszystko kupując dane zanonimizowane polecam przeczytać artykuł.

Być może się mylę, ale zauważam dziwną zależność. Im więcej aplikacja lub portal zbiera danych o nas, o naszych zachowaniach w sieci, im więcej reklam serwuje, tym wartość i jakość samej aplikacji lub treści na portalach jest gorsza. Dwie rzeczy z pozoru niepowiązane okazują się mieć wspólną cechę.

Przejdźmy do obiecanej "blokady", która pozwoli utrzymać prywatność na nieco wyższym poziomie i nie ogranicza się tylko do samej przeglądarki internetowej, lecz systemu i aplikacji.

"Blokada" - opis funkcjonalności

Strona domowa projektu: https://blokada.org/

Jest to darmowa aplikacja Open Source, która filtruje ruch tworząc lokalnie działający VPN omijając tym ograniczenia Androida w kwestii filtrowania ruchu sieciowego.

Jej działanie jest zbliżone do adblocka w przeglądarce, lecz działa poza aplikacjami nie pozwalając na połączenia wskazane na listach jako szkodliwe. Filtrować możemy ruch pochodzący z dowolnej aplikacji i dowolną możemy wykluczyć z reguł filtrowania.

To od nas zależy jakie listy włączymy i co będzie blokowane (reklamy, tracking, koparki kryptowalut, pornografia, adresy malware, inne nieodpowiednie rzeczy), możemy dodawać również własne listy z adresami www, bądź inne gotowe listy z internetu będące w formacie "pliku hosts" (IP<spacja>domena) i rozszerzające możliwości już dostępnych list w samej aplikacji.

Aplikacja rekompensuje częściowo brak dostępu do pliku hosts w Androidzie i NIE wymaga zrootowanego urządzenia. Oferuje również szereg alternatywnych serwerów DNS w formie wygodnej listy do wyboru.

Opcjonalnie możemy skorzystać z wbudowanego VPN "Mój tunel Blokada" ukrywającego IP i lokalizację. Jest to jedyna opcja komercyjna w tej aplikacji, darmowa przez 7-dni. Po okresie próbnym można zapłacić na kilka sposobów (w tym kryptowalutą), przedłużając dostęp do tej opcji i wspomagając przy okazji finansowo twórców aplikacji "Blokada", aby projekt mógł się rozwijać.
Można również skorzystać z możliwości dobrowolnej dotacji.
"Mój tunel Blokada" nie ma wpływu na blokowanie reklam jest tylko dodatkową opcją zwiększającą anonimowość poprzez szyfrowanie i łączenie się przy pomocy bramki z innych lokalizacji niż nasza.

  • Menu główne aplikacji "Blokada" (zrzut ekranu na początku wpisu)

Dostępny jest przełącznik szybkiej aktywacji/dezaktywacji filtrowania.Poniżej jest licznik z ilością elementów, które aplikacja zablokowała od początku filtrowania.
Jeszcze niżej jest przycisk do włączenia i zmiany serwerów DNS. Jest tam gotowa lista serwerów nazw jak, można też dodać swój własny.
Z wartych wymienienia są serwery DNS AdGuarda, w tym AdGuard Family, który filtruje treści nieodpowiednie dla dzieci oraz OpenDNS.

Trzecią opcją jest "Tunel Blokada" o którym wspominałem już wyżej.
Nie próbowałem tej opcji, więc szerzej nie będą się na ten temat rozpisywać.
Jest ona zupełnie dobrowolna.

  • Lista zablokowanych (i przepuszczonych) adresów

Blokada szczegółowo pokazuje nam, co zablokowała, a co zostało przepuszczone. Jednocześnie pozwala na łatwe dodanie adresu do tzw. "czarnej listy" blokowanych.

Do listy możemy dostać się na dwa sposoby. Poprzez przeciągnięcie w lewo na gł. menu aplikacji (widocznych tylko ostatnie 10 wpisów) lub przeciągnięcie w górę > "Blokowanie reklam" > "Log Hostów". W przypadku drugiego sposobu mamy możliwość odsiewania wyników po wpisywanej frazie.

  • Blokowanie reklam

Z tej opcji przejdziemy do informacji o przepuszczonych, bądź zablokowanych adresach, wyboru listy lub list hostów zawierających adresy do blokowania, "Zezwolone hosty" (złe tłumaczenie w aplikacji) - tutaj znajdują się wszystkie adresy, które ręcznie dodamy jako niepodlegające blokadzie, np. błędnie zablokowane.
Następna opcja "Blokowane hosty" - wszystkie ręcznie dodane adresy do zablokowania.

  • Listy Hostów

Jedna z najważniejszych sekcji ustawień. To od niej zależy skuteczność blokowania. Sekcja ta posiada listy reguł, które możemy włączać lub wyłączać:

"Energized Spark" - dla urządzeń z małą ilością RAM będzie odpowiednia. Nie oferuje ona tak wielu filtrów o dobrej skuteczności, ale zapewnia podstawową ochronę.

"YouTube Ad blocker" - pozbędziemy się krótkich reklam z aplikacji YouTube i strony YouTube (w materiałach wideo).

"Coin Blocker" zablokuje nam znane internetowe koparki kryptowalut intensywnie używające procesor i drenujące baterię, gdy trafimy na aplikację lub stronę z taką koparką.

"Xiaomi blocker" i "Samsung blocker" to listy stworzone pod urządzenia tych marek, wycinające większość telemetrii producenta. Urządzenia te stają się dużo mniej "rozmowne". ;)

"Social hosts file" zablokuje serwisy socjalne typu Twitter, Facebook, Instagram i inne. (przydatność jest dyskusyjna, bo pozbawimy się dostępu do tych serwisów, ale dla b. młodych osób w sam raz)

"Adaway" i "Goodbye Ads" to potężny zbiór z adresami do hostów, które profilują, używają telemetrii, wyświetlają reklamy.

"MobileAdsTrackers" zawiera adresy komponentów śledzących różnych aplikacji na Androida zebranych na przestrzeni wielu lat takich jak Firebase, Google Analytics, Facebook Analytics i wiele innych.

"StevensBlack Unified Porn" to lista z adresami do blokowania popularnych serwisów pornograficznych.

Opisy innych dostępne są po angielsku po kliknięciu na nazwę listy z regułami.

  • Aplikacje

Tutaj wykluczymy pojedyncze aplikacje (zarówno te systemowe jak i zainstalowane samemu) ze wszystkich reguł filtrowania np. aplikację banku lub do analizy sieci WiFi.

  • Ustawienia Aplikacji

Tutaj możemy włączyć lub wyłączyć:
powiadomienia, autostart "Blokady", raporty o stanie aplikacji (np. jeżeli niespodziewanie się wyłączy), animacje tła, pozostawić aplikację w tle (np. jeżeli system nam ją ciągle ubija)

  • Ustawienia blokowania reklam

Zawiera łączną listę adresów (zasad) ze wszystkich aktywnych list do blokowania.
Kolejnym jest "Zaawansowane reguły blokowania reklam" po aktywacji respektowane są adresy z symbolami wieloznacznymi np.:
*.jakasstrona.pl
Więc, blokowane w tym przypadku będą np.:
onas.jakasstrona.pl
newsy.jakasstriba.pl

... itd.
Nie polecam tej opcji, ponieważ jedna zła reguła może nam zablokować bardzo wiele przydatnych adresów.

Kolejną funkcją jest "Lista inteligentna" (beta) - bardzo fajna funkcja, jeżeli mamy aktywną większą ilość list blokowania. (działa na zasadzie analizy)
Zmniejsza ona liczbę reguł w filtrach sprawdzając listę żądań i zestawiając ją z regułami list do blokowania. Dzięki temu tworzy się kompaktowa lista zawierająca tylko reguły dla połączeń, które u nas występowały i są regularnie blokowane.
Zmniejsza to w perspektywie czasu użycie RAMu i baterii. Podczas tworzenia inteligentnej (kompaktowej) listy może być zmniejszona skuteczność blokowania. (przez kilka dni)

Możemy również zapisywać logi do pamięci wewnętrznej, zresetować licznik blokady, odświeżyć listę filtrów, ustawić czas odświeżania list, ograniczyć jej pobieranie tylko jeżeli korzystamy z WiFi.

  • O aplikacji

Opis zbędny :)

Instalacja aplikacji "Blokada"

Tutaj instalacja jest nieco utrudniona. Ponieważ oczywiste jest, że aplikacja wchodzi w interesy Google (YouTube Premium, Analytics ...), ponieważ jej funkcjonalnością jest możliwość np. blokowania reklam YouTube po aktywacji odpowiedniej listy reguł.
Oczywiście w katalogu Google Play jest "Blokada Slim", ale posiada ona jedynie możliwość zmiany serwerów DNS ze względu na politykę Google.

Jeżeli mamy aplikację F-droid, możemy przystąpić od razu do instalacji, ponieważ "Blokada" jest dostępna w repozytorium.

W innym przypadku aplikację trzeba pobrać z adresu:
https://blokada.org/#download
(przycisk DOWNLOAD BLOKADA V4.5)

Po pobraniu uruchamiamy plik i zostaniemy ostrzeżeni, że próbujemy instalować oprogramowanie z poza sklepu Google Play (i trochę nastraszeni).Trzeba przejść do oferowanej opcji i zaakceptować możliwość instalacji z plików APK.

Dla różnych smartfonów nieco inaczej to wygląda, więc zdam się na Waszą intuicję.

Android w wersji 8.0 (i nowszy) ma autoryzację dla każdej aplikacji z osobna. Tak, więc jeżeli pobieraliśmy plik APK np. przez mobilną przeglądarkę Chrome to trzeba autoryzować Chrome lub menadżer plików, a następnie uruchomić ręcznie plik APK pobranej aplikacji z któregoś z nich.

Dla bezpieczeństwa po zakończonej instalacji możemy znowu przejść do poprzednich ustawień zabraniających instalację z plików APK.

Użycie RAM, pamięci i baterii przez aplikację "Blokada"

Tutaj sprawa jest zależna od wyboru ilości list i reguł, a także, czy mamy aktywną opcję "Inteligentna lista", która w początkowej fazie potrafi bardziej drenować baterię, ale potem, dzięki liście w kompaktowej formie użycie baterii jest mniejsze.

U mnie użycie baterii przy 9 aktywnych listach i 548732 regułach po paru godzinach używania smartfona wygląda tak:

  • Użycie RAMu i pamięci przez "Blokadę" (przy moich ustawieniach):



Przy minimalnej liście reguł blokowania dla urządzeń z małą ilością RAM udało się zejść do 135MB.

Jak widać nie jest możliwe, żeby odbywało się to bez kosztowo dla zasobów sprzętowych, ale nieporównywalnie więcej baterii schodzi bez filtrowania trackerów i reklam, gdy skrypty mają pożywkę z naszych danych.

Sporo też zależy od ilości ruchu sieciowego generowanego przez nasz system, aplikacje i przeglądarkę.
Im więcej porównywania adresów, które próbują nawiązać połączenie do listy reguł tym więcej pracy dla naszego procesora i co za tym idzie większe użycie baterii. 

Dobreprogramy.pl jako przykład jak nie należy "traktować" urządzeń mobilnych pracujących na baterii

Nawet, gdy "udajemy" (spoffing) urządzenie mobilne zmieniając nagłówek "User-agent" na mobilny (w celu analizy), to ad-block (uBlock Origin) z mocniejszymi listami blokowania pokazuje następujący wynik dla tego portalu:

Jak widać 26 zablokowanych żądań i 3 domeny podłączone z 20 (które się nie połączyły tylko dzięki dodatkom blokującym)

To jeszcze nie koniec, drugie rozszerzenie przechwytuje jeszcze 16 potencjalnych domen, które serwują reklamy zbierają dane o poczynaniach użytkowników (wiele z nich jest do wygooglowania w sieci, czym dokładnie się zajmują):

Nie pokazuję sytuacji, gdzie nawet podstawowy blocker wbudowany w przeglądarkę Firefox jest wyłączony. (z podstawową listą Disconnect), bo wynik byłby jeszcze mniej korzystny.

Dobreprogramy.pl (WP.pl) mogłyby przebranżowić się na piekarnię biorąc pod uwagę liczbę ciasteczek (cookies) poza sesyjnych. W większości mających na celu identyfikować urządzenie. (tworzą się nawet jeżeli jesteśmy niezalogowani)

W jednym z nich jest np. zapisywany parametr "PWA_adbd", który przybiera wartość 1 kiedy stosujemy ad-blocka. Ciasteczka z prefixem "WP" mają czas wygaśnięcia ustawiony na 2 lata od ich utworzenia.

(tak na wszelki wypadek "local storage" przeglądarki też nie jest pusta od "gratisów", "cookies" statystycznie są częściej czyszczone niż pamięć "local storage")

Całość ładnie podsumowuje DP test w Google PageSpeed Insights dla profilu "Na komórki". Porównujący dane z ostatnich 30 dni z programu "Chrome User Expirence Raport" w odniesieniu do szybkości innych stron:

(data testu: 23.05.2020 21:15)

Google PageSpeed insights | Na komórki
https://developers.google.com/speed/pagespeed/insights/?url=www.dobrep...

Zaznaczam, że nie mam na celu szkalowania Dobrych Programów za treści reklamowe i tracking, lecz chcę uwypuklić problem, że traktowanie na równi urządzeń z małą baterią i komputera nie jest w porządku serwując tak dużą ilość odwołań do domen zewnętrznych, szczególnie typu ad-sense, skryptów telemetrycznych itp. rzeczy.