Vertrauensvolles TEE

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 zueinander. 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 bösartigen Apps, die vom Benutzer installiert wurden, und vor potenziellen Schwachstellen, die in Android entdeckt 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 schaffen. Eine ähnliche Unterstützung ist auch auf Intel x86-Plattformen mit Intels Virtualisierungstechnologie verfügbar.

Abbildung 1 . Zuverlässiges Übersichtsdiagramm.

Trusty besteht aus:

  • Ein kleiner OS-Kernel, der von Little Kernel abgeleitet ist
  • 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: Trusty und die Trusty-API können sich ändern. Informationen zur Trusty-API finden Sie in der API-Referenz .

Warum Treu?

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 Anbieter von System-on-Chip (SoC) und OEMs kostspielig sein. Die monetären Kosten in Kombination mit unzuverlässigen Systemen von Drittanbietern schaffen ein instabiles Ökosystem für Android. Trusty wird seinen Partnern als zuverlässige und kostenlose Open-Source-Alternative für ihre Trusted Execution Environment zur Verfügung gestellt. 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 hat seine eigene einzigartige Methode zur Bereitstellung vertrauenswürdiger Anwendungen. 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, Inspizierbarkeit des Codes und einfaches Debuggen. Vertrauenswürdige Anwendungsentwickler können gängige Tools und APIs konvergieren, um das Risiko der Einführung von Sicherheitslücken zu verringern. Diese Entwickler haben das Vertrauen, dass sie eine Anwendung entwickeln und ohne weitere Entwicklung auf mehreren Geräten wiederverwenden können.

Anwendungen und Dienste

Eine Trusty-Anwendung ist als Sammlung von Binärdateien (ausführbare Dateien und Ressourcendateien), einem binären Manifest und einer kryptografischen Signatur definiert. Zur Laufzeit laufen Trusty-Anwendungen als isolierte Prozesse im unprivilegierten Modus unter dem Trusty-Kernel. Jeder Prozess läuft in seiner eigenen virtuellen Speicher-Sandbox unter Verwendung der Speicherverwaltungseinheitsfähigkeiten des TEE-Prozessors. Der Build der Hardware ändert den genauen Prozess, dem Trusty folgt, aber 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 . Vertrauenswürdige Anwendungsübersicht.

Trusty-Anwendungen von Drittanbietern

Derzeit werden alle Trusty-Anwendungen von einer einzigen Partei entwickelt und mit dem Trusty-Kernel-Image verpackt. Das gesamte Image wird beim Booten vom Bootloader signiert und verifiziert. Die Entwicklung von Drittanbieteranwendungen 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 damit 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 irgendeine Form von Vertrauen verteilt werden. Typischerweise erfolgt dies in Form einer digitalen Signatur einer Entität, der der Benutzer des Produkts, auf dem die Anwendung ausgeführt wird, vertraut.

Anwendungen und Beispiele

Vertrauenswürdige Ausführungsumgebungen entwickeln sich schnell zu einem Standard für mobile Geräte. Nutzer verlassen sich im Alltag immer mehr auf ihre Mobilgeräte und das Sicherheitsbedürfnis wächst stetig. 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, was bedeutet, dass er nicht auf bestimmte Bereiche des RAM, Hardwareregister und einmal beschreibbaren Sicherungen zugreifen kann, in denen sich geheime Daten (z. B. gerätespezifische kryptografische Schlüssel) befinden vom Hersteller gespeichert. Software, die auf dem Hauptprozessor läuft, delegiert alle Operationen, die die Verwendung geheimer Daten erfordern, 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 läuft, kann auf gerätespezifische Schlüssel zugreifen, die zum Entschlüsseln geschützter Inhalte erforderlich sind. Der Hauptprozessor sieht nur den verschlüsselten Inhalt, was ein hohes Maß an Sicherheit und Schutz vor softwarebasierten Angriffen bietet.

Es gibt viele andere Verwendungszwecke für ein TEE, z. B. mobile Zahlungen, sicheres Banking, Multi-Faktor-Authentifizierung, Schutz vor Geräterücksetzung, wiedergabegeschützte dauerhafte Speicherung, sichere PIN- und Fingerabdruckverarbeitung und sogar Malware-Erkennung.