Existem esquemas de criptografia de disco completo que podem ser feitos sem um initramfs, em vez de obter a chave de criptografia do cmdline do kernel? Eu sei que isso parece inseguro, pois um invasor pode apenas ler os arquivos do bootloader; mas devido ao processo de inicialização deste dispositivo, tenho que inserir manualmente o cmdline a cada inicialização.
Eu já compilei meus próprios kernels para este dispositivo arm64, então as opções personalizadas de configuração do kernel não são um problema para mim.
Não.
Bem, normalmente o FDE tem que estar no hardware (não no Linux), de onde vem o kernel. Supondo que você tenha resolvido isso (talvez relacionado à sua sugestão de um processo de inicialização menos típico) ...
Não é possível montar o root fs de um dispositivo de bloco descriptografado por uma opção de linha de comando. Nem é possível montar o ecryptfs como root: você deve ter configurado o sistema de arquivos de apoio para o ecryptfs antes de poder montar o ecryptfs...
(Tecnicamente existe uma opção hacky
rootdelay=
. Mas não existe uma opção de inicialização para montar dois rootfs um em cima do outro, e não existe uma opção de inicialização para descriptografar um dispositivo de bloco com qualquer esquema).Normalmente
/proc/cmdline
pode ser lido por qualquer processo de espaço de usuário, então o Linux não encoraja colocar chaves secretas nele. Conciliar tal ideia com as necessidades de segurança implícitas no FDE é um desafio, mas talvez haja alguma circunstância artificial...Parece quase como se você quisesse passar ao kernel um blob de código de espaço do usuário, que pode construir a pilha de armazenamento da maneira que você escolher. Mesmo maneiras que os desenvolvedores do kernel não aprovariam :-). Você pode 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 ramfs inicial ou initramfs para abreviar. Boas notícias! Alguém já implementou esse recurso do kernel para você.
A pergunta não diz por que essa palavra de 9 letras não deve ser dita. Como você está fazendo uma compilação personalizada, você sempre pode corrigir o nome que quiser :-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).
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:
https://gist.github.com/packz/4077532
e você pode construir um busybox personalizado, que habilita 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.
SIM.
Agora é possível com um novo parâmetro do kernel "dm-mod.create=". Encontrei uma breve descrição para o gentoo aqui: https://forums.gentoo.org/viewtopic-t-1110764-highlight-.html