Zdarzało Wam się, iż odwiedzacie jakąś stronę przez urządzenie mobilne, a ta próbuje Was przegonić do aplikacji?
Strony: messenger.com, gmail.com, amazon.com, reddit.com.
Gdybyśmy je odwiedzali przez komputer, to po prostu by nam się wyświetliła strona.
Dlaczego właścicielom stron tak zależy na tym, żebyśmy zainstalowali ich aplikację? Skoro strona i tak działa?
Czasem mają jakiś sensowny powód, dla którego to robią. Na przykład potrzebują (coraz rzadszych) funkcji, których nie daje im nasza przeglądarka. Ale często motywuje ich chęć zbierania danych.
W innej mojej serii, „Internetowej inwigilacji”, omawiałem nieco węższy przypadek. Sytuację, kiedy surfujemy po internecie, korzystając z przeglądarki.
To konkretny, dość specyficzny rodzaj programu. Ujawnia obcym (najczęściej dużym firmom z branży reklam śledzących) tylko wybrane rzeczy.
Analizowanie nas na podstawie tego, co nasz komputer wyśle w internet, jest trochę jak rozmowa z nami przez zamknięte drzwi mieszkania.
Jasne, ktoś może poznać ton naszego głosu. Odczytać tabliczkę z nazwiskiem na drzwiach. Zadać wścibskie pytania o to, co mamy w domu. Ale nie ma pewności, iż mówimy prawdę.
Zainstalowanie wścibskiej aplikacji jest jak wpuszczenie takiego szpiega do swojego domu. Jego możliwości śledzenia drastycznie rosną.
To tym zagrożeniom będzie poświęcona moja nowa seria, „Apki to pułapki”. W tym wprowadzającym wpisie przedstawię ogólny model działania współczesnych urządzeń i parę przemyśleń na temat zagrożeń. Później będę się do tego odnosił.
Zapraszam, świat śledzenia czeka!
Warstwy telefona
Cebula ma warstwy, ogry telefony mają warstwy.
Źródło: pierwsza część „Shreka”.
W poprzedniej serii, „Internetowej inwigilacji”, przyjąłem model pocztowy (przeglądarka jako poczta, wysyłane dane jako paczki, zamiast adresów domów adresy IP).
Tym razem potrzebowałem modelu pokazującego, do czego mają dostęp aplikacje i dokąd sięgają możliwości użytkowników. Chciałem też, żeby objął w przyszłości przypadek wrogich producentów (DRM, SafetyNet…).
Chwilę pogłówkowałem. Ostatecznie mój wymysł przyjął kształt piramidki z paroma niuansami:
Źródło: Flaticon, Emojipedia, Wikimedia Commons (szczegóły pod koniec wpisu).
Aranżacja i przeróbki moje.
Zaraz omówię z osobna warstwy tego prowizorycznego modelu. Ale najpierw kilka założeń, jakie chciałem na nim pokazać:
-
Wszystko na tym schemacie (oprócz fizycznego sprzętu) to programy.
Np. firmware to programy sterujące fizycznym sprzętem. System operacyjny to program uruchamiający inne programy.
-
Między warstwami cały czas są przesyłane dane i pliki. Same w sobie nieaktywne, „martwe”. To programy mogą coś z nimi zrobić.
-
Im niżej znajduje się jakaś warstwa głównej piramidy, tym jest istotniejsza dla całości.
Jej „awaria” psuje wszystko, co na niej stoi. A jej „przejęcie” jest równoznaczne z przejęciem tego co wyżej.
-
Warstwy niżej położone narzucają wyższym sposób komunikacji.
Zwykle ich twórcy określają to w jakiejś specyfikacji. jeżeli twórcy wyższych warstw się do tego nie dopasują, to coś nie zadziała.
-
Warstwę najniższą (hardware, czyli fizyczny sprzęt) dzielę na dwie kategorie – podstawową i poboczną.
Podstawowa to sprzęt niezbędny do działania, jak procesor albo pamięć. Oprócz tego mamy różnego rodzaju urządzenia poboczne (będące częścią urządzenia albo do niego podłączane), które porozumiewają się z tymi kluczowymi.
Omówienie poszczególnych warstw
Serię opracowałem z myślą o telefonach, ale powyższy model jak najbardziej pasuje również do komputerów osobistych. Spójrzmy teraz na typowe cechy poszczególnych warstw oraz przykłady ich ciemnych stron. I ze świata telefonów, i komputerów.
Zacznijmy od góry.
Nie będę tutaj mówił o kwestiach cyberbezpieczeństwa i wirusach. Korporacje, choć wścibskie, zwykle jednak trzymają się ram prawnych i nas nie hakują.
Natomiast miejmy na uwadze, iż jak najbardziej mogą istnieć programy – z dowolnej warstwy naszej piramidki – zdolne uderzyć w słabe punkty systemu i przejąć warstwy pod sobą.
Dodatki do programów
Wiele programów, zwłaszcza mniejszych, stanowi zamkniętą całość. Jasne, możemy podrzucać im różnorodne pliki. Ale ramy działania narzucają twórcy.
Czasem jednak ludzie chcą elastyczności. Możliwości dopasowania programów do własnych potrzeb. Z tego względu ich twórcy dają możliwość tworzenia niezależnych dodatków.
Dodatki same są mini-programami, napisanymi w języku programowania „zrozumiałym” dla programu macierzystego.
Jednocześnie są od tego programu całkiem zależne i nie są w stanie zyskać większych możliwości niż on – jeżeli na przykład wyłączymy Firefoksowi dostęp do internetu, to zainstalowane na nim dodatki również nie będą w stanie się połączyć.
Do tej pory siłą rzeczy omawiałem tylko dodatki przeglądarkowe, w szczególności uBlock Origin (blokujący reklamy śledzące na odwiedzanych stronach).
Natomiast kategoria jest znacznie szersza, a jakieś swoje dodatki wspiera prawie każdy większy program.
Za pewien rodzaj dodatków możemy uznać skrypty VBA pakietu Office. A choćby skrypty udostępniane przeze mnie na Ciemnej Stronie (programem-uruchamiaczem jest wtedy tak zwany interpreter Pythona, taki jak IDLE).
Potencjalne zagrożenia związane z dodatkami? jeżeli jakiś program, skądinąd bezpieczny, daje im wiele możliwości, to mogą zmienić go w program szpiegowski.
Przykładem jest kontrowersyjny dodatek do przeglądarki firmy Proctorio odpowiadający za monitorowanie studentów podczas egzaminów.
Programy
Bodajże najszersza kategoria. Na każdym systemie możemy ich zwykle mieć tyle, ile tylko chcemy. Ale są spore różnice w sposobie korzystania z nich.
W przypadku pecetów (a przynajmniej Linuksa i Windowsa, które sprawdzałem) da się po prostu wziąć plik we właściwym formacie, jak EXE, i go kliknąć. Uruchomimy program bez żadnej instalacji.
W przypadku Androida można wprawdzie pobrać plik z apką w formacie APK… Ale, z tego co wiem, po kliknięciu musimy go zainstalować, a na ekranie głównym pojawi nam się jego ikona. Nie unikniemy tego.
Z kolei iOS od Apple jest systemem zamkniętym. Aplikacje musimy instalować przez ich centralną bazę, AppStore. Rzekomo dla naszego bezpieczeństwa.
W warstwie programów znajdziemy pełno wrednych rzeczy. Na ich omawianie mam całą serię, więc tutaj tylko drobny spoiler odnośnie tego, co nas czeka:
- Onavo – apka od Facebooka. Zbierała dane o innych zainstalowanych aplikacjach. W ten sposób szybko wykryli, iż WhatsApp zyskuje na popularności i go odkupili.
-
Różne aplikacje do monitorowania cyklu miesiączkowego.
Zbierały dane na potęgę. Użytkowniczkom to raczej nie przeszkadzało. Aż tu nagle w USA zmieniło się prawo. od dzisiaj dane z apek mogą zostać użyte jako dowód (karalnego) przerwania ciąży.
- Banalne aplikacje w stylu latarek. Które jednak proszą o dostęp do wszelkich możliwych pozwoleń.
System operacyjny
Dokładniej rzecz biorąc, mam tutaj na myśli tę „publiczną” część systemu.
My, użytkownicy, możemy się po niej poruszać i korzystać z różnych systemowych apek (kalkulatora, programu do zrzutów ekranu), a także zmieniać wiele ustawień.
Z kolei aplikacje mogą korzystać z pewnych wspólnych części, takich jak systemowy schowek.
Pod wieloma względami ta warstwa nas chroni, ponieważ pozwala dodawać niektóre aplikacje do czarnej listy albo w inny sposób je kontrolować.
Ale co, jeżeli sam system działa przeciwko nam?
Można tu wspomnieć chociażby o niesławnych aktualizacjach Windowsa, włączających się w najmniej odpowiednich momentach. Albo ekranach nachalnie namawiających do instalacji dodatkowych usług od Microsoftu.
Również Apple zaliczyło wtopę, kiedy wyszło na jaw, jak wiele informacji ich system MacOS wysyłał do ich centrali. Za każdym razem, kiedy uruchomiliśmy jakiś program.
Czasem istnieje opcja wyłączenia takich rzeczy. Może choćby dostępna dla użytkowników bez dłubania w trzewiach systemu. Ale, póki nie leży w interesie producenta, raczej nie znajdziemy jej na wierzchu.
Jądro systemu
To ta głębiej położona, niejawna część systemu.
Na komputerach osobistych zwykle mamy do niej dostęp, ale dopiero jeżeli mamy uprawnienia administratora (w przypadku Linuksa zwanego superużytkownikiem). Często wymaga to wpisania osobnego hasła.
W przypadku systemów mobilnych Google i Apple ograniczają nam dostęp. Domyślnie możemy poruszać się co najwyżej na poziomie systemu operacyjnego, nie niżej. Jądro rezerwują dla siebie.
Niepokorni mogą jednak „złamać” swój telefon i zyskać nad nim pełnię władzy. W przypadku Androida taki proces nazywa się rooting, a w przypadku iOS – jailbreaking.
Rzadko bo rzadko, ale warstwa „jądrowa” potrafi być wobec nas również szpiegiem.
Twórcy gier z serii Call of Duty wymagali zainstalowania oprócz nich tak zwanego rozszerzenia jądra (kernel extension). To coś jak dodatek do programu, tylko iż instalowany głębiej w bebechach systemu.
W ten sposób gracze (poziom warstwy systemu) mieli kontrolę nad grą (warstwa programów), ale rozszerzenie umieszczone poza ich zasięgiem (warstwa jądra) miało kontrolę nad tym, co z nią robią.
Wszystko to oficjalnie dla walki z oszustami. Co nie zmienia faktu, iż wymagało wpuszczenia obcej firmy głęboko w swój system.
Firmware i hardware
Hardware to fizyczny sprzęt, zaś firmware to po prostu programy sterujące tym sprzętem.
Spróbujcie sobie wpisać dowolną nazwę elementu i słowo firmware, a macie sporą szansę, iż coś wyskoczy. SSD firmware. Camera firmware. GPS firmware.
Jak pisałem wyżej, proponuję rozdzielić to na dwie kategorie – rzeczy najważniejsze i poboczne.
Rzeczy poboczne oczywiście potrafią być wredne, ale ich możliwości są ograniczone.
Mikrofon nie zaszkodzi nam sam z siebie. Jakiś wredny program musi najpierw kazać mu nas nagrać – co się nie uda, jeżeli jest fizycznie wyłączony – a potem uzyskać dostęp do internetu, żeby wysłać to nagranie w świat.
Rzeczy kluczowe, jak procesor, są dużo ważniejsze. To sam dół naszej piramidy, więc wszystko od tego zależy. Do tego praktycznie wszystkie interakcje z innymi sprzętami muszą tędy przechodzić. To taki komputerowy węzeł komunikacyjny.
Firmy mogą w tym miejscu dodawać rzeczy wrogie użytkownikom, a my mamy prawie zerowe możliwości walki. Kto tu umie przestrajać układy scalone i łamać szyfry?
Stworzyłem kiedyś wpis na temat Intel Management Engine – swoistego minikomputera od Intela. Zagnieżdżonego w tym kluczowym punkcie prawdopodobnie na życzenie ludków z Hollywood, pragnących zabezpieczeń antypirackich. Nieprzeniknionego, stanowiącego wymarzony cel dla hakerów.
A takich elementów tylko przybywa. Apple jakiś czas temu planowało wprowadzenie systemu wykrywania i zgłaszania nielegalnych obrazków. Odpowiadałby za to specjalny chip od analizy obrazu, również zagnieżdżony na tym najgłębszym poziomie. Tam, gdzie użytkownik nie sięgnie.
Nasze możliwości
Choć każda warstwa może działać przeciwko nam, nie jesteśmy bezbronni.
W przypadku komputerów osobistych zwykle zachowujemy jakąś kontrolę nad swoim systemem. Poza tym nie jesteśmy naganiani na aplikacje.
Nie oznacza to, iż nikt nie będzie próbował nas śledzić. Ale łatwiej nam ograniczyć liczbę programów do minimum, a internetu używać głównie przez przeglądarkę.
W przypadku urządzeń mobilnych sytuacja jest moim zdaniem znacznie cięższa. Presję na dzielenie się danymi mamy zarówno ze strony zewnętrznych firm, jak i samych producentów.
Tym niemniej wciąż jest parę rzeczy, które warto zrobić dla poprawienia prywatności.
Unikanie aplikacji
Czasem, kiedy podczas przeglądania internetu wyświetla nam się nachalny baner naganiający dla aplikacji, możemy go obejść – udając iż nie jesteśmy urządzeniem mobilnym.
W tym celu wchodzimy w ustawienia przeglądarki. Zwykle znajdziemy tam opcję Wersja na komputery.
Po jej kliknięciu strona powinna nam się załadować ponownie – większa, cięższa i nieprzystosowana do urządzenia mobilnego… Ale działająca.
Jeśli kogoś interesuje, jak to działa za kulisami, to polecam mój wpis na temat user agenta.
Pozwolenia na telefonach
W przypadku systemów mobilnych (zarówno Androida, jak i iOS) pewną kontrolę nad dzikimi apkami daje nam system pozwoleń. Sami możemy ustawiać, na co chcemy zezwolić poszczególnym aplikacjom.
Jak by to wyglądało na naszej piramidce? Ano tak, iż wchodząc w ustawienia telefonu, poruszamy się po warstwie systemu operacyjnego. Możemy jednym pstryczkiem zablokować wybranej apce dostęp do mikrofonu.
Same aplikacje są warstwę wyżej, więc muszą porozumiewać się z systemem na jego zasadach. Chcąc coś nagrać, muszą grzecznie poprosić system. „Użyczysz mi mikrofonu?”. A jeżeli nie daliśmy pozwolenia, to ten odmówi.
W takiej sytuacji apka może co najwyżej wyświetlić nam komunikat o błędzie, ale nie jest w stanie zawetować naszej decyzji.
Ciemna strona pozwoleń? Niektóre rzeczy uznano na telefonach za tak powszechne, iż nie wymagają pozwolenia. Taki przywilej ma na przykład łączność z internetem. Dzięki temu każda apka może wysłać zebrane o nas informacje swoim twórcom.
Moja rada na teraz: wyłączmy aplikacjom jak najwięcej pozwoleń. Pozwolenie na mikrofon powinny mieć tylko te, których używamy do rozmów i nagrywania. Czyli najlepiej tylko systemowa apka Aparat. Możemy nim nagrywać, a potem przesyłać filmiki, wybierając je z apki Galeria.
Z kolei dostęp do GPS-a powinna mieć tylko jedna wybrana apka, której używamy do nawigacji. Polecam Mapy.cz.
Monitorowanie ruchu internetowego
Możliwość raczej nie dla wszystkich użytkownika, ale jak najbardziej realna.
Dane i pliki przesyłane między różnymi warstwami systemu są „martwe”. Nie oznacza to, iż są niegroźne – czasem czytanie danych wywołuje efekty uboczne. Swego czasu istniał chociażby „znaczek śmierci”, zawieszający telefony od Apple.
Ale dane nigdy nie zadziałają same z siebie. Zawsze musi je zacząć przetwarzać jakiś program.
Co to nam daje? Załóżmy, iż na naszym komputerze jest program szpiegowski. Zbiera o nas trochę informacji i wysyła je w świat przez internet.
Tylko iż „wysłanie w świat” oznacza, iż traci je z oczu. Użycie internetu oznacza, iż prawdopodobnie muszą przejść przez nasz router. A „martwość” danych oznacza, iż nie będą w stanie w żaden sposób się bronić przed przechwyceniem i skopiowaniem przez nas. Potem możemy je analizować.
W ten sposób każda osoba znająca się na rzeczy może regularnie monitorować ruch i patrzeć, czy aplikacja próbuje wysłać coś podejrzanego.
Można podejść do sprawy śledzenia badawczo, zamiast tylko machać ręką i jojczeć „panie, te wszystkie apki śledzo”.
Wybieranie otwartych rozwiązań
Nie jestem radykałem w kwestii wolnego oprogramowania. Cieszy mnie każda zmiana na plus, choćby drobna. Dopasowana do naszych chęci i możliwości.
Każdy, absolutnie każdy może na przykład zmieniać aplikacje na mniej wścibskie. Przeglądarkę Chrome zastąpić czymś otwartym poza kontrolą Wujka Google. Jak Brave albo Firefox.
Ale warstwę niżej przez cały czas mamy potencjalnie wścibski system.
Jeśli to Windows, a my nie potrzebujemy programów działających tylko na nim, to możemy spróbować go zmienić na system Linux. Polecam Minta.
Jeśli Android, to można użyć systemu alternatywnego, takiego jak LineageOS albo GrapheneOS. Nie testowałem, ale często słyszę pochlebne opinie.
Ale pod systemem przez cały czas mamy zamknięty, nieprzenikniony firmware. Zatem fani prywatności mogą spróbować przejść na eksperymentalne, alternatywne telefony, jak Pinephone albo Librem.
Ale choćby urządzenia najbardziej zorientowane na prywatność muszą polegać na paru zamkniętych modułach kupionych od innych firm, jak choćby modemy.
W takim wypadku prawdziwi prywatnościowi puryści mogą mieć oko na ruch open hardware, dążący do zbudowania wszystkiego na otwartych podstawach.
Każdy może znaleźć rozwiązanie dla siebie!
Ale ogólnie warto rozglądać się za otwartymi, szanującymi prywatność alternatywami, żeby nie czuć się w tym świecie jak cielak do monetyzowania. Od razu przyjemniej się żyje.
Tym akcentem zakończę. W kolejnych wpisach dowiemy się więcej – i na temat uprawnień, i metod śledzenia, i bezpieczniejszych alternatyw. Do zobaczenia! :smile:
Źródła
- Piramida Maslowa autorstwa Androidmarsexpress (ze zbiorów Wikimedia Commons, licencja CC BY-SA 4.0);
- ikona procesora – Flaticon, autorstwa Freepik.
- ikona strzałek – Flaticon, autorstwa NextGen;
- ikona mikrofonu – emoji od JoyPixels;
- ikona sygnału wi-fi – Flaticon, autorstwa Freepik;
- ikona aparatu fotograficznego – emoji od Microsoftu;
- ikony programów Signal, Firefox, uBlock Origin, SingleFile.