Sistema operativo de recuperación y entornos de diagnóstico de un Mac basado en Intel
Sistema operativo de recuperación
El sistema operativo de recuperación es totalmente independiente del macOS principal y todo el contenido se almacena en un archivo de imagen de disco llamado BaseSystem.dmg. También tiene asociado un archivo BaseSystem.chunklist, que se utiliza para verificar la integridad de BaseSystem.dmg. El archivo chunklist es una serie de hashes de fragmentos de 10 MB del archivo BaseSystem.dmg. El firmware de la interfaz de firmware extensible unificada (UEFI) evalúa la firma del archivo chunklist y, a continuación, evalúa de uno en uno el hash de cada fragmento del archivo BaseSystem.dmg. Esto ayuda a garantizar que coincide con el contenido firmado que hay en el archivo chunklist. Si alguno de esos hashes no coincide, se anula el proceso de arranque del sistema operativo de recuperación local y, en su lugar, el firmware de UEFI intenta arrancar desde el sistema operativo de recuperación con conexión a internet.
Si la verificación se completa correctamente, el firmware de UEFI monta la imagen BaseSystem.dmg como un disco de RAM e inicia el archivo boot.efi que contiene. No hace falta que el firmware de UEFI lleve a cabo ninguna comprobación específica de boot.efi, ni que boot.efi compruebe el kernel, puesto que ya se ha comprobado la integridad del contenido completado del sistema operativo (del cual estos elementos son solo un subconjunto).
Diagnóstico Apple
El procedimiento de arranque del entorno de diagnóstico local es prácticamente el mismo que cuando se inicia el sistema operativo de recuperación. Se utilizan archivos AppleDiagnostics.dmg y AppleDiagnostics.chunklist independientes, pero se verifican de la misma forma que los archivos BaseSystem. En lugar de iniciar boot.efi, el firmware de UEFI inicia un archivo dentro de la imagen de disco (archivo .dmg) llamado diags.efi que, a su vez, se encarga de invocar distintos controladores de UEFI con los que puede comunicarse y comprobar si hay errores de hardware.
Sistema operativo de recuperación y entorno de diagnóstico con conexión a internet
Si se ha producido un error al iniciar los entornos de diagnóstico o de recuperación local, el firmware de UEFI intenta descargar las imágenes de internet (un usuario también puede solicitar específicamente que las imágenes se obtengan de internet utilizando unas secuencias especiales de teclas que se pulsan durante el arranque). La validación de la integridad de las imágenes de disco y de los archivos chunklist descargados del servidor del sistema operativo de recuperación se realiza del mismo modo que con las imágenes obtenidas de un dispositivo de almacenamiento.
Aunque la conexión al servidor del sistema operativo de recuperación se realiza mediante HTTP, se sigue comprobando la integridad del contenido completo descargado como se ha descrito anteriormente y, por tanto, está protegido frente a la manipulación por parte de un atacante que controle la red. En caso de que un determinado fragmento no supere la verificación de integridad, se vuelve a solicitar del servidor del sistema operativo de recuperación 11 veces antes de abandonar los intentos y mostrar un error.
Cuando se añadieron los modos de recuperación y diagnóstico con conexión a internet a los ordenadores Mac en 2011, se decidió que sería mejor utilizar el transporte HTTP más sencillo y gestionar la autenticación de contenido mediante el mecanismo de chunklist, en lugar de implementar la funcionalidad HTTPS más compleja en el firmware de UEFI, incrementando así la superficie de ataque del firmware.