Como um breve resumo das partes do cabeçalho LUKS que são relevantes aqui (não necessariamente pretendem ser 100% tecnicamente precisas):
-
Um cabeçalho LUKS contém "slots de chaves"
-
Cada slot chave contém a "chave mestra" para o contêiner
-
Cada slot de chave é criptografado independentemente usando uma chave derivada da frase secreta
-
Cada slot de chave tem suas próprias configurações de função de senha e derivação de chave associadas
Quando você cria um contêiner LUKS, uma chave mestra aleatória é gerada. Essa é a chave de criptografia usada para criptografar os dados na unidade. Você também recebe uma senha, que é usada para derivar uma chave de criptografia para o primeiro slot de chave. A chave de criptografia do slot da chave, por sua vez, é usada para proteger os dados no slot da chave, incluindo a chave mestra.
Até pouco tempo atrás, o LUKS não tinha uma maneira conveniente de alterar a chave mestra; foi essencialmente "queimado" no contêiner no momento da criação. Este era um problema, por exemplo, se a criação de contêiner acontecesse em uma situação de falta de entropia, como no início da instalação inicial do sistema. Hoje em dia (desde o cryptsetup 1.5), há cryptsetup-reencrypt que é fornecido por padrão em distribuições modernas , que entre outras coisas permitem que você altere a chave mestra do contêiner, criptografando novamente todos os dados no contêiner.
Um backup de cabeçalho LUKS contém todos os dados que o cabeçalho LUKS contém. Em outras palavras, a chave mestra, protegida por (possivelmente um conjunto de diferentes) frases-chave (s). É igualmente possível para um invasor atacar o contêiner LUKS através de um backup de cabeçalho ou uma cópia de um cabeçalho desanexado, como por meio do acesso direto ao contêiner.
Portanto, se um invasor tiver acesso ao cabeçalho LUKS de um contêiner, ele poderá atacar os slots principais quando desejar. Uma vez que eles conseguirem abrir um dos slots de chave, eles terão a chave que será usada quando o cabeçalho for despejado para descriptografar os dados no container. Se o cabeçalho ao qual o invasor tem acesso estiver protegido por uma senha fraca ou com configurações PBKDF fracas (particularmente a contagem de iterações), isso pode ser um problema.
Novamente, a menos que você criptografe novamente o contêiner usando uma chave diferente (você pode ficar com as mesmas configurações de cifra e cifra), esse invasor pode usar a chave mestra que agora conhece para acessar os dados no contêiner em algum momento posterior.
Para mitigar essa ameaça, não é suficiente alterar a frase secreta; você precisa re-criptografar o contêiner.
É claro que, se o invasor puder duplicar não apenas o cabeçalho LUKS, mas também o conteúdo do contêiner em si, e o invasor conseguir erguer um espaço-chave aberto, os dados serão imediatamente comprometidos.