Gerätestatus

Der Gerätestatus gibt an, wie frei Software auf ein Gerät geflasht werden kann und ob eine Überprüfung erzwungen wird. Gerätestatus sind LOCKED und UNLOCKED. Bei LOCKED-Geräten können Sie keine neue Software auf das Gerät aufspielen, während bei UNLOCKED-Geräten eine Modifizierung möglich ist.

Wenn ein Gerät eingeschaltet wird, prüft der Bootloader zuerst, ob es sich um ein LOCKED- oder UNLOCKED-Gerät handelt. Wenn ein Gerät UNLOCKED ist, zeigt der Bootloader dem Nutzer eine Warnung an und fährt dann mit dem Start fort, auch wenn das geladene Betriebssystem nicht vom Root of Trust signiert wurde.

Wenn das Gerät LOCKED ist, führt der Bootloader die Schritte unter Bootvorgang bestätigen aus, um die Software des Geräts zu überprüfen. LOCKED-Geräte starten nur, wenn das geladene Betriebssystem vom Root of Trust ordnungsgemäß signiert wurde. Weitere Informationen finden Sie unter Bootvorgang.

Gerätestatus ändern

Verwenden Sie den Befehl fastboot flashing [unlock | lock], um den Status eines Geräts zu ändern. Zum Schutz von Nutzerdaten werden bei allen Statusübergängen die Datenpartitionen gelöscht und der Nutzer wird vor dem Löschen der Daten um Bestätigung gebeten.

Der Übergang von UNLOCKED zu LOCKED wird erwartet, wenn ein Nutzer ein gebrauchtes Entwicklungsgerät kauft. Wenn das Gerät gesperrt ist, sollte der Nutzer darauf vertrauen können, dass es sich in einem vom Gerätehersteller erstellten Zustand befindet, sofern keine Warnung angezeigt wird. Die Umstellung von LOCKED auf UNLOCKED ist zu erwarten, wenn ein Entwickler die Bestätigung auf dem Gerät zu Entwicklungszwecken deaktivieren möchte.

Root of Trust

Der Root of Trust ist der kryptografische Schlüssel, mit dem die auf dem Gerät gespeicherte Kopie von Android signiert wird. Der private Teil der Root of Trust ist nur dem Gerätehersteller bekannt und wird zum Signieren jeder für die Bereitstellung bestimmten Android-Version verwendet. Der öffentliche Teil der Root of Trust ist in das Gerät eingebettet und an einem Ort gespeichert, an dem er nicht manipuliert werden kann (in der Regel schreibgeschützter Speicher).

Beim Laden von Android verwendet der Bootloader den Root of Trust, um die Authentizität zu überprüfen. Weitere Informationen zu diesem Vorgang finden Sie unter Startvorgang überprüfen. Geräte können mehrere Bootloader haben und daher können mehrere kryptografische Schlüssel zum Einsatz kommen.

Vom Nutzer einstellbarer Root of Trust

Auf Geräten kann der Nutzer optional die Vertrauenswürdigkeitsbasis konfigurieren (z. B. einen öffentlichen Schlüssel). Geräte können und Google Pixel-Geräte verwenden diesen vom Nutzer einstellbaren Root of Trust für den verifizierten Start zusätzlich zum integrierten Root of Trust.

Wenn eine vom Nutzer einstellbare Root of Trust implementiert wird, sollte dies so erfolgen, dass:

  • Für das Festlegen oder Löschen des vom Nutzer festgelegten Stammknotens des Vertrauens ist eine physische Bestätigung erforderlich.
  • Der vom Nutzer einstellbare Root of Trust kann nur vom Endnutzer festgelegt werden. Sie kann nicht im Werk oder an einem Zwischenpunkt festgelegt werden, bevor der Endnutzer das Gerät erhält.
  • Der vom Nutzer festlegbare Root of Trust wird in einem manipulationssicheren Speicher abgelegt. Manipulationssicher bedeutet, dass es möglich ist, festzustellen, ob Android die Daten manipuliert hat, z. B. ob sie überschrieben oder geändert wurden.
  • Wenn ein vom Nutzer einstellbarer Root of Trust festgelegt ist, sollte das Gerät eine Version von Android starten, die entweder mit dem integrierten Root of Trust oder dem vom Nutzer einstellbaren Root of Trust signiert ist.
  • Jedes Mal, wenn das Gerät mit dem vom Nutzer festgelegten Root of Trust gestartet wird, sollte der Nutzer darüber informiert werden, dass auf dem Gerät eine benutzerdefinierte Version von Android geladen wird. Beispiele für Warnbildschirme finden Sie unter LOCKED-Geräte mit benutzerdefiniertem Schlüsselsatz.

Eine Möglichkeit, einen vom Nutzer einstellbaren Root of Trust zu implementieren, besteht darin, eine virtuelle Partition zu verwenden, die nur geflasht oder gelöscht werden kann, wenn sich das Gerät im Status UNLOCKED befindet. Bei Google Pixel 2 wird dieser Ansatz verwendet und die virtuelle Partition heißt avb_custom_key. Das Format der Daten in dieser Partition ist die Ausgabe des Befehls avbtool extract_public_key. Hier ein Beispiel für die Einrichtung des vom Nutzer einstellbaren Root of Trust:

avbtool extract_public_key --key key.pem --output pkmd.bin
fastboot flash avb_custom_key pkmd.bin

Der vom Nutzer festgelegte Stamm der Vertrauenskette kann durch Ausführen der folgenden Befehle gelöscht werden:

fastboot erase avb_custom_key