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 . LOCKED Geräte verhindern, dass Sie neue Software auf das Gerät flashen, während UNLOCKED Geräte Änderungen zulassen.

Wenn ein Gerät eingeschaltet wird, prüft der Bootloader zunächst, ob ein Gerät LOCKED oder UNLOCKED ist. Wenn ein Gerät UNLOCKED ist, zeigt der Bootloader dem Benutzer eine Warnung an und fährt dann mit dem Booten fort, auch wenn das geladene Betriebssystem nicht vom Root of Trust signiert ist.

Wenn das Gerät LOCKED ist, durchläuft der Bootloader die Schritte unter „Überprüfen des Startvorgangs“ , um die Software des Geräts zu überprüfen. LOCKED Geräte starten nur , wenn das geladene Betriebssystem ordnungsgemäß vom Root of Trust signiert ist. Weitere Einzelheiten finden Sie unter Der Boot-Ablauf .

Gerätestatus ändern

Um den Status eines Geräts zu ändern , verwenden Sie das fastboot flashing [unlock | lock] -Befehl. Um Benutzerdaten zu schützen, löschen alle Zustandsübergänge die Datenpartitionen und fordern eine Bestätigung des Benutzers, bevor Daten gelöscht werden.

Der Übergang UNLOCKED zu LOCKED wird erwartet, wenn ein Benutzer ein gebrauchtes Entwicklungsgerät kauft. Durch das Sperren des Geräts sollte der Benutzer darauf vertrauen können, dass es sich in einem vom Gerätehersteller hergestellten Zustand befindet, solange keine Warnung erfolgt. Der Übergang LOCKED zu UNLOCKED wird erwartet, wenn ein Entwickler die Überprüfung auf dem Gerät für Entwicklungszwecke deaktivieren möchte.

Wurzel des Vertrauens

Der Vertrauensanker ist der kryptografische Schlüssel, der zum Signieren der auf dem Gerät gespeicherten Android-Kopie verwendet wird. Der private Teil des Root of Trust ist nur dem Gerätehersteller bekannt und wird zum Signieren jeder zur Verteilung vorgesehenen Android-Version verwendet. Der öffentliche Teil des Root of Trust ist in das Gerät eingebettet und wird an einem Ort gespeichert, an dem er nicht manipuliert werden kann (normalerweise schreibgeschützter Speicher).

Beim Laden von Android verwendet der Bootloader den Root of Trust, um die Authentizität zu überprüfen. Weitere Einzelheiten zu diesem Vorgang finden Sie unter Überprüfen des Startvorgangs . Geräte können über mehrere Bootloader verfügen und daher können mehrere kryptografische Schlüssel im Spiel sein.

Vom Benutzer einstellbarer Vertrauensanker

Geräte können dem Benutzer optional erlauben, den Root of Trust (z. B. einen öffentlichen Schlüssel) zu konfigurieren. Geräte können diesen vom Benutzer einstellbaren Root of Trust für den verifizierten Start anstelle des integrierten Root of Trust verwenden. Dadurch kann der Benutzer benutzerdefinierte Versionen von Android installieren und verwenden, ohne auf die Sicherheitsverbesserungen von Verified Boot verzichten zu müssen.

Wenn ein vom Benutzer einstellbarer Root of Trust implementiert wird, sollte dies so erfolgen, dass:

  • Zum Festlegen/Löschen des vom Benutzer einstellbaren Root of Trust ist eine physische Bestätigung erforderlich.
  • Der vom Benutzer einstellbare Root of Trust kann nur vom Endbenutzer festgelegt werden. Es kann nicht im Werk oder an einem beliebigen Zwischenpunkt eingestellt werden, bevor der Endbenutzer das Gerät erhält.
  • Der vom Benutzer einstellbare Vertrauensanker wird in einem manipulationssicheren Speicher gespeichert. Manipulationssicher bedeutet, dass erkannt werden kann, ob Android die Daten manipuliert hat, beispielsweise wenn sie überschrieben oder geändert wurden.
  • Wenn ein vom Benutzer einstellbarer Vertrauensstamm festgelegt ist, sollte das Gerät das Starten einer Android-Version zulassen, die entweder mit dem integrierten Vertrauensstamm oder dem vom Benutzer einstellbaren Vertrauensstamm signiert ist.
  • Jedes Mal, wenn das Gerät mit dem vom Benutzer einstellbaren Root of Trust startet, sollte der Benutzer benachrichtigt werden, dass das Gerät eine benutzerdefinierte Version von Android lädt. Warnbildschirme finden Sie beispielsweise LOCKED Geräte mit benutzerdefiniertem Schlüsselsatz .

Eine Möglichkeit, einen vom Benutzer einstellbaren Root of Trust zu implementieren, besteht darin, eine virtuelle Partition zu haben, die nur geflasht oder gelöscht werden kann, wenn sich das Gerät im UNLOCKED Zustand befindet. Die Google Pixel 2-Geräte verwenden diesen Ansatz 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 ist ein Beispiel dafür, wie der vom Benutzer einstellbare Root of Trust festgelegt wird:

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

Der vom Benutzer einstellbare Root of Trust kann gelöscht werden, indem Folgendes ausgegeben wird:

fastboot erase avb_custom_key