
Indholdet i et LocalPolicy-arkiv på en Mac med Apple Silicon
LocalPolicy er et Image4-arkiv, der er signeret af Secure Enclave. Image4 er et ASN.1 (Abstract Syntax Notation One) DER-kodet datastrukturformat, der bruges til at beskrive oplysninger om objekter i den sikre startkæde på Apples platforme. I en Image4-baseret model til sikker start anmodes der om sikkerhedspolitikker, når der installeres software, og det sker gennem en signeringsanmodning til en central Apple-signeringsserver. Hvis politikken kan accepteres, returnerer signeringsserveren et signeret Image4-arkiv, som indeholder forskellige sekvenser af 4-tegnskoder (4CC). Disse signerede Image4-arkiver og 4CC’er evalueres under starten af software som Boot ROM eller LLB.
Overdragelse af ejerskab mellem operativsystemer
Adgang til ejeridentitetsnøglen OIK kaldes “Ejerskab”. Der kræves ejerskab for at give brugerne tilladelse til at signere LocalPolicy igen efter at have foretaget politik- eller softwareændringer. OIK beskyttes af samme nøglehierarki, som er beskrevet i Sealed Key Protection (SKP), hvor OIK beskyttes af samme nøglekrypteringsnøgle (KEK) som enhedskrypteringsnøglen (VEK). Det betyder, at den normalt beskyttes af både brugeradgangskoder og målinger af operativsystem og politik. Alle operativsystemer på en Mac har samme OIK. Det betyder, at hvis der installeres et operativsystem mere efter det første operativsystem, skal brugerne på det første operativsystem give deres udtrykkelige samtykke til at overdrage ejerskabet til brugerne på det nye operativsystem. Brugerne til det nye operativsystem findes imidlertid ikke endnu, når installeringsappen afvikles fra det første operativsystem. Brugerne oprettes normalt først i et operativsystem, når operativsystemet er startet, og Indstillingsassistent er åbnet. Der er derfor behov for to nye handlinger, når der installeres et operativsystem mere på en Mac med Apple Silicon:
Oprettelse af LocalPolicy til det nye operativsystem
Oprettelse af en “installeringsbruger” til overdragelse af ejerskab
Under afvikling af installeringsassistenten og udpegning af en tom diskenhed som modtager for installeringen bliver brugeren spurgt, om der skal oprettes en kopi af en bruger fra den aktuelle diskenhed, som skal blive den første bruger på den anden diskenhed. Hvis brugeren svarer ja, bliver den “installeringsbruger”, som oprettes, i realiteten til en KEK, der afledes af den valgte brugers adgangskode og hardwarenøgler, og som derefter bruges til at kryptere OIK under overdragelsen til det nye operativsystem. I installeringsassistenten til det nye operativsystem bliver der derefter bedt om den valgte brugers adgangskode, så der kan fås adgang til Secure Enclave til det nye operativsystem. Hvis brugeren vælger ikke at oprette en kopi af en bruger, oprettes installeringsbrugeren på samme måde, men der bruges en tom adgangskode i stedet for en brugers adgangskode. Dette andet forløb bruges til visse systemadministrationssituationer. Brugere, der vil have installeringer på flere diskenheder, og som vil overdrage ejerskab på den mest sikre måde, bør altid vælge at kopiere en bruger fra det første operativsystem til det andet operativsystem.
LocalPolicy på en Mac med Apple Silicon
På en Mac med Apple Silicon er kontrollen over den lokale sikkerhedspolitik delegeret til en app, der afvikles i Secure Enclave. Denne software kan benytte brugerens godkendelsesoplysninger og startfunktionen i den primære CPU til at fastlægge, hvem der kan ændre sikkerhedspolitikken, og fra hvilket startmiljø det kan ske. Det bidrager til at forhindre, at ondsindet software bruger sikkerhedspolitikkerne mod brugeren ved at nedgradere dem og dermed opnå flere rettigheder.
Egenskaber i LocalPolicy-manifest
LocalPolicy-arkivet indeholder nogle arkitektoniske 4CC’er, som findes i næste alle Image4-arkiver, f.eks. et board-id eller model-id (BORD), som angiver en bestemt Apple-chip (CHIP) eller et ECID (Exclusive Chip Identification). De 4CC’er, der er anført nedenfor, fokuserer kun på de sikkerhedspolitikker, som brugerne kan konfigurere.
Bemærk: Apple bruger termen Paired One True recoveryOS (1TR) til at beskrive en start i det parrede macOS-gendannelsessystem, som opnås ved, at en bruger fysisk trykker en gang på afbryderknappen og holder den nede. Det er anderledes end en normal start i macOS-gendannelse, som sker ved hjælp af NVRAM, ved at der trykkes to gange på knappen, og den holdes nede, eller hvis der opstår fejl under starten. Det specifikke fysiske tryk på knappen øger tilliden til, at startmiljøet ikke kan tilgås af en softwarehacker, som har skaffet sig uretmæssig adgang til macOS.
LocalPolicy Nonce Hash (lpnh)
Type: OctetString (48)
Miljøer, der kan ændres: 1TR, macOS-gendannelse, macOS
Beskrivelse:
lpnh
bruges til at forhindre genafspilning af LocalPolicy. Det er en SHA384 hash-værdi for LPN (LocalPolicy Nonce), der opbevares i komponenten til sikker opbevaring, og som er tilgængelig via Secure Enclave Boot ROM eller Secure Enclave. Den ubearbejdede værdi, der forhindrer genafspilning, er aldrig synlig for app-processoren, kun for sepOS. En hacker, som har indhentet en tidligere LocalPolicy og vil overbevise LLB om, at denne tidligere politik er gyldig, er nødt til at placere en værdi i komponenten til sikker opbevaring, som opretter hash-værdier med sammelpnh
-værdi som i den LocalPolicy, personen vil genafspille. Normalt er der kun en enkelt LPN, som er gyldig i systemet, undtagen ved softwareopdateringer, hvor to er gyldige samtidig. Det giver mulighed for at starte den gamle software, hvis der sker fejl under opdateringen. Når LocalPolicy for et hvilket som helst operativsystem ændres, bliver alle politikker signeret igen med den nye lpnh-værdi, som svarer til den nye LPN, der findes i komponenten til sikker opbevaring. Ændringen sker, når brugeren ændrer sikkerhedsindstillinger eller opretter nye operativsystemer med en ny LocalPolicy til hvert af dem.
Remote Policy Nonce Hash (rpnh)
Type: OctetString (48)
Miljøer, der kan ændres: 1TR, macOS-gendannelse, macOS
Beskrivelse:
rpnh
fungerer på samme måde somlpnh
, men den opdateres kun, når den eksterne politik opdateres, f.eks. ved ændring af tilmeldingen til Find. Ændringen sker, når brugeren ændrer indstillingen af Find på sin Mac.
recoveryOS Nonce Hash (ronh)
Type: OctetString (48)
Miljøer, der kan ændres: 1TR, macOS-gendannelse, macOS
Beskrivelse:
ronh
fungerer på samme måde som lpnh, men den findes udelukkende i LocalPolicy til macOS-gendannelse af systemet. Den opdateres, når macOS-gendannelse af systemet opdateres, f.eks. i forbindelse med softwareopdateringer. Der bruges en anden værdi, der forhindrer genafspilning, end tillpnh
ogrpnh
. Dermed sikres det, når en enhed gøres passiv via Find, at eksisterende operativsystemer kan deaktiveres (ved at fjerne deres LPN og RPN fra komponenten til sikker opbevaring), mens det stadig er muligt at starte macOS-gendannelse af systemet. Det betyder, at operativsystemerne kan genaktiveres, når systemets ejer beviser sin kontrol over systemet ved at indtaste den iCloud-adgangskode, der bruges til Find-kontoen. Ændringen sker, når brugeren opdaterer macOS-gendannelse af systemet eller opretter nye operativsystemer.
Next Stage Image4 Manifest Hash (nsih)
Type: OctetString (48)
Miljøer, der kan ændres: 1TR, macOS-gendannelse, macOS
Beskrivelse: nsih-feltet repræsenterer en SHA384 hash-værdi for Image4-manifestets datastruktur, som beskriver det macOS, der startes. Image4-manifestet i macOS indeholder målinger af alle startobjekterne, f.eks. iBoot, den statiske buffer til godkendelse, enhedsstrukturen, kernesamlingen til systemstart og hash-værdien for den signerede systemenheds rod (SSV). Når LLB får besked om at starte et givent macOS, er den indstillet til at sikre, at hash-værdien for det macOS Image4-manifest, der er knyttet til iBoot, stemmer overens med den værdi, der er indeholdt i
nsih
-feltet i LocalPolicy. På den måde registrerernsih
brugerens hensigt angående, hvilket operativsystem brugeren har oprettet en LocalPolicy til. Brugerne ændrer implicitnsih
-værdien, når de udfører en softwareopdatering.
Hash-værdi for Cryptex1 Image4-manifest (spih)
Type: OctetString (48)
Miljøer, der kan ændres: 1TR, macOS-gendannelse, macOS
Beskrivelse: Feltet
spih
repræsenterer en SHA384 hash-værdi for Cryptex1 Image4-manifestets datastruktur. Cryptex1 Image4-manifestet indeholder målinger af cryptexerne, deres arkivsystemforseglinger og deres tilhørende buffer til godkendelse. Når macOS starter, sikrer XNU-kernen og sidebeskyttelseslaget (PPL), at hash-værdien for Cryptex1 Image4-manifestet matcher den værdi, som er udgivet af iBoot fra feltetspih
i LocalPolicy. Brugerne ændrer implicit værdienspih
, når de installerer en hurtig sikkerhedsopdatering eller udfører en softwareopdatering. Hash-værdien for Cryptex1 Image4-manifestet kan opdateres uafhængigt af hash-værdien for Next Stage Image4-manifestet.
Cryptex1-generation (stng)
Type: 64-bit heltal uden fortegn
Miljøer, der kan ændres: 1TR, macOS-gendannelse, macOS
Beskrivelse: Feltet
stng
er en tællerværdi, der viser, hvornår hash-værdien for Cryptex1 Image4-manifestet sidst blev opdateret i LocalPolicy. Den tilvejebringer en værdi, der forhindrer genafspilning, i stedet forlpnh
under sidebeskyttelseslagets evaluering af den lokale politik for anvendelse af den indgående Cryptex. Brugerne øger implicit værdienstng
, når de installerer en hurtig sikkerhedsopdatering eller en softwareopdatering.
Auxiliary Kernel Collection (AuxKC) Policy Hash (auxp)
Type: OctetString (48)
Miljøer, der kan ændres: macOS
Beskrivelse:
auxp
er en SHA384 hash-værdi til politikken for den brugergodkendte kext-liste (UAKL). Den bidrager ved generering af AuxKC til at sikre, at kun brugergodkendte kext’er inkluderes i AuxKC.smb2
er en forudsætning for at indstille dette felt. Brugere ændrer implicit værdienauxp
, når de ændrer UAKL ved at godkende en kext i Anonymitet & sikkerhed i Systemindstillinger (macOS 13 og nyere versioner) eller vinduet Sikkerhed & anonymitet i Systemindstillinger (macOS 12 og tidligere versioner).
Auxiliary Kernel Collection (AuxKC) Image4 Manifest Hash (auxi)
Type: OctetString (48)
Miljøer, der kan ændres: macOS
Beskrivelse: Når systemet har bekræftet, at hash-værdien til UAKL stemmer overens med det, der findes i
auxp
-feltet i LocalPolicy, anmoder det om at få AuxKC signeret af Secure Enclave-processoren, som er ansvarlig for signering af LocalPolicy. Derefter bliver en SHA384 hash-værdi for signaturen til AuxKC Image4-manifestet placeret i LocalPolicy. Det sker for at undgå, at tidligere signerede AuxKC’er blandes sammen og matches med et operativsystem under starten. Hvis iBoot finderauxi
-feltet i LocalPolicy, forsøger det at indlæse AuxKC fra lagringspladsen og godkende dens signatur. Det kontrollerer også, om hash-værdien for det Image4-manifest, der er knyttet til AuxKC, stemmer overens med værdien iauxi
-feltet. Hvis AuxKC ikke kan indlæses, bliver systemet ved med at starte uden dette startobjekt og (dermed) uden at indlæse nogen kext’er fra tredjeparter.auxp
-feltet er en forudsætning for at indstille auxi-feltet i LocalPolicy. Brugere ændrer implicit værdienauxi
, når de ændrer UAKL ved at godkende en kext i Anonymitet & sikkerhed i Systemindstillinger (macOS 13 og nyere versioner) eller vinduet Sikkerhed & anonymitet i Systemindstillinger (macOS 12 og tidligere versioner).
Auxiliary Kernel Collection (AuxKC) Receipt Hash (auxr)
Type: OctetString (48)
Miljøer, der kan ændres: macOS
Beskrivelse:
auxr
er en SHA384 hash-værdi for modtagelse af AuxKC, som indikerer det præcise sæt kext’er, som blev inkluderet i AuxKC. AuxKC-kvitteringen kan være en delmængde af UAKL, fordi kext‘er kan ekskluderes fra AuxKC – også selvom de er brugergodkendte – hvis de er kendt for at blive brugt til angreb. Desuden vil nogle kext‘er, som kan bruges til at bryde brugerkernens grænse, måske føre til nedsat funktionalitet, så det f.eks. ikke er muligt at bruge Apple Pay eller afspille 4K- og HDR-indhold. Brugere, som ønsker disse funktioner, tilvælger en mere restriktiv AuxKC-inklusion.auxp
-feltet er en forudsætning for at indstilleauxr
-feltet i LocalPolicy. Brugere ændrer implicit værdienauxr
, når de opbygger en ny AuxKC i Anonymitet & sikkerhed i Systemindstillinger (macOS 13 og nyere versioner) eller vinduet Sikkerhed & anonymitet i Systemindstillinger (macOS 12 og tidligere versioner).
CustomOS Image4 Manifest Hash (coih)
Type: OctetString (48)
Miljøer, der kan ændres: 1TR
Beskrivelse:
coih
er en SHA384-hash-værdi for CustomOS Image4-manifestet. Dataene til manifestet bruges af iBoot (i stedet for XNU-kernen) til at overdrage kontrollen. Brugerne ændrer implicitcoih
-værdien, når de bruger kommandolinjeværktøjetkmutil configure-boot
i 1TR.
APFS Volume Group UUID (vuid)
Type: OktetStreng (16)
Miljøer, der kan ændres: 1TR, macOS-gendannelse, macOS
Beskrivelse:
vuid
angiver den enhedsgruppe, som kernen skal bruge som rod. Dette felt er primært til information og bruges ikke til sikkerhedsbegrænsninger. Brugeren indstillervuid
implicit ved at oprette en ny installering af et operativsystem.
Key Encryption Key (KEK) Group UUID (kuid)
Type: OktetStreng (16)
Miljøer, der kan ændres: 1TR, macOS-gendannelse, macOS
Beskrivelse:
kuid
angiver den enhed, der blev startet. Nøglekrypteringsnøglen (KEK) er typisk blevet brugt til Databeskyttelse. Den bruges til at beskytte signeringsnøglen til hver LocalPolicy. Brugeren indstiller implicitkuid
ved at oprette en ny installering af et operativsystem.
Paired recoveryOS Trusted Boot Policy Measurement (prot)
Type: OctetString (48)
Miljøer, der kan ændres: 1TR, macOS-gendannelse, macOS
Beskrivelse: Paired recoveryOS Trusted Boot Policy Measurement (TBPM) er en særlig gentaget SHA384 hash-værdiberegning for Image4-manifestet for en LocalPolicy, som ikke medtager værdier, der forhindrer afspilning, så den kan give en konsistent måling over tid (fordi værdier, der forhindrer afspilning, f.eks.
lpnh
, opdateres jævnligt). Feltetprot
, der kun findes i LocalPolicy til hvert macOS, skaber en pardannelse for at indikere den LocalPolicy til macOS-gendannelse, som svarer til LocalPolicy til macOS.
Has Secure Enclave Signed recoveryOS Local Policy (hrlp)
Type: Boolesk
Miljøer, der kan ændres: 1TR, macOS-gendannelse, macOS
Beskrivelse:
hrlp
indikerer, om ovenståendeprot
-værdi er udtryk for en LocalPolicy til macOS-gendannelse signeret af Secure Enclave. Hvis det ikke er tilfældet, signeres LocalPolicy til macOS-gendannelse af Apples onlinesigneringsserver, som signerer ting som Image4-arkiver i macOS.
Local Operating System Version (love)
Type: Boolesk
Miljøer, der kan ændres: 1TR, macOS-gendannelse, macOS
Beskrivelse: The
love
angiver den operativversion, som LocalPolicy er oprettet til. Versionen hentes fra Next stage-manifestet under oprettelse af LocalPolicy og bruges til at håndhæve begrænsninger for parring af macOS-gendannelse.
Secure Multi-Boot (smb0)
Type: Boolesk
Miljøer, der kan ændres: 1TR, macOS-gendannelse
Beskrivelse: Hvis
smb0
er “present and true”, tillader LLB, at Next stage Image4-manifestet bliver globalt signeret frem for at kræve en personliggjort signatur. Brugerne kan ændre feltet med Startsikkerhedsværktøj ellerbputil
for at nedgradere til Reduceret sikkerhed.
Secure Multi-Boot (smb1)
Type: Boolesk
Miljøer, der kan ændres: 1TR
Beskrivelse: Hvis
smb1
er “present and true”, tillader iBoot, at objekter som f.eks. en speciel kernesamling kan signeres af Secure Enclave med samme nøgle som LocalPolicy. Tilstedeværelsen afsmb0
er en forudsætning for tilstedeværelsen afsmb1
. Brugerne kan ændre feltet via kommandolinjeværktøjer somcsrutil
ellerbputil
for at nedgradere til Tolerant sikkerhed.
Secure Multi-Boot (smb2)
Type: Boolesk
Miljøer, der kan ændres: 1TR
Beskrivelse: Hvis
smb2
er “present and true”, tillader iBoot, at den sekundære kernesamling kan signeres af Secure Enclave med samme nøgle som LocalPolicy. Tilstedeværelsen afsmb0
er en forudsætning for tilstedeværelsen afsmb2
. Brugerne kan ændre feltet via Startsikkerhedsværktøj ellerbputil
for at nedgradere til Reduceret sikkerhed og tillade kext‘er fra tredjeparter.
Secure Multi-Boot (smb3)
Type: Boolesk
Miljøer, der kan ændres: 1TR
Beskrivelse: Hvis
smb3
er “present and true”, har en bruger af enheden tilmeldt den til en løsning til administration af mobile enheder (MDM) for at give MDM kontrol over systemet. Tilstedeværelsen af dette felt medfører, at Secure Enclave-processoren til styring af LocalPolicy accepterer MDM-godkendelse i stedet for at kræve lokal brugergodkendelse. Brugerne kan ændre feltet via Startsikkerhedsværktøj ellerbputil
for at tillade administreret kontrol over kext‘er fra tredjeparter og softwareopdateringer. (I macOS 11.2 og nyere versioner kan MDM også starte en opdatering til den nyeste version af macOS, hvis den aktuelle sikkerhedsfunktion er Fuld sikkerhed).
Secure Multi-Boot (smb4)
Type: Boolesk
Miljøer, der kan ændres: macOS
Beskrivelse: Hvis
smb4
er “present and true”, er enheden tilmeldt en MDM-løsning via Apple School Manager eller Apple Business Manager for at give MDM kontrol over operativsystemet. Tilstedeværelsen af dette felt medfører, at Secure Enclave-appen til styring af LocalPolicy accepterer MDM-godkendelse i stedet for at kræve lokal brugergodkendelse. Dette felt ændres af MDM-løsningen, når den registrerer, at enhedens serienummer forekommer i en af disse tre tjenester.
System Integrity Protection (sip0)
Type: 64-bit heltal uden fortegn
Miljøer, der kan ændres: 1TR
Beskrivelse:
sip0
indeholder de bits til den eksisterende politik for Beskyttelse af systemets integritet (System Integrity Protection – SIP), som tidligere blev opbevaret i NVRAM. Nye bits til SIP-politikken tilføjes her (i stedet for at bruge felter i LocalPolicy som vist nedenfor), hvis de kun bruges i macOS og ikke af LLB. Brugerne kan ændre feltet viacsrutil
fra 1TR for at slå SIP fra og nedgradere til Tolerant sikkerhed.
System Integrity Protection (sip1)
Type: Boolesk
Miljøer, der kan ændres: 1TR
Beskrivelse: Hvis
sip1
er “present and true”, tillader iBoot, at mislykkede forsøg bekræfter hash-værdien for SSV-enhedens rod. Brugerne kan ændre feltet viacsrutil
ellerbputil
fra 1TR.
System Integrity Protection (sip2)
Type: Boolesk
Miljøer, der kan ændres: 1TR
Beskrivelse: Hvis sip2 er “present and true”, låser iBoot ikke hardwareregistrene til Configurable Text Read-only Region (CTRR), som markerer, at der ikke kan skrives til kernehukommelsen. Brugerne kan ændre feltet via
csrutil
ellerbputil
fra 1TR.
System Integrity Protection (sip3)
Type: Boolesk
Miljøer, der kan ændres: 1TR
Beskrivelse: Hvis
sip3
er “present and true”, håndhæver iBoot ikke sin indbyggede liste over tilladte indstillinger for NVRAM-variablen boot-args, som ellers ville filtrere de indstillinger, der sendes til kernen. Brugerne kan ændre feltet viacsrutil
ellerbputil
fra 1TR.
Certifikater og RemotePolicy
Som beskrevet i Oprettelse og administration af signeringsnøgler til LocalPolicy indeholder Image4-arkivet til LocalPolicy også ejeridentitetscertifikatet OIC og den indlejrede RemotePolicy.