Bootloader sperren und entsperren

Die meisten Android-Geräte werden standardmäßig mit einem gesperrten Bootloader geliefert. Das bedeutet, dass Nutzer den Bootloader oder die Gerätepartitionen nicht flashen können. Bei Bedarf können Sie (und Nutzer des Geräts mit aktivierten Entwickleroptionen) den Bootloader entsperren, um neue Images zu flashen.

Bootloader aufrufen

Wenn Sie fastboot-Befehle ausführen möchten, müssen Sie sich im Bootloader-Modus befinden. Eine Möglichkeit hierfür ist der Befehl „adb adb reboot bootloader“. Bei einigen Smartphones können Sie auch den Bootloader aufrufen, indem Sie beim Starten des Geräts eine Tastenkombination drücken (in der Regel die Leisertaste).

Bootloader entsperren

Wenn Sie sich im Bootloader-Modus befinden, führen Sie den Befehl fastboot flashing unlock auf dem Gerät aus, um den Bootloader zu entsperren und die Partitionen neu zu flashen. Nach dem Festlegen bleibt der Entsperrmodus auch nach einem Neustart bestehen.

Geräte sollten den Befehl fastboot flashing unlock ablehnen, sofern get_unlock_ability nicht auf 1 festgelegt ist. Wenn 0 festgelegt ist, muss der Nutzer den Startbildschirm aufrufen, das Menü Einstellungen > System > Entwickleroptionen öffnen und die Option OEM-Entsperrung aktivieren. Dadurch wird get_unlock_ability auf 1 gesetzt. Dieser Modus bleibt nach der Einstellung auch nach Neustarts und Zurücksetzen auf die Werkseinstellungen erhalten.

Wenn der Befehl fastboot flashing unlock gesendet wird, sollte das Gerät die Nutzer warnen, dass sie möglicherweise Probleme mit inoffiziellen Images haben. Nachdem der Nutzer die Warnung bestätigt hat, sollte das Gerät auf die Werkseinstellungen zurückgesetzt werden, um unbefugten Datenzugriff zu verhindern. Der Bootloader sollte das Gerät zurücksetzen, auch wenn es nicht ordnungsgemäß neu formatiert werden kann. Erst nach einem Zurücksetzen kann das Flag „persistent“ gesetzt werden, damit das Gerät neu geflasht werden kann.

Der gesamte RAM, der noch nicht überschrieben wurde, sollte während des fastboot flashing unlock-Prozesses zurückgesetzt werden. Dadurch werden Angriffe verhindert, bei denen verbleibender RAM-Inhalt aus dem vorherigen Start gelesen wird. Ebenso sollte der RAM bei entsperrten Geräten bei jedem Start gelöscht werden, es sei denn, dies führt zu einer unzulässigen Verzögerung. Die Region, die für die ramoops des Kernels verwendet wird, sollte jedoch unverändert bleiben.

Bootloader sperren

Führen Sie den Befehl fastboot flashing lock auf dem Gerät aus, um den Bootloader zu sperren und das Gerät zurückzusetzen. Geräte, die für den Einzelhandel bestimmt sind, sollten im gesperrten Zustand versendet werden (get_unlock_ability gibt 0 zurück), damit Angreifer das Gerät nicht durch Installieren eines neuen Systems oder Boot-Images manipulieren können.

Eigenschaften für Sperren und Entsperren festlegen

Die Property ro.oem_unlock_supported sollte zum Zeitpunkt der Build-Ausführung festgelegt werden, je nachdem, ob das Gerät das Entsperren durch Flashen unterstützt.

  • Wenn das Gerät das Entsperren durch Blinken unterstützt, setzen Sie ro.oem_unlock_supported auf 1.
  • Wenn das Gerät das Entsperren per Blinken nicht unterstützt, setzen Sie ro.oem_unlock_supported auf 0.

Wenn das Gerät das Entsperren durch Flashen unterstützt, sollte der Bootloader den Sperrstatus anzeigen, indem die Kernel-Befehlszeilenvariable androidboot.flash.locked auf 1 gesetzt wird, wenn das Gerät gesperrt ist, oder auf 0, wenn es entsperrt ist. Diese Variable muss in Android 12 in der bootconfig und nicht in der Kernel-Befehlszeile festgelegt werden.

Bei Geräten, die dm-verity unterstützen, verwenden Sie ro.boot.verifiedbootstate, um den Wert von ro.boot.flash.locked auf 0 festzulegen. Dadurch wird der Bootloader entsperrt, wenn der Status des verifizierten Bootmodus orange ist.

Wichtige Abschnitte schützen

Geräte sollten das Sperren und Entsperren kritischer Abschnitte unterstützen. Als kritisch werden alle Bereiche definiert, die zum Starten des Geräts im Bootloader erforderlich sind. Dazu gehören unter anderem Sicherungen, virtuelle Partitionen für einen Sensorhub und der Bootloader der ersten Stufe. Um kritische Abschnitte zu sperren, müssen Sie einen Mechanismus verwenden, der verhindert, dass Code (Kernel, Wiederherstellungs-Image, OTA-Code usw.), der auf dem Gerät ausgeführt wird, einen kritischen Abschnitt absichtlich ändert. Bei Over-the-air-Updates sollten kritische Abschnitte nicht aktualisiert werden, wenn sich das Gerät in einem kritischen Sperrstatus befindet.

Der Wechsel vom gesperrten zum entsperrten Zustand sollte eine physische Interaktion mit dem Gerät erfordern. Diese Interaktion ähnelt den Auswirkungen des Ausführens des Befehls fastboot flashing unlock, erfordert jedoch, dass der Nutzer eine physische Taste auf dem Gerät drückt. Geräte dürfen nicht ohne physische Interaktion programmatisch von lock critical zu unlock critical wechseln und dürfen nicht im Zustand unlock critical ausgeliefert werden.