Ao usar uma criptografia de disco completa, /boot
geralmente é necessária uma partição não criptografada para armazenar o bootloader e o ambiente de pré-inicialização.
Essas initcpio
imagens initramfs
precisam ser carregadas antes que a descriptografia aconteça, para que fiquem acessíveis ao invasor (empregada malvada), que pode substituí-las pelas suas próprias ou modificá-las sorrateiramente para substituir ssh
o servidor ou tty
console incluído e vazar a senha/chave de descriptografia para o mundo externo.
Qual seria a maneira ideal de prevenir (ou detectar) adulteração do conteúdo de /boot
? Rolando nossa própria chave de assinatura, assinando as /boot
imagens e esperando que não haja bugs nas implementações da placa-mãe do BIOS, inicialização segura e senhas de segurança que permitiriam que o invasor (evil maid) registrasse sua própria chave?
Assinando as imagens com PGP, anulando a memória e parando o sistema quando detectamos que o sistema foi desbloqueado e carregado por initcpio
/ initramfs
com assinatura incorreta?
Mesmo ferramentas TPM (como Clevis) só fornecem proteção quando o sistema já está configurado e em execução. Como alguém garantiria a confiança depois que o TPM foi limpo, como após a atualização do firmware?
Ou a única proteção confiável é fornecer a nossa /boot
externamente toda vez que queremos inicializar o sistema após um desligamento?
Usando a inicialização segura , somente um bootloader que foi assinado com uma chave na qual você confia explicitamente (e que pode estar oculta, irrevogavelmente, na memória que não pode ser lida para recuperar essa chave, no TPM ) pode inicializar.
Então, em algum momento você configura uma chave de assinatura, instala-a no TPM, diz "Eu confio neste bootloader. Ele não pode fazer coisas como instalar um keylogger antes de inicializar o Linux!", e assim assina o bootloader.
O bootloader pode então ser configurado para aceitar apenas um kernel Linux unificado e imagens initrd que você assinou.
A propósito, isso é algo bastante comum de se fazer — o Windows faz isso, e muitas distros Linux "corporativas" fazem isso por padrão ou podem fazer — incluindo Ubuntu, Fedora e Redhat.
Você não precisa. Uma atualização de firmware nunca limparia o TPM. O TPM é, por definição do que é, algo que não deve ser tocado por uma atualização de firmware; na verdade, ele deve ser imutável para o firmware (esse é o ponto!). É a raiz da confiança – você não pode modificá-lo. No momento em que você faz isso, você perde a confiança e precisa começar do zero.
Além do que descrevi acima, a inicialização medida é a ideia do seu sistema operacional ser realmente capaz de verificar se, sim, o bootloader de primeiro estágio passou na verificação de assinatura em relação a essa chave específica e, sim, o bootloader de segundo estágio ou a imagem do sistema operacional passou na verificação de assinatura em relação à chave e assim por diante.
Isso envolve um pouco mais de interação com o TPM. Matthew Garrett tem alguns vídeos instrucionais sobre o tópico.