Creación y gestión de claves de firmas de LocalPolicy
Creación
Cuando macOS se instala por primera vez en fábrica o cuando se realiza una operación de borrado e instalación con conexión compartida, el Mac ejecuta código desde un disco RAM de restauración temporal para inicializar el estado por defecto. Durante este proceso, el entorno de restauración crea un nuevo par de claves pública y privada que se almacenan en Secure Enclave. La clave privada se denomina clave de identidad del propietario (OIK). Si ya existe una OIK, se destruye como parte de este proceso. El entorno de restauración también inicializa la clave usada para el bloqueo de activación, la clave de identidad del usuario (UIK). En una parte de este proceso, que es exclusivo de los Mac con chip de Apple, se solicita la certificación de la UIK para el bloqueo de activación y se incluye un conjunto de restricciones solicitadas que se aplicarán durante la validación en LocalPolicy. Si el dispositivo no puede obtener una UIK certificada para el bloqueo de activación (por ejemplo, porque el dispositivo está asociado actualmente a una cuenta de Buscar mi Mac y se ha notificado como perdido), no puede continuar con la creación de un archivo LocalPolicy. Si se emite un certificado de identidad de usuario (ucrt) para un dispositivo, dicho ucrt contiene restricciones de política impuestas por el servidor y restricciones de política solicitadas por el usuario en una extensión X.509 v3.
Cuando se recupera correctamente un ucrt
o bloqueo de activación, se almacena en una base de datos en el servidor y también se devuelve al dispositivo. Una vez que el dispositivo tiene un ucrt, se envía una solicitud de certificación para la clave pública que corresponde a la OIK al servidor de la autoridad de acreditación básica (BAA). La BAA verifica la solicitud de certificación de la OIK con la clave pública del ucrt almacenado en la base de datos accesible de la BAA. Si la BAA puede verificar la certificación, certifica la clave pública, devolviendo el certificado de identidad del propietario (OIC), que está firmado por la BAA y contiene las restricciones almacenadas en el ucrt. El OIC se devuelve a Secure Enclave. Desde ese momento, siempre que Secure Enclave firme un nuevo archivo LocalPolicy, adjunta el OIC al archivo Image4. El LLB tiene confianza integrada en el certificado raíz de BAA, lo que hace que confíe en el OIC, lo que a su vez permite que confíe en la firma de LocalPolicy general.
Restricciones de RemotePolicy
Todos los archivos Image4, no solo los LocalPolicy, contienen restricciones en la evaluación del manifiesto Image4. Estas restricciones se codifican mediante identificadores de objetos especiales (OID) en el certificado terminal. La biblioteca de verificación de Image4 busca el OID de restricciones de certificado especiales de un certificado durante la evaluación de la firma y evalúa mecánicamente las restricciones especificadas en él. Las restricciones tienen estos formatos:
X debe existir
X no debe existir
X debe tener un valor específico
Así que, por ejemplo, para las firmas “personalizadas”, las restricciones de certificado contendrán “ECID debe existir”, y para las firmas “globales”, contendrán “ECID no debe existir”. Estas restricciones están diseñadas para garantizar que todos los archivos Image4 firmados por una clave determinada deban ajustarse a ciertos requisitos para evitar la generación de manifiestos Image4 firmados erróneamente.
En el contexto de cada archivo LocalPolicy, a estas restricciones de certificados Image4 se les denomina RemotePolicy. Pueden existir RemotePolicy distintos para diferentes LocalPolicy de entornos de arranque. RemotePolicy se utiliza para restringir el archivo LocalPolicy del sistema operativo de recuperación, de forma que solo pueda comportarse como si se arrancara con seguridad máxima. Esto incrementa la confianza en la integridad del sistema operativo de recuperación como un lugar donde se puede modificar la política. RemotePolicy restringe el archivo LocalPolicy para que contenga el ECID del Mac en el que LocalPolicy se generó y el hash del nonce de RemotePolicy (rpnh
) específico almacenado en el componente de almacenamiento seguro asociado de ese Mac. El rpnh
y, por tanto, RemotePolicy solo cambian cuando se realizan acciones para Buscar mi Mac y el bloqueo de activación, como la inscripción, la anulación de la inscripción, el bloqueo remoto y el borrado remoto. Las restricciones de RemotePolicy se determinan y especifican en el momento de la certificación de la clave de identidad del usuario (UIK) y se firman en el certificado de identidad del usuario (ucrt) emitido. Algunas restricciones de RemotePolicy, como ECID, ChipID y BoardID, están determinadas por el servidor. Esto es así para impedir que un dispositivo firme archivos de LocalPolicy para otro dispositivo. El dispositivo puede especificar otras restricciones de RemotePolicy para ayudar a impedir que se degrade la seguridad de LocalPolicy sin proporcionar la autenticación local necesaria para acceder al OIK actual ni la autenticación remota de la cuenta para el bloqueo de activación del dispositivo.