Innhold i en LocalPolicy-fil for en Mac med Apple-chip
LocalPolicy er en Image4-fil signert av Secure Enclave. Image4 er et ASN.1 (Abstract Syntax Notation One) DER-kodet datastrukturformat som brukes til å beskrive informasjon om objekter i den sikre oppstartssekvensen på Apple-plattformer. I en Image4-basert sikker oppstartsmodell blir sikkerhetsregelsett forespurt ved installasjon av programvare, igangsatt av en signeringsforespørsel til en sentral Apple-signeringstjener. Hvis regelsettet var akseptabelt, returnerer signeringstjeneren en signert Image4-fil som inneholder en rekke 4CC-sekvenser (four-character-code). Disse signerte Image4-filene og 4CC-ene evalueres ved oppstart av programvare som oppstart-ROM eller LLB.
Overføring av eierskap mellom operativsystemer
Tilgang til Owner Identity Key (OIK) omtales som «Eierskap» Eierskap kreves for å gi brukerne muligheten til å si opp LocalPolicy etter å ha gjort endringer i regelsett eller programvare. OIK-en beskyttes av det samme nøkkelhierarkiet som beskrives i Sealed Key Protection (SKP), med OIK-en som beskyttes av den samme nøkkelkrypteringsnøkkelen (KEK) som volumkrypteringsnøkkelen (VEK). Dette betyr at den vanligvis beskyttes av både brukerpassord og målinger av operativsystemet og regelsett. Det er kun én OIK for alle operativsystemene på Macen. Derfor kreves eksplisitt samtykke fra brukerne i det første operativsystemet for å overføre eierskap til brukerne i det andre operativsystemet når det andre operativsystemet installeres. Brukere eksisterer imidlertid ikke ennå for det andre operativsystemet når installereren kjøres fra det første operativsystemet. Brukere i operativsystemer genereres vanligvis ikke før operativsystemet startes opp og Oppsettassistent kjører. To nye handlinger kreves dermed ved installering av nytt operativsystem på Macer med Apple-chip.
- Opprette en LocalPolicy for det andre operativsystemet 
- Forberede en «Install User» for overføring av eierskap 
Når du kjører en installeringsassistent og retter installeringen mot et sekundært tomt volum, vil du få en forespørsel om brukeren vil kopiere en bruker fra det gjeldende volumet til å være den første brukeren på det sekundære volumet. Hvis brukeren sier ja, er «Install User» som opprettes, faktisk en KEK som avledes fra den valgte brukerens passord og maskinvarenøkler, som deretter brukes til å kryptere OIK-en mens den overføres til det andre operativsystemet. I installeringsassistenten for det andre operativsystemet kommer en forespørsel om brukerens passord for å gi tilgang til OIK-en i Secure Enclave for det nye operativsystemet. Hvis brukerne velger å ikke kopiere en bruker, opprettes fremdeles Install User på samme måte, men et tomt passord brukes i stedet for en brukers passord. Denne andre flyten eksisterer for enkelte scenarioer for systemadministrering. Brukere som vil installere på flere volumer og ønsker å utføre overføring av eierskap på en sikker måte, bør imidlertid alltid velge å kopiere en bruker fra det første operativsystemet til det andre operativsystemet.
LocalPolicy på Macer med Apple-chip
For Macer med Apple-chip er kontroll av lokale sikkerhetsregelsett delegert til en applikasjon som kjører i Secure Enclave. Denne programvaren kan benytte brukerens akkreditiver og oppstartsmodusen til hovedprosessoren for å fastslå hvem som kan endre sikkerhetsregelsettet og fra hvilket oppstartsmiljø. Dette hindrer ondsinnet programvare fra å bruke kontrollene av sikkerhetsregelsettet mot brukeren ved å nedgradere dem for å få flere rettigheter.
Listeegenskaper for LocalPolicy
LocalPolicy-filen inneholder noen arkitektoniske 4CC-er som finnes i de aller fleste Image4-filene, for eksempel en kort-ID eller modell-ID (BORD), som indikerer en bestemt Apple-brikke (CHIP), eller Exclusive Chip Identification (ECID). Men 4CC-er under fokuserer kun på sikkerhetsregelsettene som brukerne kan konfigurere.
Merk: Apple bruker begrepet Paired One True recoveryOS (1TR) til å indikere en oppstart i paret recoveryOS som oppnås ved å trykke fysisk på av/på-knappen. Dette er forskjellig fra en normal recoveryOS-oppstart, som oppnås ved bruk av NVRAM eller ved å trykke to ganger på og holde nede av/på-knappen, eller som kan skje når det oppstår feil ved oppstart. Det fysiske knappetrykket på en konkret måte øker tilliten til at oppstartsmiljøet ikke kan nås av noen som kun angriper programvare, som har brutt seg inn i macOS.
LocalPolicy Nonce Hash (lpnh)
- Type: OctetString (48) 
- Foranderlige miljøer: 1TR, recoveryOS, macOS 
- Beskrivelse: - lpnhbrukes for anti-repetisjon av LocalPolicy. Dette er en SHA384-hash av LocalPolicy Nonce (LPN), som er lagret i komponenten for sikker lagring og kan nås via oppstart-ROM for Secure Enclave eller Secure Enclave. Den rå anti-repetisjonsverdien er aldri synlig for applikasjonsprosessoren, kun for sepOS. En angriper som ønsker å overtale LLB om at et tidligere LocalPolicy de hadde fanget opp, var gyldig, vil måtte plassere en verdi i komponenten for sikker lagring, som hasher til den samme- lpnh-verdien som finnes i LocalPolicy-en de vil repetere. Vanligvis er det kun én gyldig LPN på systemet. Unntaket er under programvareoppdateringer, hvor to er gyldige samtidig for at det skal være mulig å falle tilbake til oppstart av den gamle programvaren ved en eventuell oppdateringsfeil. Når en LocalPolicy for et operativsystem endres, signeres alle regler på nytt med den nye lpnh-verdien, som tilsvarer den nye LPN-en i komponenten for sikker lagring. Denne endringen skjer når brukeren endrer sikkerhetsinnstillingene eller oppretter nye operativsystemer med en ny LocalPolicy for hver.
Remote Policy Nonce Hash (rpnh)
- Type: OctetString (48) 
- Foranderlige miljøer: 1TR, recoveryOS, macOS 
- Beskrivelse: - rpnhoppfører seg på samme måte som- lpnh, men oppdateres kun når det eksterne regelsettet oppdateres, for eksempel ved endring av statusen på Hvor er-registrering. Denne endringen skjer når brukeren endrer statusen på Hvor er på Macen.
recoveryOS Nonce Hash (ronh)
- Type: OctetString (48) 
- Foranderlige miljøer: 1TR, recoveryOS, macOS 
- Beskrivelse: - ronhoppfører seg på samme måte som lpnh, men finnes bare i LocalPolicy for system recoveryOS. Den oppdateres når system recoveryOS oppdateres, for eksempel ved programvareoppdateringer. Det brukes en egen anti-repetisjonsverdi fra- lpnhog- rpnh, så når en enhet settes i en deaktivert tilstand av Hvor er, kan eksisterende operativsystemer deaktiveres (ved å fjerne LPN og RPN fra komponenten for sikker lagring), samtidig som system recoveryOS fortsatt kan startes opp. På denne måten kan operativsystemene reaktiveres når systemeieren beviser kontrollen sin over systemet ved å legge inn iCloud-passordet som gjelder for «Hvor er?»-kontoen. Denne endringen skjer når en bruker oppdaterer system recoveryOS eller oppretter nye operativsystemer.
Next Stage Image4 Manifest Hash (nsih)
- Type: OctetString (48) 
- Foranderlige miljøer: 1TR, recoveryOS, macOS 
- Beskrivelse: nsih-feltet representerer en SHA384-hash av Image4-listedatastrukturen som beskriver macOS-et som er aktivert. Image4-listen til macOS inneholder målinger for alle oppstartsobjektene, for eksempel iBoot, den statiske godkjenningsbufferen, enhetstreet, Boot Kernel Collection og volumrothashen av det signerte systemvolumet (SSV). Når LLB instrueres om å starte et gitt macOS, er den utviklet for å sørge for at hashen av Image4-listen til macOS tilknyttet iBoot samsvarer med det som er fanget opp i - nsih-feltet i LocalPolicy. På denne måten fanger- nsihopp brukerens hensikt om hvilket operativsystem brukeren har opprettet LocalPolicy for. Brukerne kan endre- nsih-verdien implisitt når de utfører en programvareoppdatering.
Cryptex1 Image4-listesignatur (spih)
- Type: OctetString (48) 
- Foranderlige miljøer: 1TR, recoveryOS, macOS 
- Beskrivelse: - spih-feltet representerer en SHA384-hash av Cryptex1 Image4-listedatastrukturen. Cryptex1 Image4-listen inneholder målinger av cryptexene, filsystemforseglingene og den tilhørende godkjenningsbufferen. Når macOS starter opp, sørger XNU-kjernen og Page Protection Layer for at signaturen for Cryptex1 Image4-listen samsvarer med det som iBoot publiserte fra- spih-feltet i LocalPolicy. Brukerne endrer- spih-verdien implisitt når de installerer en kritisk sikkerhetsoppdatering (Rapid Security Response) eller utfører en programvareoppdatering. Cryptex1 Image4-listesignaturen kan oppdateres uavhengig av Next Stage Image4-listesignaturen.
Cryptex1-generering (stng)
- Type: 64-bit-heltall uten fortegn 
- Foranderlige miljøer: 1TR, recoveryOS, macOS 
- Beskrivelse: - stng-feltet er en tellerverdi som viser når Cryptex1 Image4-listesignaturen sist ble oppdatert i en LocalPolicy. Det leverer en anti-repetisjonsverdi i stedet for- lpnhunder Page Protection Layers evaluering av det lokale regelsettet for å bruke Incoming Cryptex. Brukerne øker- stng-verdien implisitt når de installerer en kritisk sikkerhetsoppdatering (Rapid Security Response) eller utfører en programvareoppdatering.
Auxiliary Kernel Collection (AuxKC) Policy Hash (auxp)
- Type: OctetString (48) 
- Foranderlige miljøer: macOS 
- Beskrivelse: - auxper en SHA384-hash av regelsettet for brukerautorisert kjerneutvidelsesliste (UAKL). Dette brukes ved generering av AuxKC for å bidra til å sikre at kun brukerautoriserte kjerneutvidelser inkluderes i AuxKC.- smb2er en forutsetning for å angi dette feltet. Brukere endrer- auxp-verdien implisitt når de endrer UAKL ved å godkjenne en kjerneutvidelse fra Personvern og sikkerhet i Systeminnstillinger (macOS 13 eller nyere) eller Sikkerhet og personvern-panelet i Systemvalg (macOS 12 eller eldre).
Auxiliary Kernel Collection (AuxKC) Image4 Manifest Hash (auxi)
- Type: OctetString (48) 
- Foranderlige miljøer: macOS 
- Beskrivelse: Etter at systemet verifiserer at UAKL-hashen samsvarer med det som er i - auxp-feltet i LocalPolicy, ber det om at AuxKC signeres av Secure Enclave-prosessorapplikasjonen som er ansvarlig for signering av LocalPolicy. Deretter plasseres en SHA384-hash av AuxKC Image4-listesignaturen i LocalPolicy for å unngå muligheten for å velge og kombinere tidligere signerte AuxKC-er med et operativsystem ved oppstart. Hvis iBoot finner- auxi-feltet i LocalPolicy, forsøker det å laste inn AuxKC fra lagringsplassen og validere signaturen. Den verifiserer også at hashen av Image4-listen tilknyttet AuxKC samsvarer med verdien i- auxi-feltet. Hvis AuxKC av en eller annen grunn mislykkes i å laste, fortsetter systemet å starte opp uten dette oppstartsobjektet og dermed uten å laste noen kjerneutvidelser fra tredjeparter.- auxp-feltet er en forutsetning for å angi auxi-feltet i LocalPolicy. Brukere endrer- auxi-verdien implisitt når de endrer UAKL ved å godkjenne en kjerneutvidelse fra Personvern og sikkerhet i Systeminnstillinger (macOS 13 eller nyere) eller Sikkerhet og personvern-panelet i Systemvalg (macOS 12 eller eldre).
Auxiliary Kernel Collection (AuxKC) Receipt Hash (auxr)
- Type: OctetString (48) 
- Foranderlige miljøer: macOS 
- Beskrivelse: - auxrer en SHA384-hash av AuxKC-kvitteringen, som indikerer det nøyaktige settet med kjerneutvidelser som ble inkludert i AuxKC. AuxKC-kvitteringen kan være et delsett av UAKL, fordi kjerneutvidelser kan ekskluderes fra AuxKC selv om de er brukerautorisert, hvis det er kjent at de brukes til angrep. I tillegg kan noen kjerneutvidelser som brukes til å bryte brukerkjernegrensen, føre til nedsatt funksjonalitet, for eksempel en manglende evne til å bruke Apple Pay eller spille 4K- og HDR-innhold. Brukere som vil ha disse funksjonene, velger en mer restriktiv AuxKC-inkludering.- auxp-feltet er en forutsetning for å angi- auxr-feltet i LocalPolicy. Brukere endrer- auxr-verdien implisitt når de bygger en ny AuxKC fra Personvern og sikkerhet i Systeminnstillinger (macOS 13 eller nyere) eller Sikkerhet og personvern-panelet i Systemvalg (macOS 12 eller eldre).
CustomOS Image4-listesignatur (coih).
- Type: OctetString (48) 
- Foranderlige miljøer: 1TR 
- Beskrivelse: - coiher en SHA384-hash av CustomOS Image4-listen. Nyttelasten for den listen brukes av iBoot (i stedet for XNU-kjernen) for å overføre kontroll. Brukere endrer- coih-verdien implisitt når de bruker kommandolinjeverktøyet- kmutil configure-booti 1TR.
APFS volume group UUID (vuid)
- Type: OctetString (16) 
- Foranderlige miljøer: 1TR, recoveryOS, macOS 
- Beskrivelse: - vuidindikerer volumgruppen som kjernen skal bruke som rot. Dette feltet er hovedsakelig informativt og brukes ikke for sikkerhetsbegrensninger. Denne- vuidangis implisitt av brukeren ved å opprette en ny operativsysteminstallasjon.
Key encryption key (KEK) Group UUID (kuid)
- Type: OctetString (16) 
- Foranderlige miljøer: 1TR, recoveryOS, macOS 
- Beskrivelse: - kuidindikerer volumet som ble brukt som startvolum. Nøkkelkrypteringsnøkkelen har vanligvis blitt brukt til databeskyttelse. Det brukes til å beskytte LocalPolicy-signeringsnøkkelen for hvert LocalPolicy.- kuidangis implisitt av brukeren ved å opprette en ny operativsysteminstallasjon.
Paired recoveryOS Trusted Boot Policy Measurement (prot)
- Type: OctetString (48) 
- Foranderlige miljøer: 1TR, recoveryOS, macOS 
- Beskrivelse: En paret recoveryOS Trusted Boot Policy Measurement (TBPM) er en spesiell iterativ SHA384-hashberegning over Image4-listen til en LocalPolicy, unntatt anti-repetisjonsverdier, for å kunne gi en konsekvent måling over tid (fordi anti-repetisjonsverdier som - lpnhoppdateres ofte).- prot-feltet, som kun finnes i hver LocalPolicy for macOS, gir en paring for å indikere LocalPolicy for recoveryOS som tilsvarer LocalPolicy for macOS.
Has Secure Enclave Signed recoveryOS Local Policy (hrlp)
- Type: Boolsk 
- Foranderlige miljøer: 1TR, recoveryOS, macOS 
- Beskrivelse: - hrlpindikerer om- prot-verdien (over) er målingen av en Secure Enclave-signert LocalPolicy for recoveryOS eller ikke. Hvis ikke signeres LocalPolicy for recoveryOS av Apples nettbaserte signeringstjener, som blant annet signerer macOS Image4-filer.
Local Operating System Version (love)
- Type: Boolsk 
- Foranderlige miljøer: 1TR, recoveryOS, macOS 
- Beskrivelse: - loveindikerer operativsystemversjonen som LocalPolicy er opprettet for. Versjonen hentes fra manifestet for neste tilstand under opprettelse av LocalPolicy og brukes til å håndheve paringsbegrensninger for recoveryOS.
Secure Multi-Boot (smb0)
- Type: Boolsk 
- Foranderlige miljøer: 1TR, recoveryOS 
- Beskrivelse: Hvis - smb0har verdi og er sann, tillater LLB at neste trinns Image4-liste signeres globalt, i stedet for å kreve en tilpasset signatur. Brukerne kan endre dette feltet ved hjelp av Oppstartssikkerhetsverktøy eller- bputilfor å nedgradere til Redusert sikkerhet.
Secure Multi-Boot (smb1)
- Type: Boolsk 
- Foranderlige miljøer: 1TR 
- Beskrivelse: Hvis - smb1har verdi og er sann, tillater iBoot at objekter som en tilpasset kjernesamling blir Secure Enclave-signert med samme nøkkel som LocalPolicy. Forekomst av- smb0er en forutsetning for forekomst av- smb1. Brukerne kan endre dette feltet ved hjelp av kommandolinjeverktøy som- csrutileller- bputilfor å nedgradere til Middels sikkerhet.
Secure Multi-Boot (smb2)
- Type: Boolsk 
- Foranderlige miljøer: 1TR 
- Beskrivelse: Hvis - smb2har verdi og er sann, tillater iBoot at Auxiliary Kernel Collection blir Secure Enclave-signert med samme nøkkel som LocalPolicy. Forekomst av- smb0er en forutsetning for forekomst av- smb2. Brukerne kan endre dette feltet ved hjelp av Oppstartssikkerhetsverktøy eller- bputilfor å nedgradere til Redusert sikkerhet og aktivere kjerneutvidelser fra tredjeparter.
Secure Multi-Boot (smb3)
- Type: Boolsk 
- Foranderlige miljøer: 1TR 
- Beskrivelse: Hvis - smb3har verdi og er sann, har en bruker på enheten valgt MDM-kontroll over systemet. Forekomst av dette feltet fører til at Secure Enclave-prosessorapplikasjonen som kontrollerer LocalPolicy, aksepterer MDM-autentisering i stedet for å be om lokal brukerautentisering. Brukerne kan endre dette feltet ved hjelp av Oppstartssikkerhetsverktøy eller- bputilfor å aktivere administrert kontroll over kjerneutvidelser fra tredjeparter og programvareoppdateringer. (I macOS 11.2 eller nyere kan MDM også igangsette en oppdatering til nyeste macOS-versjon hvis gjeldende sikkerhetsmodus er Full sikkerhet.)
Secure Multi-Boot (smb4)
- Type: Boolsk 
- Foranderlige miljøer: macOS 
- Beskrivelse: Hvis - smb4har verdi og er sann, har enheten valgt MDM-kontroll over operativsystemet ved hjelp av Apple School Manager eller Apple Business Manager. Forekomst av dette feltet fører til at Secure Enclave-applikasjonen som kontrollerer LocalPolicy, aksepterer MDM-autentisering i stedet for å be om lokal brukerautentisering. Dette feltet endres av MDM-løsningen når den oppdager at en enhets serienummer vises i en av de tre tjenestene.
System Integrity Protection (sip0)
- Type: 64-bit-heltall uten fortegn 
- Foranderlige miljøer: 1TR 
- Beskrivelse: - sip0holder de eksisterende SIP-regelsettbitene (System Integrity Protection) som tidligere ble lagret i NVRAM. Nye SIP-regelsettbiter legges til her (i stedet for å bruke LocalPolicy-felter som under), hvis de kun brukes i macOS, og ikke brukes av LLB. Brukerne kan endre dette feltet ved hjelp av- csrutilfra 1TR for å deaktivere SIP og nedgradere til Middels sikkerhet.
System Integrity Protection (sip1)
- Type: Boolsk 
- Foranderlige miljøer: 1TR 
- Beskrivelse: Hvis - sip1har verdi og er sann, tillater iBoot feil for å verifisere SSV-volumrothashen. Brukerne kan endre dette feltet ved hjelp av- csrutileller- bputilfra 1TR.
System Integrity Protection (sip2)
- Type: Boolsk 
- Foranderlige miljøer: 1TR 
- Beskrivelse: Hvis sip2 har verdi og er sann, vil ikke iBoot låse maskinvareregisteret Configurable Text Read-only Region (CTRR) som merker kjerneminnet som skrivebeskyttet. Brukerne kan endre dette feltet ved hjelp av - csrutileller- bputilfra 1TR.
System Integrity Protection (sip3)
- Type: Boolsk 
- Foranderlige miljøer: 1TR 
- Beskrivelse: Hvis - sip3har verdi og er sann, håndhever ikke iBoot den innebygde tillatelseslisten for NVRAM-variabelen boot-args, som ellers ville filtrert valgene sendt til kjernen. Brukerne kan endre dette feltet ved hjelp av- csrutileller- bputilfra 1TR.
Sertifikater og RemotePolicy
Som beskrevet i Oppretting og administrering av LocalPolicy-signeringsnøkkel, inneholder LocalPolicy Image4 også Owner Identity Certificate (OIC) og den innebygde RemotePolicy.