Como a autenticação pré-inicial com criptografia de disco funciona tecnicamente?

6

Estou procurando uma solução para criptografar totalmente minha unidade SSD de inicialização dupla (ainda é nova e vazia, e desejo configurar a criptografia antes de colocar qualquer coisa nela).

Embora haja muito caos na Web em relação a essa questão, parece que o TrueCrypt pode fazer isso, embora eu possa precisar de seu gerenciador de inicialização em um disco de inicialização extra. Pelo que estou lendo, algumas ferramentas do Linux (incluindo alguns GRUB2 modificados) também podem ser capazes de fazer isso.

No entanto, tenho minhas dúvidas, e nenhum artigo que li realmente foi profundo o suficiente para responder uma pergunta básica: se todo o disco é criptografado, e alguma ferramenta de pré-inicialização pede ao usuário uma chave para descriptografá-lo, não Isso significa que esta ferramenta tem que correr sob o sistema operacional que vai arrancar? Em outras palavras, existem ferramentas que deixam o SO inconsciente do fato de que os discos que ele vê são realmente criptografados?

Se não houver essa ferramenta, isso não significa que a ferramenta de descriptografia de alguma forma precisa passar informações de descriptografia para o sistema operacional na inicialização? Eu posso imaginar que isso seria difícil de cruzar plataformas.

    
por Hanno Fietz 16.06.2012 / 17:54

3 respostas

5

If the whole disk is encrypted, and some pre-boot tool asks the user for a key to decrypt it, doesn't that mean this tool has to run beneath the OS that's going to boot?

Sim, praticamente. Criptografia de disco cheia baseada em hardware faz isto: a criptografia é tratada inteiramente pelo dispositivo (disco rígido / flash) ou possivelmente em um controlador ao longo da cadeia que leva ao dispositivo físico (s), e não é "visível" para o sistema operacional.
Com isso, o sistema operacional faz I / O exatamente como se estivesse lidando com um dispositivo simples, não criptografado, a mágica acontece em hardware (e / ou firmware - "abaixo" do sistema operacional em qualquer caso).

If there's no such tool, doesn't that mean the decryption tool somehow has to pass decryption information to the OS on boot?

Haveria alguma forma de transferência de informações, se a criptografia não puder ser feita "abaixo" do sistema operacional (como acima, ou possivelmente usando técnicas de virtualização - mas você tem dois (ou mais) sistemas operacionais executando ). E sim, isso significa que o sistema operacional cruzado é difícil.
Você também precisará do código do boostrap (no mínimo, bootloader) para não ser criptografado se não tiver assistência de hardware / firmware.

O artigo da Wikipedia criptografia de disco tem mais informações sobre isso.

    
por 16.06.2012 / 18:43
4

Se você tem hardware (ou mais precisamente firmware, ou seja, BIOS) suporte para unidades criptografadas, então você pode criptografar o disco inteiro com o firmware. Há desvantagens em fazer isso: não há muitos computadores em torno dessa criptografia de disco de suporte e isso o prende a um firmware específico (ou pior, se o seu computador tiver um TPM e a chave de criptografia estiver em um TPM) esta placa-mãe em particular, a menos que você tenha feito o backup da chave de criptografia de armazenamento).

Se o sistema operacional fizer a criptografia, será necessário haver um pequeno espaço no disco que não esteja criptografado, onde as partes iniciais do sistema operacional serão armazenadas. Uma configuração comum com o Linux é ter uma partição separada de texto claro /boot e criptografar todas as outras partições. "Criptografia de disco completo" é um pouco inadequado: normalmente é usado para significar "criptografia de volume total", em que um volume é normalmente uma partição em vez de um disco. A criptografia de disco completo é quando você não criptografa todos os arquivos (ou pelo menos uma árvore de diretórios) separadamente.

No Linux, a ferramenta padrão para a criptografia de discos completos é dmcrypt . Está disponível em todas as principais distribuições e integrado em muitos instaladores.

    
por 17.06.2012 / 03:20
1

Sim, com o Grub2, a partição /boot pode ser criptografada por LUKs:

  • /boot como uma pasta em / em uma partição criptografada de LUKs
  • /boot em um LUKs criptografado em uma partição
  • E assim por diante, já que o Linux permite usar qualquer lista de bloqueio não ordenada como um dispositivo e tal pode ser a raiz (o initramfs é muito complexo para configurar para essa lista de bloqueio não classificada, mas pode ser feito, é uma maneira paranoica )

Eu também testei a maneira paranóica de criptografar /boot (quando é uma partição) com mais de uma camada:

  1. /dev/sda5 como a única partição lógica no disco (MBR com apenas duas partições estendidas /boot e / )
  2. Em /dev/sda5 i coloquei o nível 1 das LUKs, mapeado para /dev/mapper/level_0001
  3. Acima de /dev/mapper/level_0001 i coloco o nível 2 de LUKs, mapeado para /dev/mapper/level_0002
  4. Em /dev/mapper/level_0002 i coloquei o nível 3 de LUKs, mapeado para /dev/mapper/level_0003
  5. E assim por diante, Acima de /dev/mapper/level_#### i colocar nível de LUKs ####+1 , mapeado para /dev/mapper/level_####+1
  6. Em /dev/mapper/level_3436 i coloquei o nível de LUKs 3437, mapeado para /dev/mapper/level_3436
  7. Acima de /dev/mapper/level_3437 i coloquei um Ext4, montado como /boot
  8. Por cima de /boot i, instale o Grub2 depois de executar echo GRUB_CRYPTODISK_ENABLE=y >> /etc/default/grub
  9. Acima de /dev/sda6 i coloque / com apenas um nível de LUKs

No momento da inicialização, ele me pergunta 3437 senhas diferentes, eu uso mais de 32 caracteres em cada.

Era apenas uma prova de conceito, o tempo de inicialização é horrível.

Mas se eu fizer o mesmo em / , toda a velocidade de leitura / gravação do sistema também será horrível, mas pelo menos o Linux funcionará. Eu também tinha testado com mais de dez mil níveis; ele funciona parcialmente, a leitura / gravação cai para 10KiB / s (sim, realmente horrível) na minha CPU, a inicialização dura um dia inteiro e os aplicativos tendem a travar muito devido a tempos limite de disco ao fazer o acesso OnLine (navegar, etc) .

Portanto, colocar três ou quatro níveis de LUKs é aceitável, também dez, depende muito do seu CPU e do que você usa CPU versus DISK, 3D Render vs Enorme mistura de dados, etc.

PD: Você também pode usar diferentes funções hash e algoritmos em cada nível de LUKs e também pode usar --iter-time=# para aumentar o tempo de montagem (aviso: no Grub2 pré-inicialização que o tempo de montagem é três ou quatro vezes maior um valor em torno de dez mil causas perto de trinta segundos na pré-inicialização).

    
por 10.02.2017 / 09:59