miércoles, 28 de septiembre de 2011

UEFI, los nuevos PCs mas seguros.


Éste texto es un comentario sacado de Genbeta, el nick del autor es razhan y dice así:
Quería haber escrito este comentario por la mañana cuando salió la noticia, pero resulta que me lo había dejado sin publicar (uops xD)
Tengo ciertos conocimientos sobre arranque de SO, Windows y Linux por motivos laborales. Ayer me estuve leyendo la especificación de UEFI para ver si podía poner los puntos en claro, voy a intentar aclarar algunas cosas:
- Windows 8 necesita UEFI para arrancar? No, puede arrancar en sistemas BIOS (como hace la DP) sin ningún problema
- Windows 8 necesita Secure Boot? Tampoco, Windows 8 puede arrancar en un sistema UEFI sin Secure Boot. Lo que ha pedido Microsoft a los OEM es que si quieren participar en el programa Windows Logo (poner la pegatina de Windows en el ordenador), necesitan utilizar una placa UEFI con Secure Boot
- Significa esto que Secure Boot no se pueda desactivar? No, secure boot puede ser desactivado. Una placa base donde no pueda desactivarse secure boot sería muy poco practica. Entre otras cosas, implicaría que no se podría instalar Windows 7, y un OEM sabe que muchos equipos que vende acaban en empresas que instalan una versión específica de Windows. También Microsoft obliga a incluir una tecla de Windows y no por ello ha desaparecido la tecla de Ctrl - Cual es el objetivo de Secure Boot? Secure boot tiene dos objetivos principales, seguridad y antipiratería. Una copia de Windows (u otro software) no tiene forma de saber que no ha sido modificado (ya sea malware o el usuario para piratearla). Por definición, si han podido modificar algo de Windows, se puede modificar el código de validación para asegurar que todo esta bien. Sin embargo, en la practica este proceso puede volverse lo bastante complicado. Sin embargo, secure boot tiene otra ventaja, que protege contra un ataque en Ring -1
- Que es un ataque Ring -1? Tradicionalmente en informatica, el mayor ataque que podías hacer era un ataque Ring 0 (Conseguir control total del sistema arrancado). Sin embargo, con las nuevas técnicas de virtualización, puede lograrse ir un punto más alla, que es hacer que el SO víctima funcione en un entorno virtualizado. Este sistema tiene varias ventajas, entre ellas, que no es necesario modificar el OS cliente y es extremadamente difícil de detectar (aunque parece que no imposible). La idea es hacer que el sistema arranque nuestro software malicioso y este a su vez arranque el entorno virtualizado, convirtiéndose en un hipervisor. Un hipervisor puede acceder a la información del OS cliente, pero no viceversa.
- Como consigue Secure Boot esto? Mediante el uso de criptografía de clave pública UEFI puede garantizar al OS que este no se esta ejecutando en un hipervisor, y que sí lo hace, es con conocimiento del usuario Para conseguir esto, el SO tiene un certificado almacenado el certificado publico correspondiente en una sección del Firmware UEFI (Como llega el certificado al almacén lo miraremos más adelante, pero una vez arrancado el sistema, no puede instalarse ahi, por lo que un atacante remoto no puede instalarlo) UEFI utiliza este certificado para comprobar que la firma digital de la imagen de arranque, así como los sucesivos drivers, no han sido modificados. Si se detecta una modificación, la firma falla y el sistema no arranca dicha imagen.
- Como llega el certificado al almacén de certificados del firmware? Hay varias formas, es posible (aunque no necesario) que algunos certificados vengan precargados por el fabricante, aunque hay otros modos. Se puede instalar automáticamente un certificado que viene firmado por un certificado de confianza. También hay un modo de gestión del almacén donde el usuario podría instalar un certificado manualmente. Por ultimo, un software que se instale puede dejar un certificado junto con la imagen que se va a arrancar. En el siguiente arranque, cuando el sistema detecte una imagen firmada con un certificado que no es de confianza, pero tampoco esta marcado como invalido, le da la opción al usuario de convertirlo en certificado de confianza
- Como instalo linux en mi máquina si el CD no va a venir firmado por una entidad de confianza? La especificación de UEFI menciona un modo Setup que el usuario puede marcar. Este modo esta pensado para la instalación/reparación del sistema y permitiría arrancar linux
- Como hago para arrancar linux con secure boot una vez instalado? El procedimiento sería que durante la instalación se generará un nuevo par de claves aleatoriamente para el usuario. La clave privada se utilizaría para firmar el bootloader (como grub). Tras la firma, el usuario debería sacar el certificado de la máquina y solo utilizarlo para firmar sucesivas versiones de grub (dejar el certificado en la máquina permitiría al usuario firmar su propio malware). En el primer reinicio tras la instalación de grub, el sistema nos indicaría que se ha instalado software nuevo. Tras mostrarnos el certificado y con nuestra aprobación, dicho certificado pasaría a ser de confianza para nuestra máquina
- Ha hecho Microsoft esta jugada con el fin de impedir la instalación de Linux? Aunque en la especificación no se hace referencia a linux, revisándola se ve claramente que esta diseñado para que cualquier OS pueda hacer uso de dicho sistema y creo que tenían esto en mente. Las menciones a Win que aparecen por las definiciones de estructuras a utilizar tienen ese nombre al ser heredadas de Authenticode, un sistema de firma de código desarrollado por Microsoft.
- Le interesa a Microsoft bloquear la instalación de linux en ordenadores personales? Definitivamente no. No hace tanto que se ha librado de la supervisión a la que estaba sometida por monopolio. Hacer esta jugada sería pedir a gritos una denuncia y que le obligaran a dar marcha atrás. Linux no ha modificado su cuota de mercado en 10 años, y honestamente, no parece que vaya a pasar repentinamente ahora.
- Y en otro tipo de ordenadores donde Linux si tiene presencia, como servidores? Aquí es que directamente no tiene la posibilidad de hacerlo. Los OEM hacen negocio con linux, muchísimo dinero. Por mucho que Microsoft los presionará para que no permitieran esto, hay muchísimos clientes que si el servidor solo arranca Windows, no lo comprarían y buscarían un servidor con Linux.
- A que viene tanto revuelo? Creo que Matthew Garrett es un tipo bastante razonable y que su objetivo con el post que publico no era tanto anunciar a bombo y platillo que Microsoft iba a impedir la instalación de linux sino que era más bien un aviso a la comunidad diciendo que hay que ponerse las pilas con esto porque dentro de un par de años habrá millones de ordenadores con esta opción y tenemos que prepararnos para que linux funcione correctamente con el. Normalmente se acusa a Microsoft de lanzar FUDs, esta vez, diría que claramente ha sido víctima de uno
Podeis descargar la especificación de UEFI de uefi.org. Son unas 2500 paginas, pero la sección de secure boot es manejable. Si os leéis la especificación es lo más neutro y cuidado que han hecho para securizar el arranque de los sistemas operativos, asegurando al usuario control sobre el almacén de claves, modo setup, autorización de nuevas imagenes...Viendo el documento queda clarísimo que no va a haber ningún problema instalando linux, pero se ve que la gente quiere sangre y polemica
He intentado explicar mi punto de vista sin entrar en excesivos detalles técnicos. Se que es un tocho de cuidado, pero creo que merece la pena verlo.

"Si por algún motivo incumplo algún copyright o norma de Genbeta ruego me lo comuniquen y el comentario será retirado".