Apple siliconilla varustetun Macin käynnistysprosessi
Kun Apple siliconilla varustettu Mac käynnistetään, se suorittaa käynnistysprosessin, joka on hyvin samanlainen kuin iPhonessa ja iPadissa.
Siru suorittaa luottamusketjun ensimmäisessä vaiheessa koodin Boot ROMista. macOS:n suojattu käynnistys Apple siliconilla varustetussa Macissa tarkistaa itse käyttöjärjestelmän koodin lisäksi myös valtuutettujen käyttäjien määrittämät suojauskäytännöt ja kernelin laajennukset (joita tuetaan mutta ei suositella).
Kun LLB (lyhennetty sanoista Low Level Bootloader) käynnistetään, se tarkistaa allekirjoitukset ja lataa järjestelmän parina olevan laiteohjelmiston järjestelmäpiirin sisäisille ytimille kuten tallennustilan-, näytön-, järjestelmän hallinnan- ja Thunderbolt-ohjaimille. LLB vastaa myös Secure Enclave -prosessorin allekirjoittaman LocalPolicy-tiedoston lataamisesta. LocalPolicy-tiedosto kuvaa määritykset, jotka käyttäjä on valinnut järjestelmän suojauskäytännöille käynnistyksen ja ajon aikana. LocalPolicylla on sama tietorakenne kuin kaikilla muillakin käynnistyskohteilla, mutta se on allekirjoitettu paikallisesti yksityisellä avaimella, joka on saatavilla vain tietyn tietokoneen Secure Enclavessa sen sijaan, että allekirjoittaminen tehtäisiin keskitetysti Applen palvelimella (kuten ohjelmistopäivityksissä).
Aikaisemman LocalPolicyn uudelleentoiston estämiseksi LLB:n täytyy tarkistaa toiston estävä arvo Secure Enclaveen liitetyltä Secure Storage ‑komponentilta. Se käyttää tähän tarkoitukseen Secure Enclaven Boot ROMia ja varmistaa, että LocalPolicyssa oleva toiston estävä arvo vastaa Secure Storage ‑komponentissa olevaa. Tämä auttaa estämään käyttämästä järjestelmälle uudelleen vanhaa, mahdollisesti alemmalle suojaustasolle määritettyä LocalPolicya sen jälkeen, kun suojausta on päivitetty. Lopputulos on, että Apple siliconilla varustetun Macin suojattu käynnistys auttaa suojautumaan sekä aikaisempien käyttöjärjestelmäversioiden palauttamiselta että suojauskäytäntöjen heikennyksiltä.
LocalPolicy-tiedosto kertoo, onko käyttöjärjestelmän suojausasetus täysi, alennettu vai salliva.
Täysi suojaus: Järjestelmä käyttäytyy kuten iOS ja iPadOS ja sallii käynnistää ainoastaan ohjelmiston, jonka tiedettiin olevan viimeisin saatavilla oleva asennuksen aikana.
Alennettu suojaus: LLB ohjataan luottamaan ”yleisiin” allekirjoituksiin, jotka tulevat käyttöjärjestelmän mukana. Näin järjestelmässä voidaan käyttää vanhempia macOS-versioita. Koska vanhemmissa macOS-versioissa on väistämättä paikkaamattomia haavoittuvuuksia, tätä suojaustilaa kutsutaan alennetuksi suojaukseksi. Kernelin laajennusten käynnistyksen tukeminen edellyttää käytännön asettamista tälle tasolle.
Salliva suojaus: Järjestelmä käyttäytyy kuten alennetussa suojauksessa siltä osin, että se käyttää yleisten allekirjoitusten tarkistusta iBootille ja sen jälkeen, mutta se myös käskee iBootin hyväksymään joitakin Secure Enclaven allekirjoittamia käynnistyskohteita, joiden allekirjoituksessa on käytetty samaa avainta kuin LocalPolicyn allekirjoituksessa. Tälle tasolle asetettu käytäntö tukee käyttäjiä, jotka rakentavat, allekirjoittavat ja käynnistävät omia muokattuja XNU-kerneleitä.
Jos LocalPolicy kertoo LLB:lle, että valittu käyttöjärjestelmä suoritetaan täydellä suojauksella, LLB tarkistaa yksilöllisen allekirjoituksen iBootille. Jos tasona on alennettu suojaus tai salliva suojaus, se tarkistaa yleisen allekirjoituksen. Kaikista allekirjoituksen tarkistamisen virheistä seuraa, että järjestelmä käynnistyy recoveryOS:ään korjausvaihtoehtojen tarjoamista varten.
Kun LLB on siirtänyt hallinnan iBootille, se lataa macOS:n parina olevan laiteohjelmiston muun muassa Secure Neural Enginelle ja aina päällä olevalle prosessorille sekä muut laiteohjelmistot. iBoot myös katsoo LLB:ltä saamansa LocalPolicyn tiedot. Jos LocalPolicy ilmaisee, että järjestelmässä pitäisi olla apukernelkokoelma (AuxKC), iBoot etsii sitä tiedostojärjestelmästä, tarkistaa, että se on Secure Enclaven allekirjoittama samalla avaimella kuin LocalPolicy, ja tarkistaa, että sen tiiviste vastaa LocalPolicyyn tallennettua tiivistettä. Jos apukernelkokoelma läpäisee tarkistuksen, iBoot sijoittaa sen muistiin käynnistyskernelkokoelman kanssa ennen kuin lukitsee järjestelmän lisäprosessorin eheyden suojauksella (SCIP) koko muistialueen, joka kattaa käynnistyskernelkokoelman ja apukernelkokoelman. Jos käytäntö ilmaisee, että järjestelmässä pitäisi olla apukernelkokoelma, mutta sitä ei löydy, järjestelmä jatkaa macOS:n käynnistystä ilman sitä. iBoot vastaa myös allekirjoitetun järjestelmätaltion (SSV) juuritiivisteen tarkistamisesta, jolla tarkistetaan, että kernelin näkyviin tuoman tiedostojärjestelmän eheys on täysin tarkistettu.