Determine se a chave LUKS / dmcrypt está presente

5

Estou escrevendo um Chef LWRP para adicionar uma chave a um contêiner LUKS e estou tendo dificuldades em encontrar uma maneira de determinar se minha chave já existe ou não. cryptsetup luksAddKey terá todo o prazer em adicionar o mesmo arquivo de chaves várias vezes, então eu não posso simplesmente continuar chamando luksAddKey cada execução do Chef.

Até agora, o melhor que eu tenho é

cryptsetup luksDump /dev/xvdf1 --dump-master-key --key-file <thenewkey> > /dev/null

Parece que:

  1. uso intensivo de CPU
  2. não muito seguro

Alguém tem uma ideia melhor?

Obrigado!

    
por Aaron Brown 17.05.2013 / 22:46

1 resposta

4

Não vejo nenhuma chance de testar uma chave sem desbloquear o volume (pelo menos, referindo-se à carga da CPU). Mas quem não tem esses poucos segundos de CPU? Você tem muitos volumes de LUKS por sistema?

Como alternativa, você pode fazer isso:

Toda vez que você adiciona uma chave, você armazena um resumo do arquivo (que nem precisa ser um resumo seguro; mesmo o MD5 faria isso). Você cria um diretório /etc/my_luks_keyfiles . Para cada volume LUKS no sistema, você cria um subdiretório com o UUID ( cryptsetup luksUUID /dev/bla ). Se você adicionar uma chave, criará um arquivo com, por exemplo, o timestamp como nome e o resumo como conteúdo. Se você remover uma chave, você removerá o arquivo. Se você quiser saber se uma chave está ativa, compare todos os arquivos no diretório com o resumo (ou seja, não é necessário transferir o arquivo-chave).

E se houver mais ou menos arquivos do que os slots ativos, você sabe que estragou tudo ...

    
por 18.05.2013 / 03:23