Anwendungsfälle

In diesem Dokument werden häufige Anwendungsfälle für AVF beschrieben.

Isolierte Kompilierung

Als softwarebasierte Enklave bietet eine geschützte VM sicherheitsrelevanten Code kompilieren. In dieser Umgebung kann die Kompilierung verschoben werden von bootclasspath und Systemserver-JARs (ausgelöst durch ein APEX-Update) von frühen Startvorgang vor dem Neustart und reduziert die Anzahl der nach APEX vorgenommenen Änderungen erheblich die Startzeit aktualisieren.

Die Implementierung erfolgt in der com.android.compos APEX. Diese Komponente ist optional und kann eingefügt werden. mit einer makefile:

Isolierte Kompilierung

Abbildung 1: JARs für Mainline-Updates kompilieren

Das Sicherheitsziel besteht darin, verifizierte Eingaben wahrheitsgemäß zu kompilieren und die Ausgabe zu erzeugen. isoliert zu arbeiten; Android als nicht vertrauenswürdiger Client kann die Kompilierung nicht ändern die Ausgabe in irgendeiner Weise, die nicht zu einem Fehler führt (wenn Android auf den Start zurückgreift) Zeitkompilierung).

Der Kompilierungsdienst in der VM generiert nur dann eine Signatur, wenn keine Fehler während der gesamten Kompilierung. Android kann den öffentlichen Schlüssel von VM für die Signaturprüfung verwenden.

Der Schlüssel der VM wird aus dem DICE-Profil der VM generiert, das von den APEXes definiert wird und APKs, die auf der VM bereitgestellt werden, sowie weitere VM-Parameter wie Debug-Fähigkeit.

Um festzustellen, ob der öffentliche Schlüssel nicht von einer unerwarteten VM stammt, startet Android um festzustellen, ob der Schlüssel korrekt ist. Die VM wird beim frühen Start gestartet. nach jedem APEX-Update.

Mit dem verifizierten Bootmodus der geschützten VM wird der Kompilierungsdienst nur geprüft Code. Der Code kann daher festlegen, dass nur Eingaben akzeptiert werden, die die folgenden Anforderungen erfüllen: kann eine Eingabedatei nur dann akzeptiert werden, wenn ihr Name und Der Digest „fs-verity“ ist in einer Zulassungsliste definiert.

Alle bereitgestellten APIs der VM sind Angriffsflächen. Alle Eingabedateien und Es wird angenommen, dass die Parameter von einem nicht vertrauenswürdigen Client stammen, und müssen verifiziert und vor der Verarbeitung überprüft.

Die Integrität der Eingabe-/Ausgabedatei wird von der VM überprüft, wobei die Dateien auf Android als nicht vertrauenswürdigen Dateiserver verwenden:

  • Der Inhalt einer Eingabedatei muss verifiziert werden, bevor mit dem fs-verity-Algorithmus. Damit eine Eingabedatei in der VM verfügbar ist, müssen ihre Der Root-Hash muss in einem Container (APK) bereitgestellt werden, der zum DICE-Profil der VM Mit dem vertrauenswürdigen Root-Hash kann ein Angreifer nicht mit der Eingabe, ohne erkannt zu werden.
  • Die Integrität der Ausgabedatei muss in der VM aufrechterhalten werden. Selbst wenn eine Ausgabedatei unter Android gespeichert wird, wird im selben fs-verity-Baumformat beibehalten, kann aber dynamisch aktualisiert. Die endgültige Ausgabedatei kann am Root-Hash identifiziert werden. der in der VM isoliert ist. Der Dienst in der VM schützt die Ausgabe Dateien nach Signatur.