Existem, do ponto de vista da criptoanálise, desvantagens de segurança ao reutilizar a mesma chave para diferentes volumes no modo simples dm-crypt com cypher aes-xts-plain64
?
# Example: Encrypt two volumes with the same key
cryptsetup --type plain --cipher=aes-xts-plain64 --key-size=256 --key-file mykey open /dev/sda myvol1
cryptsetup --type plain --cipher=aes-xts-plain64 --key-size=256 --key-file mykey open /dev/sdb myvol2
Estou considerando apenas casos práticos em que menos de, digamos, 100 volumes são criptografados com a mesma chave.
Bem, isso não é stackexchange de segurança e eu não sou um especialista em criptografia, mas em face das coisas:
Alice não criptografada:
Bobby não criptografado:
Ambos criptografados com a mesma chave (mestre), aes-xts-plain64:
Então - apenas pela aparência, um problema é que deslocamento e texto simples idênticos (para cada bloco de 16 bytes) resultam em texto cifrado idêntico. Se o texto simples for diferente, o mesmo será o texto cifrado. Em algumas situações, isso pode ser mais revelador do que revelar o espaço livre.
Outro problema é que você pode copiar o texto cifrado de uma unidade para outra e descriptografar para dados significativos, mas na unidade errada. Normalmente, se você mexer com texto cifrado, tudo o que você obtém quando descriptografa é lixo aleatório, mas reutilizar a chave mestra simplesmente fornecerá um texto cifrado mais válido para trabalhar.
Então, um exemplo completamente artificial, se você tem um usuário que não conhece a chave, mas de alguma forma tem acesso a um arquivo armazenado neste sistema e é capaz de copiar texto cifrado de uma unidade para outra - normalmente não é possível, mas vamos apenas supor é assim. Eles poderiam escrever um arquivo grande cheio de bobagens, descobrir onde esse arquivo está alocado no disco e copiar os dados das outras unidades. E, em seguida, veja outros dados de unidades em texto simples ao ler seu arquivo de volta.
Ao todo, é apenas uma dor de cabeça desnecessária quando é tão fácil usar uma chave exclusiva para cada disco. Mesmo se você derivar essa chave de uma chave mestra compartilhada, usando uma função de hash ou qualquer outra coisa. Embora também não haja razão para isso. Você pode simplesmente usar vários arquivos de chave ou ler várias chaves de um único arquivo usando as
--keyfile-offset
opções--keyfile-size
.O LUKS deve ajudá-lo a evitar várias armadilhas. A menos que você clone deliberadamente o cabeçalho, ele sempre usa uma chave mestra aleatória diferente para cada contêiner, mesmo se você usar a mesma senha para eles.
Também uma nota sobre sua escolha de cifra,
aes-xts-plain64
. Isso costumava ser chamado deaes-xts-plain
. E tudo estava bem até que surgiram dispositivos maiores que 2TiB... comaes-xts-plain
, o texto cifrado se repete a cada 2TiB, o que é basicamente o mesmo problema de reutilizar a mesma chave mestra.Isso foi corrigido com
aes-xts-plain64
, mas alguns blogs/wikis ainda recomendam o antigo, ou contêineres antigos são mantidos e cultivados junto com novos discos rígidos, então algumas pessoas acabam usando o errado até hoje...