Les paso a traducir este artículo que escribió James Bottomley, consejero técnico de la Linux Foundation, quien se puso a armar un pre-bootloader para que pueda arrancar Linux. Como expliqué en mi post anterior, tenemos el código para el pre-bootloader de la Linux Foundation en su lugar. Sin embargo, hubo una demora mientras tuvimos acceso al sistema de firmado de Microsoft. Lo primero que hay que hacer es pagar los $99 a Verisign (ahora Symantec) y tener una clave verificada por Verisign. Lo hicimos para la Linux Foundation, y todo lo que quieren hacer ellos es llamar a la sede para verificar. La clave vuelve en una URL que se instala en tu navegador, pero las herramientas Linux SSL estándar pueden ser usadas para extraerla y crear un certificado PEM y una clave usuales. No tiene nada que ver con el firmado UEFI, pero se usa para validar al sistema sysdev de Microsoft que sos quien decís que sos. Antes de que puedas crear una cuenta sysdev account, tenés que probarlo firmando un ejecutable que te dan y subirlo. Ellos hacen requerimientos estrictos de que lo firmes en una plataforma Windows específica, pero sbsign al menos funcionó y bingo nuestra cuenta fue creada. Una vez que se crea la cuenta, todavía no puedes subir binarios UEFI para firmar sin antes firmar un contrato en papel. Los acuerdos son muy onerosos, incluyendo un montón de licencias excluidas (incluyendo todas las GPL para drivers, pero no para bootloaders). La parte más onerosa es que los acuerdos parecen llegar más allá de los objetos UEFI que firmes. Los abogados de la Linux Foundation concluyeron que es mayormente inofensiva para la LF porque no vendemos productos, pero puede ser repugnante para otras compañías. De acuerdo a Matthew Garrett, Microsoft está dispuesto a negociar acuerdos especiales con distribuciones para mitigar algunos de esos problemas. Una vez que los acuerdos se firmen, comienza la verdadera diversión técnica. No podés sólo subir un binario UEFI y tenerlo firmado. Primero tenés que envolverlo en un archivo .cab. Afortunadamente, hay un proyecto open source que puede crear archivos cabinet llamado lcab. Luego hay que firmar el archivo .cab con la clave Verisign. De nuevo, hay otro proyecto open source que puede hacer eso: osslsigncode. Para cualquiera que necesite esas herramientas, están disponibles en mi repositorio Build Service UEFI de openSuse. El problema final es que la subida del archivo requiere silverlight. Desafortunadamente, moonlight no parece funcionar e incluso con la preview de la versión 4, el upload box se pone en blanco, así que es hora de usar windows 7 bajo una kvm (máquina virtual basada en kernel). Cuando llegues a esa parte, tenés también que certificar que el binario “para ser firmado, no debe estar licenciado bajo la GPLv3 o licencias open source similares”. Asumo que es por miedo a la divulgación de la clave pero no es claro en lo absoluto (lo mismo con que son las “licencias open source similares”). Una vez que termina la subida, el archivo cabinet para por siete etapas. Desafortunadamente, la primera subida de prueba se quedó trancada en la etapa 6 (la del firmado de los archivos). Después de 6 días mandé un mail de soporte a Microsoft preguntando que pasaba. La respuesta: “El código de error que tira el proceso de firmado es que su archivo no es una aplicación Win32 válida. ¿Es una aplicación Win32 válida?”. Respuesta: obvio que no, es un binario UEFI de 64 bits válido. No hubo más respuestas… Lo intenté de nuevo. Esta vez recibí un mail de descarga por el archivo firmado y el tablero dice que el firmado falló. Lo bajé y verifiqué. El binario funciona en la plataforma secureboot y está firmado con la clave subject=/C=US/ST=Washington/L=Redmond/O=Microsoft Corporation/OU=MOPR/CN=Microsoft Windows UEFI Driver Publisher issuer=/C=US/ST=Washington/L=Redmond/O=Microsoft Corporation/CN=Microsoft Corporation UEFI CA 2011 Le pregunté al soporte por qué el proceso indicaba un fallo pero tuve una descargá válida y, después de una ráfaga de emails, me responden “no uses ese archivo que fue firmado incorrectamente. Volveré contigo.” Sigo sin estar seguro de cual es el problema, pero si se fijan en el Subject de la clave de firmado, no hay nada en la clave para indicar a la Linux Foundation, por lo tanto sospecho que el problema es que el binario está firmado con una clave de Microsoft genérica en vez de una clave específica (y revocable) ligada a la Linux Foundation. Sin embargo, este es el status: Seguiremos esperando a que Microsoft le de a la Linux Foundation un pre-bootloader firmado y validado. Cuando eso ocurra, será subido al sitio de la Linux Foundation para que todos lo usen.
Las Aventuras en el Firmado UEFI de Microsoft
Datos archivados del Taringa! original
18puntos
0visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
3visitas
0comentarios
Dar puntos: