
Skapa och hantera signeringsnyckeln för LocalPolicy
Skapande
När macOS installeras första gången i fabriken, eller när en kopplad raderingsinstallation utförs, kör Mac-datorn kod från en tillfällig återställnings-RAM-skiva för att initiera standardläget. Under den här processen skapar återställningsmiljön ett nytt publikt och privat nyckelpar som förvaras i Secure Enclave. Den privata nyckeln kallas Owner Identity Key (OIK). Om det redan finns en OIK förstörs den som en del av den här processen. Återställningsmiljön initierar också den nyckel som används för Aktiveringslås, kallad User Identity Key (UIK). En del av den här processen som är unik för Mac-datorer med Apple Silicon är att när UIK-certifiering begärs för Aktiveringslås inkluderas en uppsättning begärda begränsningar som ska genomdrivas vid valideringstillfället på LocalPolicy. Om enheten inte kan få en UIK-certifiering för Aktiveringslås (t.ex. om enheten vid det aktuella tillfället är kopplad till ett Hitta min Mac-konto och är rapporterad som förlorad) kan den inte fortsätta att skapa en Local Policy. Om ett ucrt-certifikat (User identity Certificate) skapas för en enhet innehåller certifikatet serverskapade policybegränsningar och användarbegärda policybegränsningar i ett X.509 v3-tillägg.
När ett Aktiveringslås/ucrt
-certifikat hämtats korrekt lagras det i en databas på serversidan och returneras även till enheten. När enheten har ett ucrt-certifikat skickas en certifieringsbegäran för den publika nyckeln som motsvarar OIK till BAA-servern (Basic Attestation Authority). BAA verifierar OIK-certifieringens begäran med den publika nyckeln från det ucrt som lagras i den databas som är tillgänglig för BAA. Om BAA inte kan verifiera certifieringen certifierar BAA den publika nyckeln och returnerar OIC (Owner Identity Certificate) som signerats av BAA och innehåller de begränsningar som är lagrade i ucrt. OIC skickas tillbaka till Secure Enclave. Därefter bifogar Secure Enclave OIC:n med Image4-filen varje gång den signerar en ny LocalPolicy. Förtroendet för BAA-rotcertifikatet är inbyggt i LLB, vilket leder till att LLB litar på OIC, vilket i sin tur leder till att det litar på den allmänna LocalPolicy-signaturen.
RemotePolicy-begränsningar
Alla Image4-filer, inte bara Local Policy-filer, innehåller begränsningar för Image4-manifestutvärdering. Dessa begränsningar är kodade med speciella OID:er i bladcertifikatet. Image4-verifieringsbiblioteket kontrollerar det speciella certifikatbegränsnings-OID:t från ett certifikat under signaturutvärderingen och utvärderar sedan mekaniskt de begränsningar som anges i det. Begränsningarna är av typen:
X måste finnas
X får inte finnas
X måste ha ett specifikt värde
Så för exempelvis ”personligt anpassade” signaturer innehåller certifikatbegränsningarna ”ECID måste finnas”, och för ”globala” signaturer innehåller de ”ECID får inte finnas”. Dessa begränsningar är utformade på ett sätt som säkerställer att alla Image4-filer som signerats av en given nyckel måste följa vissa krav för att undvika felaktigt signerad Image4-manifestgenerering.
När det gäller LocalPolicy-filer kallas dessa Image4-certifikatbegränsningar för RemotePolicy. Det kan finnas olika RemotePolicy-filer för olika startmiljöers LocalPolicy-filer. RemotePolicy används till att begränsa LocalPolicy-filen för recoveryOS så att recoveryOS alltid beter sig som om det startar med Full säkerhet. Detta ökar förtroendet för integriteten hos recoveryOS-startmiljön som en plats varifrån policy kan ändras. RemotePolicy begränsar LocalPolicy-filen så att den innehåller ECID för den dator som LocalPolicy genererades på och det specifika rpnh
-värde (Remote Policy Nonce Hash) som lagras i SSC på den datorn. Detta rpnh
-värde, och därmed RemotePolicy, ändras endast när åtgärder vidtas för Hitta min Mac och Aktiveringslås, exempelvis registrering, avregistrering, fjärrlås och fjärradering. Remote Policy-begränsningar bestäms och specificeras vid tidpunkten för UIK-certifieringen och signeras in i det utfärdade ucrt-certifikatet. Vissa Remote Policy-begränsningar, som ECID, ChipID och BoardID, bestäms av servern. Det ska förhindra att en enhet signerar LocalPolicy-filer åt en annan enhet. Andra Remote Policy-begränsningar kan specificeras av enheten för att förhindra säkerhetssnedgraderingar av Local Policy utan tillhandahållande av både den lokala autentisering som krävs för åtkomst till aktuell OIK och fjärrautentisering av kontot till vilket enheten är aktiveringslåst.