Trusty TEE

Trusty ist ein sicheres Betriebssystem, das eine vertrauenswürdige Ausführungsumgebung (Trusted Execution Environment, TEE) für Android bietet. Das Trusty-Betriebssystem wird auf demselben Prozessor wie das Android-Betriebssystem ausgeführt, 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. Die Isolation von Trusty schützt ihn vor schädlichen Apps, die vom Nutzer installiert werden, und vor potenziellen Sicherheitslücken, die in Android gefunden werden können.

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 vertrauenswürdige Ausführungsumgebung zu erstellen. Eine ähnliche Unterstützung ist auch auf Intel-x86-Plattformen mit der Virtualisierungstechnologie von Intel verfügbar.

Abbildung 1 Trusty-Übersichtsdiagramm

Trusty besteht aus:

  • Ein kleiner Betriebssystemkernel, der von Little Kernel abgeleitet wurde
  • Ein Linux-Kernel-Treiber zur Übertragung von Daten zwischen der sicheren Umgebung und Android
  • Eine Android-Nutzerbibliothek, die über den Kernel-Treiber mit vertrauenswürdigen Anwendungen (d. h. sicheren Aufgaben/Diensten) kommuniziert

Hinweis:Trusty und die Trusty API können sich ändern. Informationen zur Trusty API finden Sie in der API-Referenz.

Warum Trusty?

Andere TEE-Betriebssysteme werden traditionell von Drittanbietern als Binär-Blobs geliefert oder intern entwickelt. Die Entwicklung interner TEE-Systeme oder die Lizenzierung eines TEE von einem Drittanbieter kann für SoC-Anbieter (System-on-Chip) und OEMs (Erstausrüster) teuer sein. Die finanziellen Kosten in Kombination mit unzuverlässigen Drittanbietersystemen führen zu einem instabilen Ökosystem für Android. Trusty wird Partnern als zuverlässige und kostenlose Open-Source-Alternative für ihre vertrauenswürdige Ausführungsumgebung zur Verfügung gestellt. Trusty bietet ein Maß an Transparenz, das mit proprietären Systemen einfach 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 Anwendungen. Diese Fragmentierung kann ein Problem für Entwickler vertrauenswürdiger Apps sein, die dafür sorgen möchten, dass ihre Apps auf jedem Android-Gerät funktionieren. Wenn Entwickler Trusty als Standard verwenden, können sie Anwendungen ganz einfach erstellen und bereitstellen, ohne die Fragmentierung mehrerer TEE-Systeme berücksichtigen zu müssen. Trusty TEE bietet Entwicklern und Partnern Transparenz, Zusammenarbeit, Inspizierbarkeit von Code und einfaches Debuggen. Vertrauenswürdige Anwendungsentwickler können sich auf gemeinsame Tools und APIs einigen, um das Risiko von Sicherheitslücken zu verringern. Diese Entwickler können sicher sein, dass sie eine Anwendung entwickeln und ohne weitere Entwicklung auf mehreren Geräten wiederverwenden können.

Anwendungen und Dienste

Eine vertrauenswürdige Anwendung wird als Sammlung von Binärdateien (ausführbare Dateien und Ressourcendateien), einem Binärmanifest und einer kryptografischen Signatur definiert. Zur Laufzeit werden Trusty-Anwendungen als isolierte Prozesse im nicht privilegierten Modus unter dem Trusty-Kernel ausgeführt. Jeder Prozess wird in einer eigenen Sandbox mit virtuellem Arbeitsspeicher ausgeführt, wobei die Funktionen der Speicherverwaltungseinheit des TEE-Prozessors genutzt werden. Je nach Hardware-Build ändert sich der genaue Prozess, dem Trusty folgt. Der Kernel plant diese Prozesse beispielsweise mit einem prioritätsbasierten Round-Robin-Scheduler, der von einem sicheren Timer-Tick gesteuert wird. Alle Trusty-Anwendungen haben dieselbe Priorität.

Abbildung 2: Übersicht über vertrauenswürdige Anwendungen

Verlässliche Apps von Drittanbietern

Derzeit werden alle Trusty-Anwendungen von einem einzelnen Entwickler erstellt und mit dem Trusty-Kernel-Image verpackt. Das gesamte Image wird während des Starts vom Bootloader signiert und verifiziert. Die Entwicklung von Drittanbieteranwendungen wird in Trusty derzeit nicht unterstützt. Obwohl Trusty die Entwicklung neuer Anwendungen ermöglicht, muss dies mit äußerster Vorsicht erfolgen. Jede neue Anwendung vergrößert den Bereich der Trusted Computing Base (TCB) des Systems. Vertraute Anwendungen können auf Gerätegeheimnisse zugreifen und damit Berechnungen oder Datentransformationen ausführen. Die Möglichkeit, neue Anwendungen zu entwickeln, die im TEE ausgeführt werden, eröffnet viele Möglichkeiten für Innovationen. Aufgrund der Definition eines TEE können diese Anwendungen jedoch nicht ohne eine gewisse Form des Vertrauens verteilt werden. In der Regel erfolgt dies in Form einer digitalen Signatur einer Entität, die vom Nutzer des Produkts, auf dem die Anwendung ausgeführt wird, als vertrauenswürdig eingestuft wird.

Verwendung und Beispiele

Vertrauenswürdige Ausführungsumgebungen werden auf Mobilgeräten immer beliebter. Nutzer verlassen sich immer mehr auf ihre Mobilgeräte und die Sicherheitsanforderungen steigen ständig. 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, auf Hardwareregister und auf einmal beschreibbare Sicherungen zugreifen kann, in denen vertrauliche Daten (z. B. gerätespezifische kryptografische Schlüssel) vom Hersteller gespeichert werden. Software, die auf dem Hauptprozessor ausgeführt wird, delegiert alle Vorgänge, für die geheime Daten verwendet werden müssen, 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, was ein hohes Maß an Sicherheit und Schutz vor softwarebasierten Angriffen bietet.

TEEs haben viele weitere Anwendungsfälle, z. B. für mobile Zahlungen, sicheres Banking, Multi-Faktor-Authentifizierung, Schutz vor Gerätereset, fälschungssicherer persistenter Speicher, sichere PIN- und Fingerabdruckverarbeitung und sogar Malware-Erkennung.