Criptografia de disco completo do Linux sem initramfs

1

Existe algum esquema de criptografia de disco completo que possa ser feito sem um initramfs, em vez de obter a chave de criptografia do cmdline do kernel? Eu sei que isso parece inseguro, já que um invasor pode ler os arquivos do gerenciador de inicialização; mas devido ao processo de inicialização desse dispositivo, eu tenho que inserir manualmente o cmdline a cada inicialização.

Eu já compilo meus próprios kernels para este dispositivo arm64, então opções customizadas de configuração do kernel não são um problema para mim.

    
por Billy 31.07.2018 / 22:03

1 resposta

2

Não.

Bem, normalmente F.D.E. tem que estar em hardware (não Linux), de onde vem o kernel. Supondo que você tenha resolvido isso (talvez relacionado à sua sugestão de um processo de inicialização menos comum) ...

Não é possível montar a raiz fs a partir de um dispositivo de bloco descriptografado por uma opção de linha de comando. Nem é possível montar o ecryptfs como a raiz: você deve configurar o sistema de arquivos de apoio para o ecryptfs antes de poder montar o ecryptfs ...

(Tecnicamente, existe uma opção de hacky rootdelay= . Mas não há uma opção de inicialização para montar dois rootfs um sobre o outro, e não há uma opção de inicialização para descriptografar um dispositivo de bloco com qualquer esquema).

Normalmente, /proc/cmdline pode ser lido por qualquer processo do userspace, portanto, o Linux não encoraja a colocação de chaves secretas nela. Conciliar tal ideia com as necessidades de segurança implícitas por F.D.E. é um desafio, mas talvez haja alguma circunstância inventada ...

Quase soa como se você quisesse passar ao kernel uma bolha de código do espaço do usuário, que pode construir a pilha de armazenamento da maneira que você escolher. Até mesmo formas que os desenvolvedores do kernel não aprovariam :-). Você poderia passar o blob no momento da inicialização. Ou você pode ter uma opção para construí-lo no kernel. Poderíamos chamá-lo de um inicial ramfs ou initramfs para breve. Boas notícias! Alguém já implementou esse recurso do kernel para você.

A pergunta não diz por que esta palavra de 9 letras não deve ser falada. Desde que você está fazendo uma compilação personalizada, você sempre pode corrigir qualquer nome que você gosta: -P.

(Esta é a opção mais genérica. Tecnicamente, para o seu caso, você pode usar uma partição não criptografada para manter o mesmo código, mas geralmente é menos conveniente).

Ele não precisa ser tão grande quanto um initramfs de distribuição. Por exemplo, uma pesquisa rápida encontrou isso como um ponto de partida plausível:

link

e você pode criar um busybox personalizado, que ativa apenas os módulos que o initramfs precisa. Depende de quão bem a ligação estática funciona, mas eu realmente espero que o initramfs seja menor que um kernel.

    
por 31.07.2018 / 23:21