Pourquoi la désactivation de «Secure Boot» est une politique appliquée lors de l'installation de modules tiers

46

Lors de l'installation de 16.04 , on m'a demandé de désactiver " Secure Boot " si je voulais installer des modules / pilotes tiers .

Je n'ai pas obéi.

Et quand j'ai installé manuellement les seuls pilotes tiers que j'utilise ( bcmwl-kernel-source ), on m'a de nouveau demandé (lors de l'installation du paquet) de désactiver le "Secure Boot".

L'utilisation de bcmwl-kernel-source était parfaitement adaptée à Secure Boot dans 15.10 . Cela ne semble pas être lié à un bug pour moi.

Il semble donc que Ubuntu refuse de signer les pilotes / modules tiers pour le faire fonctionner (??) avec "Secure Boot". Ou semble-t-il considérer les modules tiers comme non sécurisés et rompre le "Secure Boot", ce qui oblige à le désactiver pour le rendre clair? Ai-je raison ?

solstice
la source
6
Eh bien, IMO, c'est parce que les gens supposent (faussement) que le démarrage sécurisé va casser les modules tiers en donnant des conseils. Les informations techniques sur le démarrage sécurisé se trouvent ici - wiki.ubuntu.com/SecurityTeam/SecureBoot . Personnellement, je ne suis pas d’accord avec le conseil apparemment omniprésent d’amorcer le démarrage sécurisé, fonctionne parfaitement sur mon matériel lorsque le démarrage sécurisé est activé. IMO laisse le démarrage sécurisé activé sauf si vous rencontrez un problème, aucune raison de désactiver aveuglément les fonctions de sécurité.
Panthère
8
Je n'ai pas approfondi cette question, mais d'après ce que j'ai compris, 16.04 est en train de passer à une application plus stricte de Secure Boot que celle de 15.10 et des versions antérieures utilisées. Spécifiquement, à partir de 15.10, lorsque Shim lancera GRUB, GRUB lancera tout noyau Linux; les protections Secure Boot se terminent par GRUB. Si j'ai bien compris, avec 16.04, l'application de la stratégie de démarrage sécurisé s'étend au noyau, le GRUB d'Ubuntu ne lancera plus de noyaux non signés. Si cela va au-delà, les modules non signés du noyau seront également affectés, alors qu’ils ne l’étaient pas auparavant. Encore une fois, je n’ai pas étudié cela en profondeur.
Rod Smith
1
Les gens jouant avec leurs systèmes pour essayer d'installer des modules tiers, je me demande si cette fonctionnalité ne fera pas plus de mal que de bien.
Daniel
Est-il possible de le réactiver après l'avoir éteint?
Shaunakde

Réponses:

38

Ce n'est pas un bug, c'est une fonctionnalité.

Comme le dit Anthony Wong, lorsque vous installez un package DKMS, vous le compilez vous-même. Canonical ne peut donc pas signer le module pour vous.

Cependant, vous pouvez certainement utiliser Secure Boot, mais c’est exactement le cas où Secure Boot tente de vous protéger contre vous-même car il ne peut pas savoir si vous faites confiance à un module ou non.

Par défaut , votre ordinateur UEFI comporte une clé de plate-forme (PK), qui est l'autorité de certification ultime pour le chargement de code dans votre processeur.

GRUB, ou shim, ou d’autres mécanismes d’amorçage peuvent être signés numériquement par un KEK approuvé par l’autorité de certification racine (PK). Ainsi, votre ordinateur peut, sans aucune configuration, initialiser un logiciel comme Ubuntu Live USB / DVD.

Sur Ubuntu 16.04, le noyau est construit avec CONFIG_MODULE_SIG_FORCE = 1, ce qui signifie que le noyau imposera aux modules d'être signés par une clé de confiance de la plate-forme. Sachez que la plate-forme UEFI contient par défaut une PC sur laquelle vous n’avez aucun contrôle. Par conséquent, vous ne pouvez pas signer de fichiers binaires avec une clé reconnue par votre propre ordinateur.

Certaines personnes protestent contre cela, mais il n'y a vraiment pas de meilleur moyen (du point de vue de la sécurité) que d'être vous-même qui enregistre la nouvelle clé que vous voulez.

Si votre système de démarrage utilise shim, vous pouvez utiliser quelque chose appelé base de données de clés du propriétaire de la machine et inscrire votre clé en tant que MOK (vous pouvez le faire avec mokutil). Sinon, vous pouvez également inscrire votre clé dans la base de données UEFI en tant que clé de signature.

Une fois que vous avez inscrit votre clé, vous pouvez signer votre paquetage construit avec DKMS avec votre MOK (il devrait y avoir un script perl à /usr/src/kernels/$(uname -r)/scripts/sign-file), et après l'avoir signé, vous pouvez le charger dans le noyau .

Certes, quelqu'un devrait donner plus d'instructions visuelles à ce sujet, et probablement même créer un assistant ou un meilleur standard DKMS pour permettre la prise en compte des clés, mais c'est ce que nous avons maintenant.

Vous pouvez vous référer à cette explication pour signer vos propres modules de noyau: https://askubuntu.com/a/768310/12049

ssice
la source
1
Je l’ai désactivé et j’obtiens maintenant un «message de démarrage en mode non sécurisé» gênant. Est-il possible d'annuler cela? Je n'arrive même pas à expliquer le problème sur les forums ici. @ssice - J'utilise UBUNTU 14.04 et je ne pense donc pas que cela soit pertinent pour moi. [
shaunakde
20

En bref, il ne s’agit pas d’un bogue, mais d’une nouvelle modification introduite dans 16.04.

Parce que ce que vous installez est un paquet dkms. Les modules DKMS sont compilés sur votre propre machine et Canonical ne peut donc pas signer le module pour vous. Si Canonical ne peut pas le signer, il n’ya aucun moyen de le vérifier numériquement. Si le démarrage sécurisé est activé, cela signifie que votre module ne peut pas être utilisé. Pour l'utiliser, vous devez désactiver le démarrage sécurisé. C'est pourquoi la question vous pose la question.

Pour que cela ne se produise que dans 16.04 mais pas dans les versions précédentes, Rod Smith a donné une bonne réponse. Dans Ubuntu 16.04, Ubuntu commence à appliquer le démarrage sécurisé au niveau du noyau. Avant la version 16.04, Ubuntu ne vous oblige pas vraiment à utiliser les modules de noyau et de noyau signés, même si le démarrage sécurisé est activé. Mais ce n'est plus le cas en 16.04.

C'est le bogue associé: https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1401532

Voici le schéma directeur associé: https://blueprints.launchpad.net/ubuntu/+spec/foundations-x-installing-unsigned-secureboot

Anthony Wong
la source
Je pourrais toujours charger le module wl avec 16.04 beta2 et après la mise à jour. Mais maintenant, avec la version, j'ai eu une erreur "modprobe: ERREUR: impossible d'insérer 'wl': clé requise non disponible"
solsTiCe
Pouvez-vous essayer de lancer: sudo apt install mokutil; sudo mokutil --disable-validation
Anthony Wong le
1

La réponse acceptée est très complète, mais je voudrais ajouter cette simple information, extraite d’ici:

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

En principe, un démarrage sécurisé peut vous empêcher de charger certains pilotes que vous avez installés, ce qui peut être assez frustrant. Je suis passé par moi-même: le pilote s’est installé correctement, tout semblait aller pour le mieux, mais cela n’a pas fonctionné. Il m'a fallu un peu de temps pour constater qu'il s'agissait d' un démarrage sécurisé empêchant le système d'exploitation de le charger.

Dhiego Magalhães
la source