Por qué deshabilitar el "Arranque seguro" se aplica la política al instalar módulos de terceros

46

Al instalar 16.04 , se me pidió que apagara el " Arranque seguro " si quería instalar módulos / controladores de terceros .

No cumplí

Y cuando instalé manualmente los únicos controladores de terceros que uso ( bcmwl-kernel-source ), nuevamente se me pidió (durante la instalación del paquete) que apague el "Arranque seguro".

Usar bcmwl-kernel-source estuvo perfectamente bien con Secure Boot en 15.10 . Esto no parece estar relacionado con un error para mí.

Así que esto parece que Ubuntu se niega a firmar más los controladores / módulos de terceros para que funcione (??) con "Arranque seguro". ¿O parece considerar que los módulos de terceros son inseguros y rompen el "Arranque seguro", por lo tanto, informan que lo deshabiliten para que quede claro? Estoy en lo cierto?

solsticio
fuente
66
Bueno, en mi opinión, es porque la gente (falsamente) asume que el arranque seguro romperá los módulos de terceros al dar consejos. La información técnica sobre el arranque seguro está aquí: wiki.ubuntu.com/SecurityTeam/SecureBoot . Personalmente, no estoy de acuerdo con el consejo aparentemente omnipresente de desconectar el arranque seguro, funciona bien en mi hardware con el arranque seguro habilitado. IMO deja el arranque seguro habilitado a menos que tenga un problema con él, no hay razón para deshabilitar ciegamente las funciones de seguridad.
Panther
8
No he analizado esto en profundidad, pero según tengo entendido, 16.04 se está moviendo a una aplicación de arranque seguro más estricta que la utilizada en 15.10 y versiones anteriores. Específicamente, en 15.10 y anteriores, una vez que Shim lanza GRUB, GRUB lanzará cualquier kernel de Linux; Las protecciones de arranque seguro finalizan con GRUB. Tengo entendido que con 16.04, la aplicación de la política de arranque seguro se extiende al núcleo, por lo que el GRUB de Ubuntu ya no lanzará núcleos sin firmar. Si va más allá de eso, los módulos del núcleo sin firmar también se verán afectados, cuando no lo estaban antes. De nuevo, sin embargo, no he estudiado esto en profundidad.
Rod Smith
1
Algunos buenos antecedentes: bugs.launchpad.net/ubuntu/+source/grub2/+bug/1401532
dpb
1
Con las personas jugando con sus sistemas en un intento de instalar módulos de terceros, me pregunto si esta característica no hará más daño que bien.
Daniel
¿Hay alguna forma de volver a habilitarlo después de haberlo apagado?
shaunakde

Respuestas:

38

Esto no es un error, es una característica.

Como dice Anthony Wong, cuando instala un paquete DKMS está compilando el paquete usted mismo, por lo tanto, Canonical no puede firmar el módulo por usted.

Sin embargo, definitivamente puede usar el Arranque seguro, sin embargo, este es exactamente el caso de uso donde el Arranque seguro está tratando de protegerlo de usted mismo porque no puede saber si confía en un módulo o no.

De manera predeterminada , hay una clave de plataforma (PK) en su máquina UEFI, que es la autoridad de certificación en última instancia confiable para cargar el código en su procesador.

GRUB, o shim, u otros mecanismos de arranque pueden ser firmados digitalmente por un KEK en el que la CA raíz (PK) confía, y así su computadora puede, sin ninguna configuración, software de arranque como Ubuntu Live USB / DVD.

En Ubuntu 16.04, el núcleo está construido con CONFIG_MODULE_SIG_FORCE = 1, lo que significa que el núcleo hará que los módulos se firmen con una clave confiable en la plataforma. Tenga en cuenta que la plataforma UEFI por defecto contiene una PK sobre la que no tiene ningún control, y por lo tanto no puede firmar binarios con una clave reconocida por su propia máquina.

Algunas personas critican y despotrican contra eso, pero en realidad no hay mejor manera (desde el punto de vista de la seguridad) que ser usted mismo quien inscribe la nueva clave que desea.

Si su sistema de arranque usa shim, puede usar algo llamado base de datos de clave de propietario de máquina e inscribir su clave como MOK (puede hacerlo con mokutil). Si no lo hace, también puede inscribir su clave en la base de datos UEFI como clave de firma.

Después de inscribir su clave, puede firmar su paquete construido con DKMS con su MOK (debe haber un script perl en /usr/src/kernels/$(uname -r)/scripts/sign-file), y después de que esté firmado, puede cargarlo en el núcleo .

De acuerdo, alguien debería hacer más instrucciones visuales sobre esto, y probablemente incluso hacer un asistente o un mejor estándar DKMS para permitir que las claves sean tomadas en consideración, pero esto es lo que tenemos a partir de ahora.

Puede consultar esta explicación sobre cómo firmar sus propios módulos de kernel: https://askubuntu.com/a/768310/12049

ssice
fuente
1
Lo deshabilité, y ahora recibo un molesto "mensaje de arranque en modo inseguro" ¿Hay alguna forma de deshacer esto? Parece que ni siquiera puedo explicar el problema en los foros aquí. @ssice: estoy usando UBUNTU 14.04, así que no creo que esto sea relevante para mí. [
shaunakde
20

En resumen, esto no es un error, sino un nuevo cambio introducido en 16.04.

Porque lo que está instalando es un paquete dkms. Los módulos DKMS se compilan en su propia máquina, por lo que Canonical no puede firmar el módulo por usted. Si Canonical no puede firmarlo, no hay forma de verificarlo digitalmente. Si tiene activado el inicio seguro, eso significará que su módulo no se puede usar, y para usarlo, tendrá que desactivar el inicio seguro, por eso la pregunta le está haciendo.

Por qué solo sucede en 16.04 pero no en lanzamientos anteriores, Rod Smith ha dado una buena respuesta. En Ubuntu 16.04, Ubuntu comienza a exigir el arranque seguro al nivel del kernel. Antes de 16.04, Ubuntu realmente no le obliga a usar el núcleo firmado y los módulos del núcleo firmado, incluso si tiene el arranque seguro activado. Pero este ya no es el caso en 16.04.

Este es el error relacionado: https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1401532

Este es el plano relacionado: https://blueprints.launchpad.net/ubuntu/+spec/foundations-x-installing-unsigned-secureboot

Anthony Wong
fuente
Todavía podría cargar el módulo wl con 16.04 beta2 y después de la actualización. Pero ahora con el lanzamiento recibí un error "modprobe: ERROR: no se pudo insertar 'wl': la clave requerida no está disponible"
solsTiCe
¿Puedes intentar ejecutar: sudo apt install mokutil; sudo mokutil --disable-validation
Anthony Wong
1

La respuesta aceptada es muy completa, pero me gustaría agregar esta simple información, tomada de aquí:

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

Básicamente, el arranque seguro puede evitar que cargue algunos controladores que instaló, lo que puede ser bastante frustrante. He pasado por esto yo mismo: el controlador se instaló correctamente, todo parecía estar listo, pero simplemente no funcionó. Me tomó un tiempo descubrir que el arranque seguro impedía que el sistema operativo lo cargara.

Dhiego Magalhães
fuente