
LocalPolicyn allekirjoitusavaimen luominen ja hallinta
Luominen
Kun macOS asennetaan ensi kertaa tehtaalla tai kun suoritetaan yhdistetty tyhjennys ja asennus, Mac suorittaa koodin tilapäiseltä palautus-RAM-levyltä oletustilan alustamista varten. Tämän prosessin aikana palautusympäristö luo uuden julkisen ja yksityisen avaimen parin, joka pidetään Secure Enclavessa. Yksityistä avainta kutsutaan omistajaidentiteetin avaimeksi (Owner Identity Key, OIK). Jos OIK-avain on olemassa ennestään, vanha avain tuhotaan tässä prosessissa. Palautusympäristö valmistelee myös avaimen, jota käytetään aktivointilukitukseen, eli käyttäjäidentiteetin avaimen (User Identity Key, UIK). Applen sirulla varustetulle Macille ainutlaatuinen osa prosessia on, että kun UIK-avaimelle pyydetään varmennetta aktivointilukitusta varten, mukaan sisältyy joukko pyydettyjä rajoituksia, joita käytetään LocalPolicyn validoinnin aikana. Jos laite ei saa UIK-avaimelle varmennetta aktivointilukitusta varten (esimerkiksi koska laite on liitetty Etsi Macini ‑tiliin ja ilmoitettu kadonneeksi), se ei voi edetä ja luoda LocalPolicya. Jos laite saa käyttäjäidentiteetin varmenteen (ucrt), tämä ucrt sisältää palvelimen vaatimat käytännön rajoitukset ja käyttäjän pyytämät käytännön rajoitukset X.509 v3 ‑laajennuksessa.
Kun aktivointilukitus/ucrt
on saatu onnistuneesti, se tallennetaan tietokantaan palvelimen puolella ja palautetaan myös laitteeseen. Kun laitteella on ucrt, varmennepyyntö OIK-avainta vastaavalle julkiselle avaimelle lähetetään perustodentaja (Basic Attestation Authority, BAA) ‑palvelimelle. BAA tarkistaa omistajaidentiteetin avaimen varmennepyynnön käyttäen julkista avainta ucrt-varmenteelta, joka on tallennettu BAA:n saatavilla olevaan tietokantaan. Jos BAA:n tekemä varmentamisen tarkistus onnistuu, se antaa varmenteen julkiselle avaimelle palauttaen omistajaidentiteetin varmenteen (Owner Identity Certificate, OIC), joka on BAA:n allekirjoittama ja sisältää ucrt:hen tallennetut rajoitukset. OIC-varmenne lähetetään takaisin Secure Enclavelle. Sen jälkeen aina kun Secure Enclave allekirjoittaa uuden LocalPolicyn, se liittää Image4-tiedostoon OIC-varmenteen. LLB:ssä on sisäänrakennettuna luottamus BAA:n juurivarmenteeseen, josta seuraa että se luottaa OIC-varmenteeseen, josta seuraa että se luottaa koko LocaPolicyn allekirjoitukseen.
RemotePolicyn rajoitukset
Paikallisten käytäntöjen lisäksi kaikki muutkin Image4-tiedostot sisältävät rajoituksia Image4-vaatimustiedoston arvioinnille. Nämä rajoitukset on koodattu käyttäen erityisiä objektitunnisteita (OID) lehtivarmenteessa. Image4:n tarkistuskirjasto etsii varmenteesta erityisen varmenteen rajoituksen objektitunnisteen allekirjoituksen arvioinnin yhteydessä ja arvioi sitten mekaanisesti siinä eritellyt rajoitukset. Rajoitukset ovat muotoa:
X täytyy olla olemassa
X ei saa olla olemassa
X:llä täytyy olla tietty arvo
Esimerkiksi ”yksilöllisten” allekirjoitusten varmenteen rajoituksissa on ”ECID täytyy olla olemassa”, ja ”yleisten” allekirjoitusten varmenteen rajoituksissa on ”ECID ei saa olla olemassa”. Nämä rajoitukset on suunniteltu varmistamaan, että kaikkien tietyllä avaimella allekirjoitettujen Image4-tiedostojen on oltava tiettyjen vaatimusten mukaisia, jotta vältytään luomasta virheellisesti allekirjoitettuja Image4-vaatimustiedostoja.
Kunkin LocalPolicyn yhteydessä näihin Image4-varmennerajoituksiin viitataan nimellä RemotePolicy. Eri käynnistysympäristöjen LocalPolicyille voi olla eri RemotePolicy. RemotePolicya käytetään rajoittamaan recoveryOS:n LocalPolicya niin että kun recoveryOS käynnistetään, se voi käyttäytyä ainoastaan niin kuin käynnistettäessä Täysi suojaus ‑tilassa. Tämä lisää luottamusta recoveryOS:n käynnistysympäristön eheyteen paikkana, jossa käytäntöä voidaan muuttaa. RemotePolicy rajoittaa LocalPolicya edellyttämällä, että sen tulee sisältää sen Macin ECID, jossa LocalPolicy on luotu, ja nimenomaan kyseisen Macin Secure Storage ‑komponenttiin tallennettu etäkäytännön noncen tiiviste (rpnh
). rpnh
ja sen myötä RemotePolicy muuttuvat ainoastaan silloin, kun Etsi Macini ‑toiminnolle ja aktivointilukitukselle suoritetaan toimenpiteitä kuten rekisteröinti, rekisteröinnin poistaminen, etälukitus ja etätyhjennys. Etäkäytännön rajoitukset määritetään ja ne eritellään käyttäjäidentiteetin avaimen (UIK) varmenteen antamisen aikana ja ne kirjataan annettavaan käyttäjäidentiteetin varmenteeseen (ucrt). Palvelin määrittää jotkin etäkäytännön rajoitukset, kuten ECID-, ChipID- ja BoardID-tunnisteen. Tämä on suunniteltu estämään sitä, että yksi laite voisi allekirjoittaa LocalPolicy-tiedostoja toiselle laitteelle. Laite voi eritellä muita etäkäytännön rajoituksia auttaakseen estämään paikallisen käytännön suojauksen heikentämistä ilman sekä paikallista todennusta nykyisen OIK-avaimen käyttämiseksi että etätodennusta tilille, johon laite on aktivointilukittu.