Yubikey Autenticação de dois fatores Criptografia de disco completo via LUKS

20

Adquiri recentemente um Yubikey Neo - um pequeno dispositivo de autenticação de segundo fator de hardware. Ele é destinado principalmente para uso com One Time Passwords, e o emergente protocolo U2F - mas desde a versão 2 do Yubikey ele também suporta autenticação de desafio-resposta HMAC-SHA1. O HMAC-SHA1 combina uma chave secreta (armazenada no Yubikey) e combina isso com uma senha para gerar uma resposta.

Como posso combinar o Yubikey com minha configuração do Ubuntu FDE para usar o 2FA com meu disco rígido criptografado?

    
por seanlano 22.03.2015 / 12:13

1 resposta

22

Um grupo chamado PrivacyIdea criou um pequeno pacote para adicionar um HMAC-SHA1 rotina challenge-response para o 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 maior parte, Estou seguindo estas instruções , com alguns comentários adicionados. O processo é realmente muito fácil de fazer.

Eu testei isso no Ubuntu 14.04, 16.04 e 17.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. Também pode haver outros dispositivos de desafio-resposta HMAC-SHA1 de hardware com os quais isso funciona, mas não tenho conhecimento de nenhum que exista. Como sempre, certifique-se de ter um backup dos seus dados antes de prosseguir - não deve haver nenhum problema aqui, mas sempre há a chance de isso destruir tudo no seu computador. Estas instruções não têm garantia.

Atualização: Desde o Ubuntu 16.04, os pacotes necessários estão nos repositórios principais e não é necessário um PPA.

Adicione um comentário se você tiver dúvidas!

0. Pré-requisitos

Para que isso funcione, você já terá que ter a criptografia de disco total 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 frase-senha muito strong durante a instalação. Se a sua senha não está à altura, você deve mude para um melhor antes de continuar ( instruções mais detalhadas aqui ).

O método abaixo não substituirá senhas existentes, mas adicionará outra senha a um dos slots LUKS. Portanto, se você perder seu Yubikey, ainda poderá desbloquear seu computador usando qualquer senha existente - sugiro que o anote e o esconda em algum lugar seguro - você também precisará dele algumas vezes durante esse procedimento. Sua nova passphrase de desafio do Yubikey ainda deve ser razoavelmente strong, mas não precisa ser tão longa quanto a senha que você usou ao instalar o Ubuntu.

1. Adicione PrivacyIdea PPA 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 (e posterior)

Não há necessidade de um PPA, você pode instalar o pacote com:

sudo apt-get install yubikey-luks

2. Instalar o software Yubikey

Se você estiver usando a funcionalidade HMAC-SHA1 do Yubikey para outra coisa, você pode pular esta seção. Ele irá apagar qualquer configuração no segundo slot do Yubikey, então não execute esta etapa se você usar o HMAC-SHA1 para outros propósitos com este Yubikey.

Você precisará configurar seu Yubikey para trabalhar com o Ubuntu instalando o software necessário, do Yubico PPA no Ubuntu 14.04 ou no repositório principal do Ubuntu no 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 (e posterior)

sudo apt-get install yubikey-personalization

3. Inicialização Yubikey Slot 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. Mais uma vez, 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 essa configuração do LUKS quanto aos 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 mostrará a chave secreta usada pelo Yubikey no algoritmo HMAC-SHA1 para calcular a resposta quando receber um desafio.

4. Inscreva o Yubikey no espaço LUKS

Agora vamos editar a configuração do LUKS para anexar a resposta do Yubikey como uma das chaves de decodificação.

A partição que precisamos especificar depende de você estar usando 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 utilitário disks e confirmando o caminho da partição - ele deve ser sda3 ou sda5 .

Execute isso em um terminal:

sudo yubikey-luks-enroll -d /dev/sda3 -s 7

Isso gravará no slot 7 da configuração do LUKS, siga os prompts no instalador (eles variam um pouco dependendo da versão que você está executando).

Então está tudo pronto! Você deve ser capaz de reiniciar seu computador, e se o seu Yubikey estiver inserido, você pode 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 seu Yubikey, ainda poderá digitar sua frase-senha original (esperançosamente longa) para descriptografar o disco rígido e, em seguida, poderá seguir este procedimento novamente para registrar um novo Yubikey.

Alterando a frase secreta do desafio de criptografia

Alterar a senha em uma data posterior é bem simples, basta usar este comando para redefinir a chave secreta. Não é totalmente necessário redefinir a chave secreta, mas não vai doer. Tenha em mente 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

Então, semelhante ao Passo 4 , acima, para registrar uma nova senha no slot chave LUKS, exceto optar por limpar o Slot 7 com este comando:

sudo yubikey-luks-enroll -d /dev/sda3 -s 7 -c

Quando solicitado a Enter any remaining passphrase , use sua passphrase de backup - não a frase secreta do desafio Yubikey. Em seguida, insira uma frase-senha do desafio Yubikey new duas vezes e, finalmente, você precisará inserir a frase secreta de backup pela última vez.

Agora, sua frase-senha antiga do desafio Yubikey foi removida e somente a sua nova decifra o disco rígido. Sua frase de senha de backup anterior ainda será a mesma. Você pode alterar essa senha seguindo os links em Etapa 0 .

Nota sobre as 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 fazer com que seu Yubikey seja capaz de desbloquear seu disco rígido (ou encontrar sua senha inicial, que você está usando agora um backup). No entanto, é tecnicamente viável para um invasor descriptografar o disco rígido se ele souber sua frase-senha de desafio (por exemplo, "surfar com o ombro" enquanto você digita) e obter acesso ao seu Yubikey por pouco tempo. Usando a frase-senha do desafio, eles poderiam obter a resposta do Yubikey e armazená-la e usá-la para descriptografar o disco rígido a qualquer momento sem o Yubikey. Ou, novamente, se um invasor ou um malware souber sua frase secreta e puder executar o código em uma máquina conectada ao seu Yubikey, ela também poderá emitir o desafio e armazenar a resposta. Portanto, é extremamente importante estar atento ao inserir sua senha de desafio e garantir que você sempre tenha o Yubikey em um local seguro. Você também deve apenas conectá-lo a uma máquina em que você 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 escolha uma nova senha de desafio. Observe que, se um adversário tiver aprendido uma de suas senhas (a resposta HMAC-SHA1 do Yubikey ou seu backup), elas poderão fazer um backup da chave mestra do LUKS e usá-la para descriptografar seu disco rígido, mesmo se você muda a senha no futuro. A página man do cryptsetup explica isso, veja a seção luksHeaderBackup . Se você suspeitar que isso aconteceu, então você deve fazer um volume LUKS inteiramente novo para proteger seus dados.

    
por seanlano 22.03.2015 / 12:13