Auf Betriebssystemebene bietet die Android-Plattform die Sicherheit des Linux-Kernels sowie eine sichere Interprozesskommunikation (IPC), um eine sichere Kommunikation zwischen Anwendungen zu ermöglichen, die in verschiedenen Prozessen ausgeführt werden. Diese Sicherheitsfunktionen auf Betriebssystemebene stellen sicher, dass selbst nativer Code durch die Anwendungs-Sandbox eingeschränkt wird. Unabhängig davon, ob dieser Code das Ergebnis des enthaltenen Anwendungsverhaltens oder die Ausnutzung einer Anwendungsschwachstelle ist, das System wurde entwickelt, um zu verhindern, dass die Rogue-Anwendung andere Anwendungen, das Android-System oder das Gerät selbst schädigt. Siehe Kernel-Konfiguration für Maßnahmen, die Sie ergreifen können, um den Kernel auf Ihren Geräten zu stärken. Erforderliche Einstellungen finden Sie im Android Compatibility Definition Document (CDD) .
Linux-Sicherheit
Die Grundlage der Android-Plattform ist der Linux-Kernel. Der Linux-Kernel ist seit Jahren weit verbreitet und wird in Millionen von sicherheitssensiblen Umgebungen verwendet. Durch seine Geschichte, in der es von Tausenden von Entwicklern ständig erforscht, angegriffen und repariert wurde, ist Linux zu einem stabilen und sicheren Kernel geworden, dem viele Unternehmen und Sicherheitsexperten vertrauen.
Als Basis für eine mobile Computerumgebung bietet der Linux-Kernel Android mehrere wichtige Sicherheitsfunktionen, darunter:
- Ein benutzerbasiertes Berechtigungsmodell
- Prozessisolierung
- Erweiterbarer Mechanismus für sicheren IPC
- Die Möglichkeit, unnötige und potenziell unsichere Teile des Kernels zu entfernen
Als Mehrbenutzer-Betriebssystem ist es ein grundlegendes Sicherheitsziel des Linux-Kernels, Benutzerressourcen voneinander zu isolieren. Die Linux-Sicherheitsphilosophie besteht darin, Benutzerressourcen voreinander zu schützen. Also Linux:
- Verhindert, dass Benutzer A die Dateien von Benutzer B liest
- Stellt sicher, dass Benutzer A den Speicher von Benutzer B nicht erschöpft
- Stellt sicher, dass Benutzer A die CPU-Ressourcen von Benutzer B nicht erschöpft
- Stellt sicher, dass Benutzer A die Geräte von Benutzer B nicht erschöpft (z. B. Telefonie, GPS und Bluetooth)
Die Anwendungs-Sandbox
Die Anwendungssicherheit von Android wird durch die Anwendungs-Sandbox erzwungen, die Apps voneinander isoliert und Apps und das System vor schädlichen Apps schützt. Weitere Einzelheiten finden Sie unter Anwendungs-Sandbox .
Systempartition und abgesicherter Modus
Die Systempartition enthält den Android-Kernel sowie die Betriebssystembibliotheken, Anwendungslaufzeit, Anwendungsframework und Anwendungen. Diese Partition ist schreibgeschützt. Wenn ein Benutzer das Gerät im abgesicherten Modus startet, können Anwendungen von Drittanbietern manuell vom Gerätebesitzer gestartet werden, werden jedoch nicht standardmäßig gestartet.
Dateisystemberechtigungen
In einer Umgebung im UNIX-Stil stellen Dateisystemberechtigungen sicher, dass ein Benutzer die Dateien eines anderen Benutzers nicht ändern oder lesen kann. Bei Android läuft jede Anwendung als eigener Benutzer. Sofern der Entwickler Dateien nicht explizit mit anderen Anwendungen teilt, können Dateien, die von einer Anwendung erstellt wurden, nicht von einer anderen Anwendung gelesen oder geändert werden.
Sicherheitsoptimiertes Linux
Android verwendet Security-Enhanced Linux (SELinux), um Zugriffssteuerungsrichtlinien anzuwenden und eine obligatorische Zugriffssteuerung (mac) für Prozesse einzurichten. Einzelheiten finden Sie unter Security-Enhanced Linux in Android .
Verifizierter Start
Android 6.0 und höher unterstützt verifizierte Boot- und Device-Mapper-Verity. Der verifizierte Start garantiert die Integrität der Gerätesoftware, beginnend mit einem Hardware-Root-of-Trust bis hin zur Systempartition. Während des Bootens überprüft jede Stufe kryptografisch die Integrität und Authentizität der nächsten Stufe, bevor sie ausgeführt wird.
Android 7.0 und höher unterstützt streng erzwungenes verifiziertes Booten, was bedeutet, dass kompromittierte Geräte nicht booten können.
Weitere Einzelheiten finden Sie unter Verifizierter Start .
Kryptographie
Android bietet eine Reihe kryptografischer APIs zur Verwendung durch Anwendungen. Dazu gehören Implementierungen von standardmäßigen und häufig verwendeten kryptografischen Primitiven wie AES, RSA, DSA und SHA. Darüber hinaus werden APIs für Protokolle höherer Ebene wie SSL und HTTPS bereitgestellt.
Android 4.0 hat die KeyChain -Klasse eingeführt, damit Anwendungen den System-Anmeldeinformationsspeicher für private Schlüssel und Zertifikatsketten verwenden können.
Rooten von Geräten
Standardmäßig werden auf Android nur der Kernel und eine kleine Teilmenge der Kernanwendungen mit Root-Berechtigungen ausgeführt. Android hindert einen Benutzer oder eine Anwendung mit Root-Berechtigungen nicht daran, das Betriebssystem, den Kernel oder eine andere Anwendung zu ändern. Im Allgemeinen hat root vollen Zugriff auf alle Anwendungen und alle Anwendungsdaten. Benutzer, die die Berechtigungen auf einem Android-Gerät ändern, um Root-Zugriff auf Anwendungen zu gewähren, erhöhen das Sicherheitsrisiko gegenüber bösartigen Anwendungen und potenziellen Anwendungsfehlern.
Die Fähigkeit, ein eigenes Android-Gerät zu modifizieren, ist wichtig für Entwickler, die mit der Android-Plattform arbeiten. Auf vielen Android-Geräten haben Benutzer die Möglichkeit, den Bootloader zu entsperren, um die Installation eines alternativen Betriebssystems zu ermöglichen. Diese alternativen Betriebssysteme können einem Eigentümer ermöglichen, Root-Zugriff zu erlangen, um Anwendungen und Systemkomponenten zu debuggen, oder um auf Funktionen zuzugreifen, die Anwendungen nicht von Android-APIs geboten werden.
Auf einigen Geräten kann eine Person mit physischer Kontrolle über ein Gerät und ein USB-Kabel ein neues Betriebssystem installieren, das dem Benutzer Root-Rechte gewährt. Um vorhandene Benutzerdaten vor Kompromittierung zu schützen, erfordert der Bootloader-Entsperrmechanismus, dass der Bootloader alle vorhandenen Benutzerdaten als Teil des Entsperrschritts löscht. Durch Ausnutzen eines Kernel-Bugs oder einer Sicherheitslücke erlangter Root-Zugriff kann diesen Schutz umgehen.
Das Verschlüsseln von Daten mit einem auf dem Gerät gespeicherten Schlüssel schützt die Anwendungsdaten nicht vor Root-Benutzern. Anwendungen können eine Datenschutzebene hinzufügen, indem sie mit einem Schlüssel verschlüsselt werden, der außerhalb des Geräts gespeichert ist, z. B. auf einem Server oder einem Benutzerkennwort. Dieser Ansatz kann vorübergehenden Schutz bieten, solange der Schlüssel nicht vorhanden ist, aber irgendwann muss der Schlüssel der Anwendung bereitgestellt werden, und Root-Benutzer können dann darauf zugreifen.
Ein robusterer Ansatz zum Schutz von Daten vor Root-Benutzern ist die Verwendung von Hardwarelösungen. OEMs können Hardwarelösungen implementieren, die den Zugriff auf bestimmte Arten von Inhalten wie DRM für die Videowiedergabe oder den NFC-bezogenen vertrauenswürdigen Speicher für Google Wallet einschränken.
Im Falle eines verlorenen oder gestohlenen Geräts verwendet die vollständige Dateisystemverschlüsselung auf Android-Geräten das Gerätekennwort, um den Verschlüsselungsschlüssel zu schützen, sodass das Ändern des Bootloaders oder des Betriebssystems nicht ausreicht, um ohne das Gerätekennwort des Benutzers auf Benutzerdaten zuzugreifen.
Benutzersicherheitsfunktionen
Dateisystemverschlüsselung
Android 3.0 und höher bietet eine vollständige Dateisystemverschlüsselung, sodass alle Benutzerdaten im Kernel verschlüsselt werden können.
Android 5.0 und höher unterstützt die Festplattenverschlüsselung . Die Festplattenverschlüsselung verwendet einen einzigen Schlüssel – geschützt mit dem Gerätepasswort des Benutzers – um die gesamte Benutzerdatenpartition eines Geräts zu schützen. Beim Booten müssen Benutzer ihre Anmeldeinformationen eingeben, bevor auf einen Teil der Festplatte zugegriffen werden kann.
Android 7.0 und höher unterstützt die dateibasierte Verschlüsselung . Die dateibasierte Verschlüsselung ermöglicht die Verschlüsselung verschiedener Dateien mit unterschiedlichen Schlüsseln, die unabhängig voneinander entsperrt werden können.
Weitere Einzelheiten zur Implementierung der Dateisystemverschlüsselung finden Sie im Abschnitt Verschlüsselung .
Passwortschutz
Android kann so konfiguriert werden, dass ein vom Benutzer bereitgestelltes Passwort überprüft wird, bevor Zugriff auf ein Gerät gewährt wird. Dieses Passwort verhindert nicht nur die unbefugte Nutzung des Geräts, sondern schützt auch den kryptografischen Schlüssel für eine vollständige Dateisystemverschlüsselung.
Die Verwendung eines Passworts und/oder von Passwortkomplexitätsregeln kann von einem Geräteadministrator verlangt werden.
Geräteverwaltung
Android 2.2 und höher stellt die Android-Geräteverwaltungs-API bereit, die Geräteverwaltungsfunktionen auf Systemebene bereitstellt. Beispielsweise verwendet die integrierte Android-E-Mail-Anwendung die APIs, um die Exchange-Unterstützung zu verbessern. Über die E-Mail-Anwendung können Exchange-Administratoren Kennwortrichtlinien – einschließlich alphanumerischer Kennwörter oder numerischer PINs – auf allen Geräten durchsetzen. Administratoren können auch verloren gegangene oder gestohlene Mobilteile aus der Ferne löschen (d. h. die Werkseinstellungen wiederherstellen).
Zusätzlich zur Verwendung in Anwendungen, die im Android-System enthalten sind, stehen diese APIs Drittanbietern von Geräteverwaltungslösungen zur Verfügung. Einzelheiten zur API finden Sie unter Geräteverwaltung .