Cambio de bancos de PCR en dispositivos de TPM 2.0

Un registro de configuración de la plataforma (PCR) es una ubicación de memoria en el TPM que tiene algunas propiedades únicas. El tamaño del valor que se puede almacenar en un PCR depende del tamaño del resumen generado por un algoritmo de hash asociado. Un PCR SHA-1 puede almacenar 20 bytes: el tamaño de un resumen de SHA-1. La existencia de varios PCR asociados al mismo algoritmo de hash se conoce como un banco de PCR.

Para almacenar un nuevo valor en un PCR, se amplía el valor existente con un nuevo valor de la siguiente manera:

PCR[N] = HASHalg( PCR[N] || ArgumentOfExtend )

El valor existente se concatena al argumento de la operación de extensión del TPM. La concatenación resultante se usa como entrada para el algoritmo de hash asociado, que calcula un resumen de la entrada. Este resumen calculado se convierte en el nuevo valor del PCR.

El Perfil de TPM de la plataforma específica de cliente de PC de TCG para TPM 2.0 define la inclusión de al menos un banco de PCR con 24 registros. La única manera de restablecer los 16 primeros PCR es restablecer el propio TPM. Esta restricción ayuda a garantizar que solo se pueda modificar el valor de dichos PCR mediante la operación de extensión del TPM.

Algunos PCR de TPM se usan como sumas de comprobación de eventos del registro. Los eventos del registro se extienden en el TPM conforme se producen los eventos. Más adelante, un auditor valida los registros al calcular los valores de PCR esperados a partir del registro y comparándolos con los valores de PCR esperados del TPM. Dado que los 16 primeros PCR del TPM no se pueden modificar de manera arbitraria, la coincidencia entre el valor de PCR esperado en dicho intervalo y el valor real de PCR del TPM garantiza que el registro no se ha modificado.

¿Cómo usa Windows 10 los PCR?

Para enlazar el uso de una clave basada en un TPM a un estado determinado del equipo, la clave puede estar sellada a un conjunto de valores de PCR esperados. Por ejemplo, los PCR del 0 al 7 tienen un valor bien definido después del proceso de arranque: cuando el sistema operativo está cargado. Cuando cambia el hardware, el firmware o el cargador de arranque del equipo, se puede detectar el cambio en los valores de PCR. Windows 10 usa esta funcionalidad para que determinadas claves criptográficas solo estén disponibles en momentos específicos durante el proceso de arranque. Por ejemplo, la clave de BitLocker puede usarse en un punto determinado en el arranque, pero no antes ni después.

Es importante tener en cuenta que este enlace a los valores de PCR también incluye el algoritmo hash que se usa para el PCR. Por ejemplo, una clave se puede enlazar a un valor específico de PCR[12] SHA-1, si usas bancos de PCR SHA-256, incluso con la misma configuración de sistema; de lo contrario, los valores de PCR no coincidirán.

¿Qué sucede cuando se cambian bancos de PCR?

Cuando se cambian los bancos de PCR, se cambia el algoritmo usado para calcular los valores hash almacenados en los PCR durante las operaciones de extensión. Para la misma entrada, cada algoritmo hash devolverá una firma criptográfica distinta para las entradas de la mismas.

Como resultado, si se cambia el banco de PCR usado actualmente, dejarán de funcionar todas las claves que se han enlazado a los valores de PCR anteriores. Por ejemplo, si había una clave enlazada al valor SHA-1 del PCR[12] y, posteriormente, se cambiaron los bancos de PCR a SHA-256, los bancos no coincidirán y no podrías usar dicha clave. La clave de BitLocker se protege mediante bancos de PCR y Windows 10 no podrá abrirlos si se cambian los bancos de PCR mientras BitLocker está habilitado.

¿Qué puedo hacer para cambiar PCR cuando BitLocker ya está activo?

Antes de cambiar bancos de PCR, debes suspender o deshabilitar BitLocker, o bien tener lista la clave de recuperación. Para obtener información sobre los pasos para cambiar bancos de PCR en tu equipo, debes ponerte en contacto con tu proveedor de OEM o UEFI.