Hallo,
weil die verlinkte Seite erstens auf englisch ist und zweitens die folgende Frage,
glaskugel schrieb:
...
Bis ich überlegt habe was der Unterschied zwischen "key" und "hash" ist, war die Eingabemöglichkeit weg:
...
nur indirekt behandelt:
Bei Secure Boot gibt es zwei Möglichkeiten, wie eine Datei beim Systemstart auf Ihre Authentizität geprüft werden kann:
Anhand eines Keys: Dann gibt es ein Schlüsselpaar bestehend aus einem privaten Schlüssel, mit dem die beim Systemstart zu prüfende Datei signiert wird und einem öffentlichen Schlüssel - der bei Secure Boot eingebettet in ein Zertifikat - in einer dafür vorgesehenen und besonders geschützten Datenbank innerhalb des NVRAMs der Firmware hinterlegt wird. So kann die Firmware beim Systemstart dann die Signatur der betroffenen Datei anhand des hinterlegten Zertifikats prüfen.
Anhand eines Datei-Hash-Wertes: Bei der Methode wird ein Hashwert der beim Systemstart zu prüfenden Datei - z.B. Bootloader (shimx64.efi) oder eines Kernelmoduls erzeugt und dieser Wert wird in dem oben beschriebenen Bereich der Firmware hinterlegt.
Das Problem von Hashwerten ist, dass die Verwaltung aufwendiger ist. Ändert sich die zu überprüfende Datei, so muss der neue Hashwert jedes mal in die Datenbank im NVRAM eingetragen werden. Zusätzlich muss der alte Hashwert für die veraltete Datei gelöscht oder auf die Blacklist gesetzt werden.
Bei der ersten Methode muss dagegen die aktualisierte Datei nur mit dem vorhandenen privaten Schlüssel signiert werden. Der dazu passende öffentliche Schlüssel ist ja bereits in der Datenbank der Firmware hinterlegt.
Das was für die eigentlichen Secure Boot Keys gilt, gilt genauso für die "Machine Owner Keys" (MOKs). Auf MOKs tifft das oben gesagte gleichermaßen zu, allerdings liegen die nicht in der eigentlichen Secure Boot Datenbank der Firmware, sondern da werden innerhalb des Shim-Setups im NVRAM eigene EFI-Variablen angelegt. Die sind zwar immerhin auch durch Authentifizierung geschützt, aber nicht im gleichen Maße, wie die EFI-Variablen der eigentlichen Secure-Boot-Datenbank der Firmware.
Das was man im Rahmen der Ubuntu-Installation beim ersten Neustart in der MOK-Datenbank hinterlegen muss ist ein "Key". Das ist der Schlüssel, der automatisch während des Setups erzeugt wird, wenn man auf einem Secure-Boot-System Dritthersteller-Treiber anwählt und dort ein Passwort erstellt. Die Abfrage zum Eintragen (enrollment) des Keys kommt nach meiner Erfahrung nur ein mal und das beim Setup gewählte Passwort gilt auch nur einmalig für diesen einen Eintragsversuch beim nächsten Neustart. Verstreicht das Timeout, dann wird der Key nicht in die MOK-Datenbank eingetragen und der Dritthersteller-Treiber solle folglich auch nicht geladen werden.
Übrigens:
Secure Boot lässt ich IMO auf Linux-Systemen nicht so (leicht) umsetzen, wie im Windows-Kosmos.
Der Grund: Secure Boot soll ein System vor einem Remote-Angreifer selbst dann noch schützen, wenn dieser auf dem betreffenden System Rootrechte (administrative Rechte) erlangt. Schützen soll Secure Boot dabei die Integrität des Bootprozesses und nicht etwa den Angriff im laufenden System. So soll verhindert werden, dass der Angreifer Boot- oder Rootkits in den Startprozess des Systems einschleust.
Das funktioniert im Windows-Kosmos grundsätzlich theoretisch auch, weil dort auf dem Endanwender-System keine privaten Schlüssel zum Signieren von Treibern oder Betriebssystem-Komponenten liegen. Das Signieren der Dateien erfolgt im Windows-Kosmos entweder bei Microsoft oder bei den Drittherstellern.
Im Linux-Kosmos - und so ist das im Moment auch bei Ubuntu umgesetzt - erfolgt das Signieren für alle beim Systemstart erforderlichen Komponenten, die nicht von Canonical bereitgestellt werden, auf dem System des Endanwenders. Damit hat ein Remote-Angreifer der an Rootrechte gelangt, den vollen Zugriff auf die Schlüssel und könnte seine Root- und Bootkits damit signieren.
Ein weiteres Problem für Distributionen, deren initrd nicht in das Kernel-Image integriert ist - wie auch bei Debian und Ubuntu: GRUB kann derzeit eine eigenständige initrd gar nicht gegen die Secure-Boot- oder auch MOK-Datenbank prüfen.
Lange Rede, kurzer Sinn: Secure Boot unter Ubuntu ist derzeit nicht richtig umgesetzt und bietet dementsprechend nicht mal den theoretisch möglichen Schutz, den es bieten könnte.
glaskugel schrieb:
.. Hast du eine Ahnung woran es im UEFI / Bios liegen könnte, wenn da zwar Secure Boot eingestellt ist, aber dann Ubuntu es nicht verwendet (anderer PC, gleiches Modell)
...
Wahrscheinlich handelt es sich dabei um eine grottige Impelmentierung von Secure Boot in der Firmware. Zumindest während des Setups muss das Live-System aber im UEFI-Modus gestartet sein und auch Secure Boot als aktiv erkannt haben, denn andernfalls würdest Du bei der Option von Dritthersteller-Treibern während der Installation nicht zum Anlegen eines Passwortes aufgefordert.
Was sagt denn auf dem System:
sudo mokutil --sb-state
LG,
Newubunti