Trusty ist ein sicheres Betriebssystem (OS), das eine Trusted Execution Environment (TEE) für Android bereitstellt. Das Trusty-Betriebssystem läuft auf demselben Prozessor wie das Android-Betriebssystem, aber Trusty ist sowohl durch Hardware als auch durch Software vom Rest des Systems isoliert. Trusty und Android laufen parallel. Trusty hat Zugriff auf die volle Leistung des Hauptprozessors und Speichers eines Geräts, ist jedoch vollständig isoliert. Die Isolation von Trusty schützt es vor schädlichen Apps, die vom Benutzer installiert werden, und vor potenziellen Schwachstellen, die in Android entdeckt werden könnten.
Trusty ist mit ARM- und Intel-Prozessoren kompatibel. Auf ARM-Systemen nutzt Trusty die Trustzone™ von ARM, um den Hauptprozessor zu virtualisieren und eine sichere, vertrauenswürdige Ausführungsumgebung zu schaffen. Ähnliche Unterstützung ist auch auf Intel x86-Plattformen verfügbar, die die Virtualisierungstechnologie von Intel nutzen.
![](https://source.android.google.cn/static/docs/security/images/trustyOverview_900w.png?authuser=6&hl=de)
Abbildung 1 . Vertrauenswürdiges Übersichtsdiagramm.
Trusty besteht aus:
- Ein kleiner Betriebssystemkernel, abgeleitet von Little Kernel
- Ein Linux-Kernel-Treiber zum Übertragen von Daten zwischen der sicheren Umgebung und Android
- Eine Android- Userspace-Bibliothek zur Kommunikation mit vertrauenswürdigen Anwendungen (d. h. sicheren Aufgaben/Diensten) über den Kernel-Treiber
Hinweis: Änderungen an Trusty und der Trusty-API vorbehalten. Informationen zur Trusty API finden Sie in der API-Referenz .
Warum 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 System-on-Chip (SoC)-Anbieter und OEMs kostspielig sein. Die finanziellen Kosten in Kombination mit unzuverlässigen Systemen von Drittanbietern führen zu einem instabilen Ökosystem für Android. Trusty wird seinen Partnern als zuverlässige und kostenlose Open-Source-Alternative für ihre Trusted Execution Environment bereitgestellt. Trusty bietet ein Maß an Transparenz, das mit Closed-Source-Systemen einfach nicht möglich ist.
Android unterstützt verschiedene TEE-Implementierungen, sodass Sie nicht auf die Verwendung von Trusty beschränkt sind. Jedes TEE-Betriebssystem verfügt über seine eigene einzigartige Möglichkeit, vertrauenswürdige Anwendungen bereitzustellen. Diese Fragmentierung kann ein Problem für vertrauenswürdige Anwendungsentwickler sein, die sicherstellen möchten, dass ihre Apps auf jedem Android-Gerät funktionieren. Die Verwendung von Trusty als Standard hilft Anwendungsentwicklern, Anwendungen einfach zu erstellen und bereitzustellen, ohne die Fragmentierung mehrerer TEE-Systeme berücksichtigen zu müssen. Trusty TEE bietet Entwicklern und Partnern Transparenz, Zusammenarbeit, Überprüfbarkeit des Codes und einfaches Debuggen. Vertrauenswürdige Anwendungsentwickler können gemeinsame Tools und APIs nutzen, um das Risiko der Einführung von Sicherheitslücken zu verringern. Diese Entwickler haben die Gewissheit, dass sie eine Anwendung entwickeln und ohne weitere Entwicklung auf mehreren Geräten wiederverwenden können.
Anwendungen und Dienste
Eine Trusty-Anwendung ist definiert als eine Sammlung von Binärdateien (ausführbare Dateien und Ressourcendateien), einem Binärmanifest und einer kryptografischen Signatur. Zur Laufzeit werden Trusty-Anwendungen als isolierte Prozesse im unprivilegierten Modus unter dem Trusty-Kernel ausgeführt. Jeder Prozess läuft in seiner eigenen virtuellen Speichersandbox und nutzt die Funktionen der Speicherverwaltungseinheit des TEE-Prozessors. Der Aufbau der Hardware ändert den genauen Prozess, dem Trusty folgt, aber der Kernel plant diese Prozesse beispielsweise mithilfe eines prioritätsbasierten Round-Robin-Schedulers, der von einem sicheren Timer-Tick gesteuert wird. Alle Trusty-Anwendungen haben die gleiche Priorität.
![](https://source.android.google.cn/static/docs/security/images/trustyApps_900w.png?authuser=6&hl=de)
Figur 2 . Übersicht über die vertrauenswürdige Anwendung.
Trusty-Anwendungen von Drittanbietern
Derzeit werden alle Trusty-Anwendungen von einer einzigen Partei entwickelt und mit dem Trusty-Kernel-Image gepackt. Das gesamte Image wird beim Booten vom Bootloader signiert und überprüft. Die Anwendungsentwicklung von Drittanbietern wird derzeit in Trusty nicht unterstützt. Obwohl Trusty die Entwicklung neuer Anwendungen ermöglicht, muss dabei mit äußerster Sorgfalt vorgegangen werden. Jede neue Anwendung vergrößert den Bereich der Trusted Computing Base (TCB) des Systems. Vertrauenswürdige Anwendungen können auf Gerätegeheimnisse zugreifen und mithilfe dieser Berechnungen oder Datentransformationen durchführen. Die Fähigkeit, neue Anwendungen zu entwickeln, die im TEE laufen, eröffnet viele Möglichkeiten für Innovationen. Aufgrund der eigentlichen Definition eines TEE können diese Anwendungen jedoch nicht ohne eine damit verbundene Form von Vertrauen verteilt werden. In der Regel erfolgt dies in Form einer digitalen Signatur durch eine Instanz, der der Benutzer des Produkts, auf dem die Anwendung ausgeführt wird, vertraut.
Verwendungen und Beispiele
Vertrauenswürdige Ausführungsumgebungen werden bei mobilen Geräten immer mehr zum Standard. Nutzer verlassen sich im Alltag immer mehr auf ihre mobilen Geräte und das Bedürfnis nach Sicherheit wächst stetig. Mobile Gerä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, was bedeutet, dass er nicht auf bestimmte Bereiche des RAM, Hardware-Registers und einmal beschreibbare Sicherungen zugreifen kann, in denen sich geheime Daten (z. B. gerätespezifische kryptografische Schlüssel) befinden vom Hersteller gespeichert. Auf dem Hauptprozessor ausgeführte Software delegiert alle Vorgänge, die die Verwendung geheimer Daten erfordern, an den TEE-Prozessor.
Das bekannteste Beispiel hierfür im Android-Ökosystem ist das DRM-Framework für geschützte Inhalte. Auf dem TEE-Prozessor ausgeführte Software 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.
Es gibt viele weitere Einsatzmöglichkeiten für ein TEE, wie z. B. mobiles Bezahlen, sicheres Banking, Multi-Faktor-Authentifizierung, Geräte-Reset-Schutz, abspielgeschützter persistenter Speicher, sichere PIN- und Fingerabdruck-Verarbeitung und sogar Malware-Erkennung.