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:
lpnh
brukes 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 sammelpnh
-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:
rpnh
oppfører seg på samme måte somlpnh
, 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:
ronh
oppfø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 fralpnh
ogrpnh
, 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 fangernsih
opp brukerens hensikt om hvilket operativsystem brukeren har opprettet LocalPolicy for. Brukerne kan endrensih
-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 fraspih
-feltet i LocalPolicy. Brukerne endrerspih
-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 forlpnh
under Page Protection Layers evaluering av det lokale regelsettet for å bruke Incoming Cryptex. Brukerne økerstng
-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:
auxp
er 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.smb2
er en forutsetning for å angi dette feltet. Brukere endrerauxp
-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 finnerauxi
-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 iauxi
-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 endrerauxi
-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:
auxr
er 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 å angiauxr
-feltet i LocalPolicy. Brukere endrerauxr
-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:
coih
er en SHA384-hash av CustomOS Image4-listen. Nyttelasten for den listen brukes av iBoot (i stedet for XNU-kjernen) for å overføre kontroll. Brukere endrercoih
-verdien implisitt når de bruker kommandolinjeverktøyetkmutil configure-boot
i 1TR.
APFS volume group UUID (vuid)
Type: OctetString (16)
Foranderlige miljøer: 1TR, recoveryOS, macOS
Beskrivelse:
vuid
indikerer volumgruppen som kjernen skal bruke som rot. Dette feltet er hovedsakelig informativt og brukes ikke for sikkerhetsbegrensninger. Dennevuid
angis 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:
kuid
indikerer 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.kuid
angis 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
lpnh
oppdateres 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:
hrlp
indikerer omprot
-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:
love
indikerer 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
smb0
har 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 ellerbputil
for å nedgradere til Redusert sikkerhet.
Secure Multi-Boot (smb1)
Type: Boolsk
Foranderlige miljøer: 1TR
Beskrivelse: Hvis
smb1
har verdi og er sann, tillater iBoot at objekter som en tilpasset kjernesamling blir Secure Enclave-signert med samme nøkkel som LocalPolicy. Forekomst avsmb0
er en forutsetning for forekomst avsmb1
. Brukerne kan endre dette feltet ved hjelp av kommandolinjeverktøy somcsrutil
ellerbputil
for å nedgradere til Middels sikkerhet.
Secure Multi-Boot (smb2)
Type: Boolsk
Foranderlige miljøer: 1TR
Beskrivelse: Hvis
smb2
har verdi og er sann, tillater iBoot at Auxiliary Kernel Collection blir Secure Enclave-signert med samme nøkkel som LocalPolicy. Forekomst avsmb0
er en forutsetning for forekomst avsmb2
. Brukerne kan endre dette feltet ved hjelp av Oppstartssikkerhetsverktøy ellerbputil
for å nedgradere til Redusert sikkerhet og aktivere kjerneutvidelser fra tredjeparter.
Secure Multi-Boot (smb3)
Type: Boolsk
Foranderlige miljøer: 1TR
Beskrivelse: Hvis
smb3
har 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 ellerbputil
for å 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
smb4
har verdi og er sann, har enheten valgt MDM-kontroll over operativsystemet ved hjelp av Apple School Manager, Apple Business Manager eller Apple Business Essentials. 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:
sip0
holder 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 avcsrutil
fra 1TR for å deaktivere SIP og nedgradere til Middels sikkerhet.
System Integrity Protection (sip1)
Type: Boolsk
Foranderlige miljøer: 1TR
Beskrivelse: Hvis
sip1
har verdi og er sann, tillater iBoot feil for å verifisere SSV-volumrothashen. Brukerne kan endre dette feltet ved hjelp avcsrutil
ellerbputil
fra 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
csrutil
ellerbputil
fra 1TR.
System Integrity Protection (sip3)
Type: Boolsk
Foranderlige miljøer: 1TR
Beskrivelse: Hvis
sip3
har 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 avcsrutil
ellerbputil
fra 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.