Bezpieczeństwo systemu i jądra

Na poziomie systemu operacyjnego platforma Android zapewnia bezpieczeństwo jądra systemu Linux, a także funkcję bezpiecznej komunikacji między procesami (IPC), umożliwiającą bezpieczną komunikację między aplikacjami działającymi w różnych procesach. Te funkcje bezpieczeństwa na poziomie systemu operacyjnego zapewniają, że nawet kod natywny jest ograniczony przez piaskownicę aplikacji. Niezależnie od tego, czy ten kod jest wynikiem zachowania aplikacji, czy też wykorzystania luki w zabezpieczeniach aplikacji, system jest zaprojektowany tak, aby uniemożliwić fałszywej aplikacji uszkodzenie innych aplikacji, systemu Android lub samego urządzenia. Zobacz Konfiguracja jądra , aby poznać środki, które możesz podjąć, aby wzmocnić jądro na swoich urządzeniach. Wymagane ustawienia można znaleźć w dokumencie definicji zgodności systemu Android (CDD) .

Bezpieczeństwo w systemie Linux

Podstawą platformy Android jest jądro Linuksa. Jądro Linuksa jest w powszechnym użyciu od lat i jest używane w milionach środowisk wrażliwych na bezpieczeństwo. Dzięki swojej historii nieustannych badań, ataków i naprawiania przez tysiące programistów Linux stał się stabilnym i bezpiecznym jądrem, któremu zaufało wiele korporacji i specjalistów ds. Bezpieczeństwa.

Jako podstawa mobilnego środowiska komputerowego, jądro Linuksa zapewnia Androidowi kilka kluczowych funkcji bezpieczeństwa, w tym:

  • Model uprawnień oparty na użytkownikach
  • Izolacja procesu
  • Rozszerzalny mechanizm dla bezpiecznego IPC
  • Możliwość usunięcia niepotrzebnych i potencjalnie niebezpiecznych części jądra

Jako system operacyjny dla wielu użytkowników, podstawowym celem bezpieczeństwa jądra Linuksa jest odizolowanie zasobów użytkowników od siebie. Filozofia bezpieczeństwa Linuksa polega na wzajemnej ochronie zasobów użytkowników. Zatem Linux:

  • Uniemożliwia użytkownikowi A odczytanie plików użytkownika B.
  • Zapewnia, że ​​użytkownik A nie wyczerpuje pamięci użytkownika B.
  • Zapewnia, że ​​użytkownik A nie wyczerpuje zasobów procesora użytkownika B.
  • Zapewnia, że ​​użytkownik A nie wyczerpuje urządzeń użytkownika B (na przykład telefonii, GPS i Bluetooth)

Piaskownica aplikacji

Bezpieczeństwo aplikacji na Androida jest wymuszane przez piaskownicę aplikacji, która izoluje aplikacje od siebie i chroni aplikacje i system przed złośliwymi aplikacjami. Aby uzyskać więcej informacji, zobacz temat Piaskownica aplikacji .

Partycja systemowa i tryb awaryjny

Partycja systemowa zawiera jądro systemu Android, a także biblioteki systemu operacyjnego, środowisko wykonawcze aplikacji, strukturę aplikacji i aplikacje. Ta partycja jest ustawiona jako tylko do odczytu. Gdy użytkownik uruchamia urządzenie w trybie awaryjnym, aplikacje innych firm mogą być uruchamiane ręcznie przez właściciela urządzenia, ale nie są uruchamiane domyślnie.

Uprawnienia systemu plików

W środowisku w stylu UNIX uprawnienia systemu plików zapewniają, że jeden użytkownik nie może zmieniać ani odczytywać plików innego użytkownika. W przypadku Androida każda aplikacja działa jako własny użytkownik. O ile programista wyraźnie nie udostępnia plików innym aplikacjom, pliki utworzone przez jedną aplikację nie mogą być odczytywane ani zmieniane przez inną aplikację.

Linux o zwiększonym bezpieczeństwie

Android używa systemu Linux z ulepszonymi zabezpieczeniami (SELinux) do stosowania zasad kontroli dostępu i ustanawiania obowiązkowej kontroli dostępu (mac) w procesach. Szczegółowe informacje można znaleźć w artykule Linux o zwiększonych zabezpieczeniach w systemie Android .

Zweryfikowany rozruch

Android 6.0 i nowsze obsługują zweryfikowaną wersję rozruchu i mapowania urządzeń. Zweryfikowany rozruch gwarantuje integralność oprogramowania urządzenia, począwszy od sprzętowego katalogu głównego zaufania do partycji systemowej. Podczas rozruchu każdy etap kryptograficznie weryfikuje integralność i autentyczność następnego etapu przed jego wykonaniem.

Android 7.0 i nowsze obsługują ściśle wymuszone, weryfikowane uruchamianie, co oznacza, że ​​uszkodzone urządzenia nie mogą się uruchomić.

Aby uzyskać więcej informacji, zobacz Zweryfikowany rozruch .

Kryptografia

Android udostępnia zestaw kryptograficznych interfejsów API do użytku przez aplikacje. Obejmują one implementacje standardowych i powszechnie używanych prymitywów kryptograficznych, takich jak AES, RSA, DSA i SHA. Ponadto dostępne są interfejsy API dla protokołów wyższego poziomu, takich jak SSL i HTTPS.

W systemie Android 4.0 wprowadzono klasę KeyChain, aby umożliwić aplikacjom korzystanie z systemowego magazynu danych logowania dla kluczy prywatnych i łańcuchów certyfikatów.

Rootowanie urządzeń

Domyślnie w systemie Android tylko jądro i niewielka część podstawowych aplikacji działają z uprawnieniami administratora. System Android nie uniemożliwia użytkownikowi ani aplikacji z uprawnieniami administratora modyfikowania systemu operacyjnego, jądra ani żadnej innej aplikacji. Ogólnie rzecz biorąc, root ma pełny dostęp do wszystkich aplikacji i wszystkich danych aplikacji. Użytkownicy, którzy zmieniają uprawnienia na urządzeniu z Androidem w celu przyznania uprawnień administratora aplikacjom, zwiększają narażenie na bezpieczeństwo złośliwych aplikacji i potencjalnych luk w aplikacjach.

Możliwość modyfikowania posiadanego urządzenia z Androidem jest ważna dla programistów pracujących z platformą Android. Na wielu urządzeniach z Androidem użytkownicy mają możliwość odblokowania bootloadera, aby umożliwić instalację alternatywnego systemu operacyjnego. Te alternatywne systemy operacyjne mogą umożliwiać właścicielowi uzyskanie uprawnień administratora w celu debugowania aplikacji i składników systemu lub uzyskania dostępu do funkcji, które nie są udostępniane aplikacjom przez interfejsy API systemu Android.

Na niektórych urządzeniach osoba sprawująca fizyczną kontrolę nad urządzeniem i za pomocą kabla USB może zainstalować nowy system operacyjny, który zapewnia użytkownikowi uprawnienia roota. Aby zabezpieczyć wszelkie istniejące dane użytkownika przed naruszeniem, mechanizm odblokowania programu ładującego wymaga, aby program ładujący wymazał wszelkie istniejące dane użytkownika w ramach kroku odblokowania. Dostęp do roota uzyskany poprzez wykorzystanie błędu jądra lub luki w zabezpieczeniach może ominąć tę ochronę.

Szyfrowanie danych za pomocą klucza przechowywanego na urządzeniu nie chroni danych aplikacji przed użytkownikami root. Aplikacje mogą dodawać warstwę ochrony danych za pomocą szyfrowania za pomocą klucza przechowywanego poza urządzeniem, na przykład na serwerze lub hasłem użytkownika. Takie podejście może zapewnić tymczasową ochronę, gdy klucz nie jest obecny, ale w pewnym momencie klucz musi zostać dostarczony do aplikacji, a następnie staje się dostępny dla użytkowników root.

Bardziej niezawodne podejście do ochrony danych przed użytkownikami root polega na zastosowaniu rozwiązań sprzętowych. Producenci OEM mogą zdecydować się na wdrożenie rozwiązań sprzętowych, które ograniczają dostęp do określonych typów treści, takich jak DRM do odtwarzania wideo lub zaufana pamięć masowa związana z NFC do portfela Google.

W przypadku zgubienia lub kradzieży urządzenia pełne szyfrowanie systemu plików na urządzeniach z Androidem wykorzystuje hasło urządzenia do ochrony klucza szyfrowania, więc modyfikacja bootloadera lub systemu operacyjnego nie jest wystarczająca, aby uzyskać dostęp do danych użytkownika bez hasła urządzenia.

Funkcje bezpieczeństwa użytkownika

Szyfrowanie systemu plików

Android 3.0 i nowsze zapewniają pełne szyfrowanie systemu plików, więc wszystkie dane użytkownika można zaszyfrować w jądrze.

Android 5.0 i nowsze obsługują szyfrowanie całego dysku . Szyfrowanie całego dysku wykorzystuje jeden klucz - chroniony hasłem urządzenia użytkownika - w celu ochrony całej partycji danych użytkownika na urządzeniu. Podczas rozruchu użytkownicy muszą podać swoje poświadczenia, zanim jakakolwiek część dysku będzie dostępna.

Android 7.0 i nowsze obsługują szyfrowanie oparte na plikach . Szyfrowanie oparte na plikach umożliwia szyfrowanie różnych plików za pomocą różnych kluczy, które można odblokować niezależnie.

Więcej szczegółów na temat implementacji szyfrowania systemu plików znajduje się w sekcji Szyfrowanie .

Ochrona hasła

System Android można skonfigurować tak, aby weryfikował hasło podane przez użytkownika przed udzieleniem dostępu do urządzenia. Oprócz zapobiegania nieautoryzowanemu użyciu urządzenia, hasło to chroni klucz kryptograficzny w celu pełnego zaszyfrowania systemu plików.

Użycie hasła i / lub zasad złożoności haseł może być wymagane przez administratora urządzenia.

Administracja urządzeniem

Android 2.2 i nowsze wersje zapewniają Android Device Administration API, który zapewnia funkcje zarządzania urządzeniem na poziomie systemu. Na przykład wbudowana aplikacja e-mail dla systemu Android korzysta z interfejsów API w celu ulepszenia obsługi programu Exchange. Za pomocą aplikacji e-mail administratorzy Exchange mogą wymuszać zasady haseł - w tym hasła alfanumeryczne lub numeryczne kody PIN - na różnych urządzeniach. Administratorzy mogą również zdalnie wyczyścić zgubione lub skradzione telefony (to znaczy przywrócić domyślne ustawienia fabryczne).

Oprócz wykorzystania w aplikacjach zawartych w systemie Android te interfejsy API są dostępne dla zewnętrznych dostawców rozwiązań do zarządzania urządzeniami. Szczegółowe informacje na temat interfejsu API można znaleźć na stronie Administracja urządzenia .