Erstellung und Verwaltung von Signaturschlüsseln für die lokale Richtlinie (LocalPolicy)
Erstellung
Wenn macOS das erste Mal werksseitig installiert oder eine kabelgebundene Löschung/Installation durchgeführt wird, führt der Mac Code von der temporären RAM-Disk für die Wiederherstellung aus, um den Standardzustand zu initialisieren. Im Zuge dieses Prozesses erstellt die Wiederherstellungsumgebung ein neues Paar privater und öffentlicher Schlüssel, die in der Secure Enclave gespeichert werden. Der private Schlüssel wird als OIK (Owner Identity Key) bezeichnet. Wenn ein OIK bereits vorhanden ist, wird er im Rahmen dieses Prozesses zerstört. Die Wiederherstellungsumgebung initialisiert den für die Aktivierungssperre verwendeten Schlüssel. Dieser wird als UIK (User Identity Key) bezeichnet. Zu diesem Prozess, der nur auf Mac-Computern mit Apple Chips ausgeführt wird, gehört die Abfrage der UIK-Zertifizierung für die Aktivierungssperre. Hierbei handelt es sich um eine Reihe von vorgesehenen Beschränkungen, die zum Validierungszeitpunkt auf die LocalPolicy angewendet werden. Wenn das Gerät keinen für die Aktivierungssperre zertifizierten UIK erhält (z. B. weil das Gerät aktuell mit einem „Wo ist?“-Account verknüpft und als verloren markiert wurde), kann mit dem Erstellen einer lokalen Richtlinie nicht fortgefahren werden. Wenn dem Gerät ein ucrt (user identity certificate) ausgestellt wird, enthält dieses „ucrt“ vom Server erzwungene und vom Benutzer festgelegte Richtlinieneinschränkungen in einer X.509 v3-Erweiterung.
Wenn eine Aktivierungssperre/ucrt
erfolgreich abgerufen wurde, werden die erhaltenen Daten serverseitig in einer Datenbank gespeichert und auch an das Gerät zurückgesendet. Nachdem das Gerät ein ucrt erhalten hat, wird eine Zertifizierungsanfrage für den öffentlichen Schlüssel, der dem OIK entspricht, an den BAA-Server (Basic Attestation Authority) gesendet. Die BAA verifiziert die OIK-Zertifizierungsanfrage mit dem öffentlichen Schlüssel des in der Datenbank gespeicherten ucrt. Wenn die BAA die Zertifizierung verifizieren kann, stellt sie für den öffentlichen Schlüssel ein Zertifikat aus und gibt das von der BAA signierte OIC (Owner Identity Certificate) zurück, das die im ucrt gespeicherten Einschränkungen enthält. Das OIC wird an die Secure Enclave zurückgesendet. Von da an wird das OIC immer zur Image4-Datei hinzugefügt, wenn die Secure Enclave eine neue lokale Richtlinie (LocalPolicy) signiert. LLB vertraut dem BAA-Rootzertifikat grundsätzlich, weshalb auch dem OIC vertraut wird. Dies hat wiederum zur Folge, dass der gesamten LocalPolicy-Signatur vertraut wird.
Einschränkungen der Remote-Richtlinie (RemotePolicy)
Alle Image4-Dateien – nicht nur die lokalen Richtlinien – umfassen Einschränkungen für die Auswertung des Image4-Manifests. Diese sind im Leaf-Zertifikat mittels spezieller Objektkennungen (OIDFs, Object Identifiers) kodiert. Die Image4-Prüfbibliothek ruft im Zuge der Signaturprüfung die spezielle OID für die Zertifikateinschränkung ab und wertet die darin enthaltenen Einschränkungen auf mechanischem Weg aus. Die Einschränkungen weisen folgende Form auf:
X muss vorhanden sein
X darf nicht vorhanden sein
X muss einen bestimmten Wert aufweisen
So enthalten beispielsweise bei „personalisierten“ Signaturen die Zertifikateinschränkungen die Anweisung „ECID muss vorhanden sein“, während sie bei „globalen“ Signaturen die Anweisung „ECID darf nicht vorhanden sein“ enthalten. Durch diese Einschränkungen wird sichergestellt, dass alle Image4-Dateien, die mit einem bestimmten Schlüssel signiert sind, bestimmten Anforderungen genügen müssen, damit die Generierung eines fehlerhaft signierten Image4-Manifests vermieden wird.
Im Kontext einzelner LocalPolicy-Dateien werden diese Image4-Zertifikateinschränkungen als „RemotePolicy“ (Remote-Richtlinie) bezeichnet. Es sind unterschiedliche Remote-Richtlinien für die lokalen Richtlinien von verschiedenen Startumgebungen möglich. Die Remote-Richtlinie wird dazu verwendet, die lokale Richtlinie für die recoveryOS-Software dahingehend zu beschränken, dass sich beim Starten der recoveryOS-Software die recoveryOS-Software stets nur so verhalten kann, als gelte die Festlegung „Volle Sicherheit“. Dies erhöht das Vertrauen in die Integrität der Startumgebung der recoveryOS-Software als einem Ort, an dem die Richtlinie geändert werden kann. Die Remote-Richtlinie schränkt die lokale Richtlinie dahingehend ein, dass sie die ECID des Mac, auf der sie generiert wurde, und den spezifischen „rpnh
“-Wert (Remote Policy Nonce Hash) enthält, der in der Secure Storage-Komponente auf dem betreffenden Mac gespeichert ist. Der rpnh
-Wert – und somit auch die Remote-Richtlinie – wird nur geändert, wenn Aktionen bezüglich der Funktion „Wo ist?“ und der Aktivierungssperre erfolgen, zum Beispiel die Registrierung, das Aufheben der Registrierung oder das Sperren oder Löschen per Fernzugriff. Die Einschränkungen für die Remote-Richtlinie werden zum Ausstellungszeitpunkt des UIK-Zertifikats (User Identity Key) ermittelt und festgelegt und das ausgestellte ucrt (User Identity Certificate) damit signiert. Einige Einschränkungen der Remote-Richtlinie wie ECID, ChipID und BoardID werden vom Server festgelegt. Dadurch soll verhindert werden, dass ein Gerät LocalPolicy-Dateien für andere Geräte signieren kann. Andere Einschränkungen der Remote-Richtlinie können vom Gerät festgelegt werden, um zu verhindern, dass die Sicherheit der lokalen Richtlinie herabgestuft wird, ohne dass dafür die notwendige lokale Authentifizierung für den Zugriff auf den aktuellen OIK und die Remote-Authentifizierung für den Account, der die Aktivierungssperre aktiviert hat, durchgeführt wurde.