Primeiro, estou ciente de que uma pergunta semelhante já foi respondida . A resposta foi SIM, mas gostaria de uma segunda opinião, porque:
- A pergunta não especificou se era LUKS1 ou LUKS2
- Algo que li na Wikipédia me deixou com dúvidas.
Então, a questão é: tecnicamente , um cabeçalho desanexado LUKS2 pode ser usado para várias unidades? Sei que não é recomendado do ponto de vista de segurança (veja a resposta ao post mencionado anteriormente), mas aqui estou interessado apenas no lado técnico da questão.
O que me causa dúvidas é a afirmação da Wikipedia de que um cabeçalho LUKS2 contém, em sua área JSON, segmentos que descrevem áreas criptografadas no disco. O que significaria que um cabeçalho LUKS2 está vinculado a uma unidade específica e, portanto, não pode ser reutilizado para outras unidades:
Logo após o cabeçalho binário vem a área JSON, contendo a configuração dos objetos (configuração), keylots, resumos, segmentos (descreve áreas criptografadas no disco) e tokens contendo metadados extras.
Então, o que você acha ? Um mesmo cabeçalho desanexado LUKS2 pode ser usado para várias unidades? Existe talvez uma diferença entre várias unidades idênticas e várias unidades radicalmente diferentes (por exemplo, um HDD e um pendrive)?
Isso pode ser feito, mas é uma má ideia, em termos de segurança, usá-lo para dispositivos independentes. A resposta que você vinculou cobre isso muito bem. Portanto, eu só recomendaria isso se os dados estivessem relacionados, como imagens de backup ou instantâneos de um mesmo dispositivo LUKS. Ou talvez em um cenário de implantação onde
cryptsetup reencrypt
será feito na primeira inicialização para mudar o cabeçalho idêntico para um independente.Pode haver alguns problemas colaterais que impedem um dispositivo de funcionar com um determinado cabeçalho LUKS2:
Se o tamanho do seu setor for 4.096, o dispositivo deverá ter um tamanho múltiplo de 4.096 bytes. dm-crypt se recusará a trabalhar com um dispositivo que tenha um número ímpar de setores de 512 bytes (você deve usar um dispositivo de loop com sizelimit para descartar você mesmo o último setor parcial de 4K). Isso raramente é um problema, já que a maioria das coisas está alinhada com 4K hoje em dia (e você pode apenas usar setores de 512 bytes para LUKS).
Se você estiver usando recursos avançados como dm-integrity com LUKS2, o dispositivo que você abre com este cabeçalho requer inicialização. Caso contrário, teria todas as somas de verificação de integridade erradas e seria inutilizável. Portanto, um cabeçalho de integridade LUKS2+ só pode ser usado com dispositivos que foram inicializados com este cabeçalho.
Como você mencionou, também é possível que um cabeçalho LUKS2 descreva segmentos de dados específicos (deslocamentos, tamanhos), o que o bloquearia em dispositivos com um tamanho específico. Mas, na prática, ele está sendo usado apenas para criptografia de "todo o dispositivo" e o tamanho nem sequer é armazenado no cabeçalho.
Então, no luksDump, fica assim:
E você pode usar qualquer dispositivo com ele e o cryptsetup criptografará tudo para você.
Com um cabeçalho externo, o deslocamento pode ser tecnicamente definido como 0, embora isso tenha seu próprio conjunto de problemas - seu dispositivo não terá UUID/LABEL e dados aleatórios poderão ser identificados incorretamente como outros dados significativos.