Bezpieczeństwo systemu i jądra

Na poziomie systemu operacyjnego platforma Android zapewnia bezpieczeństwo jądra Linux, a także funkcję bezpiecznej komunikacji między procesami (IPC), aby umożliwić bezpieczną komunikację między aplikacjami działającymi w różnych procesach. Te funkcje zabezpieczeń 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 wykorzystania luki w aplikacji, system został zaprojektowany tak, aby uniemożliwić nieuczciwej aplikacji uszkodzenie innych aplikacji, systemu Android lub samego urządzenia. Zobacz Konfiguracja jądra , aby dowiedzieć się, jak wzmocnić jądro na swoich urządzeniach. Aby uzyskać informacje na temat wymaganych ustawień, zapoznaj się z dokumentem definicji zgodności z systemem Android (CDD) .

Bezpieczeństwo Linuksa

Podstawą platformy Android jest jądro Linux. Jądro Linuksa jest powszechnie używane od lat i jest używane w milionach środowisk wrażliwych na bezpieczeństwo. Przez swoją historię nieustannego badania, atakowania 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 Linux zapewnia systemowi Android 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 wieloużytkownikowy system operacyjny, podstawowym celem bezpieczeństwa jądra Linuksa jest izolowanie zasobów użytkowników od siebie. Filozofia bezpieczeństwa Linuksa polega na ochronie zasobów użytkowników przed sobą. Tak więc Linux:

  • Uniemożliwia użytkownikowi A odczytywanie plików użytkownika B
  • Zapewnia, że ​​użytkownik A nie wyczerpie 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 Androida jest wymuszane przez piaskownicę aplikacji, która izoluje aplikacje od siebie i chroni aplikacje oraz system przed złośliwymi aplikacjami. Aby uzyskać więcej informacji, zobacz 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 na 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 czytać plików innego użytkownika. W przypadku Androida każda aplikacja działa jako własny użytkownik. O ile programista jawnie nie udostępnia plików innym aplikacjom, pliki utworzone przez jedną aplikację nie mogą być odczytywane ani zmieniane przez inną aplikację.

Linux ze zwiększonymi zabezpieczeniami

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. Zobacz Linux z ulepszonymi zabezpieczeniami w systemie Android , aby uzyskać szczegółowe informacje.

Zweryfikowany rozruch

Android 6.0 i nowsze obsługują zweryfikowaną wersję rozruchu i urządzenia-mapper-verity. Zweryfikowany rozruch gwarantuje integralność oprogramowania urządzenia, począwszy od sprzętowego źródła zaufania, aż po partycję systemową. 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, zweryfikowane uruchamianie, co oznacza, że ​​nie można uruchomić zhakowanych urządzeń.

Zobacz Zweryfikowany rozruch , aby uzyskać więcej informacji.

Kryptografia

Android udostępnia zestaw kryptograficznych interfejsów API do użytku przez aplikacje. Należą do nich implementacje standardowych i powszechnie używanych prymitywów kryptograficznych, takich jak AES, RSA, DSA i SHA. Ponadto udostępniane 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 poświadczeń dla kluczy prywatnych i łańcuchów certyfikatów.

Rootowanie urządzeń

Domyślnie w systemie Android tylko jądro i niewielki podzbiór podstawowych aplikacji działają z uprawnieniami roota. Android nie uniemożliwia użytkownikowi ani aplikacji z uprawnieniami roota 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, aby przyznać aplikacjom dostęp do roota, zwiększają narażenie bezpieczeństwa na złośliwe aplikacje i potencjalne wady aplikacji.

Możliwość modyfikowania posiadanego urządzenia z Androidem jest ważna dla programistów pracujących na platformie 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 dostępu do konta root w celu debugowania aplikacji i składników systemu lub uzyskiwania dostępu do funkcji, które nie są prezentowane aplikacjom przez interfejsy API systemu Android.

Na niektórych urządzeniach osoba sprawująca fizyczną kontrolę nad urządzeniem i kablem USB może zainstalować nowy system operacyjny, który zapewnia użytkownikowi uprawnienia roota. Aby chronić istniejące dane użytkownika przed naruszeniem, mechanizm odblokowujący bootloadera wymaga, aby bootloader 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ą dodać warstwę ochrony danych za pomocą szyfrowania za pomocą klucza przechowywanego poza urządzeniem, na przykład na serwerze lub hasła 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 stanie się dostępny dla użytkowników root.

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

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

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 mogą być szyfrowane 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 — do ochrony całej partycji danych użytkownika urządzenia. 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 można znaleźć w sekcji Szyfrowanie .

Ochrona hasła

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

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

Administracja urządzeniami

Android 2.2 i nowsze udostępniają interfejs API administracji urządzeń Android, który zapewnia funkcje administrowania urządzeniami na poziomie systemu. Na przykład wbudowana aplikacja poczty e-mail systemu Android korzysta z interfejsów API w celu poprawy obsługi programu Exchange. Za pomocą aplikacji E-mail administratorzy Exchange mogą egzekwować zasady dotyczące haseł — w tym haseł alfanumerycznych lub numerycznych kodów PIN — na różnych urządzeniach. Administratorzy mogą również zdalnie wyczyścić (czyli przywrócić ustawienia fabryczne) zgubionych lub skradzionych telefonów.

Oprócz wykorzystania w aplikacjach wchodzących w skład systemu 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 .