Criptografia com Criptsetup/LUKS#
Este guia mostra como configurar volumes encriptados LUKS, para autenticar no arranque com Nitrokey Pro ou Nitrokey Storage.
Para fornecer algum fundo, cryptsetup-initramfs agora tem suporte para usar Cartões Smart Card OpenPGP como o Nitrokey Pro e Nitrokey Storage para desbloquear volumes encriptados em LUKS. Uma vez terminada a configuração, basta inserir o seu Nitrokey no arranque e introduzir o seu PIN de utilizador, em vez de digitar a sua frase-chave de encriptação do disco normal.
Estas instruções foram testadas no Ubuntu 20.04 e no Debian 10.
Aviso
O seguinte guia pode potencialmente bloqueá-lo para fora do seu computador. Você deve estar ciente desses riscos, e recomendamos que você use o script abaixo em um computador secundário, ou após uma cópia de segurança completa, pois você pode perder seus dados.
Requisitos#
Um computador Ubuntu ou Debian com pelo menos um volume encriptado em LUKS.
Veja a seção abaixo para determinar qual método é compatível com este guia.
A Nitrokey Pro 2 ou Nitrokey Storage 2 inicializado com chaves.
Questões Conhecidas#
Até agora, o script funciona apenas com volumes particionados manualmente, que são compostos de uma partição não criptografada /boot
, e uma raiz criptografada /
partição.
Por favor, não seleccione a encriptação automática do disco completo fornecida pelo sistema operativo que está a utilizar para este guia. Você enfrentará erros recorrentes quando o particionamento for feito automaticamente, usando a interface de instalação no Ubuntu e na Debian.
Instruções#
Instalar dependências
$ sudo apt install scdaemon opensc gnupg2
Criar diretório smartcard-luks
$ mkdir smartcard-luks && cd smartcard-luks
Baixe o smartcard-luks-script
$ wget https://raw.githubusercontent.com/daringer/smartcard-key-luks/main/smartcard-key-luks $ sudo chmod +x smartcard-key-luks
Exportar a chave pública
Para exportar a sua chave pública do chaveiro do GnuPG:
$ gpg2 --armor --export KeyID > pubkey.asc
Se você já carregou uma chave pública para um servidor de chaves (ou a guardou em outro lugar), você deve recuperá-la da maneira que mais se sentir confortável, e prosseguir para o passo 5.
Determine e verifique o nome correto do dispositivo LUKS para a sua partição raiz:
$ cat /etc/crypttab # if there is only one entry, you want the 1st column of this entry
Dica
Normalmente isto deve ser algo como nvme0n1p3_crypt (para NitroPC) ou sda3_crypt (para NitroPads). Você pode e deve verificar se o UUID referido dentro de /etc/crypttab é a partição designada verificando o link simbólico dentro de /dev/discos/by-uuid/.
Execute o script com o nome do dispositivo luks (por exemplo, nvme0n1p3_crypt) e pubkey.asc como argumentos.
$ sudo ./smartcard-key-luks nvme0n1p3_crypt pubkey.asc
Uma vez, você executa o script com a chave pública OpenPGP como argumento, ele automaticamente configura um novo segredo LUKS, codifica-o contra essa chave pública, e configura a crypttab, LUKS, initramfs, e GRUB.
Primeiro você será solicitado a User PIN`
Assim que desbloquear a Nitrokey, ser-lhe-á pedido o seu OLD passphrase`
. É a senha que você digitou para encriptar o seu volume na instalação.
Nota
Esta é uma alternativa de recurso no caso de perder a sua Nitrokey, ou se ela não estiver disponível. Até agora, não foi testado, e os utilizadores devem estar conscientes do risco de ficarem bloqueados fora do seu computador, se o método de fall-back não funcionar.
Uma vez inserida a frase-senha, o script termina a configuração em cerca de um minuto. Não interrompa o script, ou você pode ficar bloqueado fora do seu computador depois de reiniciar.
Feito!
A esta altura já deve poder reiniciar, e deve poder usar a sua Nitrokey para desbloquear a sua unidade encriptada.
Utilização#
Depois de reiniciar, você deve ser solicitado a obter o seu PIN de usuário
Introduza o seu PIN de utilizador para desbloquear a unidade
Outras Dicas#
Alterar a frase-senha#
Uma vez feita esta configuração, você não deve mais usar o utilitário (gnome) discos para mudar a senha (fallback). A maneira correta de fazer isso é chamar cryptsetup diretamente dessa forma:
$ sudo cryptsetup luksChangeKey /dev/nvme0n1p3
Com nvme0n1p3 sendo a partição para a qual você configurou as chaves.
Use Múltiplas Chaves#
É fácil usar múltiplas chaves de segurança (hardware) para que cada uma delas seja capaz de desbloquear a unidade LUKS independentemente. Basta exportar várias chaves públicas e também passar várias chaves para o script de configuração como este:
$ sudo ./smartcard-key-luks nvme0n1p3_crypt pubkey-1.asc pubkey-2.asc
Definir nome do portador do cartão#
Durante a entrada do PIN no arranque para descodificação da partição raiz do LUKS é apresentado ao utilizador um titular do cartão, para definir isto por favor use $ gpg --edit-card
e dentro do tipo de prompt admin<`
e name`
para definir o titular do cartão OpenPGP (Nitrokey Storage 2 ou Nitrokey Pro 2).
Substituir/Delete Keys#
Não é possível adicionar/remover chaves directamente. Portanto, você precisa apagar/remover a configuração antiga e executar novamente a configuração com a(s) chave(s) designada(s):
Remova o keyfile (caminho, se você usou o script acima) do luks-device (nvme0n1p3):
$ sudo cryptsetup luksRemoveKey /dev/nvme0n1p3 /etc/cryptsetup-initramfs/cryptkey.gpg
Retire o próprio ficheiro-chave:
$ sudo rm /etc/cryptsetup-initramfs/cryptkey.gpg
Reinicie a configuração acima.
Desbloqueio do LUKS2 com certificado X509#
SystemD suporta desbloquear uma partição LUKS2 usando um certificado X509, encontre uma ótima entrada no blog sobre como realizar isso em Blog pessoal de Vladimir Timofeenko