recoveryOS e ambientes de diagnóstico para um computador Mac baseado em Intel
recoveryOS
O recoveryOS é totalmente separado do macOS principal e todo o seu conteúdo é armazenado em um arquivo de imagem de disco chamado BaseSystem.dmg. Também há um BaseSystem.chunklist associado, que é usado para verificar a integridade do BaseSystem.dmg. O chunklist é uma série de hashes de pedaços de 10 MB do BaseSystem.dmg. O firmware da Interface de Firmware Extensível Unificada (UEFi) avalia a assinatura do arquivo chunklist e depois avalia o hash de um pedaço do BaseSystem.dmg por vez. Isso ajuda a garantir que ele corresponda ao conteúdo assinado presente no chunklist. Se algum desses hashes não corresponder, a inicialização a partir do recoveryOS é abortada e o firmware da UEFI tenta inicializar a partir do recoveryOS via internet.
Se a verificação for concluída com sucesso, o firmware da UEFI monta o BaseSystem.dmg como um disco RAM e abre o arquivo boot.efi contido. Não há necessidade do firmware da UEFI realizar uma verificação específica do boot.efi, nem do boot.efi realizar uma verificação do kernel, pois o conteúdo completo do sistema operacional (do qual esses elementos são apenas um subconjunto) já teve sua integridade verificada.
Diagnóstico Apple
O procedimento para inicializar o ambiente de diagnóstico local é basicamente o mesmo do que o para iniciar o recoveryOS. Arquivos AppleDiagnostics.dmg e AppleDiagnostics.chunklist separados são usados, mas eles são verificados da mesma maneira que os arquivos BaseSystem. Em vez de iniciar o boot.efi, o firmware da UEFI abre um arquivo dentro da imagem de disco (arquivo .dmg) chamado diags.efi, que por sua vez é responsável por chamar vários outros drivers da UEFI que podem interagir e verificar erros no hardware.
recoveryOS via internet e ambiente de diagnóstico
Se tiver ocorrido um erro ao iniciar a recuperação local ou os ambientes de diagnóstico, o firmware da UEFI tenta baixar as imagens da internet. ( Um usuário também pode solicitar especificamente que as imagens sejam obtidas da internet ao manter sequências especiais de teclas pressionadas durante a inicialização.) A validação da integridade das imagens de disco e chunklists baixados do Servidor de Recuperação do SO é realizada da mesma forma que com as imagens obtidas no dispositivo de armazenamento.
Embora a conexão ao Servidor de Recuperação do OS seja feita via HTTP, o conteúdo completo baixado ainda tem sua integridade verificada da forma descrita anteriormente e, portanto, encontra-se protegido contra a manipulação por um invasor que tenha o controle da rede. Caso a verificação de integridade de um pedaço individual seja malsucedida, ele é solicitado novamente 11 vezes ao Servidor de Recuperação do OS antes que as tentativas sejam interrompidas e um erro seja exibido.
Quando os modos de recuperação e diagnóstico via internet foram adicionados a computadores Mac em 2011, decidiu-se que seria melhor usar o transporte HTTP mais simples e gerenciar a autenticação de conteúdo com o mecanismo de chunklist, em vez de implementar a funcionalidade HTTPS mais complicada no firmware da UEFI e, assim, aumentar a superfície de ataque do firmware.