Compartilhar via


Bancos PCR em dispositivos TPM 2.0

Para obter os passos sobre como alternar os bancos PCR em dispositivos TPM 2.0 no pc, deve contactar o fornecedor OEM ou UEFI. Este artigo fornece informações sobre o que acontece quando muda de bancos PCR em dispositivos TPM 2.0.

Um Registo de Configuração da Plataforma (PCR) é uma localização de memória no TPM que tem algumas propriedades exclusivas. O tamanho do valor que pode ser armazenado num PCR é determinado pelo tamanho de um resumo gerado por um algoritmo hash associado. Um PCR SHA-1 pode armazenar 20 bytes - o tamanho de um resumo SHA-1. Vários PCRs associados ao mesmo algoritmo hash são referidos como um banco PCR.

Para armazenar um novo valor num PCR, o valor existente é expandido com um novo valor da seguinte forma: PCR[N] = HASHalg( PCR[N] || ArgumentOfExtend)

O valor existente é concatenado com o argumento da operação Expandir do TPM. A concatenação resultante é então utilizada como entrada para o algoritmo hash associado, que calcula um resumo da entrada. O resumo calculado torna-se o novo valor do PCR.

A Especificação do Perfil TPM da Plataforma de Cliente do PC TCG define a inclusão de, pelo menos, um banco PCR com 24 registos. A única forma de repor os primeiros 16 PCRs é repor o próprio TPM. Esta restrição ajuda a garantir que o valor desses PCRs só pode ser modificado através da operação de Extensão do TPM.

Alguns PCRs TPM são utilizados como somas de verificação de eventos de registo. Os eventos de registo são expandidos no TPM à medida que os eventos ocorrem. Mais tarde, um auditor pode validar os registos ao calcular os valores de PCR esperados do registo e compará-los com os valores PCR do TPM. Uma vez que os primeiros 16 PCRs TPM não podem ser modificados arbitrariamente, uma correspondência entre um valor PCR esperado nesse intervalo e o valor real do PCR TPM fornece garantia de um registo não modificado.

Como é que o Windows utiliza PCRs?

Para vincular a utilização de uma chave baseada em TPM a um determinado estado do dispositivo, a chave pode ser selada a um conjunto esperado de valores PCR. Por exemplo, os PCRs 0 a 7 têm um valor bem definido após o processo de arranque, quando o SO é carregado. Quando o hardware, firmware ou carregador de arranque do computador é alterado, a alteração pode ser detetada nos valores pcR. O Windows utiliza esta capacidade para disponibilizar determinadas chaves criptográficas apenas em determinadas alturas durante o processo de arranque. Por exemplo, a chave BitLocker pode ser utilizada num determinado ponto do arranque, mas não antes ou depois.

É importante ter em atenção que este enlace aos valores de PCR também inclui o algoritmo de hashing utilizado para o PCR. Por exemplo, uma chave pode ser vinculada a um valor específico do SHA-1 PCR[12], se utilizar o banco DE PCR SHA-256, mesmo com a mesma configuração de sistema. Caso contrário, os valores de PCR não corresponderão.

O que acontece quando os bancos PCR são trocados?

Quando os bancos PCR são trocados, o algoritmo utilizado para calcular os valores hash armazenados nos PCRs durante as operações de expansão é alterado. Cada algoritmo hash devolve uma assinatura criptográfica diferente para as mesmas entradas.

Como resultado, se o banco PCR atualmente utilizado for mudado, todas as chaves vinculadas aos valores anteriores do PCR deixarão de funcionar. Por exemplo, se tivesse uma chave vinculada ao valor SHA-1 de PCR[12] e posteriormente alterasse o banco PCR para SHA-256, os bancos não corresponderiam e não conseguiria utilizar essa chave. A chave BitLocker é protegida através dos bancos PCR e o Windows não a consegue anular se os bancos PCR forem trocados enquanto o BitLocker estiver ativado.

O que posso fazer para mudar de PCRs quando o BitLocker já está ativo?

Antes de mudar de bancos PCR, deve suspender ou desativar o BitLocker ou ter a chave de recuperação pronta. Para obter os passos sobre como mudar os bancos PCR no PC, contacte o fornecedor do OEM ou ueFI.

Como posso identificar que banco PCR está a ser utilizado?

Pode configurar um TPM para ter vários bancos PCR ativos. Quando o BIOS efetua medições, fá-lo em todos os bancos PCR ativos, consoante a sua capacidade de fazer estas medições. O BIOS pode optar por desativar os bancos PCR que não suporta ou limitar os bancos PCR que não suporta ao alargar um separador. O seguinte valor de registo identifica quais os bancos PCR que estão ativos:

  • Chave do registo: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\IntegrityServices
  • DWORD: TPMActivePCRBanks
  • Define quais os bancos PCR que estão atualmente ativos. Este valor deve ser interpretado como um mapa de bits para o qual os bits são definidos na Tabela de Registo de Algoritmos TCG 21 de Revisão 1.27.

O Windows verifica quais os bancos PCR ativos e suportados pelo BIOS. O Windows também verifica se o registo de arranque medido suporta medidas para todos os bancos PCR ativos. O Windows prefere a utilização do banco SHA-256 para medições e reverte para o banco SHA1 PCR se uma das condições prévias não for cumprida.

Pode identificar que banco PCR é atualmente utilizado pelo Windows ao observar o registo:

  • Chave do registo: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\IntegrityServices
  • DWORD: TPMDigestAlgID
  • ID do algoritmo do banco PCR que o Windows está a utilizar atualmente. Este valor representa um identificador de algoritmo conforme definido na Tabela de Registo de Algoritmos TCG 3 de Revisão 1.27.

O Windows utiliza apenas um banco PCR para continuar as medições de arranque. Todos os outros bancos PCR ativos são expandidos com um separador para indicar que não são utilizados pelo Windows e as medições que parecem ser do Windows não devem ser consideradas fidedignas.