Funktionsübersicht
GrapheneOS ist ein datenschutzfreundliches und sicheres mobiles Betriebssystem mit hervorragender Funktionalität und Benutzerfreundlichkeit. Es basiert auf der soliden Grundlage des Android Open Source Project (AOSP) und legt größten Wert darauf, die Angriffsfläche nicht zu vergrößern oder das bewährte Sicherheitsmodell zu beeinträchtigen. GrapheneOS verbessert Datenschutz und Sicherheit durch zahlreiche sorgfältig entwickelte Funktionen, die auch gegen reale Angreifer wirksam sind. Benutzerfreundlichkeit und App-Kompatibilität werden bei allen Funktionen berücksichtigt.
GrapheneOS konzentriert sich auf Substanz statt auf Branding und Marketing. Es verfolgt nicht den üblichen Ansatz, eine Vielzahl unsicherer Funktionen einzubauen, in der Hoffnung, dass Angreifer diese nicht erkennen, und dadurch die tatsächliche Privatsphäre und Sicherheit zu beeinträchtigen. Es handelt sich um ein sehr technisches Projekt, das Datenschutz und Sicherheit direkt in das Betriebssystem integriert, anstatt diverse unnötige Zusatzfunktionen hinzuzufügen oder subjektive Auswahlmöglichkeiten für Drittanbieter-Apps einzubinden.
GrapheneOS arbeitet intensiv daran, die Lücken zu schließen, die durch die fehlende Integration von Google-Apps und -Diensten in das Betriebssystem entstehen. Wir haben nichts gegen die Nutzung von Google-Diensten, aber eine aufdringliche Integration ins Betriebssystem ist unerwünscht. GrapheneOS wird nicht den einfachen Weg gehen und eine unvollständige und schlecht gesicherte Drittanbieter-Implementierung von Google-Diensten in das Betriebssystem integrieren. Darauf könnten sich Nutzer niemals verlassen. Zudem würde man ständig einem sich ständig verändernden Ziel hinterherjagen und eine geringere Sicherheit als das Original bieten, wenn der Fokus lediglich auf der Funktionsfähigkeit liegt, ohne großen Wert auf Robustheit und Sicherheit zu legen.
Diese Seite bietet einen Überblick über die aktuell implementierten Funktionen, die GrapheneOS von AOSP unterscheiden. Sie dokumentiert nicht unsere zahlreichen historischen Funktionen, die aus verschiedenen Gründen nicht mehr enthalten sind. Viele unserer Funktionen wurden in AOSP, Linux, LLVM und anderen Projekten implementiert, auf denen GrapheneOS basiert, und sind daher hier nicht aufgeführt. In vielen Fällen waren wir an der Implementierung dieser Funktionen in Kerninfrastrukturprojekten beteiligt.
www.grapheneos.org/features#sandboxed-google-play
Anlaufstelle für Linux, Open Source Software, Bitcoin und Co
GrapheneOS
Dies sind die Funktionen von GrapheneOS, die über die von Android Open Source Project Version 16 bereitgestellten Funktionen hinausgehen. Sie umfassen ausschließlich unsere Verbesserungen an AOSP und nicht die Basisfunktionen. In diesem Abschnitt werden keine Funktionen wie die standardmäßige App-Sandbox, der verifizierte Startvorgang, Schutzmaßnahmen gegen Sicherheitslücken (ASLR, SSP, Shadow Call Stack, Control Flow Integrity usw.), das Berechtigungssystem (Vordergrund- und Einmalberechtigungen, eingeschränkte Dateizugriffskontrolle usw.) aufgeführt, sondern nur unsere Verbesserungen an modernem Android. Wir planen, eine separate Seite mit den von uns beigetragenen Verbesserungen an Android bereitzustellen, da diese Funktionen hier nicht aufgeführt sind, obwohl sie einen wesentlichen Teil unserer bisherigen Arbeit ausmachen.
Schutz vor der Ausnutzung unbekannter Schwachstellen
GrapheneOS legt großen Wert darauf, Nutzer vor Angreifern zu schützen, die unbekannte (Zero-Day-)Schwachstellen ausnutzen. Das bloße Beheben von Schwachstellen schützt Nutzer nicht, bevor die Schwachstelle dem Hersteller bekannt ist und ein entsprechender Patch entwickelt und veröffentlicht wurde.
Unbekannte (Zero-Day-)Schwachstellen werden viel häufiger ausgenutzt, als allgemein angenommen wird, um Benutzer nicht nur bei gezielten Angriffen, sondern auch bei großflächigen Installationen zu kompromittieren. Project Zero führt eine Tabelle, in der entdeckte Zero-Day-Exploits erfasst werden. Dies bietet jedoch nur einen Ausschnitt des Geschehens, da lediglich Fälle dokumentiert werden, in denen Angreifer bei der Ausnutzung von Benutzerschwachstellen ertappt wurden. Häufig erfolgen die Angriffe nicht gezielt, sondern werden auf öffentlichen Websites usw. durchgeführt.
Die erste Verteidigungslinie ist die Reduzierung der Angriffsfläche. Durch das Entfernen unnötigen Codes oder exponierter Angriffsflächen lassen sich viele Schwachstellen vollständig beseitigen. GrapheneOS vermeidet es, nützliche Funktionen für Endnutzer einzuschränken. Dennoch können wir viele Funktionen standardmäßig deaktivieren und die Nutzer zur aktiven Nutzung auffordern, um sie für die meisten Nutzer unzugänglich zu machen. Ein Beispiel dafür, das wir in Android integriert haben, ist die standardmäßige Deaktivierung der Profiling-Unterstützung des Kernels, da diese eine Hauptursache für Linux-Kernel-Schwachstellen war und ist. Profiling ist nun nur noch für Entwickler verfügbar, die die Entwicklertools und die Android Debug Bridge (ADB) aktivieren und anschließend Profiling-Tools über ADB nutzen. Die Aktivierung ist zudem auf den nächsten Neustart beschränkt. Diese Funktion wird hier nicht aufgeführt, da sie in Android selbst implementiert wurde.
Die nächste Verteidigungslinie besteht darin, Angreifer daran zu hindern, eine Schwachstelle auszunutzen, indem dies unmöglich, unzuverlässig oder zumindest deutlich erschwert wird. Die überwiegende Mehrheit der Schwachstellen sind gut erforschte Fehlerklassen, deren Ausnutzung durch Vermeidung dieser Fehler mittels geeigneter Programmiersprachen/Tools oder durch wirksame Schutzmaßnahmen gegen Exploits verhindert werden kann. In vielen Fällen lassen sich Schwachstellenklassen vollständig beseitigen, in vielen anderen Fällen kann ihre Ausnutzung zumindest deutlich erschwert werden. Android leistet in diesem Bereich viel Arbeit, und GrapheneOS hat dazu beigetragen, diese Entwicklung sowohl in Android als auch im Linux-Kernel voranzutreiben. Die Entwicklung grundlegender Lösungen für diese Probleme ist sehr ressourcenintensiv und geht oft mit erheblichen Einbußen bei Leistung, Speicher oder Kompatibilität einher. Gängige Betriebssysteme priorisieren Sicherheit in der Regel nicht gegenüber anderen Bereichen. GrapheneOS geht einen Schritt weiter und bietet Nutzern daher Optionen, die für sie passenden Kompromisse auszuwählen, anstatt sie dazu zu zwingen. In der Zwischenzeit können auch schwächere, weniger umfassende Schutzmaßnahmen gegen Exploits einen wirksamen Schutz vor Angriffen bieten, sofern sie auf einem klaren Bedrohungsmodell basieren. GrapheneOS investiert stark in viele Bereiche der Entwicklung dieser Schutzmechanismen: Entwicklung/Bereitstellung speichersicherer Sprachen/Bibliotheken, Werkzeuge zur statischen/dynamischen Analyse und viele Arten von Gegenmaßnahmen.
Die letzte Verteidigungslinie ist die Isolation durch Sandboxing auf verschiedenen Ebenen: feingranulare Sandboxes für einen spezifischen Kontext, wie beispielsweise Browser-Renderer pro Website, Sandboxes für eine spezifische Komponente, wie die Media-Codec-Sandbox von Android, und App-/Workspace-Sandboxes, wie die Android-App-Sandbox, die jede App isoliert und gleichzeitig die Grundlage für Benutzer-/Arbeitsprofile bildet. GrapheneOS verbessert all diese Sandboxes, indem es den Kernel und andere Basiskomponenten des Betriebssystems stärkt und die Sandboxing-Richtlinien optimiert.
Die Verhinderung der dauerhaften Kontrolle eines Angreifers über eine Komponente oder das Betriebssystem/die Firmware durch verifiziertes Booten und die Vermeidung von Vertrauen in persistente Zustände tragen ebenfalls dazu bei, den Schaden nach einer Kompromittierung zu mindern.
Sicherheitslücken, die die Ausführung von Code aus der Ferne ermöglichen, sind die schwerwiegendsten und erlauben einem Angreifer, sich unbefugten Zugriff auf das Gerät zu verschaffen oder es sogar weitgehend aus der Ferne zu kontrollieren. Lokale Sicherheitslücken, die die Ausführung von Code aus der Ferne ermöglichen, erlauben das Ausbrechen aus einer Sandbox, beispielsweise der App-Sandbox oder der Browser-Renderer-Sandbox, nachdem entweder eine App oder ein Browser-Renderer aus der Ferne kompromittiert, die Lieferkette einer App manipuliert oder der Benutzer dazu gebracht wurde, eine schädliche App zu installieren. Es existieren viele weitere Arten von Sicherheitslücken, aber der Großteil dessen, wovor wir uns schützen, lässt sich in diese beiden Hauptkategorien einteilen.
Die überwiegende Mehrheit der lokalen und entfernten Codeausführungs-Schwachstellen sind Speicherbeschädigungsfehler, die durch speicherunsichere Programmiersprachen oder seltenen unsicheren Low-Level-Code in ansonsten speichersicheren Sprachen verursacht werden. Die meisten übrigen Probleme entstehen durch dynamische Codeausführung bzw. -ladung. Unser Hauptaugenmerk liegt darauf, die Ausnutzung von Speicherbeschädigungsfehlern zu verhindern oder zu erschweren und anschließend die dynamische Codeausführung einzuschränken. Dies dient sowohl der Erschwerung der Eskalation von Speicherbeschädigungsfehlern als auch der direkten Abschwächung von Fehlern, die durch dynamisches Laden, Generieren und Ausführen von Code entstehen, wie beispielsweise JIT-Compiler-Fehler oder Plugin-Lade-Schwachstellen.
Reduzierung der Angriffsfläche
- Die Angriffsfläche für Fern-, lokale und standortbasierte Angriffe wurde erheblich reduziert, indem unnötiger Code entfernt, mehr Funktionen optional gestaltet und optionale Funktionen standardmäßig deaktiviert wurden (NFC, Bluetooth, UWB usw.), wenn der Bildschirm gesperrt ist (USB, USB-C, Pogo-Pins, Kamerazugriff) und optional nach einer Zeitüberschreitung (Bluetooth, Wi-Fi).
- Der Zugriff auf das native Debugging (ptrace) ist für alle mitgelieferten Apps gesperrt, um die lokale Angriffsfläche zu verringern. Für vom Benutzer installierte Apps ist der ptrace-Zugriff aus Kompatibilitätsgründen standardmäßig erlaubt, kann aber auch standardmäßig gesperrt werden. In beiden Fällen kann der ptrace-Zugriff manuell für jede App einzeln gesperrt oder erlaubt werden. Versucht eine App, für die der Zugriff auf ptrace gesperrt ist, diesen zu nutzen, zeigt GrapheneOS eine Benachrichtigung mit einem Link zu den nativen Debugging-Einstellungen der jeweiligen App an.
USB-C-Anschluss und Pogo-Pins steuern
Unsere Einstellung für USB-C-Anschluss und Pogo-Pins schützt vor Angriffen über USB-C oder Pogo-Pins während des Betriebssystemstarts. Bei den meisten Geräten ohne Pogo-Pins ist die Einstellung als „USB-C-Anschluss“ bezeichnet .
Die Funktion verfügt über fünf Modi:
- Aus
- Nur zum Laden
- Laden nur im verriegelten Zustand
- Laden nur im verriegelten Zustand, außer vor dem ersten Entsperren.
- An
Standardmäßig wird im gesperrten Zustand nur geladen , wodurch die Angriffsfläche deutlich reduziert wird. Nach dem Sperren werden neue USB-Verbindungen über USB-C und Pogo-Pins sofort blockiert – sowohl hardwareseitig durch Konfiguration des USB-Controllers als auch systemseitig im Kernel, um eine zusätzliche Sicherheitsebene zu schaffen. Die Datenleitungen werden hardwareseitig deaktiviert, sobald bestehende Verbindungen beendet werden, was sofort geschieht, wenn keine USB-Verbindungen bestanden. Auch alternative USB-C-Modi, einschließlich DisplayPort, werden sowohl auf Betriebssystem- als auch auf Hardwareebene deaktiviert.
Unsere Implementierung ist deutlich sicherer als die standardmäßige USB-HAL-Funktion von Android, die Geräteadministrator-Apps zur Verfügung steht. Diese Standardfunktion deaktiviert lediglich die USB-Verwaltung auf Betriebssystemebene. Sie blockiert weder neue USB-Verbindungen noch deaktiviert sie die Datenleitungen auf Hardwareebene. Auch die Verarbeitung der USB-C- und Pogo-Pins-Protokolle im Betriebssystem bleibt aktiviert, und die alternativen USB-C-Modi werden nicht deaktiviert. Die Standardfunktion blockiert USB auf Betriebssystemebene entweder vollständig oder gar nicht, ohne die Möglichkeit, neue Verbindungen zu blockieren und USB erst nach Beendigung bestehender Verbindungen zu deaktivieren. Andere Betriebssysteme, die versuchen, eine ähnliche Funktion über die Standardfunktion zu implementieren, lassen neue USB-Verbindungen im Betriebssystem weiterhin zu, bis alle Verbindungen beendet sind, anstatt des von uns verwendeten zweiphasigen Ansatzes für unsere beiden Modi „Nur Laden im Sperrmodus“.
Der Sicherheitsmodus „ Aus“ deaktiviert neben der Datenübertragung auch den Ladevorgang, um die verbleibende Angriffsfläche des USB-Controllers und des Betriebssystems, das das Laden einschließlich des USB-PD-Protokolls unterstützt, zu eliminieren. Das Gerät kann weiterhin geladen werden, da diese Funktion nicht aktiv ist, solange das Gerät ausgeschaltet ist, im Firmware-basierten Fastboot-Modus oder im Lade-, Wiederherstellungs- oder Fastbootd-Modus gestartet wurde.
Maßnahmen zur Schwachstellenabwehr
- Gehärtete App-Laufzeitumgebung
- Sicheres System zum Starten von Anwendungen, das die gemeinsame Nutzung des Adressraumlayouts und anderer Geheimnisse zwischen Anwendungen vermeidet
- Gehärtete libc, die Schutz gegen die häufigsten Schwachstellenklassen (Speicherbeschädigung) bietet.
- Unser eigener, gehärteter malloc (Speicherallokator) nutzt moderne Hardwarefunktionen, um wirksamen Schutz vor den häufigsten Schwachstellen (Heap-Speicherbeschädigung) zu bieten und gleichzeitig die Lebensdauer sensibler Daten im Speicher zu reduzieren. Die README-Datei von hardened_malloc enthält ausführliche Informationen dazu. Das hardened_malloc-Projekt ist auf andere Linux-basierte Betriebssysteme portierbar und wird von sicherheitsorientierten Betriebssystemen wie SecureBlue übernommen. Unser Allokator hat auch maßgeblich die Entwicklung der nächsten Generation der musl-malloc-Implementierung beeinflusst , die deutlich höhere Sicherheit als die vorherige musl-malloc-Implementierung bietet und gleichzeitig minimalen Speicherverbrauch und geringen Codeumfang aufweist.
- Vollständig ausgelagerte Metadaten mit Schutz vor Manipulation, wodurch die Ausnutzung durch herkömmliche Zuteilungsmechanismen ausgeschlossen wird.
- Separate Speicherbereiche für Metadaten, große Speicherzuweisungen und jede Slab-Zuweisungsgrößenklasse mit hochenergetischen Zufallsbasen und ohne Wiederverwendung des Adressraums zwischen den verschiedenen Bereichen
- Deterministische Erkennung ungültiger freier Elemente
- Zero-on-free mit Erkennung von Write-after-free durch Überprüfung, ob der Speicher noch mit Nullen belegt ist, bevor er erneut freigegeben wird.
- Verzögerte Wiederverwendung von Adressraum und Speicherzuweisungen durch die Kombination von deterministischen und randomisierten Quarantänen zur Minderung von Use-After-Free-Schwachstellen
- Feinkörnige Randomisierung
- Aggressive Konsistenzprüfungen
- Speichergeschützte Schutzbereiche um Speicherzuweisungen größer als 16 KB mit Randomisierung der Schutzbereichsgrößen für 128 KB und mehr
- Speicherzuweisungen kleiner als 16k haben Schutzbereiche um jeden der Speicherblöcke, die Zuweisungen enthalten (zum Beispiel befinden sich 16-Byte-Zuweisungen in 4096-Byte-Speicherblöcken mit 4096-Byte-Schutzbereichen davor und danach).
- Zu diesen kleineren Speicherzuweisungen werden zufällige Canary-Werte mit einer führenden Null hinzugefügt, um C-String-Überläufe zu blockieren, kleine Überläufe aufzufangen und lineare Überläufe oder andere Heap-Beschädigungen zu erkennen, wenn der Canary-Wert überprüft wird (hauptsächlich bei freiem Speicher).
- Hardwarebasierte Speicherkennzeichnung für Slab-Allokationen (128 KB und kleiner) ermöglicht die probabilistische Erkennung aller Use-After-Free- und Inter-Objekt-Überläufe sowie die deterministische Erkennung aller kleinen/linearen Überläufe und Use-After-Free-Vorfälle, bis der Speicher einmal wiederverwendet und zweimal in Quarantäne geschickt wurde.
- Auf ARMv9 sind Branch Target Identification (BTI) und Pointer Authentication Code (PAC) zum Schutz der Rücksprungadresse für den vom Benutzermodus erstellten Betriebssystemcode aktiviert, anstatt nur für bestimmte Anwendungen.
- Der Überlauf von vorzeichenbehafteten Ganzzahlen ist in C und C++ für Code, in dem die automatische Überlaufprüfung deaktiviert ist, wohldefiniert.
- Gehärteter Kern
- Auf arm64 sind 4-stufige Seitentabellen aktiviert, um einen wesentlich größeren Adressraum (48 Bit statt 39 Bit) mit deutlich höherer Entropie bei der Adressraum-Layout-Randomisierung (33 Bit statt 24 Bit) bereitzustellen.
- Die grundlegende Hardware-Speicherkennzeichnung wird in den Haupt-Kernel-Speicherallokatoren (slab, page_alloc, nicht ausführbares vmalloc) verwendet, um eine probabilistische Erkennung aller Use-After-Free- und Inter-Objekt-Überläufe sowie eine deterministische Erkennung von Use-After-Free bis zur erneuten Speicherallokation zu gewährleisten (wir planen, eine deterministische Erkennung kleiner/linearer Überläufe wie hardened_malloc hinzuzufügen).
- Zufällige Canary-Werte mit einer führenden Null werden dem Kernel-Heap (Slub) hinzugefügt, um C-String-Überläufe zu blockieren, kleine Überläufe aufzufangen und lineare Überläufe oder andere Heap-Beschädigungen zu erkennen, wenn der Canary-Wert überprüft wird (bei Freigabe, Kopien in den/aus dem Benutzerspeicher usw.).
- Der Speicher wird sowohl im Low-Level-Seitenallokator als auch im High-Level-Heap-Allokator (Slub) des Kernels sofort nach seiner Freigabe gelöscht (auf Null gesetzt). Dies reduziert die Lebensdauer sensibler Daten im Speicher erheblich, mindert Use-After-Free-Schwachstellen und macht die meisten Schwachstellen durch die Verwendung nicht initialisierter Daten unschädlich. Ohne unsere Änderungen würden freigegebene Speicherdaten unbegrenzt gespeichert bleiben, bis der Speicher anderweitig verwendet und teilweise oder vollständig mit neuen Daten überschrieben wird.
- Beim frühen Systemstart wird der gesamte vom Betriebssystem nicht genutzte Speicher mit Nullen überschrieben, um Datenreste eines vorherigen Starts zu entfernen, falls Zero-on-Free diese nicht im Rahmen eines sauberen Neustarts/Herunterfahrens löschen konnte. Alle von uns unterstützten Geräte verfügen über einen von uns vorgeschlagenen Schutz vor Reset-Angriffen, der das Überschreiben des Speichers für firmwarebasierte Startmodi vorsieht. Wir müssen diese Funktion jedoch noch für die Startmodi des Betriebssystems implementieren. Vollständig verschlüsselter RAM mit einem bei jedem Neustart verwendeten Schlüssel wird diese Funktionen für neuere Geräte zukünftig überflüssig machen.
- Die Zuweisungen im Kernel-Stack werden auf Null gesetzt, um die meisten Schwachstellen durch die Verwendung nicht initialisierter Daten unschädlich zu machen.
- Verschiedene Möglichkeiten zur Reduzierung der Angriffsfläche durch Deaktivierung von Funktionen oder Einrichtung einer Infrastruktur, die diese nur bei Bedarf dynamisch aktiviert/deaktiviert (perf, ptrace).
- Verschiedene Upstream-Härtungsfunktionen sind aktiviert, darunter viele, an deren Entwicklung und Integration in den Upstream wir im Rahmen unseres linux-hardened-Projekts beteiligt waren (das wir als aktiveres Projekt wiederbeleben wollen).
- Die erzwungene Signierung von Kernelmodulen mit pro Build erstellten RSA 4096 / SHA256 Schlüsseln und der auf erzwungenen Vertraulichkeitsmodus eingestellte Lockdown-Modus tragen dazu bei, eine Low-Level-Grenze zwischen Kernel und Benutzermodus durchzusetzen, selbst wenn Fehler in der SELinux-Richtlinie auftreten oder es zu einer tiefgreifenden Kompromittierung des Benutzermodus kommt.
- Für häufig angegriffene Kernel-Datenstrukturen sind zusätzliche Konsistenz-/Integritätsprüfungen aktiviert.
- Auf ARMv9 ist die Branch Target Identification (BTI) zusätzlich zur typbasierten Kontrollflussintegrität (CFI) von Clang aktiviert, um Funktionen abzudecken, die von der typbasierten CFI ausgeschlossen sind.
- Auf ARMv9 ist ShadowCallStack (SCS) zusätzlich zum PAC-Rücksprungadressenschutz (Pointer Authentication Code) aktiviert, anstatt SCS nur dann zu aktivieren, wenn PAC nicht verfügbar ist.
- Die Just-in-Time-Kompilierung (JIT) und Profilerstellung zur Laufzeit von Android ist vollständig deaktiviert und durch eine vollständige Ahead-of-Time-Kompilierung (AOT) ersetzt. Die einzige JIT-Kompilierung im Basisbetriebssystem ist die V8-JavaScript-JIT-Kompilierung, die für den Vanadium-Browser mit Unterstützung für seitenbezogene Ausnahmen standardmäßig deaktiviert ist.
- Das dynamische Laden von nativem Code sowie Java/Kotlin-Klassen ist für nahezu das gesamte Basisbetriebssystem blockiert. Dies geschieht in Verbindung mit dem verifizierten Startvorgang, um zu verhindern, dass Prozesse des Basisbetriebssystems von Angreifern kontrollierten nativen Code oder Java/Kotlin-Code ausführen. Die einzigen Ausnahmen von dieser Richtlinie für das Basisbetriebssystem sind das Laden von Code im Arbeitsspeicher für die DRM-Sandbox für Medien und die Verwendung des Vanadium JIT-Compilers. Vanadium deaktiviert die JIT-Kompilierung standardmäßig für alle Websites und Anwendungen, die die WebView verwenden, mit Ausnahme unserer PDF-Viewer-App. Vanadium deaktiviert den JIT-Compiler standardmäßig. Die Deaktivierung kann pro Website und pro Anwendung einzeln erfolgen. Die Blockierung des dynamischen Codeladens wird pro Prozess mit seccomp-bpf basierend auf der jeweiligen JIT-Compiler-Deaktivierung pro Website/Anwendung durchgesetzt.
- Das dynamische Laden von Code, sowohl für nativen Code als auch für Java/Kotlin-Klassen, kann für installierte Apps über drei Schutzoptionen deaktiviert werden: Dynamisches Laden aus dem Speicher, Dynamisches Laden vom Speicher und WebView JIT. Dies ermöglicht es auch, WebView JIT für unseren PDF-Viewer und das dynamische Laden aus dem Speicher für den Vanadium-Browser zu deaktivieren, um die Unterstützung für die JIT-Kompilierung pro Website zu deaktivieren. Um die Bedienung zu vereinfachen, wird eine Benachrichtigung angezeigt, wenn das dynamische Laden von Code aus dem Speicher oder vom Speicher blockiert ist. Bei Blockierung vom Speicher wird der Dateipfad angezeigt. So können Benutzer die Funktion für alle ihre Apps deaktivieren und sie anschließend nur für die Apps aktivieren, die sie benötigen.
- Dateisystemzugriffshärtung
Verbesserte Sandbox-Funktion
GrapheneOS verbessert die Anwendungssandbox durch die Absicherung der SELinux- und seccomp-bpf-Richtlinien sowie aller Komponenten wie des Kernels, der die Anwendungssandbox implementiert. Dadurch wird Angreifern die Möglichkeit geboten, diese zu umgehen, falls sie Schwachstellen in diesen Komponenten ausnutzen können. Unser Hauptaugenmerk liegt auf der Anwendungssandbox, wir verbessern aber auch andere Sandboxes, darunter die Webbrowser-Renderer-Sandbox, die sowohl für den Standardbrowser als auch für die vom Betriebssystem bereitgestellte WebView-Rendering-Engine verwendet wird und von einer Vielzahl anderer Anwendungen – von dedizierten Browsern bis hin zu Messaging-Apps – genutzt wird.
Persistenzschutz / Erkennung
- Verbesserter verifizierter Start mit besseren Sicherheitseigenschaften und reduzierter Angriffsfläche
- GrapheneOS vervollständigt die unvollständige Implementierung des verifizierten Bootvorgangs für außerplanmäßige Paketaktualisierungen (APKs) im Betriebssystem. Dies wird durch die Anforderung erzwungen, dass fs-verity-Metadaten für System-App-Aktualisierungen sowohl bei der Installation als auch beim Systemstart mit einem vertrauenswürdigen Schlüssel signiert werden. Dadurch wird eine kontinuierliche Verifizierung gewährleistet, bei der jeder Lesevorgang einer außerplanmäßigen APK-Aktualisierung analog zu jedem Lesevorgang einer Firmware-, Betriebssystem- oder APEX-Aktualisierung verifiziert wird. Der Signaturschlüssel und die Versionsnummer werden erzwungen, um Downgrades oder andere Angriffe, wie das Ersetzen eines Pakets durch eine Variante desselben Pakets von einem anderen GrapheneOS-fähigen Gerät, zu verhindern. Wir deaktivieren den persistenten Paket-Parsing-Cache, um zu verhindern, dass die Metadatenprüfungen durch diesen ansonsten sehr persistenten Zustand umgangen werden. Dies hat nur einen sehr geringen negativen Einfluss auf die Bootzeit, da die Daten von vorherigen Starts nicht verfügbar sind (typischerweise weniger als 1 Sekunde).
- GrapheneOS schließt eine Sicherheitslücke, durch die anwendungsbasierte Systemkomponenten, die als Teil des Betriebssystems erstellt wurden, auf eine ältere Version zurückgestuft werden konnten, da der Versionscode bei Aktualisierungen der Systemkomponenten im Rahmen von Betriebssystemänderungen nicht erhöht wurde. Dies wird sowohl bei der Paketinstallation als auch beim Systemstart sichergestellt.
- Verbesserte hardwarebasierte Attestierung mit präziseren Versionsinformationen
- Hardwarebasierte Sicherheitsverifizierung und -überwachung über unsere Auditor-App und unseren Attestierungsdienst
- Die Unterstützung für komprimierte APEX-Module ist deaktiviert, da sie für GrapheneOS nicht nützlich ist, unnötigen zusätzlichen Speicherplatz belegt und die Angriffsfläche für verifizierte Boot-Angriffe vergrößert.
Vollständigere Patches
GrapheneOS enthält Korrekturen für eine große Anzahl von Sicherheitslücken, die in Android noch nicht behoben wurden.
Wir können die neuesten Linux-Kernel-LTS-Versionen schnell und sicher auf Geräten mit GKI-Unterstützung (Generic Kernel Image) bereitstellen, darunter auch die Pixel-Smartphones der 6. und 7. Generation. Zum Zeitpunkt der Erstellung dieses Dokuments (06.11.2023) verwendet GrapheneOS die neueste Linux 5.10 GKI LTS-Version (5.10.199) für Pixel-Smartphones der 6. und 7. Generation. Das Standard-Betriebssystem von Pixel basiert auf Linux 5.10.157 vom 02.12.2022 mit einigen zusätzlichen, nachträglich portierten Patches. GrapheneOS bietet somit Hunderte relevanter Kernel-Patches, darunter viele Sicherheitspatches, die im Standard-Betriebssystem noch nicht enthalten sind. Dank der Vorgehensweise von Pixel, neue LTS-Versionen erst vierteljährlich nach einer langen Testphase zu veröffentlichen, können wir stets mehrere Monate voraus sein.
Wir entdecken häufig selbst neue Sicherheitslücken und melden diese an die Entwickler. Wir haben bereits Dutzende von Sicherheitslücken sowohl im allgemeinen Android-Quellcode als auch speziell für Pixel-Geräte gemeldet. Oftmals finden wir auch fehlende Patches, die eigentlich hätten eingebunden werden sollen, insbesondere bei gerätespezifischen Komponenten mit teilweise gemeinsam genutzten, aber separaten Quellcodebasen für verschiedene Geräte.
Unser Gesamtansatz konzentriert sich auf systemische Verbesserungen des Datenschutzes und der Sicherheit, aber die Behebung individueller Schwachstellen ist nach wie vor sehr wichtig.
Google Play im Sandbox-Modus
GrapheneOS verfügt über eine Kompatibilitätsschicht, die die Installation und Nutzung offizieller Google Play-Versionen in der Standard-App-Sandbox ermöglicht. Google Play erhält auf GrapheneOS keinerlei Sonderzugriffe oder Privilegien, im Gegensatz zum Umgehen der App-Sandbox mit umfangreichen Zugriffsrechten. Die Kompatibilitätsschicht sorgt dafür, dass Google Play innerhalb der vollständigen App-Sandbox funktioniert. Da GrapheneOS Google Play selbst bei installierter App nicht nutzt, dient es auch nicht als Backend für die Betriebssystemdienste.
Da Google Play-Apps unter GrapheneOS wie normale Apps funktionieren, werden sie in einem bestimmten Benutzer- oder Arbeitsprofil installiert und sind nur innerhalb dieses Profils verfügbar. Nur Apps innerhalb desselben Profils können sie nutzen und müssen dies explizit bestätigen. Sie funktionieren wie jede andere App und verfügen über keine besonderen Funktionen. Wie jede andere App können sie nicht auf Daten anderer Apps zugreifen und benötigen die ausdrückliche Zustimmung des Nutzers, um auf Profildaten oder die Standardberechtigungen zuzugreifen. Apps innerhalb desselben Profils können mit gegenseitiger Zustimmung miteinander kommunizieren; dies gilt auch für die Sandbox-Umgebung von Google Play.
Die Sandbox-Version von Google Play ist nahezu vollständig funktionsfähig und bietet fast vollständige Kompatibilität mit dem App-Ökosystem, das von Google Play abhängt. Lediglich einige wenige privilegierte Funktionen, die wir noch nicht in andere Ansätze mit unserer Kompatibilitätsschicht integriert haben, sind nicht verfügbar. Manche Funktionen sind von Natur aus privilegiert und können nicht über die Kompatibilitätsschicht bereitgestellt werden.
Die meisten Funktionen der Play-Dienste funktionieren einwandfrei, einschließlich dynamisch heruntergeladener/aktualisierter Module (Dynamite-Module) und Funktionen modularer App-Komponenten wie Google Play Spiele. Standardmäßig werden Standortanfragen an eine von GrapheneOS bereitgestellte Neuimplementierung des Play-Geolokalisierungsdienstes umgeleitet. Sie können diese Umleitung deaktivieren und stattdessen den Standard-Geolokalisierungsdienst der Play-Dienste verwenden, wenn Sie den Google-Netzwerkstandortdienst und zugehörige Funktionen nutzen möchten.
Unsere Kompatibilitätsschicht bietet volle Unterstützung für den Play Store. Play Store-Dienste wie In-App-Käufe, Play Asset Delivery, Play Feature Delivery und App-/Inhaltslizenzprüfungen sind vollständig verfügbar. Apps können installiert, aktualisiert und deinstalliert werden. Dabei muss der Nutzer die Software als App-Quelle autorisieren und jeder Aktion zustimmen. Die automatische Update-Funktion von Android 12+ wird verwendet, um Apps zu aktualisieren, die zuletzt von der Software installiert wurden.
Anweisungen finden Sie im Abschnitt „Nutzungshinweise“ im Sandbox-Bereich von Google Play .
Android Auto
GrapheneOS bietet die Möglichkeit, die offiziellen Versionen von Android Auto zu installieren und zu nutzen.
Android Auto benötigt privilegierte Zugriffsrechte, um zu funktionieren. GrapheneOS nutzt eine Erweiterung der geschützten Google Play-Kompatibilitätsschicht, um Android Auto mit reduzierten Berechtigungen auszuführen.
Weitere Details finden Sie im Abschnitt „Benutzerhandbuch“ auf Android Auto .
Netzwerkberechtigung umschalten
GrapheneOS bietet eine Option zum Deaktivieren der Netzwerkberechtigung, mit der sowohl der direkte als auch der indirekte Zugriff auf alle verfügbaren Netzwerke unterbunden werden kann. Auch das lokale Netzwerk (localhost) ist durch diese Berechtigung geschützt, was wichtig ist, um zu verhindern, dass Apps es zur Kommunikation zwischen Profilen nutzen. Im Gegensatz zu einer Firewall-basierten Implementierung verhindert die Option zum Deaktivieren der Netzwerkberechtigung, dass Apps das Netzwerk über vom Betriebssystem oder anderen Apps im selben Profil bereitgestellte APIs nutzen, sofern sie entsprechend gekennzeichnet sind.
Die als Grundlage für den Netzwerkberechtigungsumschalter verwendete Standardberechtigung INTERNET wird um eine zweite Durchsetzungsebene und eine entsprechende Unterstützung für die Erteilung/den Entzug der Berechtigung pro Profil erweitert.
Um die Kompatibilität mit Android-Apps nicht zu beeinträchtigen, ist die zusätzliche Berechtigungsoption standardmäßig aktiviert. Die Benutzeroberfläche für die App-Installation des Betriebssystems wurde jedoch erweitert, sodass die Option nun auf der Installationsbestätigungsseite angezeigt wird und Benutzer sie bei der Installation einer App deaktivieren können.
Wenn die Netzwerkberechtigung deaktiviert ist, simuliert GrapheneOS einen Netzwerkausfall. In verschiedenen APIs wird das Netzwerk als nicht verfügbar angezeigt, Fehlermeldungen werden aufgrund von Netzwerkverbindungsproblemen anstelle eines Berechtigungsentzugs ausgegeben, und geplante, netzwerkabhängige Aufgaben werden nicht ausgeführt. Dadurch verhalten sich Anwendungen so, als wäre das Netzwerk nicht verfügbar, anstatt abzustürzen oder Fehler aufgrund fehlender Netzwerkzugriffe anzuzeigen.
Sensorenberechtigung umschalten
Zugriffssperre für Sensoren: Deaktiviert den Zugriff auf alle Sensoren, die nicht durch die bestehenden Android-Berechtigungen (Kamera, Mikrofon, Körpersensoren, Aktivitätserkennung) abgedeckt sind, einschließlich Beschleunigungsmesser, Gyroskop, Kompass, Barometer, Thermometer und aller anderen auf dem Gerät vorhandenen Sensoren. Bei deaktiviertem Zugriff erhalten Apps beim Abrufen von Sensorwerten Nullwerte und keine Ereignisse. GrapheneOS generiert eine einfach deaktivierbare Benachrichtigung, wenn Apps versuchen, auf Sensoren zuzugreifen, die durch die verweigerte Berechtigung blockiert sind. Dies erhöht die Benutzerfreundlichkeit, da Nutzer erkennen können, ob eine App versucht, auf diese Funktion zuzugreifen.
Um die Kompatibilität mit Android-Apps nicht zu beeinträchtigen, ist die zusätzliche Berechtigung standardmäßig aktiviert. Wenn eine App versucht, auf Sensoren zuzugreifen und aufgrund einer Zugriffsverweigerung keine Daten erhält, erstellt GrapheneOS eine Benachrichtigung, die sich einfach deaktivieren lässt. Die Sensorberechtigung kann für vom Benutzer installierte Apps unter Einstellungen > Sicherheit & Datenschutz > Weitere Sicherheits- und Datenschutzeinstellungen standardmäßig deaktiviert werden .
Speicherbereiche
GrapheneOS bietet Speicherbereiche als vollständig kompatible Alternative zu den standardmäßigen Android-Speicherberechtigungen. Anstatt Speicherberechtigungen einzeln zu erteilen, können Nutzer Speicherbereiche aktivieren, sodass die App automatisch alle angeforderten Speicherberechtigungen erhält. Unter Android kann eine App, die keine Speicherberechtigungen besitzt, dennoch Dateien und Verzeichnisse erstellen und auf diese zugreifen. Nutzer können optional Dateien und Verzeichnisse als Speicherbereiche hinzufügen, um der App den Zugriff auf Dateien anderer Apps zu ermöglichen.
Weitere Einzelheiten finden Sie im Abschnitt „Speicherzugriff“ der Bedienungsanleitung .
Kontaktbereiche
GrapheneOS bietet Kontaktbereiche als Alternative zur direkten Vergabe von Kontaktberechtigungen. Standardmäßig verhält es sich so, als wäre die Kontaktliste leer, und Benutzer können bestimmten Kontakten oder Kontaktgruppen unterschiedliche Zugriffsrechte erteilen.
Weitere Einzelheiten finden Sie im Abschnitt „Kontaktbereiche“ der Bedienungsanleitung .
Breite Unterstützung von Mobilfunkanbietern ohne invasiven Zugang für Mobilfunkanbieter
GrapheneOS bietet eine deutlich breitere Netzabdeckung als AOSP und entspricht weitgehend dem Standard-Betriebssystem von Pixel-Geräten, ohne dabei die gleichen Kompromisse einzugehen. Mit unserem Projekt CarrierConfig2 und den dazugehörigen Skripten konvertieren wir die APN-, Netzbetreiberkonfigurations-, MMS- und Visual-Voicemail-Datenbanken in die von AOSP verwendeten Formate. Wir entfernen benutzerfeindliche Konfigurationen, die beispielsweise die Bereitstellung von Tethering oder das Deaktivieren von 2G erfordern. Da wir aufdringliche, netzbetreiberspezifische Apps und die Unterstützung für Open Mobile Alliance Device Management (OMA DM) nicht integrieren, entfernen wir auch die davon abhängigen Konfigurationen.
Weitere Einzelheiten finden Sie in unserem Benutzerhandbuch im Abschnitt zur Netzbetreiberfunktionalität .
LTE-Modus
LTE-only-Modus zur Reduzierung der Angriffsfläche von Mobilfunknetzen durch Deaktivierung enormer Mengen sowohl von Legacy-Code (2G, 3G) als auch von hochmodernem Code (5G).
WLAN-Privatsphäre
GrapheneOS unterstützt die MAC-Adressrandomisierung pro Verbindung und aktiviert sie standardmäßig. Dies ist ein datenschutzfreundlicherer Ansatz als die standardmäßige, netzwerkweite, persistente MAC-Adressrandomisierung, die von modernen Android-Versionen verwendet wird.
Wenn die von GrapheneOS hinzugefügte MAC-Randomisierung pro Verbindung verwendet wird, wird der DHCP-Client-Status vor dem erneuten Verbindungsaufbau zu einem Netzwerk gelöscht, um zu vermeiden, dass erkennbar wird, dass es sich wahrscheinlich um dasselbe Gerät wie zuvor handelt.
GrapheneOS behebt außerdem schwerwiegende Sicherheitslücken in der IPv6-Datenschutzadressimplementierung des Linux-Kernels. Dadurch ist die IPv6-Adresse nicht nur für Verbindungen innerhalb desselben Netzwerks, sondern auch netzwerkübergreifend als Kennung nutzbar. Für das Pixel 6 und neuere Modelle müssen diese Änderungen nicht angewendet werden, da das Problem im Linux-Kernel behoben wurde. Da die Korrektur jedoch nicht in ältere LTS-Versionen des Kernels übernommen wurde, ist sie dort weiterhin erforderlich.
Weitere allgemeine Informationen , die über unsere Verbesserungen des Standardansatzes für WLAN-Datenschutz hinausgehen, finden Sie in unserem Nutzungsleitfaden im Abschnitt „WLAN-Datenschutz“ .
Netzwerkstandort
GrapheneOS bietet netzwerkbasierte Standortbestimmung als optionale Funktion mit eigener Implementierung. Ähnlich wie die Dienste von Apple und Google basiert die Standortbestimmung auf lokalen Netzwerken und nicht ausschließlich auf satellitengestützter Ortung (GNSS) mit Beschleunigungstechnologien (A-GNSS). Dadurch wird die Standortbestimmung in Innenräumen und Städten mit hohen Gebäuden deutlich beschleunigt oder überhaupt erst möglich, wo sie mit GNSS nicht realisierbar wäre. Manche Apps setzen die netzwerkbasierte Standortbestimmung voraus und berücksichtigen nicht die Zeit, die für eine GNSS-basierte Schätzung benötigt wird, oder die nicht überall verfügbare. Diese Funktion verbessert daher die Kompatibilität mit Apps.
Im Gegensatz zu Googles Dienst und ähnlich wie Apples Dienst bietet unsere Funktion eine lokale Positionsbestimmung, indem sie Standortdaten von nahegelegenen Netzwerken von einem Dienst abruft. Die Informationen des Dienstes werden bis zu 15 Minuten nach der letzten Nutzung im Arbeitsspeicher zwischengespeichert, sodass die Funktion nach dem Abruf der initialen Daten auch offline funktioniert. Es muss lediglich für jedes Netzwerk, das zur Positionsbestimmung verwendet werden soll, eine Netzwerk-ID gesendet werden. Googles Dienst führt die Positionsbestimmung serverseitig durch, was das wiederholte Senden von Entfernungsschätzungen für jedes Netzwerk bei jeder Positionsaktualisierung erfordert. Unser Ansatz benötigt keine weiteren Informationen an den Dienst, sobald die nahegelegenen Netzwerke im Cache gespeichert sind, und es müssen keine Entfernungsschätzungen mehr gesendet werden. Der Dienst stellt außerdem zusätzliche Daten bereit, die ein relativ großes Gebiet um die Ausgangsposition mit einer angemessenen Netzwerkdichte abdecken, sodass die Funktion auch bei Internetausfall gewährleistet ist.
Unsere netzwerkbasierte Standortbestimmung basiert primär auf WLAN-Zugangspunkten (APs). Mobilfunkmasten dienen als Ausweichlösung, falls die WLAN-basierte Standortbestimmung keine Positionsbestimmung ermöglicht. Apple und Google nutzen zwar auch Bluetooth-Beacons, dies ist jedoch eine Nischenfunktion, die nur in bestimmten Einkaufszentren, Geschäften usw. relevant ist. Diese Bereiche sind in der Regel durch ausreichend WLAN-Abdeckung für präzise Positionsbestimmungen gut abgedeckt, weshalb die Unterstützung dieser Funktion für uns keine Priorität hat.
Nutzer können derzeit wählen, ob sie unseren Proxy für Apples Dienst nutzen oder Apples Dienst direkt verwenden möchten. Wir entwickeln derzeit eine eigene Datenbank und einen eigenen Dienst, der auf Daten aus verschiedenen Quellen, darunter auch Apples Dienst, basiert. Im Gegensatz zu den Diensten von Apple und Google wird unser Dienst die vollständige Offline-Nutzung ermöglichen, indem er Datenbanken herunterlädt, anstatt Netzwerk-IDs an den Dienst senden zu müssen, um Daten abzurufen.
Für nähere Informationen zur Verwendung der Netzwerkortungsfunktion siehe den Abschnitt „Nutzung“ .
Private Screenshots
GrapheneOS deaktiviert das Einbinden sensibler Metadaten in Screenshots.
Unter Android enthält jeder Screenshot ein EXIF-Software-Tag mit detaillierten Informationen zur Betriebssystem-Build-Nummer ( android.os.Build.DISPLAY). Dieser Wert entspricht dem unter Einstellungen > Über das Telefon > Build-Nummer angezeigten Wert . Dadurch werden das Betriebssystem, die Betriebssystemversion und in der Regel auch die Gerätefamilie/das Modell offengelegt, da Builds gerätespezifisch sind. GrapheneOS deaktiviert dieses Tag vollständig.
Unter Android enthält jeder Screenshot auch EXIF-Tags mit Datum, Uhrzeit und Zeitzonenabweichung. GrapheneOS deaktiviert diese Funktion standardmäßig, um zu verhindern, dass Zeit- und Standortinformationen über Metadaten offengelegt werden, die für den Nutzer nicht sichtbar sind. Datum und Uhrzeit sind bereits im Dateinamen des Screenshots enthalten, der für den Nutzer vollständig sichtbar ist und ohne Drittanbieter-Tool problemlos geändert werden kann. GrapheneOS bietet unter Einstellungen > Sicherheit & Datenschutz > Mehr Sicherheit & Datenschutz eine Option zum Reaktivieren dieser Metadaten , da einige Nutzer diese Funktion als nützlich empfinden könnten.
Lecks von Geräteidentifikatoren
GrapheneOS behebt mehrere schwerwiegende Sicherheitslücken, die die eindeutige Geräteidentifizierung durch Apps verhindern sollen. Weitere Informationen finden Sie in unseren FAQs zu Hardware- und Nicht-Hardware-Kennungen .
Unser sicheres System zum Starten von Anwendungen dient primär der deutlichen Verbesserung des Schutzes vor Ausnutzung von Sicherheitslücken. Es verbessert aber auch die Privatsphäre. Auf Geräten ohne unser sicheres System können die für probabilistische Sicherheitsmaßnahmen wie ASLR verwendeten Geheimnisse als Geräte-IDs genutzt werden, die bis zum Neustart erhalten bleiben. Dies ermöglicht die einfache Identifizierung des Geräts über Apps in verschiedenen Profilen. Dies ist zwar ein kleiner Vorteil der Funktion, und es gibt weiterhin zahlreiche Möglichkeiten, Geräte appübergreifend zu identifizieren, aber es behebt die meisten bekannten direkten Datenlecks.
Wir schließen außerdem mehrere Sicherheitslücken, um zu verhindern, dass Apps auf Hardware-Kennungen zugreifen, unter anderem durch die Verschärfung der Beschränkungen für Apps, die auf ältere Android-Plattformversionen abzielen.
Standardmäßig ist Datenschutz aktiviert.
GrapheneOS enthält oder nutzt standardmäßig keine Google-Apps und -Dienste und vermeidet die Integration jeglicher anderer Apps/Dienste, die nicht mit unserem Fokus auf Datenschutz und Sicherheit vereinbar sind. Google-Apps und -Dienste können unter GrapheneOS als reguläre, in einer Sandbox ausgeführte Apps ohne besondere Zugriffsrechte oder Berechtigungen über unsere Sandbox-Funktion für Google Play genutzt werden . Wir integrieren diese Apps jedoch nicht standardmäßig, um Nutzern die freie Wahl zu lassen, ob und in welchen Profilen sie diese nutzen möchten.
Wir ändern die Standardeinstellungen, um dem Datenschutz Vorrang vor kleinen Annehmlichkeiten zu geben: Personalisierte Tastaturvorschläge, die auf der Erfassung des Eingabeverlaufs basieren, sind standardmäßig deaktiviert, sensible Benachrichtigungen werden standardmäßig auf dem Sperrbildschirm ausgeblendet und Passwörter werden standardmäßig während der Eingabe ausgeblendet.
Einige unserer Änderungen zur Reduzierung der Angriffsfläche können auch standardmäßig die Privatsphäre verbessern, indem unnötige Funkmodule usw. nicht standardmäßig freigegeben werden und die Auswirkungen potenzieller Datenschutzlücken in der Hardware vermieden werden.
Standardmäßig verwenden wir für die folgenden Dienste auch GrapheneOS-Server anstelle von Google-Servern:
- Verbindungsprüfungen
- Bereitstellung des Attestierungsschlüssels
- GNSS-Almanach-Downloads (PSDS) für Broadcom und Qualcomm (XTRA)
- Sichere Benutzer-Plane-Lokalisierung (SUPL)
- Netzwerkzeit
- Aktualisierungen der Vanadium- (Chrom-)Komponente
Wir bieten eine Option zum Umschalten auf Google-Server für Verbindungsprüfungen, die Bereitstellung von Attestierungsschlüsseln und GNSS-Almanach-Downloads sowie die Möglichkeit, Netzwerkzeitverbindungen zu deaktivieren. In Kombination mit anderen Optionen ermöglicht dies, dass ein GrapheneOS-Gerät als AOSP-Gerät erscheint. Dies ist insbesondere für Verbindungsprüfungen wichtig, da alle anderen Verbindungen über ein VPN geleitet werden, das in der Praxis für die Integration in ein lokales Netzwerk erforderlich ist.
Zusätzlich zu unseren Verbesserungen des SUPL-Datenschutzes verwenden wir standardmäßig unseren Proxy anstelle des SUPL-Servers. Wir bieten Nutzern außerdem eine Option, um zum Standard-SUPL-Server ihres Mobilfunkanbieters (in der Regel supl.google.com) zu wechseln oder diesen vollständig zu deaktivieren.
Weitere detaillierte Informationen finden Sie in unseren FAQ zu Standardverbindungen .
PIN-Vermischung
GrapheneOS bietet eine Option zum Aktivieren der PIN-Verschlüsselung, um das Erraten der eingegebenen PIN zu erschweren – sei es durch physische Nähe oder über einen Seitenkanal. Die PIN-Verschlüsselung wird sowohl auf den Sperrbildschirm als auch auf die SIM-PIN/PUK angewendet.
Zwei-Faktor-Fingerabdruck-Entsperrung
GrapheneOS bietet die Möglichkeit, nach erfolgreicher Authentifizierung per Fingerabdruck auf dem Sperrbildschirm eine PIN als zweiten Faktor zum Entsperren des Geräts zu verlangen. Da Android und iOS biometrische Entsperrung als zusätzlichen Entsperrmechanismus nutzen, können Nutzer so eine sichere Passphrase als primäre Entsperrmethode verwenden und zusätzlich Fingerabdruck und eine kurze PIN als sekundäre Entsperrmethode nutzen. Die falsche PIN-Eingabe zählt als zusätzlicher Entsperrversuch.
Unterstützt längere Passwörter
GrapheneOS unterstützt standardmäßig längere Passwörter: 128 Zeichen statt 16 Zeichen. Dadurch entfällt die Notwendigkeit, diese Funktion über einen Geräte-Manager zu aktivieren.
Diese Funktion ermöglicht es Benutzern, Diceware-Passwörter zu verwenden, wenn sie sich nicht auf die Sicherheit des sicheren Elements verlassen wollen, das eine sehr aggressive Drosselung bietet und auch für eine zufällige 6-stellige PIN ein hohes Maß an Sicherheit gewährleistet.
Automatischer Neustart
GrapheneOS bietet eine automatische Neustartfunktion, die gesperrte Geräte nach einer festgelegten Zeit neu startet, um die Daten zu sichern. Bei jeder Sperrung des Geräts wird ein Countdown gestartet. Erfolgt vor Ablauf des Timers keine erfolgreiche Entsperrung, startet das Gerät neu. Das Entsperren eines beliebigen Profils bricht den Timer ab, nicht nur das des Besitzerprofils.
Der Timer ist standardmäßig auf 18 Stunden eingestellt, kann aber auf Werte zwischen 10 Minuten und 72 Stunden eingestellt oder ausgeschaltet werden.
Diese Funktion ist nicht verfügbar, wenn sich das Gerät im Zustand „Vor der ersten Entsperrung“ befindet. Das bedeutet, dass es nicht zu ständigen Neustarts des Geräts kommt, da die Daten bereits gespeichert sind.
Die Funktion ist im Init-Prozess implementiert, wodurch verhindert wird, dass sie durch Systemprozessabstürze umgangen werden kann, da ein Init-Absturz eine Kernel-Panik verursacht, die zu einem Neustart führt.
Sensible Daten aus dem Speicher löschen
Wie in unserem Abschnitt zu den zusätzlichen Sicherheitsmaßnahmen gegen Exploits beschrieben , fügt GrapheneOS sowohl dem Standard-Benutzerspeicher- als auch dem Kernel-Speicherallokator das Nullsetzen von freigegebenem Speicher hinzu. Diese Funktionen haben den zusätzlichen Vorteil, sensible Daten so schnell wie möglich aus dem Speicher zu entfernen und gleichzeitig vor Exploits zu schützen. Android implementiert eine regelmäßige Komprimierung eingefrorener, zwischengespeicherter Apps und Apps, die aktuell im Hintergrund laufen. Dies geschieht durch Auslösen einer vollständigen Speicherbereinigung (Garbage Collection, GC) und anschließendes Anfordern von malloc, so viel Speicher wie möglich an das Betriebssystem zurückzugeben. Dies harmoniert gut mit den Nullsetzungsfunktionen und führt dazu, dass freigegebene Daten in Java/Kotlin sowie in den von ihnen verwendeten C-, C++- und Rust-Bibliotheken schneller gelöscht werden, da Low-Level-Allokatoren den Speicher so lange belegen, bis die High-Level-Objekte freigegeben sind.
Wenn das Gerät gesperrt wird, wird eine vollständige Speicherbereinigung (Garbage Collection, GC) für die Prozesse SystemUI und system_server ausgelöst, um den gesamten nicht mehr benötigten Speicher an das Betriebssystem zurückzugeben. Da GrapheneOS das Nullsetzen des Kernel-Seitenallokators ermöglicht, werden dadurch alle nicht mehr referenzierten Daten in Objekten gelöscht. Unser Ansatz orientiert sich an Androids Standardverfahren, nach dem Entsperren des Geräts eine vollständige Speicherbereinigung für diese beiden Prozesse durchzuführen, um Überreste der PIN/des Passworts des Benutzers und davon abgeleitete Schlüssel zu entfernen. Dies ist eine effiziente Methode, um unmittelbar nach der Sperrung einige Daten zu löschen, bevor unsere automatische Neustartfunktion den gesamten Arbeitsspeicher des Betriebssystems freigibt.
GrapheneOS modifiziert einige der Methoden, mit denen das Gerät neu gestartet werden kann, um den normalen Neustartprozess fortzusetzen, bei dem der Speicher durch die von GrapheneOS aktivierten Kernel-Seiten- und Slab-Allokator-Zeroing-Funktionen freigegeben und gelöscht wird.
Notfall-PIN/Passwort
GrapheneOS bietet Benutzern die Möglichkeit, eine Notfall-PIN/ein Notfallpasswort festzulegen, das das Gerät (samt aller installierten eSIMs) unwiderruflich löscht, sobald es irgendwo eingegeben wird, wo die Anmeldeinformationen des Geräts abgefragt werden (auf dem Sperrbildschirm sowie bei entsprechenden Aufforderungen im Betriebssystem).
Das Löschen der Daten erfordert keinen Neustart und kann nicht unterbrochen werden. Es kann im Besitzerprofil unter Einstellungen > Sicherheit & Datenschutz > Geräteentsperrung > Notfallpasswort eingerichtet werden . Die Notfall-PIN dient ausschließlich der PIN-Eingabe, das Notfallpasswort ausschließlich der Passwort-Eingabe. Sowohl Notfall-PIN als auch Passwort sind erforderlich, um die Funktion zu aktivieren und unterschiedliche Profile mit verschiedenen Entsperrmethoden zu berücksichtigen. Die Notfall-PIN löscht das Gerät auch, wenn sie als Zwei-Faktor-PIN für den Fingerabdruck eingegeben wird , jedoch derzeit nicht, wenn sie als SIM-PIN eingegeben wird.
Beachten Sie, dass, wenn die Notfall-PIN/das Notfall-Passwort mit der eigentlichen Entsperrmethode übereinstimmt, die eigentliche Entsperrmethode immer Vorrang hat und daher kein Datenverlust erfolgt.
Sicherere Fingerabdruckentsperrung
GrapheneOS verbessert die Sicherheit der Fingerabdruckentsperrung, indem es die Anzahl der Versuche auf insgesamt 5 begrenzt, anstatt zwischen jeweils 5 fehlgeschlagenen Versuchen eine 30-sekündige Verzögerung einzuführen (insgesamt 20 Versuche). Dies reduziert nicht nur die Anzahl potenzieller Versuche, sondern ermöglicht es auch, die Fingerabdruckentsperrung zu deaktivieren, indem man absichtlich 5 Mal mit einem anderen Finger fehlschlägt.
GrapheneOS bietet außerdem die Möglichkeit, den Fingerabdruckscanner ausschließlich zur Authentifizierung in Apps und zum Entsperren von Hardware-Schlüsseln zu verwenden, indem die Entsperrfunktion deaktiviert wird. Diese Funktion war bereits für die standardmäßige Android-Gesichtserkennung vorhanden.
Verbesserte Benutzerprofile
Android-Nutzerprofile sind isolierte Arbeitsbereiche mit eigenen App-Instanzen, App-Daten und Profildaten (Kontakte, Medienspeicher, Benutzerverzeichnis usw.). Apps können nicht auf Apps anderer Nutzerprofile zugreifen und nur mit Apps innerhalb desselben Nutzerprofils kommunizieren (mit gegenseitiger Zustimmung). Jedes Nutzerprofil verfügt über eigene Verschlüsselungsschlüssel, die auf der verwendeten Sperrmethode basieren. Sie eignen sich hervorragend für GrapheneOS, bieten aber noch viel Verbesserungspotenzial.
GrapheneOS bietet Verbesserungen der Benutzerprofilfunktionalität und arbeitet an weiteren Verbesserungen, um das Umschalten zwischen den Profilen und die Überwachung anderer Profile deutlich komfortabler zu gestalten.
Weitere Benutzerprofile
GrapheneOS erhöht die Grenze für die Anzahl der sekundären Benutzerprofile auf 32 (31 + Gast) anstatt nur 4 (3 + Gast), um diese Funktion deutlich flexibler zu gestalten.
Sitzung beenden
GrapheneOS ermöglicht außerdem das Abmelden von Benutzerprofilen, ohne dass ein Geräte-Manager erforderlich ist, um diese Funktion zu nutzen. Durch das Abmelden werden die Profile deaktiviert, sodass keine der darin installierten Apps ausgeführt werden kann. Zudem werden die Festplattenverschlüsselungsschlüssel aus dem Speicher und den Hardware-Registern gelöscht, wodurch das Benutzerprofil in den Ruhezustand versetzt wird.
Deaktivierung der App-Installation
GrapheneOS fügt den Benutzerverwaltungseinstellungen eine Option zum Deaktivieren der App-Installation für Zweitbenutzer hinzu. Sie können die gewünschten Apps für einen Zweitbenutzer installieren und anschließend im Besitzerprofil die Installation weiterer Apps für diesen Benutzer deaktivieren. Android unterstützt dies als Standardfunktion der Geräteverwaltung, stellt sie jedoch nicht für Benutzer zur Verfügung, denen das Gerät selbst gehört.
Verbesserte Installation verfügbarer Apps
GrapheneOS ermöglicht die Installation verfügbarer Apps, die in AOSP und dem Standard-Pixel-Betriebssystem noch nicht vorhanden ist. Dadurch kann der Hauptnutzer Pakete installieren, die auch anderen Nutzern zur Verfügung stehen. So lässt sich eine App, die bereits auf dem Hauptnutzer installiert ist, auch auf einem Zweitnutzer installieren, ohne sie erneut herunterladen zu müssen. Dies erleichtert die Nutzung der hinzugefügten Optionen zum Deaktivieren der App-Installation durch Zweitnutzer erheblich.
Benachrichtigungsweiterleitung
GrapheneOS unterstützt die Weiterleitung von Benachrichtigungen von im Hintergrund laufenden Benutzern an den aktuell aktiven Benutzer. Die Weiterleitung von Benachrichtigungen an andere Benutzer ist standardmäßig deaktiviert und kann in jedem Benutzerprofil aktiviert werden, wenn die Weiterleitung an das aktive Profil gewünscht ist. Weitergeleitete Benachrichtigungen von anderen Profilen werden standardmäßig in einem lokalen Benachrichtigungskanal angezeigt.
GrapheneOS-App-Repository
GrapheneOS beinhaltet einen eigenen, auf Sicherheit, Minimalismus und Benutzerfreundlichkeit ausgerichteten App-Repository-Client für die Nutzung unseres eigenen App-Repositorys. Dieses dient aktuell der Verteilung unserer eigenen Apps und als Spiegel von Google Play für die Sandbox-Funktion von Google Play. Zukünftig werden darüber auch GrapheneOS-eigene Builds extern entwickelter Open-Source-Apps mit angewendeten Sicherheitsmaßnahmen verteilt.
Vanadium: gehärtete WebView und Standardbrowser
GrapheneOS verwendet unseren Vanadium-Browser als WebView-Implementierung des Betriebssystems und als Standardbrowser. Vanadium ist eine gehärtete Variante von Chromium, die – ähnlich wie GrapheneOS im Vergleich zu AOSP – verbesserte Datenschutz- und Sicherheitsfunktionen bietet. Der Vanadium-Browser bietet aktuell noch nicht viele neue Funktionen, aber langfristig sind zahlreiche Verbesserungen geplant.
Einige der im Vergleich zum Standard-Chromium für Mobilgeräte hinzugefügten Funktionen:
- Hardware-Speicherkennzeichnung (MTE) für den Hauptallokator aktiviert
- Typbasierte Kontrollflussintegrität (CFI)
- Starker Stapelschutz
- Automatische Null-initialisierte Variablen
- Wohldefinierter vorzeichenbehafteter Überlauf
- Strenge Standortisolierung und isolierte iFrames
- JavaScript JIT ist standardmäßig deaktiviert und kann pro Website über ein Dropdown-Berechtigungsmenü umgeschaltet werden.
- Die Unterstützung für den DrumBrake WebAssembly-Interpreter, der bisher nur Microsoft Edge vorbehalten war, wird aktiviert, um WebAssembly auch dann zu unterstützen, wenn die JIT-Kompilierung deaktiviert ist.
- Die dynamische Codeausführung wird für Prozesse blockiert, bei denen der JavaScript-JIT nicht als Erweiterung der seccomp-bpf-Sandbox aktiviert ist.
- Native Android-Autofill-Implementierung, um die Notwendigkeit einer Sandbox-Umgebung von Google Play für die Autofill-Unterstützung zu vermeiden.
- Native Android-Unterstützung für Passkeys durch den Anmeldeinformationsmanager, um die Notwendigkeit einer Sandbox-Umgebung für Google Play zur Passkey-Unterstützung zu vermeiden.
- WebGPU zur Reduzierung der Angriffsfläche deaktiviert.
- WebRTC-IP-Verarbeitungsrichtlinie umschalten, um den Peer-to-Peer-WebRTC-Modus zu steuern
- Hochleistungsfähige Inhaltsfilter-Engine mit EasyList + EasyPrivacy und Berechtigungssteuerung pro Website über ein Dropdown-Menü
- Vollständigere Zustandsaufteilung ohne Opt-out für Ursprungstests
- Die standardmäßige Reduzierung des User-Agents unter Android 16 wird für die WebView frühzeitig aktiviert, um die Hauptversion des Betriebssystems, das Gerätemodell und die Browser-Neben-/Build-/Patch-Version durch Standardplatzhalterwerte zu ersetzen.
- Hochentropische Client-Hints werden durch die Standardplatzhalterwerte ersetzt, die im reduzierten User-Agent von Chromium sowohl für den Browser als auch für WebView verwendet werden, um eine Sicherheitslücke zu schließen, bei der Chromium weiterhin die Hauptversion des Betriebssystems, das Gerätemodell und die Neben-/Build-/Patch-Version des Browsers an jeden Server weitergibt, der diese über Client-Hints anfordert.
- Die Battery API zeigt immer an, dass der Akku geladen wird und 100 % Kapazität hat.
- Verbergen trivialer Subdomains deaktiviert
- Einheitliches Browserverhalten für alle Nutzer ohne Verwendung von Feature-Flags und Seed-basierten Testversionen
- Nahezu alle Remote-Dienste sind standardmäßig deaktiviert oder entfernt. Es wird standardmäßig nur eine Verbindung zu GrapheneOS-Servern hergestellt. Es gibt nur zwei Standarddienste: Komponentenaktualisierungen wie Zertifizierungsstellen- und Zertifikatssperrungsaktualisierungen sowie DNS-over-HTTPS-Konnektivitätsprüfungen (sofern aktiviert).
- Websuche und globale Suchabsichten sollen die Notwendigkeit einer Such-App des Betriebssystems ersetzen.
- Option zum automatischen Öffnen von Links aus anderen Apps, benutzerdefinierten Tabs, Suchabsichten und Freigabeabsichten im Inkognitomodus
- Option zum Reduzieren oder Deaktivieren der Übermittlung von ursprungsübergreifenden Referrer-Informationen, wenn ein Link geöffnet wurde
- Hybride Post-Quanten-Kryptographie ist standardmäßig aktiviert, um das Verhalten von Chromium auf Desktop-Computern nachzubilden, da die von uns unterstützten Geräte mehr als schnell genug sind.
Bessere Standardeinstellungen, einschließlich nicht benutzerseitiger Optionen:
- Accept-Language-Header standardmäßig reduzieren (nur über chrome://flags verfügbar)
- Cookies von Drittanbietern sind standardmäßig deaktiviert
- Zahlungsunterstützung ist standardmäßig deaktiviert
- Die Hintergrundsynchronisierung der Website ist standardmäßig deaktiviert.
- Der Zugriff auf Sensoren ist standardmäßig deaktiviert.
- Medienschutz (DRM) standardmäßig deaktiviert
- Hyperlink-Überwachung standardmäßig deaktiviert
- „Nicht verfolgen“ ist standardmäßig aktiviert, hauptsächlich um zu verhindern, dass sich Nutzer durch die Aktivierung von anderen abgrenzen, da es keinen wirklichen Nutzen hat.
- Die WebRTC-IP-Verwaltungsrichtlinie ist standardmäßig auf den datenschutzfreundlichsten Wert anstatt auf den am wenigsten datenschutzfreundlichen Wert eingestellt (von Vanadium in eine benutzerseitige Option umgewandelt).
Funktionen, die die Kompatibilität beeinträchtigen und eine entsprechende Option erfordern, wie z. B. Inhaltsfilterung, sind meist nur im Browser selbst und nicht in der WebView-Bibliothek verfügbar. JavaScript JIT ist in benutzerinstallierten Apps standardmäßig für WebView aktiviert. Es gibt sowohl eine globale Option zum Deaktivieren als auch eine app-spezifische Option zum Überschreiben dieser Einstellung.
Die Unterstützung von Erweiterungen ist nicht geplant, da dies mit der Website-Isolation und dem Schutz vor Fingerprinting unvereinbar ist. Wir planen, weitere Funktionen als Teil des Browsers zu implementieren, wobei der Fokus auf Verbesserungen des Datenschutzes und der Sicherheit liegt. Diese Funktionen sollen standardmäßig aktiv sein und nicht als optionale Nischenfunktionen hinzugefügt werden müssen. Die Verbesserungen werden in der Regel pro Website deaktiviert, anstatt sie manuell zu aktivieren. So gewährleisten wir standardmäßig Datenschutz und Sicherheit und verhindern, dass Nutzer sich durch die Aktivierung von Datenschutz- und Sicherheitsfunktionen identifizierbarer machen. Standardmäßig deaktiviertes JS JIT und standardmäßig aktivierte Inhaltsfilterung sind erste Beispiele für diesen Ansatz, den wir weiter ausbauen möchten.
Wir planen, weitere Website-Einstellungen hinzuzufügen, die die Angriffsfläche verringern, beispielsweise für WebGL, WebGPU, WebRTC und andere Funktionen, die normalerweise immer aktiviert sind. Dies wird sowohl die Sicherheit verbessern als auch den Schutz vor Fingerprinting erhöhen.
Anti-Fingerprinting setzt eine große Nutzerbasis mit demselben Browser, denselben Erweiterungen, Inhaltsfiltern und anderen webseitigen Konfigurationen voraus. Sobald Vanadium über mehr Funktionen verfügt, wird es außerhalb von GrapheneOS verfügbar gemacht, um die Nutzerbasis zu erweitern. Unser Ansatz zur Reduzierung der Angriffsfläche eliminiert Fingerprinting-Methoden und verringert gleichzeitig die Angriffsfläche für Exploits. Dies ist ein zentraler Bestandteil unseres Ansatzes zur Verhinderung von Fingerprinting, da Funktionen wie WebGL, WebGPU und WebRTC von vornherein nicht zugänglich gemacht werden. Sinnvolle Standardeinstellungen und die Vermeidung von Änderungen an webseitigen Konfigurationen durch die Nutzer sind dabei von großer Bedeutung. Inhaltsfilter bleiben für alle Nutzer einheitlich und werden gemeinsam über die Vanadium-Konfigurations-App aktualisiert. Wir werden den Bedarf an sprachspezifischen Filtern decken, indem wir diese basierend auf der Browser-Sprachkonfiguration aktivieren. Fingerprinting aufgrund von Hardwareunterschieden wird relevanter, sobald Vanadium außerhalb von GrapheneOS verfügbar ist, da GrapheneOS weiterhin nur eine kleine Anzahl hochsicherer Geräte unterstützt.
Die Zustandspartitionierung muss noch vollständig implementiert werden. Die größte verbleibende Hürde ist die vollständige Cookie-Partitionierung. Gängige Browser mit dieser Funktion nutzen Heuristiken, um die Cookie-Partitionierung zu umgehen, was leicht missbraucht werden kann. Wir haben versucht, die vollständige Cookie-Partitionierung standardmäßig zu implementieren, mussten dies aber rückgängig machen und müssen nun überlegen, wie wir dieses Problem angehen, insbesondere im Hinblick auf unser Ziel, dass die meisten Vanadium-Nutzer nahezu dieselbe Konfiguration verwenden.
Wir planen, zukünftig auf eine verbesserte Content-Engine mit Unterstützung für erweiterte Filterregeln und kosmetische Filter umzusteigen. Die Erweiterung der Standardfilter hängt von der Unterstützung der von uBlock Origin, AdGuard und anderen Filtern verwendeten Erweiterungen ab.
Die meisten Browserdaten sind derzeit von den Betriebssystem-Backups ausgeschlossen. Dies wird sich voraussichtlich ändern, sobald GrapheneOS über einen verbesserten Backup-Service verfügt. Export- und Importfunktionen für Lesezeichen und ähnliche Daten sind ebenfalls geplant. Eine Synchronisierung, die über die Unterstützung des Betriebssystem-Backups hinausgeht und zukünftig app-spezifische Backups und Wiederherstellungen, geräteübergreifend und über Synchronisierungsdienste, ermöglichen soll, ist derzeit nicht geplant.
Weitere Informationen finden Sie im Abschnitt „Webbrowsing“ unserer Bedienungsanleitung .
Auditor-App und Bescheinigungsdienst
Unsere Auditor-App und unser Attestierungsdienst bieten eine zuverlässige hardwarebasierte Überprüfung der Authentizität und Integrität der Firmware/Software Ihres Geräts. Dabei kommt ein sicheres Pairing-Verfahren zum Einsatz, das die Geräteidentität anhand des für jedes Pairing generierten hardwarebasierten Schlüssels verifiziert. Zusätzlich werden softwarebasierte Prüfungen durchgeführt, deren Vertrauensbasis sicher mit der Hardware verknüpft ist. Weitere Informationen finden Sie auf den Seiten „Über uns “ und „Tutorial“ .
GrapheneOS-Kamera
GrapheneOS Camera ist eine moderne Kamera-App mit einer hervorragenden Benutzeroberfläche und einem Fokus auf Datenschutz und Sicherheit. Weitere Details finden Sie im Kamera-Abschnitt unserer Bedienungsanleitung .
GrapheneOS PDF Viewer
GrapheneOS PDF Viewer ist ein in einer Sandbox laufender, gehärteter PDF-Viewer, der HiDPI-Rendering nutzt und Funktionen wie Pinch-to-Zoom, Textauswahl, Anzeige verschlüsselter PDFs usw. bietet.
Einrichtungsassistent
Wir haben einen eigenen Einrichtungsassistenten für die Ersteinrichtung des Geräts und die Erstellung von Benutzerprofilen. Dieser ähnelt dem Einrichtungsassistenten des Standard-Pixel-Betriebssystems, legt aber mehr Wert auf Sicherheit. Er erkennt beim Start einen entsperrten Bootloader und warnt den Benutzer mit einer Schaltfläche zum Neustart im Fastboot-Modus, um das Gerät zu sperren. Um zu verhindern, dass die Warnung übersprungen wird und wichtige Informationen verpasst werden, muss ein Timer abgewartet werden. Unser Einrichtungsassistent deaktiviert am Ende des Prozesses standardmäßig die OEM-Entsperrung. Diese kann optional deaktiviert werden, was die Angriffsfläche zwar nur geringfügig, aber dennoch effektiv verringert. Wir planen, unsere Verbesserungen der Sperrmethoden in den Einrichtungsassistenten zu integrieren, darunter die Zwei-Faktor-Authentifizierung per Fingerabdruck sowie die automatische Generierung zufälliger Diceware-Passphrasen und PINs.
Verschlüsselte Backups
Verschlüsselte Backups durch Integration der Seedvault-App mit Unterstützung für lokale Backups und jeden Cloud-Speicheranbieter mit einer Speicheranbieter-App.
Seedvault wurde von einem Mitglied der GrapheneOS-Community für die Integration in unser Betriebssystem entwickelt. Da das Projekt von einer anderen Gruppe übernommen wurde, die unsere Ziele und unseren Ansatz nicht teilt, planen wir, es durch eine neue Implementierung zu ersetzen. Aktuell ist dies die beste verfügbare Option, daher integrieren wir sie, um Nutzern verschlüsselte Backups zu ermöglichen. Wir haben mehrere Sicherheitskorrekturen vorgenommen, um Probleme im Upstream-Projekt zu beheben.
Standortdatenzugriffsindikator
GrapheneOS aktiviert zusätzlich zu den standardmäßigen Android-Anzeigen für Kamera und Mikrofon eine Datenschutzanzeige für den Zugriff auf Standortdaten. Diese zeigt an, wenn eine App, der der Nutzer die Berechtigung zum Zugriff auf den Standort erteilt hat, Standortdaten anfordert. Wir beheben außerdem verschiedene UX-Probleme dieser Funktion in der AOSP-Version, um ihre Benutzerfreundlichkeit zu optimieren.
Android 13 bietet die Standortdatenschutzanzeige als Entwickleroption, sie funktioniert jedoch anders als in GrapheneOS. GrapheneOS zeigt sie für alle Standortdatenzugriffe über beliebige APIs an. Normalerweise zeigt das Standard-Betriebssystem sie nur für GNSS-Standortanfragen (auch bekannt als Standortanfragen mit hohem Stromverbrauch) an und blendet sie für Netzwerkstandorte und andere APIs aus, die durch die Standortberechtigung bzw. die globale Blockierung eingeschränkt sind.
Die Anzeige funktioniert wie die für Kamera und Mikrofon: Ein hellgrünes Symbol erscheint, sobald auf den Standort zugegriffen wird. Ist die Schnellzugriffsleiste nicht geöffnet, wird das Symbol zu einem kleinen hellgrünen Punkt minimiert. Android 12 integriert die Standortberechtigungen bereits zusammen mit den anderen Standardberechtigungen in die Datenschutzeinstellungen, um den Verlauf anzuzeigen.
Vom Benutzer installierte Apps können deaktiviert werden.
GrapheneOS ermöglicht es nun, benutzerinstallierte Apps zu deaktivieren, anstatt nur System-Apps. Dadurch können Nutzer verhindern, dass eine ihrer installierten Apps ausgeführt wird, ohne sie deinstallieren und ihre App-Daten verlieren zu müssen. Dies ist deutlich restriktiver als die standardmäßige Funktion zum erzwungenen Stoppen, die lediglich den Start einer App verhindert. Sobald eine andere App versucht, eine ihrer Aktivitäten oder Dienste zu öffnen, startet die App wieder.
Verbesserte VPN-Leckblockierung
GrapheneOS verbessert den Schutz von Android vor VPN-Leaks erheblich, sowohl für die integrierte VPN-Unterstützung als auch für VPN-Apps, wenn die Standardeinstellung „Verbindungen ohne VPN blockieren“ aktiviert ist.
Android erlaubt es, dass DNS-Anfragen des System-Resolvers an die vom Netzwerk bereitgestellten DNS-Server weitergeleitet werden, wenn eine VPN-App aufgrund einer Race Condition ausfällt. Ebenso sind Verbindungen zu den VPN-DNS-Servern außerhalb des VPN-Tunnels möglich. GrapheneOS verhindert beides vollständig, indem es die Leak-Blockierung auf diesen Teil des System-Resolvers ausweitet und somit Unicast-DNS-Leaks gänzlich unterbindet.
Android ermöglicht es Prozessen, einschließlich Apps, die VPN-Verbindung vollständig zu umgehen, unabhängig davon, ob diese aktiv ist oder nicht. Dies geschieht durch das direkte Senden von Multicast-Paketen oder indem der Kernel die Pakete in ihrem Namen über die Standard-Multicast-Gruppenverwaltungsaufrufe sendet. GrapheneOS erweitert die standardmäßige eBPF-Filterung von Android um die vollständige Unterstützung zum Blockieren aller Formen der Umgehung von Multicast-Paketen. Zudem wird die Verwendung des System-Netzwerkdienst-Erkennungsmanagers (NSDM) für die Verbindung zu mDNS-basierten Diensten untersagt, wenn die VPN-Sperre aktiviert ist.
Die Android-VPN-Konfiguration ist für jedes Profil separat, sodass Arbeitsprofile, private Bereiche und Zweitnutzer jeweils ihre eigene VPN-Konfiguration haben – ein hervorragendes Datenschutzmerkmal. Android verfügt standardmäßig über eine Beschränkung, die verhindert, dass Prozesse auf ein Netzwerk zugreifen, für das das aktuelle Profil keine Berechtigung hat. Diese Beschränkung berücksichtigt jedoch keine Multicast-Pakete, und es ist möglich, Multicast-Pakete über VPN-Tunnel eines anderen Profils zu senden. GrapheneOS behebt dieses Problem, indem es die Standard-Netfilter-Konfiguration um eine Multicast-Firewall erweitert und so verhindert, dass Pakete über einen VPN-Tunnel gesendet werden, auf den ein Prozess keinen Zugriff haben soll.
GrapheneOS schließt eine Lücke im eBPF-basierten Firewall-System von Android, die es ermöglichte, das VPN durch Angabe einer bestimmten Schnittstelle mit einem speziellen Systemaufruf zu umgehen.
Das Aufspüren und Beheben aller Arten von VPN-Lecks hat für uns derzeit höchste Priorität, und wir betrachten dies aufgrund weniger schwerwiegender zusätzlicher Probleme, die wir entdeckt haben, noch nicht als vollständig implementierte Funktion.
Protokollanzeige und benutzerfreundliche Absturzberichterstattung
GrapheneOS erweitert die Einstellungen-App um einen benutzerfreundlichen Log-Viewer für das standardmäßige In-Memory-Logging-System von Android. Diese Funktion ersetzt die automatische Absturzberichterstattung, die GrapheneOS aus Datenschutzgründen nicht implementiert. Stattdessen haben Nutzer die volle Kontrolle darüber, welche Daten erfasst und geteilt werden. Unser Log-Viewer ermöglicht das Filtern der Ausgabe nach Protokollstufe, Protokollpuffer und Textsuche. Nutzer können die aktuell angezeigten Protokolle kopieren, teilen oder in einer Datei speichern. Optional kann eine Beschreibung hinzugefügt werden, um den Grund für die Protokollerfassung zu dokumentieren.
Die allgemeinen Systemprotokolle finden Sie unter Einstellungen > System > Protokolle anzeigen . Die Protokolle einzelner Apps finden Sie unter Einstellungen > Apps > App-Name > Protokolle anzeigen .
Wir implementieren eine benutzerfreundliche Fehlerberichterstattung, die mit unserem Log-Viewer für Betriebssystem- und App-Abstürze verknüpft ist und die bisher sehr eingeschränkte Fehlerberichterstattung von Android deutlich verbessert. So können Nutzer Abstürze an die Betriebssystem- oder App-Entwickler melden, ohne dass eine aufdringliche automatisierte Fehlerberichterstattung erforderlich ist, bei der die Nutzer keine Kontrolle über die an die Entwickler gesendeten Daten haben.
Unsere benutzerfreundliche Fehlerberichterstattung bietet spezielle Unterstützung für Speicherfehler, die von hardened_malloc und Hardware-Speicherkennzeichnung erkannt werden. Nutzer werden über den festgestellten Speicherfehler informiert. Sie entscheiden selbst, wie sie vorgehen und ob es sinnvoll ist, unsere Kompatibilitätsoptionen für die App zu aktivieren, falls sie nicht von einer Sicherheitslücke, sondern von einem App-Fehler ausgehen, den sie umgehen müssen. Es gilt, ein ausgewogenes Verhältnis zu finden: Einerseits sollen Nutzer nicht dazu ermutigt werden, Sicherheitsfunktionen zum Schutz installierter Apps vor Sicherheitslücken zu deaktivieren, andererseits soll es einfach sein, App-Fehler zu umgehen. Wir erlauben nicht, diese Schutzfunktionen für das Betriebssystem und dessen Apps zu deaktivieren. Da jedoch zu viele installierte Apps versteckte Speicherfehler aufweisen, müssen wir die Möglichkeit bieten, diese zu umgehen.
Nutzer können die Meldung von Systemabstürzen unter Einstellungen > Sicherheit & Datenschutz > Weitere Sicherheits- & Datenschutzeinstellungen > Benachrichtigungen über Systemprozessabstürze aktivieren . Standardmäßig werden nicht alle Kernel- oder Systemprozessabstürze gemeldet, da wir nicht jeden einzelnen Android-Betriebssystemfehler, der einen Absturz verursacht, analysieren und untersuchen können. Wir konzentrieren uns auf Speicherfehler, die durch Hardware-Speicherkennzeichnung erkannt werden, und melden diese daher immer. Es ist uns nicht möglich, jeden Android-Fehler selbst zu beheben. Daher konzentrieren wir unsere Ressourcen auf die Fehler, die durch unsere Verbesserungen gefunden werden und bei denen es sich mit höherer Wahrscheinlichkeit um Sicherheitslücken handelt.
Weitere Funktionen
Dies ist eine unvollständige Liste weiterer GrapheneOS-Funktionen.
- Die pro Profil vorgenommene Auffüllung verschlüsselter Dateinamen wurde von 16 auf 32 Byte erhöht, um die durch die Dateinamenlänge preisgegebenen Informationen zu reduzieren. Weitere Informationen finden Sie in den FAQ zur dateisystembasierten Festplattenverschlüsselung, die von modernen Android- und GrapheneOS-Versionen verwendet wird.
- Verbesserte Transparenz für den Benutzer hinsichtlich der persistenten Firmware-Sicherheit durch Versions- und Konfigurationsprüfung mit Meldung von Inkonsistenzen und aktivierten Debug-Funktionen.
- Authentifizierte Verschlüsselung für Netzwerkzeitaktualisierungen über einen Erstanbieterserver, um zu verhindern, dass Angreifer die Zeit ändern und Angriffe ermöglichen, die auf der Umgehung des Zertifikats-/Schlüsselablaufs usw. basieren.
- Eine angemessene Unterstützung für die Deaktivierung von Netzwerkzeitaktualisierungen, anstatt die Ergebnisse einfach nicht zu verwenden.
- Gehärtete lokale Bau-/Unterzeichnungsinfrastruktur
- Nahtloses, automatisches Betriebssystem-Update-System , das einfach funktioniert und unauffällig im Hintergrund arbeitet, ohne die Gerätenutzung zu beeinträchtigen, mit voller Unterstützung für die standardmäßige automatische Rücksetzung, falls der erste Start des aktualisierten Betriebssystems fehlschlägt.
- Für den Zugriff auf sensible Funktionen über die Schnellzugriffskacheln ist eine Entsperrung erforderlich.
- Minimale Anzahl vorinstallierter Apps und Dienste . Nur essenzielle Anwendungen sind im Betriebssystem integriert. Wir gehen keine Partnerschaften mit App- und Dienstanbietern ein, um diese im Betriebssystem zu bündeln. Eine App mag heute die beste Wahl sein, in Zukunft aber eine schlechte – und umgekehrt. Wir empfehlen daher bestimmte Apps während der Ersteinrichtung, anstatt sie fest im Betriebssystem zu verankern.
- Drahtlose Warnmeldungen sind vollständig optional, da GrapheneOS eine Option zum Aktivieren der ansonsten obligatorischen Präsidentenwarnung hinzufügt. Dies ist besonders in Kanada nützlich, wo die Regierung das System missbraucht und jede Art von Warnung als Präsidentenwarnung versendet, um zu verhindern, dass Nutzer Wetter- und Vermisstenwarnungen deaktivieren können.
- Entfernung der TrustCor-Stammzertifizierungsstelle als vertrauenswürdige Systemzertifizierungsstelle.
- Die standardmäßig sichere PendingIntent-Sicherheitsprüfung (FLAG_IMMUTABLE) von Android 12 anstelle der standardmäßigen Absturzprüfung verbessert die Kompatibilität und Sicherheit älterer Apps.
- Warnung bezüglich aktiviertem UART-Debugging in offiziellen Release-Builds behoben.
- Warnung vor Engineering-/Prototypgeräten („EVT“, „PVT“ oder „DVT“), da diese Geräte typischerweise lockere Sicherheitskontrollen für die Entwicklung aufweisen, insbesondere die Eigenschaft „Secure Boot State“
ro.boot.secure_bootnicht auf „“ gesetzt istPRODUCTION. - Aktivieren Sie die Überprüfung der Bootloader-, Radio- und Bootpartitionsversion/des Fingerabdrucks.
- Entfernen Sie den Code, der Systembrowsern automatisch die Standortberechtigung erteilt.
- Apps ohne Speicherzugriffsberechtigung dürfen die Liste aller vom Benutzer erstellten Verzeichnisse nicht lesen (unter Android ist dies erlaubt). Die Dateiliste ist für solche Apps sowohl unter Android als auch unter GrapheneOS ausgeblendet.
- Der Auslöserton für Screenshots kann über die Option „Tippen- und Klickgeräusche“ unter „Einstellungen“ > „Ton und Vibration“ ein- und ausgeschaltet werden , wobei die übliche Methode, das Gerät in den Vibrations-/Lautlosmodus zu versetzen, zum Deaktivieren des Auslösertons weiterhin beibehalten wird.
- Eine präzisere Systemuhr wird durch Absenken des Aktualisierungsschwellenwerts der Systemuhr von 2000 ms auf 50 ms und der Warnschwelle für Systemuhrabweichungen von 2000 ms auf 250 ms erreicht. Dies kann für zeitbasierte Protokolle wie TOTP hilfreich sein.
- Die Anrufaufzeichnungsfunktion der Dialer-App nutzt den modernen Android-Speicher, wobei die Aufnahmen im Ordner „Aufnahmen/Anrufaufzeichnungen“ gespeichert werden. Es gibt keine regionalen oder speziellen Einschränkungen, wie z. B. das Abspielen eines Aufnahmetons (die Nutzer sind jedoch weiterhin für die Einhaltung der geltenden Gesetze verantwortlich).
- Das Standardverhalten des Android-Paketinstallationsprogramms soll so geändert werden, dass deaktivierte Pakete nach der Aktualisierung erhalten bleiben, anstatt wieder aktiviert zu werden.
- Aktivieren Sie standardmäßig die Optionen „VPN immer aktiv“ und „Verbindungen ohne VPN blockieren“ für VPNs.
- Berechtigungsabfragen und die USB-Autorisierungsabfrage der Android Debug Bridge haben standardmäßig die Option „Zulassen“ deaktiviert und werden erst nach einer Sekunde aktiviert. Dies schützt vor versehentlichen Eingaben, insbesondere da Apps Nutzer durch das Drücken einer Schaltfläche, auf der ein Systemdialog angezeigt wird, dazu verleiten können.
Dienstleistungen
Merkmale der Serviceinfrastruktur:
- Strenge Datenschutz- und Sicherheitsvorkehrungen für unsere Infrastruktur
- Unnötige Protokollierung wird vermieden, und Protokolle werden nach 4 Tagen (Netzwerkdienste, die vom Betriebssystem verwendet werden) bis 10 Tagen automatisch gelöscht.
- Die Dienste werden vollständig über unsere eigenen dedizierten Server und virtuellen Maschinen gehostet, ohne dass zusätzliche Anbieter für CDNs, SaaS-Plattformen, Mirroring oder andere Dienste involviert sind. Weitere Informationen finden Sie auf unserer GrapheneOS-Serverseite.
- Unsere Dienste basieren auf offenen Technologieplattformen, um eine Abhängigkeit von einem bestimmten Hosting-Anbieter oder Hersteller zu vermeiden.
- Offene Dokumentation über unsere Infrastruktur, einschließlich einer Auflistung aller unserer Dienste, Anleitungen zum Erstellen ähnlicher Setups, veröffentlichten Konfigurationen für jeden unserer Webdienste usw.
- Keine proprietären Dienstleistungen
- Authentifizierte Verschlüsselung für alle unsere Dienste
- Starke Verschlüsselungskonfigurationen für alle unsere Dienste (SSH, TLS usw.), wobei ausschließlich moderne AEAD-Verschlüsselungen Vorwärtsgeheimhaltung gewährleisten.
- Unsere Webseiten enthalten keine Inhalte Dritter und verbieten dies vollständig durch strenge Richtlinien zur Inhaltssicherheit.
- Unsere Webseiten deaktivieren Referrer-Header, um den Datenschutz zu maximieren.
- Unsere Websites gewährleisten vollständige Cross-Origin-Isolation und deaktivieren das Einbetten in andere Inhalte.
- DNSSEC wurde für alle unsere Domains implementiert, um eine Vertrauensbasis für die Verschlüsselung und Authentifizierung der Domain-/Serverkonfiguration bereitzustellen.
- DNS-Zertifizierungsstellenautorisierungseinträge (CAA) für alle unsere Domains, die es ausschließlich Let’s Encrypt erlauben, Zertifikate auszustellen, mit vollständig integrierter Unterstützung für die
accounturiund dievalidationmethodsunsere Let’s Encrypt-Konten als die einzigen festlegen, die zur Ausstellung von Zertifikaten berechtigt sind. - DANE TLSA-Datensätze für das Anheften von Schlüsseln für alle unsere TLS-Dienste
- Unser Mailserver erzwingt DNSSEC/DANE, um beim Versenden von E-Mails, einschließlich Warnmeldungen des Attestierungsdienstes, eine authentifizierte Verschlüsselung zu gewährleisten.
- SSHFP über alle Domänen hinweg zum Anheften von SSH-Schlüsseln
- Statische Tastenzuweisung für unsere Dienste in Apps wie Auditor
- Für alles außer Login-Sitzungen, die sicher mit den Flags `–login`
SameSite=Strict,Secure`HttpOnly–login` und ` –login` eingerichtet werden und über serverseitiges Session-Tracking sowie die Möglichkeit zum Abmelden von anderen Sitzungen verfügen, werden keine persistenten Cookies oder ähnliche clientseitige Zustände verwendet.Path=/__Host - scrypt-basiertes Passwort-Hashing (wahrscheinlich Argon2, sobald die verfügbaren Implementierungen ausgereifter sind)
Inhaltsverzeichnis
- GrapheneOS
- Defending against exploitation of unknown vulnerabilities
- More complete patching
- Sandboxed Google Play
- Android Auto
- Network permission toggle
- Sensors permission toggle
- Storage Scopes
- Contact Scopes
- Broad carrier support without invasive carrier access
- LTE-only mode
- Wi-Fi privacy
- Network location
- Private screenshots
- Closed device identifier leaks
- Privacy by default
- PIN scrambling
- Two-factor fingerprint unlock
- Supports longer passwords
- Auto reboot
- Clearing sensitive data from memory
- Duress PIN/Password
- More secure fingerprint unlock
- Improved user profiles
- GrapheneOS app repository
- Vanadium: hardened WebView and default browser
- Auditor app and attestation service
- GrapheneOS Camera
- GrapheneOS PDF Viewer
- GrapheneOS Setup Wizard
- Encrypted backups
- Location data access indicator
- User installed apps can be disabled
- Improved VPN leak blocking
- Log viewer and user-facing crash reporting
- Other features
- Services
- Project