Secure Boot y TPM
Introducción
Secure Boot y TPM son tecnologías de seguridad de hardware que protegen el proceso de arranque del sistema contra modificaciones maliciosas.
Secure Boot
Definición
Secure Boot es una funcionalidad de seguridad UEFI que impide la carga de software no firmado durante el arranque.
Funcionamiento
1. UEFI inicia
2. Verificación de la firma del bootloader
3. Bootloader verifica la firma del kernel
4. Kernel verifica los drivers
5. Arranque completo solo si todo está firmado
Base de datos de claves
| Base | Contenido | Rol |
|---|---|---|
| PK (Platform Key) | Clave del fabricante | Control total |
| KEK (Key Exchange Key) | Claves Microsoft/fabricante | Actualización de las DBs |
| db (Signature Database) | Firmas autorizadas | Lista blanca |
| dbx (Forbidden Signatures) | Firmas revocadas | Lista negra |
Verificación del estado
PowerShell:
# Verificar si Secure Boot está activo
Confirm-SecureBootUEFI
# Más detalles
Get-SecureBootPolicy -ErrorAction SilentlyContinue
Vía msinfo32:
Win+R > msinfo32 > Secure Boot State
Implicaciones de seguridad
Ventajas:
- Previene bootkits y rootkits de arranque
- Protege contra modificaciones del bootloader
- Integridad de la cadena de arranque
Limitaciones:
- Puede ser desactivado en el BIOS
- Algunos malwares avanzados pueden eludirlo
- No protege contra ataques post-arranque
TPM (Trusted Platform Module)
Definición
El TPM es un chip de seguridad dedicado que almacena claves criptográficas y mide la integridad del sistema.
Versiones
| Versión | Características |
|---|---|
| TPM 1.2 | SHA-1, RSA, generación antigua |
| TPM 2.0 | SHA-256, algoritmos modernos, requerido para Windows 11 |
Funcionalidades principales
- Almacenamiento de claves: Claves que nunca salen del TPM
- Medidas de integridad: PCR (Platform Configuration Registers)
- Atestación: Demostrar el estado del sistema
- Sellado: Vincular datos a un estado específico del sistema
PCR (Platform Configuration Registers)
Los PCR almacenan medidas de integridad:
| PCR | Contenido |
|---|---|
| 0-3 | Firmware UEFI |
| 4 | Bootloader (MBR/UEFI) |
| 5 | Configuración GPT |
| 6 | Eventos de plataforma |
| 7 | Secure Boot |
| 8-15 | Sistema operativo |
Verificación del TPM
PowerShell:
# Verificar la presencia del TPM
Get-Tpm
# Detalles completos
Get-TpmEndorsementKeyInfo
Get-TpmSupportedFeature
Vía tpm.msc:
Win+R > tpm.msc
Vía Device Manager:
devmgmt.msc > Security Devices > Trusted Platform Module
BitLocker y TPM
Integración
BitLocker utiliza el TPM para:
- Almacenar las claves de cifrado
- Sellar las claves al estado del sistema
- Desbloquear automáticamente al arrancar
Modos de BitLocker
| Modo | TPM | PIN | Clave USB | Seguridad |
|---|---|---|---|---|
| Solo TPM | Sí | No | No | Básica |
| TPM + PIN | Sí | Sí | No | Alta |
| TPM + USB | Sí | No | Sí | Alta |
| TPM + PIN + USB | Sí | Sí | Sí | Máxima |
Verificación de BitLocker
# Estado de BitLocker
Get-BitLockerVolume
# Detalles
manage-bde -status C:
Ataques y Evasiones
Cold Boot Attack
Principio: La RAM conserva los datos algunos segundos después de apagar el equipo.
Protección: TPM con medidas de integridad, cifrado de la RAM.
Evil Maid Attack
Principio: Modificación física del sistema durante la ausencia del usuario.
Protección: TPM detecta las modificaciones mediante los PCR.
DMA Attack
Principio: Acceso directo a la memoria mediante puertos externos (Thunderbolt, FireWire).
Protección: Kernel DMA Protection, desactivar los puertos no utilizados.
TPM Sniffing
Principio: Interceptar las comunicaciones entre CPU y TPM en el bus LPC.
Protección: fTPM (TPM por firmware integrado en la CPU).
Configuración Recomendada
Checklist de seguridad
# Script de verificación de seguridad de arranque
Write-Host "=== VERIFICACIÓN SEGURIDAD ARRANQUE ===" -ForegroundColor Cyan
# 1. Secure Boot
try {
$sb = Confirm-SecureBootUEFI
if ($sb) {
Write-Host "[OK] Secure Boot: Activo" -ForegroundColor Green
} else {
Write-Host "[!] Secure Boot: Inactivo" -ForegroundColor Red
}
} catch {
Write-Host "[?] Secure Boot: Imposible de verificar" -ForegroundColor Yellow
}
# 2. TPM
$tpm = Get-Tpm
if ($tpm.TpmPresent) {
Write-Host "[OK] TPM Presente: Sí" -ForegroundColor Green
Write-Host " Versión: $($tpm.ManufacturerVersion)"
if ($tpm.TpmReady) {
Write-Host "[OK] TPM Listo: Sí" -ForegroundColor Green
} else {
Write-Host "[!] TPM Listo: No" -ForegroundColor Yellow
}
} else {
Write-Host "[!] TPM: No detectado" -ForegroundColor Red
}
# 3. BitLocker
$bl = Get-BitLockerVolume -MountPoint "C:" -ErrorAction SilentlyContinue
if ($bl) {
if ($bl.ProtectionStatus -eq "On") {
Write-Host "[OK] BitLocker C: Activo" -ForegroundColor Green
} else {
Write-Host "[!] BitLocker C: Inactivo" -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 con Secure Boot" -ForegroundColor Green
} else {
Write-Host "[?] Modo BIOS o Secure Boot desactivado" -ForegroundColor Yellow
}
Recomendaciones
- Activar Secure Boot en el BIOS/UEFI
- Activar el TPM y configurarlo
- Utilizar BitLocker con TPM + PIN
- Actualizar el firmware UEFI regularmente
- Proteger el acceso físico a la máquina
Ejercicios
- Verifique si Secure Boot está activo en su VM
- Verifique la presencia y el estado del TPM
- Identifique los parámetros de seguridad en el BIOS/UEFI de su máquina
- Explique cómo trabajan juntos TPM y Secure Boot