Um grupo chamado PrivacyIdea criou um pequeno pacote para adicionar uma rotina de resposta a desafios do HMAC-SHA1 no initramfs, o que significa que o Ubuntu pode consultar um desafio para passar para o Yubikey e usar a resposta para desbloquear o volume LUKS. Na maioria das vezes, estou seguindo estas instruções , com alguns comentários adicionais. O processo é realmente muito fácil de fazer.
Eu testei isso no Ubuntu 14.04, 16.04 e 18.04; usando um Yubikey Neo. Ele deve funcionar com qualquer Yubikey recente, com firmware 2.0+ e com qualquer versão do Ubuntu após 14.04. Eu também testei o Ubuntu 19.04 com um Yubikey 5C, algum trabalho adicional foi necessário, mas pode ser feito para funcionar. Também pode haver outros dispositivos de resposta a desafios HMAC-SHA1 de hardware com os quais isso funciona, mas não conheço nenhum que exista. Como sempre, verifique se você tem um backup dos seus dados antes de continuar - não deve haver nenhum problema aqui, mas sempre há a chance de isso destruir tudo o que está no seu computador. Estas instruções são fornecidas sem garantia.
Atualização: Desde o Ubuntu 16.04, os pacotes necessários estão nos repositórios principais e não é necessário PPA.
Adicione um comentário se você tiver dúvidas!
0. Pré-requisitos
Para que isso funcione, você já precisará ter a criptografia de disco completo do LUKS configurada e funcionando. Você pode fazer isso selecionando a opção apropriada ao instalar o Ubuntu. Para segurança máxima, você deve ter uma senha muito forte escolhida durante a instalação. Se a sua senha não estiver correta, altere-a para uma melhor antes de continuar ( instruções mais detalhadas aqui ).
O método abaixo não substitui nenhuma senha existente, mas adiciona outra senha a um dos slots LUKS. Portanto, se você perder o Yubikey, ainda poderá desbloquear o computador usando qualquer senha existente - sugiro que você anote e esconda-o em algum lugar seguro - você também precisará dele algumas vezes durante este procedimento. Sua nova senha de desafio do Yubikey ainda deve ser razoavelmente forte, mas não precisa ser tão longa quanto a senha usada durante a instalação do Ubuntu.
1. Adicione o PPA do PrivacyIdea e instale o pacote
No Ubuntu 14.04
Abra um terminal e execute o seguinte comando:
sudo add-apt-repository ppa:privacyidea/privacyidea
Pressione Enter quando solicitado e execute:
sudo apt-get update
Em seguida, instale o pacote com:
sudo apt-get install yubikey-luks
No Ubuntu 16.04, 18.04
Não há necessidade de um PPA, você pode instalar o pacote com:
sudo apt-get install yubikey-luks
No Ubuntu 19.04
Veja esta resposta para saber como criar o yubikey-luks
pacote a partir da fonte para o Ubuntu 19.04.
2. Instale o software Yubikey
Se você estiver usando a funcionalidade HMAC-SHA1 do Yubikey para outra coisa, poderá pular esta seção. Ele apagará qualquer configuração no segundo slot Yubikey, portanto , não execute esta etapa se você usar o HMAC-SHA1 para outros fins com este Yubikey.
Você precisará configurar o Yubikey para funcionar com o Ubuntu instalando o software necessário, a partir do PPA da Yubico no Ubuntu 14.04 ou do repositório principal do Ubuntu na 16.04 e posterior.
No Ubuntu 14.04
Se você não tiver feito isso antes, adicione o PPA e instale o pacote com:
sudo add-apt-repository ppa:yubico/stable
sudo apt-get update
sudo apt-get install yubikey-personalization
No Ubuntu 16.04, 18.04 (e posterior)
sudo apt-get install yubikey-personalization
3. Inicialize o slot Yubikey para HMAC-SHA1
Agora precisamos programar o segundo slot do Yubikey com uma configuração HMAC-SHA1. Isso apagará sua configuração de slot anterior, que está vazia por padrão. Novamente, se você estiver usando o HMAC-SHA1 para outra coisa , não emita este comando - ele apagará sua configuração. Você pode usar com segurança a mesma chave secreta dentro do Yubikey para esta configuração do LUKS e para seus outros usos. (Por exemplo, com outro computador usando LUKS + Yubikey).
ykpersonalize -2 -ochal-resp -ochal-hmac -ohmac-lt64 -oserial-api-visible
O terminal exibirá algumas informações sobre as alterações feitas. Você não precisa anotar isso, mas ele mostrará a chave secreta usada pelo Yubikey no algoritmo HMAC-SHA1 para calcular a resposta quando houver um desafio.
4. Inscreva o Yubikey no slot LUKS
Agora vamos editar a configuração LUKS para acrescentar a resposta do Yubikey como uma das chaves de descriptografia.
A partição que precisamos especificar depende se você está usando o BIOS ou UEFI para inicializar sua máquina. Para BIOS, o volume criptografado está em, /dev/sda5
por padrão, para UEFI, está em /dev/sda3
. Você pode verificar isso abrindo o disks
utilitário e confirmando o caminho da partição - ela deve ser sda3
ou sda5
. NOTA: Em computadores mais novos com discos NVMe, o caminho será semelhante /dev/nvme0n1p3
.
Execute isso em um terminal:
sudo yubikey-luks-enroll -d /dev/sda3 -s 7
Isso será gravado no slot 7 da configuração do LUKS, siga as instruções no instalador (elas variam um pouco dependendo da versão que você está executando).
Então você está pronto! Você poderá reiniciar o computador e, se o seu Yubikey estiver inserido, poderá digitar sua senha de desafio e usar o Yubikey como um segundo fator para desbloquear a partição LUKS e inicializar o sistema. Depois de descriptografar o disco rígido, você pode remover o Yubikey.
Se você perder o seu Yubikey, ainda poderá digitar sua senha secreta original (possivelmente muito longa) para descriptografar o disco rígido e, em seguida, poderá seguir este procedimento novamente para registrar um novo Yubikey.
Alterando a senha do desafio de criptografia
Alterar a senha posteriormente é bastante simples, basta usar este comando para redefinir a chave secreta. Não é totalmente necessário redefinir a chave secreta, mas não fará mal. Lembre-se de que isso destruirá a chave secreta anterior, não faça isso se você usar o HMAC-SHA1 para outra coisa com este Yubikey. (Por exemplo, com outro computador usando LUKS + Yubikey).
ykpersonalize -2 -ochal-resp -ochal-hmac -ohmac-lt64 -oserial-api-visible
Em seguida, semelhante à Etapa 4 , acima, para registrar uma nova senha no slot de chave LUKS, exceto opte por limpar o Slot 7 com este comando:
sudo yubikey-luks-enroll -d /dev/sda3 -s 7 -c
Quando solicitado Enter any remaining passphrase
, use sua senha de backup - não a senha de desafio do Yubikey. Em seguida, insira uma nova senha de desafio do Yubikey duas vezes e, finalmente, você precisará digitar a senha de backup uma última vez.
Agora, sua antiga senha do desafio Yubikey foi removida e apenas a nova senha descriptografará o disco rígido. Sua senha de backup anterior ainda será a mesma. Você pode alterar essa senha, seguindo os links na Etapa 0 .
Nota sobre implicações de segurança
Adicionar um Yubikey adicionará um certo nível de segurança ao seu sistema - alguém precisa conhecer a frase secreta do desafio e ter o seu Yubikey para desbloquear o disco rígido (ou encontrar a senha inicial, que você está usando agora como backup) . No entanto, é tecnicamente viável para um invasor descriptografar o disco rígido se ele souber a frase secreta do seu desafio (por exemplo, "navegando" enquanto você digita) e pode obter acesso ao seu Yubikey apenas por um curto período de tempo. Usando a senha de desafio, eles poderiam obter a resposta do Yubikey e armazená-lo e usá-lo para descriptografar o disco rígido a qualquer momento sem o Yubikey. Ou, novamente, se um invasor ou um malware conhecesse sua senha e pudesse executar o código em uma máquina conectada ao seu Yubikey, eles também poderiam emitir o desafio e armazenar a resposta. Portanto, ainda é extremamente importante estar vigilante ao inserir a senha do desafio e garantir que você sempre tenha o Yubikey em um local seguro. Você também deve sempre conectá-lo a uma máquina em que confie. Se você perder o controle do seu Yubikey e suspeitar que alguém o esteja usando para tentar aprender a chave de descriptografia, execute as etapas 2 e 3 novamente para redefinir a chave secreta dentro do Yubikey e escolher uma nova senha de desafio. Observe que se um adversário conseguiu aprender uma de suas frases secretas (a resposta HMAC-SHA1 do Yubikey ou seu backup), ele pode fazer um backup da chave mestra LUKS e usá-la para descriptografar seu disco rígido, mesmo que você muda a senha no futuro. e para garantir que você sempre tenha o Yubikey em um local seguro. Você também deve sempre conectá-lo a uma máquina em que confia. Se você perder o controle do seu Yubikey e suspeitar que alguém o esteja usando para tentar aprender a chave de descriptografia, execute as etapas 2 e 3 novamente para redefinir a chave secreta dentro do Yubikey e escolher uma nova senha de desafio. Observe que se um adversário conseguiu aprender uma de suas frases secretas (a resposta HMAC-SHA1 do Yubikey ou seu backup), ele pode fazer um backup da chave mestra LUKS e usá-la para descriptografar seu disco rígido, mesmo que você altera a senha no futuro. e para garantir que você sempre tenha o Yubikey em um local seguro. Você também deve sempre conectá-lo a uma máquina em que confia. Se você perder o controle do seu Yubikey e suspeitar que alguém o esteja usando para tentar aprender a chave de descriptografia, execute as etapas 2 e 3 novamente para redefinir a chave secreta dentro do Yubikey e escolher uma nova senha de desafio. Observe que se um adversário conseguiu aprender uma de suas frases secretas (a resposta HMAC-SHA1 do Yubikey ou seu backup), ele pode fazer um backup da chave mestra LUKS e usá-la para descriptografar seu disco rígido, mesmo que você altera a senha no futuro. execute as etapas 2 e 3 novamente para redefinir a chave secreta dentro do Yubikey e escolha uma nova senha de desafio. Observe que se um adversário conseguiu aprender uma de suas frases secretas (a resposta HMAC-SHA1 do Yubikey ou seu backup), ele pode fazer um backup da chave mestra LUKS e usá-la para descriptografar seu disco rígido, mesmo que você altera a senha no futuro. execute as etapas 2 e 3 novamente para redefinir a chave secreta dentro do Yubikey e escolha uma nova senha de desafio. Observe que se um adversário conseguiu aprender uma de suas frases secretas (a resposta HMAC-SHA1 do Yubikey ou seu backup), ele pode fazer um backup da chave mestra LUKS e usá-la para descriptografar seu disco rígido, mesmo que você altera a senha no futuro.A página de manual do cryptsetup explica isso, consulte a seção luksHeaderBackup . Se você suspeitar que isso aconteceu, deverá criar um volume LUKS totalmente novo para proteger seus dados.
Atualização para o Ubuntu 19.04:
Parece que a partir do Ubuntu 19.04 (e talvez 18.10, eu não tentei esse lançamento),
cryptsetup
mudou apenas o suficiente para quebrar comoyubikey-luks
costumava funcionar. Essa confirmação do repositório upstream parece implementar uma correção, mas o repositório original não parece ter sido atualizado desde outubro de 2018. Encontrei esse fork do repositório que possui a correção, além de alguns outros itens de arrumação - instalado e conseguiu criar um pacote que funciona em 19.04.Como não consegui encontrar uma compilação existente da bifurcação atualizada, o método para começar a
yubikey-luks
trabalhar envolve obter o código-fonte e criar o pacote DEB localmente e instalá-lo.Siga as etapas na minha resposta anterior , exceto substitua a etapa 1 pela abaixo:
1. Busque a fonte yubikey-luks, construa e instale o pacote
Instale dependências de compilação com:
Em seguida, baixe e extraia o arquivo de origem:
Crie o pacote com:
Em seguida, instale-o:
Continue seguindo o restante das etapas na minha primeira resposta.
Esperamos que até 19.10 a versão
yubikey-luks
no arquivo principal do Ubuntu possa ser atualizada para que a construção manual não seja necessária.Como bônus, a versão mais recente possui um arquivo de configuração, que pode ser encontrado em
/etc/ykluks.cfg
. A mensagem mostrada na inicialização pode ser configurada neste arquivo.fonte