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 ...