Una solución es requerir que todo el firmware esté firmado y que el dispositivo verifique la firma antes de escribir esa imagen de firmware en su memoria; mi computadora portátil actual tiene una opción para habilitar esto en su BIOS (la opción es permanente; si la habilito ahora ya no puedo deshabilitarla, es por eso que no la habilité).
Sin embargo, hay muchos inconvenientes:
-
induce una falsa sensación de seguridad, ya que no sabemos cómo el fabricante protege la clave privada utilizada para firmar y no espero que admitan su falla y envíen un mensaje agradable "Disculpe, la clave del firmware se filtró "correo electrónico a cada cliente; también, incluso si la llave no se filtró, la NSA y otras agencias malvadas pueden haberla robado y nadie lo sabría.
-
hacer firmware personalizado es imposible, aunque estoy de acuerdo con el hecho de que son compañías con fines de lucro y su firmware es de código cerrado, definitivamente no estoy bien que me impidan instalar lo que quiera en Mis propios dispositivos por los que pagué, por la llamada "seguridad", aunque la NSA ya les robó la clave (recuerdo haber instalado una BIOS personalizada en mi viejo Thinkpad porque la original tenía una tarjeta blanca de ID de tarjeta blanca que me impedía de cambiar sus 802.11g obsoletos por un modelo 11n, algo imposible con las comprobaciones de firmas de firmware implementadas).
Otra solución mejor es requerir una intervención física (presionar un botón de hardware en el propio dispositivo) para permitir la instalación del firmware, que no tiene los inconvenientes anteriores; El usuario debe realizar la comprobación de la autenticidad del firmware y él es libre de instalar lo que quiera. Si el usuario desea instalar el firmware, presiona el botón y el dispositivo permite que se instale un firmware antes de que se vuelva a bloquear (o se agote el tiempo después de un minuto si no se ha instalado nada).
El único inconveniente de esta opción es que cada dispositivo tendría su propio botón de hardware, en una computadora de escritorio típica está el BIOS / EFI (que a menudo actualizará todo lo demás integrado en la placa: NIC, controlador RAID "falso", etc. ), posiblemente la ROM opcional de la tarjeta de video de terceros (también llamada BIOS de video), el controlador RAID o NIC de terceros, unidades de almacenamiento, etc.
Si bien todo lo que hay en la placa podría estar conectado a un solo botón, todo el hardware de terceros tendría su propio botón, a veces difícil de presionar debido a que el hardware está dentro de la caja de la computadora. Esto no es demasiado problemático ya que los usuarios incapaces de abrir una caja de la computadora por lo general no actualizan el firmware de todos modos debido al "riesgo" (es mínimo, pero la creación de discos DOS de arranque da miedo) y la complejidad.
Una solución teórica sería requerir que todos los puertos utilizados comúnmente (SATA, PCIe, etc.) incluyan una línea dedicada de "flash de firmware" que esté conectada por cable al botón principal de flash del firmware de la placa.