Oppretting og administrering av LocalPolicy-signeringsnøkkel
Oppretting
Når macOS installeres for første gang i fabrikken, eller når en sletting og installering utføres når enheten er tilkoblet, kjører Macen kode fra en midlertidig gjenopprettings-RAM-disk for å initialisere standardtilstanden. I løpet av denne prosessen oppretter gjenopprettingsmiljøet et nytt par med offentlige og private nøkler som oppbevares i Secure Enclave. Den private nøkkelen kalles Owner Identity Key (OIK). Hvis det allerede eksisterer en OIK, ødelegges denne som en del av prosessen. Gjenopprettingsmiljøet initialiserer også nøkkelen som brukes for Aktiveringslås: User Identity Key (UIK). En del av prosessen er unik for Macer med Apple-chip: Når UIK-sertifiseringen forespørres for Aktiveringslås, inkluderes et sett med forespurte begrensninger som skal håndheves ved valideringstidspunktet på LocalPolicy. Det er ikke mulig å få opprettet en LocalPolicy hvis enheten ikke kan få en UIK-sertifisert for Aktiveringslås (for eksempel fordi enheten er knyttet til en Finn Mac-konto og er rapportert som mistet). Hvis en enhet tildeles en User identity Certificate (ucrt), inneholder ucrt tjenerpålagte regelsettbegrensninger og brukerforespurte regelsettbegrensninger i en X.509 v3-utvidelse.
Når en Aktiveringslås/ucrt
er hentet, oppbevares den i en database på tjenersiden og sendes også tilbake til enheten. Når enheten har fått en ucrt, sendes en sertifiseringsforespørsel for den offentlige nøkkelen som tilsvarer OIK-en, til Basic Attestation Authority (BAA)-tjeneren. BAA verifiserer OIK-sertifiseringsforespørselen ved hjelp av den offentlige nøkkelen fra ucrt som oppbevares i databasen som er tilgjengelig for BAA. Hvis BAA kan verifisere sertifiseringen, sertifiseres den offentlige nøkkelen, og Owner Identity Certificate (OIC), som er signert av BAA og inneholder begrensningene som oppbevares i ucrt, returneres. OIC sendes deretter tilbake til Secure Enclave. Fra nå av, når Secure Enclave signerer en ny LocalPolicy, festes den til OIC i Image4. LLB har innebygd godkjenning i BAA-rotsertifikatet, noe som fører til at den godkjenner OIC, som så fører til at den godkjenner hele LocalPolicy-signaturen.
RemotePolicy-begrensninger
Alle Image4-filer, ikke bare LocalPolicies, inneholder begrensninger for Image4-listeevaluering. Disse begrensningene er kodet med spesielle objektidentifikatorer (OID-er) i bladsertifikatet. Image4-verifiseringsbiblioteket slår opp den spesielle OID-en for sertifikatbegrensning fra et sertifikat under signaturevaluering og evaluerer deretter mekanisk begrensningene som er spesifisert i det. Begrensningene har formen:
X må eksistere
X må ikke eksistere
X må ha en spesifikk verdi
For «tilpassede» signaturer vil sertifikatbegrensningene for eksempel inneholde «ECID må eksistere», og for «globale» signaturer vil den inneholde «ECID må ikke eksistere». Disse begrensningene er utviklet for å sørge for at alle Image4-filer signert av en gitt nøkkel, må oppfylle bestemte krav for å unngå feil signert Image4-listegenerering.
I forbindelse med hver LocalPolicy kalles disse Image4-sertifikatbegrensningene for RemotePolicy. En annerledes RemotePolicy kan eksistere for forskjellige oppstartsmiljøers LocalPolicies. RemotePolicy brukes til å begrense LocalPolicy for recoveryOS, så når recoveryOS starter, kan det kun oppføre seg som om det starter med Full sikkerhet. Dette øker tilliten til integriteten i recoveryOS-oppstartsmiljøet som et sted der regelsett kan endres. RemotePolicy begrenser LocalPolicy til å inneholde ECID til Mac der LocalPolicy ble generert, og den spesifikke Remote Policy Nonce Hash (rpnh
) lagret i komponenten for sikker lagring på den maskinen. rpnh
, og dermed RemotePolicy, endres kun når det utføres handlinger for Finn Mac og Aktiveringslås, for eksempel registrering, avregistrering, fjernlåsing og fjernsletting. Remote Policy-begrensninger bestemmes og spesifiseres på sertifiseringstidspunktet for User Identity Key (UIK) og signeres inn i det utstedte User identity Certificate (ucrt). Enkelte Remote Policy-begrensninger bestemmes av tjeneren, som ECID, ChipID og BoardID. Dette er utviklet for å hindre at enheter kan signere LocalPolicy-filer for andre enheter. Andre Remote Policy-begrensninger kan spesifiseres av enheten for å bidra til å hindre sikkerhetsnedgradering av Local Policy uten å oppgi begge de lokale autentiseringene som kreves for å få tilgang til den gjeldende OIK-en og fjernautentiseringen for kontoen som enheten er låst til med Aktiveringslås.