Na sua aplicação, você quer proteger pelo menos:
- Os arquivos de mídia reais obtidos do servidor
- As chaves VPN que permitem que o Raspberry se conecte à VPN (caso contrário, um intruso só precisa extrair essa chave, conectar-se à VPN e obter os arquivos)
Você pode criptografar apenas essas coisas ou pode criptografar todo o sistema de arquivos raiz. Talvez você também faça o último enquanto estiver nisso.
Você pode usar luks para criptografar o sistema de arquivos raiz do Raspberry. Você pode encontrar instruções para configurar um sistema Debian (e presumivelmente o Mint) com raiz criptografada de muitas fontes. Basicamente, você pode fazê-lo a partir do instalador antes que o sistema seja instalado. Converter um sistema após o fato é muito mais problemático porque você precisa:
- inicializar um sistema alternativo
- monte o sistema de arquivos raiz de destino e copie seu conteúdo em outro lugar (implica em armazenamento extra)
- reformate o sistema de arquivos raiz de destino com luks
- copie tudo de volta
- Adicione a nova partição criptografada a
/etc/crypttab
, ajuste/etc/fstab
- Com
chroot
ou similar, regenere o initramfs do alvo para que ele tenha a capacidade de descriptografar a raiz na inicialização.
Um sistema de arquivos raiz separado e um sistema de arquivos /boot
é uma obrigação, portanto, você deve começar com um sistema que já o tenha, se você escolher a opção de conversão. A conversão de um sistema existente em raiz criptografada é um procedimento especializado. Eu encontrei rapidamente um tutorial mas eu não li então eu não posso garantir isso.
Se o Raspberry precisa inicializar sozinho, então você se depara com o problema de que tudo o que faz é inseguro: a unidade deve ser capaz de desbloquear sua própria descriptografia, o que significa que as chaves estarão acessíveis a um ladrão. Ainda assim, a atenuação que você propõe em seu comentário, que é separar fisicamente a chave em diferentes mídias, não é um mau compromisso se você tiver que seguir esse caminho.
Esta outra questão abrange como fazer com que o sistema acesse sua própria chave de descriptografia no momento da inicialização de maneira automatizada. Em vez de um keyscript
que apenas ecoa a fase como proposto nessa solução, você criaria um script curto que:
- monta a mídia fisicamente separada
- carrega e gera a frase secreta de um arquivo ali
- desmonta a mídia separada
Esse script seria executado dentro do initramfs. Não testado: esse script pode ser algo assim:
mkdir -p /mnt/key
mount /dev/disk/by-id/sd-card-whatever-the-device-name-is-part1 /mnt/key
cat /mnt/key/root-filesystem-key
umount /mnt/key
... e adicione uma opção keyscript
em /etc/crypttab
que nomeia esse script.