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, 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 verschiedenen integritätsgeschützten Partitionen enthalten 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 7.0 und höher unterstützt streng erzwungenes verifiziertes Booten, was bedeutet, dass kompromittierte Geräte nicht booten können. 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.
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 Kerndienste mit Root-Berechtigungen ausgeführt. SELinux schränkt immer noch Userspace-Prozesse ein, die als Root ausgeführt werden. Verifizierter Start verhindert, dass ein Benutzer oder Dienst mit Root-Berechtigungen das Betriebssystem dauerhaft ändert.
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 auf gerooteten Geräten. 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 stellt die Speicherverschlüsselung sicher, dass auf Benutzerdaten nicht zugegriffen werden kann, ohne die Sperrbildschirm-Anmeldeinformationen des Benutzers zu kennen.
Benutzersicherheitsfunktionen
Speicherverschlüsselung
Die CDD erfordert, dass alle Geräte, die mit Android 10 oder höher gestartet werden, und die meisten Geräte, die mit Android 6.0 oder höher gestartet werden, die Speicherverschlüsselung standardmäßig aktivieren.
Die aktuelle Implementierung der Speicherverschlüsselung von Android ist die dateibasierte Verschlüsselung in Kombination mit der Metadatenverschlüsselung . Bei der dateibasierten Verschlüsselung werden Dateiinhalte und -namen auf der Benutzerdatenpartition transparent verschlüsselt, wobei unterschiedliche Schlüssel für unterschiedliche Verzeichnisse verwendet werden. Es bietet mit Anmeldeinformationen und Geräten verschlüsselte Speicherverzeichnisse für jeden Benutzer, einschließlich Arbeitsprofilen.
Die Metadatenverschlüsselung ergänzt die dateibasierte Verschlüsselung. Es verschlüsselt alle Blöcke auf der Benutzerdatenpartition, die nicht bereits durch dateibasierte Verschlüsselung verschlüsselt sind, mit einem Schlüssel, der nicht an die Sperrbildschirm-Anmeldeinformationen eines Benutzers gebunden ist, aber dennoch durch Verified Boot geschützt ist.
Schutz der Sperrbildschirm-Anmeldeinformationen
Android kann so konfiguriert werden, dass vom Benutzer bereitgestellte Sperrbildschirm-Anmeldeinformationen (PIN, Passwort oder Muster) überprüft werden, bevor Zugriff auf ein Gerät gewährt wird. Zusätzlich zum Verhindern der unbefugten Verwendung des Geräts schützen die Sperrbildschirm-Anmeldeinformationen den kryptografischen Schlüssel für mit Anmeldeinformationen verschlüsselte Daten. Die Verwendung von Sperrbildschirm-Anmeldeinformationen und/oder Komplexitätsregeln für Anmeldeinformationen 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 Sperrbildschirm-Anmeldeinformationen – 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 .