Warum wird das Deaktivieren von "Secure Boot" bei der Installation von Modulen von Drittanbietern durchgesetzt?

46

Bei der Installation von 16.04 wurde ich aufgefordert, " Secure Boot " zu deaktivieren , wenn ich Module / Treiber von Drittanbietern installieren wollte .

Ich habe nicht befolgt.

Und als ich die einzigen von mir verwendeten Treiber von Drittanbietern ( bcmwl-kernel-source ) manuell installierte , wurde ich (während der Installation des Pakets) erneut aufgefordert, "Secure Boot" zu deaktivieren .

Die Verwendung von bcmwl-kernel-source war mit Secure Boot in 15.10 völlig in Ordnung . Dies scheint nicht mit einem Bug zu tun zu haben.

Das sieht also so aus, als würde Ubuntu es ablehnen, die Treiber / Module von Drittanbietern zu signieren, damit es mit "Secure Boot" funktioniert (??). Oder scheinen Module von Drittanbietern als unsicher zu betrachten und "Secure Boot" zu unterbrechen, wodurch die Deaktivierung erzwungen wird, um dies zu verdeutlichen? Habe ich recht ?

Sonnenwende
quelle
6
Nun, IMO, es liegt daran, dass die Leute (fälschlicherweise) annehmen, dass der sichere Start Module von Drittanbietern beschädigt, wenn sie Ratschläge geben. Technische Informationen zum sicheren Start finden Sie hier - wiki.ubuntu.com/SecurityTeam/SecureBoot . Persönlich bin ich nicht mit dem allgegenwärtigen Rat einverstanden, den sicheren Start zu unterbinden. Funktioniert auf meiner Hardware einwandfrei, wenn der sichere Start aktiviert ist. IMO lässt den sicheren Start aktiviert, es sei denn, Sie haben ein Problem damit. Kein Grund, Sicherheitsfunktionen blind zu deaktivieren.
Panther
8
Ich habe mich nicht eingehend damit befasst, aber nach meinem Verständnis wird 16.04 strenger als 15.10 und frühere Versionen auf sichere Boot-Erzwingung umgestellt. In Version 15.10 und früher startet GRUB nach dem Start von GRUB durch Shim einen beliebigen Linux-Kernel. Der Secure Boot-Schutz endet mit GRUB. Meines Wissens erstreckt sich die Durchsetzung von Secure Boot-Richtlinien mit 16.04 auf den Kernel, sodass Ubuntus GRUB keine nicht signierten Kernel mehr startet. Wenn es darüber hinausgeht, sind auch nicht signierte Kernelmodule betroffen, wenn sie nicht zuvor waren. Auch hier habe ich mich nicht eingehend damit befasst.
Rod Smith
1
Einige gute Hintergrundinformationen: bugs.launchpad.net/ubuntu/+source/grub2/+bug/1401532
dpb
1
Da Leute mit ihren Systemen herumspielen, um Module von Drittanbietern zu installieren, frage ich mich, ob diese Funktion nicht mehr schaden als nützen wird.
Daniel
Gibt es eine Möglichkeit, es nach dem Ausschalten wieder zu aktivieren?
Shaunakde

Antworten:

38

Dies ist kein Fehler, es ist eine Funktion.

Wie Anthony Wong sagt, wenn Sie ein DKMS-Paket installieren, kompilieren Sie das Paket selbst, daher kann Canonical das Modul nicht für Sie signieren.

Sie können jedoch auf jeden Fall Secure Boot verwenden. Dies ist jedoch genau der Anwendungsfall, in dem Secure Boot versucht, Sie vor sich selbst zu schützen, da es nicht wissen kann, ob Sie einem Modul vertrauen oder nicht.

Standardmäßig befindet sich auf Ihrem UEFI-Computer ein Platform Key (PK), die letztendlich vertrauenswürdige Zertifizierungsstelle zum Laden von Code in Ihren Prozessor.

GRUB, Shim oder andere Boot-Mechanismen können von einem KEK digital signiert werden, der von der Root-CA (PK) als vertrauenswürdig eingestuft wird. Auf diese Weise kann Ihr Computer ohne Konfiguration Software wie Ubuntu Live USB / DVDs booten.

Unter Ubuntu 16.04 wird der Kernel mit CONFIG_MODULE_SIG_FORCE = 1 erstellt. Dies bedeutet, dass der Kernel die Signatur von Modulen durch einen vertrauenswürdigen Schlüssel auf der Plattform erzwingt . Beachten Sie, dass die UEFI-Plattform standardmäßig eine PK enthält, über die Sie keine Kontrolle haben, und Sie daher keine Binärdateien mit einem von Ihrem eigenen Computer erkannten Schlüssel signieren können.

Einige Leute schimpfen und schimpfen dagegen, aber es gibt wirklich keinen besseren Weg (vom Standpunkt der Sicherheit aus) als Sie selbst, der den gewünschten neuen Schlüssel einschreibt.

Wenn Ihr Boot-System Shim verwendet, können Sie eine sogenannte Datenbank für Maschinenschlüssel verwenden und Ihren Schlüssel als MOK registrieren (Sie können dies mit mokutil tun). Andernfalls können Sie Ihren Schlüssel auch als Signaturschlüssel in der UEFI-Datenbank registrieren .

Nachdem Sie Ihren Schlüssel registriert haben, können Sie Ihr von DKMS erstelltes Paket mit Ihrem MOK signieren (es sollte ein Perl-Skript unter vorhanden sein /usr/src/kernels/$(uname -r)/scripts/sign-file), und nachdem es signiert wurde, können Sie es in den Kernel laden .

Zugegeben, jemand sollte mehr visuelle Anweisungen dazu geben und wahrscheinlich sogar einen Assistenten oder einen besseren DKMS-Standard erstellen, um die Berücksichtigung von Schlüsseln zu ermöglichen, aber das ist, was wir ab sofort haben.

In dieser Erklärung erfahren Sie, wie Sie Ihre eigenen Kernel-Module signieren: https://askubuntu.com/a/768310/12049

ssice
quelle
1
Ich habe es deaktiviert und bekomme jetzt eine nervige Meldung "Booten im unsicheren Modus". Gibt es eine Möglichkeit, dies rückgängig zu machen? Ich kann das Problem hier nicht einmal in den Foren erklären. @ssice - Ich verwende UBUNTU 14.04, daher denke ich nicht, dass dies für mich überhaupt relevant ist. [
shaunakde
20

Kurz gesagt, dies ist kein Fehler, sondern eine neue Änderung, die im 16.04 eingeführt wurde.

Denn was Sie installieren, ist ein dkms-Paket. DKMS-Module werden auf Ihrem eigenen Computer kompiliert, sodass Canonical das Modul nicht für Sie signieren kann. Wenn Canonical es nicht signieren kann, kann es nicht digital überprüft werden. Wenn Sie den sicheren Start aktiviert haben, bedeutet dies, dass Ihr Modul nicht verwendet werden kann. Um es zu verwenden, müssen Sie den sicheren Start deaktivieren. Aus diesem Grund werden Sie von der Frage gefragt.

Rod Smith hat eine gute Antwort gegeben, warum es nur in 16.04, nicht aber in früheren Releases passiert. In Ubuntu 16.04 beginnt Ubuntu, einen sicheren Start auf Kernel-Ebene zu erzwingen. Vor 16.04 zwingt Ubuntu Sie nicht wirklich dazu, signierten Kernel und signierte Kernel-Module zu verwenden, selbst wenn Sie den sicheren Start aktiviert haben. Dies ist aber im 16.04 nicht mehr der Fall.

Dies ist der verwandte Fehler: https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1401532

Dies ist der zugehörige Entwurf: https://blueprints.launchpad.net/ubuntu/+spec/foundations-x-installing-unsigned-secureboot

Anthony Wong
quelle
Ich konnte das wl Modul noch mit 16.04 Beta2 und nach Update laden. Aber jetzt mit der Veröffentlichung bekam ich eine Fehlermeldung "modprobe: ERROR: konnte nicht einfügen 'wl': Erforderlicher Schlüssel nicht verfügbar"
solsTiCe
Können Sie versuchen, auszuführen: sudo apt install mokutil; sudo mokutil --disable-validation
Anthony Wong
1

Die akzeptierte Antwort ist sehr vollständig, aber ich möchte diese einfache Information hinzufügen, die von hier stammt:

https://askubuntu.com/a/843678/664391

Grundsätzlich kann ein sicherer Start verhindern, dass Sie einen von Ihnen installierten Treiber laden, was sehr frustrierend sein kann. Ich habe das selbst durchgemacht: Der Treiber wurde korrekt installiert, alles schien in Ordnung zu sein, aber es hat einfach nicht funktioniert. Es hat einige Zeit gedauert, bis ich herausgefunden habe, dass es sich um einen sicheren Start handelt , der das Laden des Betriebssystems verhindert.

Dhiego Magalhães
quelle