Para un inicio confiable (o inicio autentificado o inicio seguro o como quiera llamar) Para ello, necesita una raíz de confianza protegida por integridad. No necesita ser un sector "super-secreto", tiene que ser un sector "super-blindado". ROM encaja a la perfección.
En la práctica, a los fabricantes de dispositivos les gusta poner el menor código posible en la ROM, ya que no quieren dejar de actualizar el código unos meses antes de que se envíe el dispositivo. Por lo tanto, ese código generalmente no hace más que inicializar algunos dispositivos centrales (por ejemplo, poner la MMU en forma), cargar los primeros sectores desde un medio de almacenamiento, verificar su firma criptográfica contra una clave pública almacenada en la ROM y transferir la ejecución a ese código . Si la firma no coincide, el código ROM puede permitir al usuario cargar una imagen de arranque alternativa (generalmente a través de USB).
El primer código de arranque que no es ROM es a menudo considerablemente más complejo que el código ROM: generalmente necesita saber cómo administrar la memoria, acceder a varios dispositivos de almacenamiento, tal vez leer sistemas de archivos, tener al menos una interfaz de usuario rudimentaria y así sucesivamente. Entonces, en la práctica, todo ese código de buggy, y eso (o más tarde en la cadena de arranque) es cómo los iPhones se liberan. Algunos fabricantes, como Apple, están realmente preocupados por controlar la imagen de arranque; eso no significa que tengan éxito contra una comunidad determinada.
Además, incluso si la imagen de arranque firmada se ha mantenido, el sistema operativo en sí es demasiado complejo para soportar ataques por mucho tiempo. Firmar todo el sistema operativo no es práctico, ya que los usuarios de todos menos los teléfonos móviles y PDA más básicos esperan poder instalar sus propias aplicaciones (y los sistemas operativos tienden a tener orificios de raíz). Por lo general, el sistema operativo puede hacer casi lo que quiere, excepto que si sobrescribe ingenuamente la imagen de arranque, el dispositivo no arranca. Si desea ejecutar un sistema operativo diferente, es posible que pueda usar el sistema operativo original como un punto de salto desde el cual arranca su sistema operativo real.
La velocidad es otro factor: verificar la autenticidad de un cargador de arranque de 100kB es solo un problema en un teléfono inteligente moderno, pero verificar la autenticidad o la integridad de un sistema operativo de varios GB es demasiado lento de una vez. La verificación incremental también ralentiza las lecturas del disco y requiere soporte de sistema de archivos que no está disponible en este momento.