Blokowanie dostępu do sensorów (kamera/mikrofon/gps) aplikacjom w Androidzie

Spis treści

Raczej już nikogo nie dziwią różne moduły elektroniczne implementowane w smartfonach pokroju żyroskopu, akcelerometru, magnetometru czy też i innych czujników realizujących pewne określone funkcje. Te wszystkie rzeczy potocznie zwykło nazywać się sensorami i na dobrą sprawę zdążyły się one zadomowić na dobre w tych naszych telefonach i to do tego stopnia, że nawet sobie nie zdajemy sprawy, że w ogóle one istnieją i non stop działają w tle. Przekopując ostatnio ustawienia Androida, natknąłem się w opcjach deweloperskich na dość enigmatycznie brzmiącą opcję Sensors Off , która była ukryta pod Quick settings developer tiles . Zaznaczenie tej opcji sprawiło, że do dyspozycji użytkownika został oddany dodatkowy kafelek (dostępny z poziomu górnej belki), którego zadaniem jest sterowanie dostępem aplikacji do sensorów smartfona (nie tylko tych wymienionych wyżej ale też do kamery mikrofonu, czy nawet GPS). Postanowiłem się trochę pobawić tym mechanizmem i zobaczyć czy można z niego zrobić jakieś użyteczne narzędzie w kontekście ochrony prywatności.

Skąd się wziął Sensors Off w Androidzie

Prawdę mówiąc, to nie przypominam sobie, by we wcześniejszych wersjach Androida (<10) tego typu opcja wyłączenia sensorów była w ogóle dostępna. Szukając trochę informacji na temat tego całego Sensors Off , który widnieje w opcjach deweloperskich mojego smartfona z Andkiem 11, natrafiłem na artykuł, który nieco mi wyjaśnił po co jest ta opcja oraz, że została wprowadzona stosunkowo niedawno, bo w Androidzie 10.

Standardowo w smartfonach z Androidem nie mamy możliwości (przynajmniej do tej pory nie było) sterowania dostępem do sensorów smartfona. Jeśli jednak włączymy sobie Sensors Off , to ten stan rzeczy ulegnie zmianie. Co prawda, nie ma póki co rozdziału sensorów na poszczególne moduły ale zawsze jest lepsza jedna opcja, która pozwala wyłączyć wszystkie moduły, niż brak jakiejkolwiek opcji wyłączającej cokolwiek.

Zatem cóż takiego ten cały Sensors Off robi? No jak nazwa może sugerować, ta opcja ma na celu wyłączenie sensorów. Do sensorów zaliczają się: akcelerometr, żyroskop, magnetometr, czujnik światła, czujnik zbliżeniowy, kamera/aparat (tylny/przedni), mikrofony, głośniki, nawet GPS i pewnie jeszcze inne sensory, którymi nie włada mój telefon.

Jako, że nie możemy sterować wyłączeniem/włączeniem konkretnego sensora, to niestety trzeba będzie się liczyć z faktem, że jeśli postanowimy z tej opcji skorzystać, to trzeba będzie wyłączyć wszystkie sensory naraz, co niekoniecznie może nas ucieszyć. Mnie jednak bardziej interesuje użyteczność tej opcji w kontekście prywatności, czyli np. w sytuacji, gdy nie korzystam ze smartfona i wiem, że przez dłuższy czas nie będę tego robił.

Kiedyś sensory smartfona nie były utożsamiane z zagrożeniem dla naszej prywatności ale od pewnego czasu takie zagrożenie ze sobą te moduły mogą nieść. Oczywiście kamera czy mikrofon zawsze zagrożenie dla prywatności ze sobą niosły ale, np. magnetometr (który może robić za cyfrowy kompas), czy akcelerometr (który może zwrócić informacje na temat prędkości z jaką się poruszamy)? Szkoda, że po ponad dekadzie obecności Androida na rynku wciąż nie ma opcji do kontrolowania poszczególnych sensorów z osobna ale opcja Sensors Off , to jak najbardziej krok w dobrą stronę.

Co się stanie po przełączeniu opcji Sensors Off

Raczej nic złego po przełączeniu opcji Sensors Off nie powinno się stać. Nawet jeśli coś nam przestanie działać w Androidzie, to należy pamiętać, że sensory zawsze możemy włączyć ponownie. Do testów sensorów najlepiej zaciągnąć jakąś aplikację, np phyphox, którą naturalnie można pobrać z repozytorium F-Droid, jako że jest to appka w pełni OpenSource. W zależności od tego jakie sensory posiada nasz telefon, przy pomocy phyphox możemy sprawdzić czy działają one prawidłowo.

block-sensors-android-phyphox-menu block-sensors-android-phyphox-menu block-sensors-android-phyphox-menu

No jak widać po samym menu phyphox'a, opcji do testowania sensorów smartfona mamy dość sporo. Na potrzeby testu wybrałem sobie wskazania tych bardziej rozpoznawanych sensorów, tj. akcelerometru, żyroskopu i magnetometru:

block-sensors-android-phyphox-accelerometer block-sensors-android-phyphox-gyroscope block-sensors-android-phyphox-magnetometer

Po wykresach możemy stwierdzić, że moduły zdają się działać prawidłowo. Co jednak się stanie, gdy przełączymy kafelek Sensors Off i zablokujemy sensory?

block-sensors-android-tile block-sensors-android-phyphox-gyroscope-failed

Jak widać (a właściwie nie widać), przykładowy sensor żyroskopu przestał zwracać dane, które phyphox mógłby sobie umieścić na grafie. No i praktycznie wszystkie sensory w ten sposób "zamilkły", tj. żaden sensor już nie daje znaku życia, co naturalnie może cieszyć nie tylko w kontekście prywatności ale również jeśli chodzi o żywotność baterii. Jeśli sensory nie są aktywne, to nie trzeba na nie przeznaczać energii z baterii. Można zatem wydłużyć czas pracy urządzenia między kolejnymi cyklami procesu ładowania.

Wyłączenie sensorów, a GPS

Wyżej wspomniałem, że do sensorów zalicza się również GPS, no i tak faktycznie jest. Jeśli wyłączymy sobie sensory i spróbujemy ustalić położenie czy to korzystając z mapy Google, czy też z OsmAnd+, to zobaczymy, że nasz telefon nie może złapać fix'a (oczywiście przy założeniu, że lokalizację uzyskuje jedynie za pośrednictwem GPS, a nie przy wsparciu WiFi, BT, czy stacji bazowych operatora komórkowego). Zatem opcja Sensors Off wydaje się być idealnym uzupełnieniem trybu samolotowego, który nie blokuje aplikacjom dostępu do lokalizacji.

Dzwonienie ze smartfona z wyłączonymi sensorami

Naturalnie tryb samolotowy i wyłączenie sensorów nie są ze sobą sprzęgnięte, co daje nam możliwość ustawienia ich w dowolnej konfiguracji. Jeśli jednak zdecydujemy się na niewłączanie trybu samolotowego ale przy tym wyłączymy sensory, to mogłoby się wydawać, że korzystanie ze smartfona w kontekście prowadzenia zwykłych komórkowych rozmów głosowych będzie pozbawione sensu, bo przecie aplikacja dialer'a nie będzie miała dostępu choćby do mikrofonu. Takie stwierdzenie nie jest jednak do końca prawdą, bo jak można wyczytać w dokumentacji Androida, nie wszystkie aplikacje uzyskują dostęp do sensorów w ten sam sposób.

Wyłączenie sensorów przy pomocy Sensors Off sprawia, że aplikacje tracą do nich dostęp ale jedynie w sytuacji, gdy próbują go uzyskać via SensorService, CameraService lub AudioPolicyService . Stock'owa appka dialer'a, czy też ogólnie funkcje telefoniczne w aplikacjach, z tych usług nie korzystają, przez co dialer będzie mieć dostęp do mikrofonu i bez większego problemu będzie można dzwonić i odbierać połączenia nawet przy zablokowanych sensorach.

Nie trzeba już zaklejać kamery/aparatu taśmą

Po wyłączeniu sensorów, upośledzeniu ulegnie również kamera/aparat, przedni i tylny i do tego każda ich liczba, w którą wyposażony jest nasz smartfon. Przy próbie dostępu do kamery pojawi się jedynie taki oto komunikat: Failed to open camera. Camera may be in use by another application , co wygląda mniej więcej tak:

block-sensors-android-camera-failed

Jak widać, podglądu na kamerze nie ma, zatem smartfon nie jest w stanie nic bez naszej zgody zarejestrować. No i teraz już mamy pewność, że nikt nas kamerką w telefonie nie podejrzy, choć na wszelki wypadek lepiej jest obiektyw kamery jednak zakleić, na wypadek, gdybyśmy zapomnieli zablokować te sensory ponownie, albo coś by nam je bez naszej wiedzy odblokowało.

Podsumowanie

Muszę przyznać, że podoba mi się opcją globalnego wyłączenia wszystkich sensorów w telefonie, choć naturalnie chciałbym, by każdy sensor można było wyłączyć niezależnie, oraz też opcjonalnie dla każdej appki z osobna. Fakt, że aplikacja dialer'a działa przy wyłączonych sensorach, sprawia, ze mamy dostęp do podstawowych funkcji telefonu. Zastanawiają mnie jednak aplikacje, które są w stanie ominąć wyłączenie sensorów (tak jak wspomniany dialer). Ile jest takich appek i czy są im stawiane jakieś wymagania, tj. czy pierwsza lepsza aplikacja może uzyskać dostęp do sensorów innymi sposobami i czy jakieś konsekwencje z tego powodu będą mogły ją za to spotkać? Na pewno opcja wyłączenia sensorów przyda się osobom, które często korzystają z trybu samolotowego, by mieć pewność, że żadne dane lokalizacji nie zostaną przez przypadek ujawnione, choć ja bym aż tak bardzo Androidowi nie zawierzał i na prywatne spotkania wybierał się bez smartfona.

Mikhail Morfikov avatar
Mikhail Morfikov
Po ponad 10 latach spędzonych z różnej maści linux'ami (Debian/Ubuntu, OpenWRT, Android) mogę śmiało powiedzieć, że nie ma rzeczy niemożliwych i problemów, których nie da się rozwiązać. Jedną umiejętność, którą ludzki umysł musi posiąść, by wybrnąć nawet z tej najbardziej nieprzyjemniej sytuacji, to zdolność logicznego rozumowania.