recoveryOS y entornos de diagnóstico en computadoras Mac basadas en Intel
recoveryOS
El sistema recoveryOS está completamente separado de sistema macOS principal, y su contenido completo se almacena en un archivo de imagen de disco llamado BaseSystem.dmg. También hay un BaseSystem.chunklist asociado, que se usa para verificar la integridad de BaseSystem.dmg. El chunklist es una serie de hashes de fragmentos de 10 MB de BaseSystem.dmg. El firmware de la interfaz del firmware extensible unificado (UEFi) evalúa primero la firma del archivo chunklist y luego el hash de cada fragmento de BaseSystem.dmg a la vez, lo que ayuda a garantizar que coincida con el contenido firmado presente en el chunklist. Si cualquiera de estos hashes no coincide, se cancela el arranque desde el recoveryOS local, y el firmware UEFI intenta arrancar desde el recoveryOS por Internet en su lugar.
Si el proceso de verificación se completa de forma exitosa, el firmware UEFI monta el BaseSystem.dmg. como disco RAM e inicia el boot.efi que contiene. No hay necesidad de que el firmware UEFI realice una revisión específica del boot.efi, ni de que boot.efi realice una revisión del kernel, pues ya se ha revisado la integridad del contenido completado del sistema operativo (del cual estos elementos son sólo un subconjunto).
Diagnóstico de Apple
El procedimiento para arrancar el entorno de diagnóstico local es principalmente el mismo que se realiza al arrancar recoveryOS. Se utilizan archivos AppleDiagnostics.dmg y AppleDiagnostics.chunklist separados, pero se verifican de la misma forma que los archivos BaseSystem. En lugar de arrancar boot.efi, el firmware UEFI inicia un archivo dentro de la imagen de disco (archivo .dmg) llamado diags.efi, que a su vez es responsable de invocar otros controladores UEFI que pueden interactuar con el hardware y verificar si hay errores.
recoveryOS por Internet y entorno de diagnóstico
Si ocurre un error durante el arranque de la recuperación local o de los entornos de diagnóstico, el firmware UEFI intenta descargar las imágenes de Internet (un usuario también puede solicitar específicamente que las imágenes se obtengan de Internet usando una secuencia especial de teclas que se presiona durante el arranque). La validación de la integridad de las imágenes del disco y chunklists descargadas del servidor de recuperación de OS se realiza de la misma forma que las imágenes obtenidas de un dispositivo de almacenamiento.
Mientras que la conexión al servidor de recuperación de OS se realice mediante HTTP, la integridad del contenido descargado completo se verifica como se describió anteriormente y, por lo tanto, está protegido contra manipulación por parte de algún atacante con control de la red. En caso de que falle la verificación de la integridad de algún fragmento individual, se vuelve a solicitar 11 veces al servidor de recuperación de OS, antes de darse por vencido y mostrar un error.
En 2011, cuando se agregaron los modos de recuperación y diagnóstico por Internet a las computadoras Mac, se decidió que sería mejor usar el transporte HTTP simplificado, y manejar la autenticación de contenido con el mecanismo chunklist, en lugar de implementar una funcionalidad HTTPS más complicada en el firmware UEFI e incrementar así la superficie de ataque del firmware.