Secure Boot e TPM
Introdução
Secure Boot e TPM são tecnologias de segurança de hardware que protegem o processo de inicialização do sistema contra modificações maliciosas.
Secure Boot
Definição
Secure Boot é uma funcionalidade de segurança UEFI que impede o carregamento de softwares não assinados durante a inicialização.
Funcionamento
1. UEFI inicia
2. Verificação da assinatura do bootloader
3. Bootloader verifica a assinatura do kernel
4. Kernel verifica os drivers
5. Inicialização completa somente se tudo estiver assinado
Banco de chaves
| Base | Conteúdo | Papel |
|---|---|---|
| PK (Platform Key) | Chave do fabricante | Controle total |
| KEK (Key Exchange Key) | Chaves Microsoft/fabricante | Atualização dos DBs |
| db (Signature Database) | Assinaturas autorizadas | Lista branca |
| dbx (Forbidden Signatures) | Assinaturas revogadas | Lista negra |
Verificação do status
PowerShell:
# Verificar se o Secure Boot está ativo
Confirm-SecureBootUEFI
# Mais detalhes
Get-SecureBootPolicy -ErrorAction SilentlyContinue
Via msinfo32:
Win+R > msinfo32 > Secure Boot State
Implicações de segurança
Vantagens:
- Impede bootkits e rootkits de inicialização
- Protege contra modificações do bootloader
- Integridade da cadeia de inicialização
Limitações:
- Pode ser desativado na BIOS
- Alguns malwares avançados podem contornar
- Não protege contra ataques pós-boot
TPM (Trusted Platform Module)
Definição
O TPM é um chip de segurança dedicado que armazena chaves criptográficas e mede a integridade do sistema.
Versões
| Versão | Características |
|---|---|
| TPM 1.2 | SHA-1, RSA, geração antiga |
| TPM 2.0 | SHA-256, algoritmos modernos, requisito para Windows 11 |
Funcionalidades principais
- Armazenamento de chaves: Chaves que nunca deixam o TPM
- Medições de integridade: PCR (Platform Configuration Registers)
- Atestação: Provar o estado do sistema
- Selagem: Vincular dados a um estado específico do sistema
PCR (Platform Configuration Registers)
Os PCR armazenam medições de integridade:
| PCR | Conteúdo |
|---|---|
| 0-3 | Firmware UEFI |
| 4 | Bootloader (MBR/UEFI) |
| 5 | Configuração GPT |
| 6 | Eventos de plataforma |
| 7 | Secure Boot |
| 8-15 | Sistema operacional |
Verificação do TPM
PowerShell:
# Verificar a presença do TPM
Get-Tpm
# Detalhes completos
Get-TpmEndorsementKeyInfo
Get-TpmSupportedFeature
Via tpm.msc:
Win+R > tpm.msc
Via Gerenciador de Dispositivos:
devmgmt.msc > Dispositivos de Segurança > Trusted Platform Module
BitLocker e TPM
Integração
O BitLocker utiliza o TPM para:
- Armazenar as chaves de criptografia
- Selar as chaves ao estado do sistema
- Desbloquear automaticamente na inicialização
Modos do BitLocker
| Modo | TPM | PIN | Chave USB | Segurança |
|---|---|---|---|---|
| TPM apenas | Sim | Não | Não | Básica |
| TPM + PIN | Sim | Sim | Não | Alta |
| TPM + USB | Sim | Não | Sim | Alta |
| TPM + PIN + USB | Sim | Sim | Sim | Máxima |
Verificação do BitLocker
# Status do BitLocker
Get-BitLockerVolume
# Detalhes
manage-bde -status C:
Ataques e Contornos
Cold Boot Attack
Princípio: A RAM mantém dados por alguns segundos após o desligamento.
Proteção: TPM com medições de integridade, criptografia da RAM.
Evil Maid Attack
Princípio: Modificação física do sistema durante a ausência do usuário.
Proteção: TPM detecta modificações via PCR.
DMA Attack
Princípio: Acesso direto à memória via portas externas (Thunderbolt, FireWire).
Proteção: Kernel DMA Protection, desativar portas não utilizadas.
TPM Sniffing
Princípio: Interceptar comunicações entre CPU e TPM no barramento LPC.
Proteção: fTPM (TPM de firmware integrado ao CPU).
Configuração Recomendada
Checklist de segurança
# Script de verificação de segurança do boot
Write-Host "=== VERIFICAÇÃO DE SEGURANÇA DO BOOT ===" -ForegroundColor Cyan
# 1. Secure Boot
try {
$sb = Confirm-SecureBootUEFI
if ($sb) {
Write-Host "[OK] Secure Boot: Ativo" -ForegroundColor Green
} else {
Write-Host "[!] Secure Boot: Inativo" -ForegroundColor Red
}
} catch {
Write-Host "[?] Secure Boot: Impossível verificar" -ForegroundColor Yellow
}
# 2. TPM
$tpm = Get-Tpm
if ($tpm.TpmPresent) {
Write-Host "[OK] TPM Presente: Sim" -ForegroundColor Green
Write-Host " Versão: $($tpm.ManufacturerVersion)"
if ($tpm.TpmReady) {
Write-Host "[OK] TPM Pronto: Sim" -ForegroundColor Green
} else {
Write-Host "[!] TPM Pronto: Não" -ForegroundColor Yellow
}
} else {
Write-Host "[!] TPM: Não detectado" -ForegroundColor Red
}
# 3. BitLocker
$bl = Get-BitLockerVolume -MountPoint "C:" -ErrorAction SilentlyContinue
if ($bl) {
if ($bl.ProtectionStatus -eq "On") {
Write-Host "[OK] BitLocker C: Ativo" -ForegroundColor Green
} else {
Write-Host "[!] BitLocker C: Inativo" -ForegroundColor Yellow
}
}
# 4. Modo UEFI
$firmware = Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\State" -ErrorAction SilentlyContinue
if ($firmware.UEFISecureBootEnabled -eq 1) {
Write-Host "[OK] Modo UEFI com Secure Boot" -ForegroundColor Green
} else {
Write-Host "[?] Modo BIOS ou Secure Boot desativado" -ForegroundColor Yellow
}
Recomendações
- Ativar o Secure Boot no BIOS/UEFI
- Ativar o TPM e configurá-lo
- Usar BitLocker com TPM + PIN
- Atualizar o firmware UEFI regularmente
- Proteger o acesso físico à máquina
Exercícios
- Verifique se o Secure Boot está ativo na sua VM
- Verifique a presença e o status do TPM
- Identifique os parâmetros de segurança no BIOS/UEFI da sua máquina
- Explique como TPM e Secure Boot trabalham juntos