Atualizar certificados de KEK e de banco de dados

Este documento fornece instruções para atualizar as variáveis do banco de dados de assinaturas permitidas (db) e da chave de troca de chaves (KEK) em instâncias de computação criadas antes de 7 de novembro de 2025 para confiar em certificados atualizados para a inicialização segura.

A atualização da KEK e do banco de dados é uma alternativa para clientes que não recriam as instâncias de computação afetadas.

Antes de começar

Antes de atualizar os certificados de chaves de criptografia de chaves e de banco de dados da inicialização segura, verifique se as instâncias precisam de uma atualização e conclua os preparativos a seguir para evitar possíveis problemas de inicialização ou descriptografia:

  • Verificação de pré-requisitos:verifique se as instâncias precisam de uma atualização de certificados de inicialização segura.
  • Integridade de dados e recuperação de chaves:localize as chaves de recuperação da criptografia de disco (BitLocker ou LUKS FDE) e faça backup dos dados críticos. Mudar as variáveis de segurança pode bloquear o acesso aos discos se a configuração estiver incorreta.
  • Recomendação de sequenciamento de atualização do Linux:para instâncias do Linux, recomendamos atualizar a variável UEFI db para a CA UEFI da Microsoft 2023 antes de atualizar para novos shims. Essa sequência ajuda a evitar uma possível incompatibilidade de CA se uma atualização de shim assinada apenas com a CA UEFI da Microsoft de 2023 for aplicada enquanto o banco de dados contém apenas o certificado de 2011.
  • Configurações personalizadas de PK ou KEK: se a instância usa variáveis personalizadas do Secure Boot (como um PK ou KEK personalizado) ou se você está executando em um sistema fora do Compute Engine, os arquivos de atualização padrão (DBUpdate3P2023.bin ou kek2023update.bin) fornecidos neste documento não serão aplicados diretamente. O firmware UEFI exige que os arquivos de atualização sejam assinados pela chave privada do KEK ou PK registrado no sistema, e o kek2023update.bin é assinado especificamente pelo PK padrão do Compute Engine. Se você usa chaves personalizadas, assine os binários de atualização com suas próprias chaves privadas ou gerencie as atualizações pela autoridade de certificação personalizada. Consulte Resolver problemas de atualização da KEK para mais informações.
  • Cloud de Confiance by S3NS Dispositivos de backup e DR:são dispositivos gerenciados. Não é necessário atualizar manualmente os certificados de inicialização segura nesses dispositivos.O Cloud de Confiance by S3NS gerencia automaticamente todas as atualizações.

Atualizar o banco de dados e a KEK no Linux

Para atualizar o banco de dados de assinaturas permitidas (db) e a chave de troca de chaves (KEK), selecione a opção do seu sistema operacional:

Debian ou Ubuntu

É possível atualizar os certificados de Inicialização segura no Debian ou no Ubuntu usando fwupd, efitools ou sbsigntool.

Recomendamos usar fwupd para atualizar seus certificados. Esse método exige a versão 2.0.10 ou mais recente do fwupdmgr. Para verificar sua versão, execute sudo fwupdmgr --version.

Execute os comandos a seguir:

sudo fwupdmgr refresh
sudo fwupdmgr update 5bc922b7bd1adb5b6f99592611404036bd9f42d0
sudo fwupdmgr update b7a1d3d90faa1f6275d9a98da4fb3be7118e61c7

Opção 2: atualizar usando efitools

Para atualizar as variáveis db e KEK usando o pacote efitools, faça o seguinte:

Atualizar banco de dados
  1. Faça o download do binário de atualização do banco de dados de assinaturas permitidas (db) da Microsoft:

     wget https://github.com/microsoft/secureboot_objects/raw/main/PostSignedObjects/Optional/DB/DBUpdate3P2023.bin
    
  2. Atualize a variável db:

     sudo chattr -i /sys/firmware/efi/efivars/db-*
     sudo efi-updatevar -a -f DBUpdate3P2023.bin db
     sudo chattr +i /sys/firmware/efi/efivars/db-*
    
Atualizar KEK
  1. Baixe o arquivo .cab que contém a atualização do certificado:

     wget https://fwupd.org/downloads/1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab
    
  2. Instale o utilitário gcab:

     sudo apt update && sudo apt install gcab -y
    
  3. Extraia o arquivo e verifique se o hash SHA-256 do arquivo kek2023update.bin extraído corresponde a 99e340f5cfd7aa3698f80237b51e460fc6367111876f39b4a9e1d1aa495d5eaf:

     gcab --extract 1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab
     sha256sum kek2023update.bin
    
  4. Aplique a atualização:

     sudo chattr -i /sys/firmware/efi/efivars/KEK-*
     sudo efi-updatevar -a -f kek2023update.bin KEK
     sudo chattr +i /sys/firmware/efi/efivars/KEK-*
    

Opção 3: atualizar usando sbsigntool

Para atualizar as variáveis db e KEK usando o utilitário sbkeysync do pacote sbsigntool, instale sbsigntool e gcab:

sudo apt update && sudo apt install sbsigntool gcab -y
Atualizar banco de dados
  1. Baixe o binário de atualização db da Microsoft:

     wget https://github.com/microsoft/secureboot_objects/raw/main/PostSignedObjects/Optional/DB/DBUpdate3P2023.bin
    
  2. Sincronize a chave:

     sudo mkdir -p /etc/secureboot/keys/db
     sudo cp DBUpdate3P2023.bin /etc/secureboot/keys/db/
     sudo chattr -i /sys/firmware/efi/efivars/db-*
     sudo sbkeysync --verbose
     sudo chattr +i /sys/firmware/efi/efivars/db-*
    
Atualizar KEK
  1. Faça o download e extraia a atualização do certificado KEK:

     wget https://fwupd.org/downloads/1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab
     gcab --extract 1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab
    
  2. Verifique se o hash SHA-256 do arquivo kek2023update.bin extraído corresponde a 99e340f5cfd7aa3698f80237b51e460fc6367111876f39b4a9e1d1aa495d5eaf:

     sha256sum kek2023update.bin
    
  3. Sincronize a chave:

     sudo mkdir -p /etc/secureboot/keys/KEK
     sudo cp kek2023update.bin /etc/secureboot/keys/KEK/
     sudo chattr -i /sys/firmware/efi/efivars/KEK-*
     sudo sbkeysync --verbose
     sudo chattr +i /sys/firmware/efi/efivars/KEK-*
    

Red Hat Enterprise Linux (RHEL)

É possível atualizar os certificados da Inicialização segura no RHEL usando sbsigntools. As imagens do RHEL podem ter uma versão mais antiga do fwupd que não oferece suporte a atualizações de certificado UEFI de imediato.

Para atualizar as variáveis db e KEK usando o utilitário sbkeysync do pacote sbsigntools, faça o seguinte:

  1. Ative o repositório EPEL e instale sbsigntools e cabextract:

    sudo dnf install epel-release -y
    sudo dnf install sbsigntools cabextract -y
    
  2. Para atualizar a variável db, faça o seguinte:

    1. Faça o download do binário de atualização do banco de dados de assinaturas permitidas (db) da Microsoft:

      wget https://github.com/microsoft/secureboot_objects/raw/main/PostSignedObjects/Optional/DB/DBUpdate3P2023.bin
      
    2. Sincronize a chave:

      sudo mkdir -p /etc/secureboot/keys/db
      sudo cp DBUpdate3P2023.bin /etc/secureboot/keys/db/
      sudo chattr -i /sys/firmware/efi/efivars/db-*
      sudo sbkeysync --verbose
      sudo chattr +i /sys/firmware/efi/efivars/db-*
      
  3. Para atualizar a variável KEK, faça o seguinte:

    1. Faça o download e extraia a atualização do certificado KEK:

      wget https://fwupd.org/downloads/1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab
      cabextract -f 1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab
      
    2. Verifique se o hash SHA-256 do arquivo kek2023update.bin extraído corresponde a 99e340f5cfd7aa3698f80237b51e460fc6367111876f39b4a9e1d1aa495d5eaf:

      sha256sum kek2023update.bin
      
    3. Sincronize a chave:

      sudo mkdir -p /etc/secureboot/keys/KEK
      sudo cp kek2023update.bin /etc/secureboot/keys/KEK/
      sudo chattr -i /sys/firmware/efi/efivars/KEK-*
      sudo sbkeysync --verbose
      sudo chattr +i /sys/firmware/efi/efivars/KEK-*
      

SUSE Linux Enterprise Server (SLES)

É possível atualizar os certificados de inicialização segura no SLES ou no openSUSE usando sbsigntools ou efitools. As imagens do SLES podem ter uma versão mais antiga do fwupd ou não fornecer esse recurso.

Opção 1: atualizar usando sbsigntools

Para atualizar as variáveis db e KEK usando o utilitário sbkeysync do pacote sbsigntools, ative o SUSE Package Hub e instale sbsigntools e cabextract:

sudo SUSEConnect -p PackageHub/15.5/x86_64
sudo zypper install sbsigntools cabextract -y
Atualizar banco de dados
  1. Baixe o binário de atualização db da Microsoft:

     wget https://github.com/microsoft/secureboot_objects/raw/main/PostSignedObjects/Optional/DB/DBUpdate3P2023.bin
     ```
    
  2. Sincronize a chave:

     sudo mkdir -p /etc/secureboot/keys/db
     sudo cp DBUpdate3P2023.bin /etc/secureboot/keys/db/
     sudo chattr -i /sys/firmware/efi/efivars/db-*
     sudo sbkeysync --verbose
     sudo chattr +i /sys/firmware/efi/efivars/db-*
     ```
    
Atualizar KEK
  1. Faça o download e extraia a atualização do certificado KEK:

     wget https://fwupd.org/downloads/1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab
     cabextract -f 1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab
     ```
    
  2. Verifique se o hash SHA-256 do arquivo kek2023update.bin extraído corresponde a 99e340f5cfd7aa3698f80237b51e460fc6367111876f39b4a9e1d1aa495d5eaf:

     sha256sum kek2023update.bin
     ```
    
  3. Sincronize a chave:

     sudo mkdir -p /etc/secureboot/keys/KEK
     sudo cp kek2023update.bin /etc/secureboot/keys/KEK/
     sudo chattr -i /sys/firmware/efi/efivars/KEK-*
     sudo sbkeysync --verbose
     sudo chattr +i /sys/firmware/efi/efivars/KEK-*
     ```
    

Opção 2: atualizar usando efitools

Para atualizar as variáveis db e KEK usando o pacote efitools, faça o seguinte:

Atualizar banco de dados
  1. Faça o download do binário de atualização do banco de dados de assinaturas permitidas (db) da Microsoft:

     wget https://github.com/microsoft/secureboot_objects/raw/main/PostSignedObjects/Optional/DB/DBUpdate3P2023.bin
     ```
    
  2. Atualize a variável db:

     sudo chattr -i /sys/firmware/efi/efivars/db-*
     sudo efi-updatevar -a -f DBUpdate3P2023.bin db
     sudo chattr +i /sys/firmware/efi/efivars/db-*
     ```
    
Atualizar KEK
  1. Baixe o arquivo .cab que contém a atualização do certificado:

     wget https://fwupd.org/downloads/1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab
     ```
    
  2. Ative o SUSE Package Hub e instale o utilitário gcab:

     sudo SUSEConnect -p PackageHub/15.5/x86_64
     sudo zypper install gcab -y
     ```
    Note: Replace `15.5` with your SLES version if different.
    
  3. Extraia o arquivo e verifique se o hash SHA-256 do arquivo kek2023update.bin extraído corresponde a 99e340f5cfd7aa3698f80237b51e460fc6367111876f39b4a9e1d1aa495d5eaf:

     gcab --extract 1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab
     sha256sum kek2023update.bin
     ```
    
  4. Aplique a atualização:

     sudo chattr -i /sys/firmware/efi/efivars/KEK-*
     sudo efi-updatevar -a -f kek2023update.bin KEK
     sudo chattr +i /sys/firmware/efi/efivars/KEK-*
     ```
    

Atualizar o banco de dados e a KEK no Windows

Não é necessário aplicar essas atualizações de certificado se você não usa ou não planeja usar a inicialização segura nessa instância. Os sistemas operacionais Windows geralmente ignoram as tentativas de aplicar essas atualizações de certificado de inicialização segura se a inicialização segura não estiver ativada, porque a atualização é desnecessária.

Se você pretende usar a Inicialização segura mais tarde, primeiro ative-a na instância para atualizar os certificados.

Em instâncias do Windows, as configurações de registro e as tarefas programadas acionam atualizações em versões compatíveis:

  1. Confira se as instâncias do Windows têm as atualizações mensais mais recentes aplicadas.
  2. Como administrador no PowerShell, execute:

    Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot" -Name "AvailableUpdates" -Value 0x5944
    Start-ScheduledTask -TaskName "\Microsoft\Windows\PI\Secure-Boot-Update"
    
  3. Reinicie a instância para permitir operações em variáveis de firmware. Alguns ambientes exigem reinicializações duplas se os recursos de segurança de virtualização estiverem ativos.

Verificar a atualização

Depois de aplicar as atualizações usando fwupd, efitools, sbsigntool ou PowerShell, verifique se os certificados de 2023 estão presentes nas variáveis UEFI da sua instância.

Linux

Independente da ferramenta usada para aplicar a atualização, os certificados são gravados nas variáveis NVRAM UEFI da instância. É possível verificar diretamente usando mokutil (recomendado) ou efi-readvar:

  • Usando mokutil (recomendado): o mokutil é instalado por padrão na maioria das distribuições do Linux.

    sudo mokutil --kek | grep "KEK 2K CA 2023"
    sudo mokutil --db | grep "UEFI CA 2023"
    
  • Usando efi-readvar:se você tiver o efitools instalado, execute:

    sudo efi-readvar -v KEK | grep "KEK 2K CA 2023"
    sudo efi-readvar -v db | grep "UEFI CA 2023"
    

Se as variáveis KEK e db mostrarem os certificados de 2023, a atualização foi aplicada corretamente e nenhuma outra ação é necessária.

Windows

Em um prompt do PowerShell de administrador, execute:

# Check for Microsoft KEK 2K CA 2023
[System.Text.Encoding]::ASCII.GetString((Get-SecureBootUEFI KEK).bytes) -match 'Microsoft Corporation KEK 2K CA 2023'

# Check for UEFI CA 2023
[System.Text.Encoding]::ASCII.GetString((Get-SecureBootUEFI db).bytes) -match 'UEFI CA 2023'

# Confirm general Secure Boot enrollment state
Confirm-SecureBootUEFI

Resolver problemas de erros de atualização da KEK

Ao atualizar a variável KEK no Linux, a atualização db (DBUpdate3P2023.bin) pode ser concluída, mas a atualização KEK (kek2023update.bin) falha com um dos seguintes erros:

  • Ao usar o sbkeysync:

    Inserting key update /etc/secureboot/keys/KEK/kek2023update.bin into KEK
    Error writing key update: Invalid argument
    Error syncing keystore file /etc/secureboot/keys/KEK/kek2023update.bin
    
  • Ao usar o efi-updatevar:

    Cannot write to KEK, wrong filesystem permissions
    

Causa

Na inicialização segura do UEFI, as atualizações do db (DBUpdate3P2023.bin) são assinadas pela KEK CA 2011 da Microsoft Corporation, que é registrada por padrão na maioria dos sistemas de inicialização segura do UEFI. No entanto, as atualizações de KEK precisam ser assinadas pela chave da plataforma (PK) registrada no firmware do sistema. Quando o firmware rejeita a assinatura em kek2023update.bin ou impede a gravação na variável UEFI, o kernel do Linux retorna um erro.

Esse erro ocorre por um dos seguintes motivos:

  • A variável UEFI KEK ainda está marcada como imutável: o comando chattr -i não foi executado antes da tentativa de operação de gravação.
  • A instância usa um PK personalizado: o arquivo 1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab contém um binário kek2023update.bin assinado exclusivamente pelo PK padrão do Compute Engine. Se a instância do Compute Engine ou a imagem personalizada tiver um PK personalizado registrado, o firmware vai rejeitar kek2023update.bin.
  • O sistema não é uma instância do Compute Engine: se você executar esses comandos em um hardware físico ou em uma máquina virtual fora do Compute Engine, o PK do sistema vai pertencer ao fabricante do hardware ou ao fornecedor do hipervisor, e não ao Compute Engine. Isso fará com que o firmware rejeite kek2023update.bin.

Resolução

Para diagnosticar e resolver o erro, faça o seguinte:

  1. Remova o atributo imutável da variável KEK imediatamente antes de executar sbkeysync ou efi-updatevar:

    sudo chattr -i /sys/firmware/efi/efivars/KEK-*
    
  2. Inspecione o PK registrado na sua instância:

    sudo mokutil --pk
    
  3. Dependendo da saída de sudo mokutil --pk, faça uma das seguintes ações:

    • Se a instância usar um PK personalizado: assine o binário de atualização KEK com a chave privada correspondente ao PK personalizado ou recrie a instância de computação de um snapshot de disco usando uma imagem que dependa dos certificados de inicialização segura padrão do Compute Engine.
    • Se você estiver atualizando uma máquina que não é do Compute Engine: remova /etc/secureboot/keys/KEK/kek2023update.bin e receba a atualização KEK do fabricante do hardware ou do fornecedor da plataforma. Por exemplo, execute sudo fwupdmgr update se for compatível com seu fornecedor.