¿Qué es el iBoot de Apple?

El iBoot es el código fuente desarrollado por Apple para ejecutar en sus iPhone y iPad el sistema operativo. Concretamente se encarga del arranque seguro del sistema. Si hacemos una analogía con los ordenadores, sería algo similar a la BIOS.

IBOOT ES EL COMPONENTE QUE APPLE HA MANTENIDO PARA ENCRIPTAR SUS DISPOSITIVOS DE 64 BITS. Y AHORA ES SIMPLE CÓDIGO ABIERTO.

Imagen: Xataka

iBoot, el arranque del kernel

iOS tiene varias fases a la hora de arrancar el sistema cuando encendemos un dispositivo. El primer paso lo establece el procesador de aplicación, que ejecuta un código guardado en la ROM de arranque. Una zona de memoria de solo lectura impresa de fábrica y que es inalterable. En esa zona está grabada la clave pública de Apple de firma digital. Esta clave pública es la parte esencial que permite validar que las partes del arranque han sido creadas por Apple, validando cada paso de la secuencia de inicio.

iOS Hardware Security

La firma digital es un proceso que está compuesto por dos claves: una pública y otra privada. Ambas están generadas por una autoridad certificadora, que en este caso es la propia Apple. Apple no ha confiado en ninguna autoridad de terceros como las muchas que hay para firmar dominios en internet o contenido: han creado su propia autoridad. Eso supone que ellos son los únicos que tienen la clave privada que permite firmar contenido. Cuando firmamos algo con la clave privada, la pública nos permite validar que dicha firma es correcta sin comprometer la seguridad. La clave pública permite validar criptográficamente que el contenido ha sido firmado por la autoridad que emitió ambas claves: pública y privada.

En los dispositivos A9 o anteriores (o Apple Watch con procesador S1) tras este paso se valida la firma de otro componente: el LLB o Low-Level Bootloader que se encarga de cargar y validar el siguiente paso: el iBoot. En procesadores A10 Fusion o posteriores (también S2 o posteriores), este componente LLB no existe y es la propia ROM la que carga y valida la firma de iBoot para sea ejecutado. Si esta firma no se valida y la carga no es válida, el dispositivo entra en modo DFU de forma automática, el conocido modo Device Firmware Upgrade que solicita una actualización de la capa de arranque (LLB o iBoot en adelante) ya que se rechaza el que tiene el sistema en ese momento.


Un iBoot modificado por alguien debería estar firmado por Apple para que la ROM del equipo lo validara y permitiera que se ejecute


Este dato es clave: cualquiera podría coger el código fuente de iBoot filtrado y pretender hacer una versión propia y ponerlo en un dispositivo iOS para conseguir que arranque en condiciones que le permitan saltarse capas de seguridad del sistema. Pero esto no va a funcionar porque dicho iBoot debería estar firmado por Apple para que la ROM del equipo lo validara y permitiera que se ejecute. No se valida la firma y entra una y otra vez en modo DFU dejando inutilizado el equipo hasta conectarse por cable a iTunes e instalar una versión válida desde Apple que sí esté firmada por la compañía.

Trozo de código filtrado de iBoot

Una muestra del código filtrado del componente iBoot

Si nuestro equipo tiene un procesador Secure Enclave, este para arrancar tiene otro proceso similar donde una parte de los componentes de arranque está en una ROM y el software del chip no puede arrancar y no puede validarse, hasta que el software sea reconocido como válido según la impresión de fábrica de la ROM. Y si Secure Enclave no arranca, tampoco arrancará el dispositivo.

Cuando iBoot es validado y ejecutado, este es el encargado de validar los componentes del dispositivo como la memoria, el almacenamiento y que todas las partes del dispositivo funcionen correctamente devolviendo un informe positivo de su funcionamiento. Hecho esto, carga el núcleo Darwin que da soporte a iOS: el kernel. El mismo kernel que usa macOS, watchOS o tvOSKernel que ha de tener la firma correcta validada por la clave pública de la ROM. Tras el arranque correcto del kernel, carga el sistema iOS y a partir de ese momento, cada página de memoria que ejecuta código es previamente validada contra la clave pública para verificar que es correcta y permitir su ejecución.

Software Security

Aquí la protección ha llegado a un nivel mayor que la propia de componentes: si cualquier zona de memoria con código quiere ejecutarse, ha de validar previamente la firma correcta de ese código y que está firmado por Apple. Todo el sistema y cualquiera de las apps que provienen del App Store. Código que no esté correctamente firmado por la clave de la autoridad certificadora de Apple, no podrá ejecutarse en iOS y se le negará este privilegio a nivel de núcleo del sistema.

No obstante siempre puede haber agujeros de seguridad que comprometan al sistema, pero cuando estos se parchean hay un método que añade otra capa más de seguridad: la autorización de software del sistema. Cuando nosotros queremos actualizar el softwareno podemos si Apple no valida la huella digital de la actualización de forma online. Para que sea válida, el sistema envía a Apple para su validación (en una conexión segura) la firma del nuevo componente iBoot de la actualización, del kernel, de la propia imagen de iOS, el identificador único del dispositivo y una huella aleatoria anti-repetición de petición que valida la conexión (tipo nonce). Si todo esto no es validado por Apple, se niega la actualización.


Si Apple no valida la huella digital de la actualización de forma online, las actualizaciones de sistema no se realizarán


Este proceso es que el impide que un dispositivo con una versión de iOS pueda volver a versiones anteriores que no estén firmadas por Apple, por lo que ellos controlan qué versiones están o no validadas para ser instaladas e impiden instalar a nadie versiones que tuvieran fallos de seguridad que ya han sido arreglados en versiones más nuevas.

Por último, el Secure Enclave es otro elemento importante. Usa memoria cifrada y proporciona todas las operaciones criptográficas al sistema para el cifrado de datos y su propia protección. De hecho, el cifrado sigue funcionando aun cuando algunos componentes como el propio kernel puedan estar comprometidos. Por lo tanto aún cuando pudiera estar afectado por jailbreak el cifrado de datos sigue funcionando, uno de los motivos por los que el jailbreak es cada vez más complicado en iOS.

Deja una respuesta