Trusty ist ein sicheres Betriebssystem, das eine vertrauenswürdige Ausführungsumgebung (Trusted Execution Environment, TEE) für Android bietet. Trusty läuft auf demselben Prozessor wie Android, ist aber sowohl durch Hardware als auch durch Software vom Rest des Systems isoliert. Trusty und Android werden parallel ausgeführt. Trusty hat Zugriff auf die volle Leistung des Hauptprozessors und des Arbeitsspeichers eines Geräts, ist aber vollständig isoliert. Durch die Isolation von Trusty wird es vor schädlichen Apps geschützt, die vom Nutzer installiert wurden, und vor potenziellen Sicherheitslücken in Android.
Trusty ist mit ARM- und Intel-Prozessoren kompatibel. Auf ARM-Systemen verwendet Trusty die TrustZone von ARM, um den Hauptprozessor zu virtualisieren und eine sichere TEE zu erstellen. Eine ähnliche Unterstützung ist auch auf Intel x86-Plattformen mit der Virtualisierungstechnologie von Intel verfügbar.

Abbildung 1: Übersichtsdiagramm zu Trusty.
Trusty besteht aus:
- Ein kleiner Betriebssystem-Kernel, der von Little Kernel abgeleitet wurde
- Ein Linux-Kernel-Treiber zum Übertragen von Daten zwischen der sicheren Umgebung und Android
- Eine Userspace-Bibliothek für Android zur Kommunikation mit vertrauenswürdigen Apps (d. h. sicheren Aufgaben und Diensten) über den Kerneltreiber
Hinweis:Trusty und die Trusty API können sich ändern. Informationen zur Trusty API finden Sie in der Trusty API-Referenz.
Vorteile von Trusty
Andere TEE-Betriebssysteme werden traditionell als binäre Blobs von Drittanbietern bereitgestellt oder intern entwickelt. Die Entwicklung interner TEE-Systeme oder die Lizenzierung eines TEE von einem Drittanbieter kann für SoC-Anbieter und OEMs kostspielig sein. Die monetären Kosten in Kombination mit unzuverlässigen Drittanbietersystemen schaffen ein instabiles Ökosystem für Android. Trusty wird Partnern als zuverlässige und kostenlose Open-Source-Alternative für ihre TEE zur Verfügung gestellt. Trusty bietet ein Maß an Transparenz, das mit Closed-Source-Systemen nicht möglich ist.
Android unterstützt verschiedene TEE-Implementierungen, sodass Sie nicht auf Trusty beschränkt sind. Jedes TEE-Betriebssystem hat eine eigene Methode zum Bereitstellen vertrauenswürdiger Apps. Diese Fragmentierung kann ein Problem für Entwickler vertrauenswürdiger Apps darstellen, die sicherstellen möchten, dass ihre Apps auf jedem Android-Gerät funktionieren. Die Verwendung von Trusty als Standard hilft App-Entwicklern, Apps zu erstellen und bereitzustellen, ohne die Fragmentierung mehrerer TEE-Systeme berücksichtigen zu müssen. Trusty TEE bietet Entwicklern und Partnern Transparenz, Zusammenarbeit, die Möglichkeit, Code zu prüfen, und eine unkomplizierte Fehlersuche. Vertrauenswürdige App-Entwickler können gemeinsame Tools und APIs verwenden, um das Risiko von Sicherheitslücken zu verringern. Diese Entwickler können eine App entwickeln und sie ohne weitere Entwicklung auf mehreren Geräten wiederverwenden.
Apps und Dienste
Eine Trusty-App besteht aus einer Sammlung von Binärdateien (ausführbare Dateien und Ressourcendateien), einem binären Manifest und einer kryptografischen Signatur. Zur Laufzeit werden Trusty-Apps als isolierte Prozesse im Modus ohne Berechtigungen unter dem Trusty-Kernel ausgeführt. Jeder Prozess wird in einer eigenen virtuellen Arbeitsspeicher-Sandbox ausgeführt, wobei die Funktionen der Memory Management Unit des TEE-Prozessors genutzt werden. Die genaue Vorgehensweise von Trusty hängt von der Hardware ab. Der Kernel plant diese Prozesse jedoch beispielsweise mit einem prioritätsbasierten Round-Robin-Scheduler, der von einem sicheren Timer-Tick gesteuert wird. Alle Trusty-Apps haben dieselbe Priorität.

Abbildung 2: Übersicht über Trusty-Apps.
Trusty-Apps von Drittanbietern
Alle Trusty-Apps werden von einer einzelnen Partei entwickelt und mit dem Trusty-Kernel-Image verpackt. Das gesamte Image wird vom Bootloader während des Starts signiert und überprüft. Die Entwicklung von Drittanbieter-Apps wird in Trusty nicht unterstützt. Trusty ermöglicht zwar die Entwicklung neuer Apps, dies sollte jedoch mit äußerster Sorgfalt erfolgen, da jede neue App den Bereich der Trusted Computing Base (TCB) des Systems vergrößert. Vertrauenswürdige Apps können auf Gerätesecrets zugreifen und damit Berechnungen oder Datentransformationen durchführen. Die Möglichkeit, neue Apps zu entwickeln, die in der TEE ausgeführt werden, eröffnet viele Möglichkeiten für Innovationen. Aufgrund der Definition eines TEE können diese Apps jedoch nicht ohne eine Form von Vertrauen verteilt werden. Dies erfolgt in Form einer digitalen Signatur durch eine vom Nutzer des Produkts, auf dem die App ausgeführt wird, als vertrauenswürdig eingestufte Einheit.
Verwendung und Beispiele
TEEs werden zum Standard in Mobilgeräten. Nutzer verlassen sich im Alltag immer mehr auf ihre Mobilgeräte und der Bedarf an Sicherheit wächst. Mobilgeräte mit TEE sind sicherer als Geräte ohne TEE.
Auf Geräten mit einer TEE-Implementierung wird der Hauptprozessor oft als „nicht vertrauenswürdig“ bezeichnet. Das bedeutet, dass er nicht auf bestimmte Bereiche des RAM, Hardwareregister und einmalig programmierbare Sicherungen zugreifen kann, in denen der Hersteller geheime Daten wie gerätespezifische kryptografische Schlüssel speichert. Software, die auf dem Hauptprozessor ausgeführt wird, delegiert alle Vorgänge, für die geheime Daten erforderlich sind, an den TEE-Prozessor.
Das bekannteste Beispiel dafür im Android-Ökosystem ist das DRM-Framework für geschützte Inhalte. Software, die auf dem TEE-Prozessor ausgeführt wird, kann auf gerätespezifische Schlüssel zugreifen, die zum Entschlüsseln geschützter Inhalte erforderlich sind. Der Hauptprozessor sieht nur die verschlüsselten Inhalte und bietet so ein hohes Maß an Sicherheit und Schutz vor softwarebasierten Angriffen.
Das TEE hat auch andere Anwendungsbereiche, z. B. mobile Zahlungen, sicheres Banking, Multi-Faktor-Authentifizierung, Schutz vor Zurücksetzen des Geräts, Replay-geschützter persistenter Speicher, sichere PIN- und Fingerabdruckverarbeitung und sogar Malware-Erkennung.