Parece que voy entendiendo poco a poco el tema del SecureBoot..
Los firmware UEFI llevan dentro suya certificados, en la
db. Normalmente, van 3 certificados:
-Microsoft
-Microsoft Software de Terceros
-Fabricante placa base
Shim y PreLoader están firmados con la clave de Microsoft Software de Terceros. Ahora bien, para que se pueda confiar en ellos, se usa "otro" sistema de claves por encima, llamado MOK, que en esencia, es lo mismo que las firmas del frmware UEFI.
La gracia está en que con MOK, se puede añadir no solo certificados, si no también hashes de binarios. Según pone en Internet, uses uno u otro, tiene que haber iteración del usuario (al menos la primera vez), sin embargo, yo no recuerdo ningún tipo de iteración cuando instalé Ubuntu.
Tanto Shim como PreLoader lo único que hacen es lanzar otro programa, nada mas.
Explico como funcionan los dos métodos:
SHIM:
Shim usa certificados. Para hacerlo funcionar, es necesario generar una certificado (sistema asimétrico, conjunto de claves públicas y privadas). Una vez generadas, usamos la llave privada (esta es secreta, solo para nosotros) para firmar los binarios (si, se firman después de ser compilados). Es necesario firmar tanto el GRUB, como el kernel (y creo que los modulos tmbn).
Tras tener nuestros binarios firmados, insertamos la llave pública en el MOK. Tras reiniciar el PC, no preguntará una interfaz si queremos insertar la llave pública, le damos que si, y podremos arrancar Wifislax sin problemas.
Cuando se arranca, lo que sucede es:
La clave de Microsoft 3th Party Software confía en Shim. Shim confía en la clave pública que tenemos en el MOK, por lo que ejecuta GRUB. GRUB ejecuta un kernel que también está firmado por una clave que tenemos en el MOK, por lo que arranca el kernel.
Ahora bien, yo no recuerdo que durante la instalación de Ubuntu 16.04 me preguntasen por instalar la clave de Canonical. Puede que no tuviese el SecureBoot activado, pero aun así, creo que te lo preguntan igual (Es posible que la clave de Canonical viniese en mi MOK por defecto¿?)
PreLoader:
Exactamente igual que el anterior, pero en vez de insertar en la MOK un certificado, se inserta el Hash del binario que vamos a lanzar. Es decir, confiamos en el binario, y no tenemos que firmar ni confiar en nada mas (a efectos prácticos, confías en el GRUB, y este lanzará cualquier cosa que se deje).
Para ver las claves que tenemos en el MOK, lo hacemos con:
vk496@vk496-C16B:~$ mokutil --list-enrolled
[key 1]
[SHA-256]
bf6d7fa8531667e220b923e93ef428b25468effa7cb908c903549d165edb277a
[key 2]
SHA1 Fingerprint: 76:a0:92:06:58:00:bf:37:69:01:c3:72:cd:55:a9:0e:1f:de:d2:e0
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 13348991040521802343 (0xb94124a0182c9267)
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=GB, ST=Isle of Man, L=Douglas, O=Canonical Ltd., CN=Canonical Ltd. Master Certificate Authority
Validity
Not Before: Apr 12 11:12:51 2012 GMT
Not After : Apr 11 11:12:51 2042 GMT
Subject: C=GB, ST=Isle of Man, L=Douglas, O=Canonical Ltd., CN=Canonical Ltd. Master Certificate Authority
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:bf:5b:3a:16:74:ee:21:5d:ae:61:ed:9d:56:ac:
bd:de:de:72:f3:dd:7e:2d:4c:62:0f:ac:c0:6d:48:
08:11:cf:8d:8b:fb:61:1f:27:cc:11:6e:d9:55:3d:
39:54:eb:40:3b:b1:bb:e2:85:34:79:ca:f7:7b:bf:
ba:7a:c8:10:2d:19:7d:ad:59:cf:a6:d4:e9:4e:0f:
da:ae:52:ea:4c:9e:90:ce:c6:99:0d:4e:67:65:78:
5d:f9:d1:d5:38:4a:4a:7a:8f:93:9c:7f:1a:a3:85:
db:ce:fa:8b:f7:c2:a2:21:2d:9b:54:41:35:10:57:
13:8d:6c:bc:29:06:50:4a:7e:ea:99:a9:68:a7:3b:
c7:07:1b:32:9e:a0:19:87:0e:79:bb:68:99:2d:7e:
93:52:e5:f6:eb:c9:9b:f9:2b:ed:b8:68:49:bc:d9:
95:50:40:5b:c5:b2:71:aa:eb:5c:57:de:71:f9:40:
0a:dd:5b:ac:1e:84:2d:50:1a:52:d6:e1:f3:6b:6e:
90:64:4f:5b:b4:eb:20:e4:61:10:da:5a:f0:ea:e4:
42:d7:01:c4:fe:21:1f:d9:b9:c0:54:95:42:81:52:
72:1f:49:64:7a:c8:6c:24:f1:08:70:0b:4d:a5:a0:
32:d1:a0:1c:57:a8:4d:e3:af:a5:8e:05:05:3e:10:
43:a1
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Key Identifier:
AD:91:99:0B:C2:2A:B1:F5:17:04:8C:23:B6:65:5A:26:8E:34:5A:63
X509v3 Authority Key Identifier:
keyid:AD:91:99:0B:C2:2A:B1:F5:17:04:8C:23:B6:65:5A:26:8E:34:5A:63
X509v3 Basic Constraints: critical
CA:TRUE
X509v3 Key Usage:
Digital Signature, Certificate Sign, CRL Sign
X509v3 CRL Distribution Points:
Full Name:
URI:http://www.canonical.com/secure-boot-master-ca.crl
Signature Algorithm: sha256WithRSAEncryption
3f:7d:f6:76:a5:b3:83:b4:2b:7a:d0:6d:52:1a:03:83:c4:12:
a7:50:9c:47:92:cc:c0:94:77:82:d2:ae:57:b3:99:04:f5:32:
3a:c6:55:1d:07:db:12:a9:56:fa:d8:d4:76:20:eb:e4:c3:51:
db:9a:5c:9c:92:3f:18:73:da:94:6a:a1:99:38:8c:a4:88:6d:
c1:fc:39:71:d0:74:76:16:03:3e:56:23:35:d5:55:47:5b:1a:
1d:41:c2:d3:12:4c:dc:ff:ae:0a:92:9c:62:0a:17:01:9c:73:
e0:5e:b1:fd:bc:d6:b5:19:11:7a:7e:cd:3e:03:7e:66:db:5b:
a8:c9:39:48:51:ff:53:e1:9c:31:53:91:1b:3b:10:75:03:17:
ba:e6:81:02:80:94:70:4c:46:b7:94:b0:3d:15:cd:1f:8e:02:
e0:68:02:8f:fb:f9:47:1d:7d:a2:01:c6:07:51:c4:9a:cc:ed:
dd:cf:a3:5d:ed:92:bb:be:d1:fd:e6:ec:1f:33:51:73:04:be:
3c:72:b0:7d:08:f8:01:ff:98:7d:cb:9c:e0:69:39:77:25:47:
71:88:b1:8d:27:a5:2e:a8:f7:3f:5f:80:69:97:3e:a9:f4:99:
14:db:ce:03:0e:0b:66:c4:1c:6d:bd:b8:27:77:c1:42:94:bd:
fc:6a:0a:bc
Tengo dos keys: Key1 es el Hash de un binario (el grub de Wifislax) y la Key2 es el certificado de Canonical (Ubuntu).
me inquieta mucho la Key1, puesto que no entiendo como se genera ese SHA256 (
http://askubuntu.com/questions/823508/how-hashtool-calculate-sha256-hash-of-a-file)
La ventaja que tiene el PreLoader es que es mas simple: añades el hash y listo. El problema es que el usuario tendría que añadir tanto el GRUB del HDD como el cargador de la Live (son binarios disitntos). Además, si nos diese por actualizar el GRUB, se tendría que hacer el proceso nuevamente.
Por lo contrario, con Shim, la desventaja que tiene es el engorro de andar con claves criptográficas. Sin embargo, con instalar una vez la clave, sería suficiente. Tanto el Live como el HDD o cualquier cosa, estaría firmado siempre por la misma clave.
Personalmente, veo mas limpio hacerlo con shim.
Aquí termina mi informe

Salu2