secure-os.org
Todos os guiasQubes OSTailsWhonixLinux reforçadoEncriptação de discoModelo de ameaça
luks

LUKS: cifragem de disco completo no Linux — Guia completo (2026)

secure-os· Atualizado 12 de junho de 2026· 8 min de leitura #luks#encryption#linux#dm-crypt
Diagrama a mostrar a estrutura da partição LUKS2 com a camada dm-crypt e comandos cryptsetup num terminal escuro

O LUKS (Linux Unified Key Setup) é o formato padrão de cifragem de disco para Linux, construído sobre o módulo do kernel dm-crypt. É a camada de cifragem usada por predefinição quando seleciona «cifrar o disco» durante a instalação no Fedora, Ubuntu, Debian e na maioria das outras grandes distribuições. Se usa Linux e se importa com a proteção de dados, é quase certo que já está a usar o LUKS — ou deveria estar.

Este guia aborda o LUKS2, a versão atual do formato (introduzida no cryptsetup 2.0.0, em 2018). O LUKS1 ainda é suportado por compatibilidade, mas não tem a derivação de chave Argon2id do LUKS2, a maior flexibilidade do cabeçalho nem a robustez melhorada. As instalações novas devem usar sempre o LUKS2.


Como funciona o LUKS

O LUKS cria uma estrutura no disco composta por:

  1. Um cabeçalho que contém os metadados: o algoritmo de cifra, a configuração da função de derivação de chave (KDF) e até 32 ranhuras de chave. O cabeçalho ocupa os primeiros megabytes da partição LUKS.
  2. Ranhuras de chave: cada ranhura contém uma cópia cifrada de forma independente da chave-mestra, cifrada com uma chave derivada de uma palavra-passe do utilizador (ou de um ficheiro de chave). Isto permite que várias palavras-passe ou chaves desbloqueiem o mesmo volume — útil para uma chave de recuperação a par de uma palavra-passe diária.
  3. A área de dados principal: os dados efetivamente cifrados, que usam a chave-mestra através da camada de dispositivo de blocos dm-crypt.

A implicação crítica: o cabeçalho LUKS é o ponto único de falha para a recuperação de dados. Se o cabeçalho for corrompido ou sobrescrito, os dados cifrados ficam irrecuperáveis — independentemente de conhecer a palavra-passe. A cópia de segurança do cabeçalho não é opcional.


Criar um contentor LUKS2

Cifrar uma partição ou dispositivo de blocos

# Formatar uma partição como LUKS2 com AES-XTS-512 e KDF Argon2id
sudo cryptsetup luksFormat --type luks2 \
  --cipher aes-xts-plain64 \
  --key-size 512 \
  --hash sha256 \
  --pbkdf argon2id \
  --pbkdf-memory 1048576 \
  --pbkdf-time 5000 \
  /dev/sdX2

Ser-lhe-á pedida uma palavra-passe. A opção --pbkdf-memory 1048576 aloca 1 GB de memória para a derivação Argon2id, tornando os ataques de força bruta significativamente mais difíceis. A opção --pbkdf-time 5000 visa 5 segundos de tempo de desbloqueio, aumentando ainda mais o custo dos ataques de força bruta. Ajuste estes parâmetros consoante a memória que o seu ambiente de desbloqueio (initramfs) consegue fornecer.

Abrir (decifrar) e usar o contentor

# Abrir o contentor LUKS, criando um dispositivo /dev/mapper/cryptdata
sudo cryptsetup open /dev/sdX2 cryptdata

# Criar um sistema de ficheiros
sudo mkfs.ext4 /dev/mapper/cryptdata
# ou btrfs: sudo mkfs.btrfs /dev/mapper/cryptdata

# Montar
sudo mount /dev/mapper/cryptdata /mnt/data

Fechar o contentor

sudo umount /mnt/data
sudo cryptsetup close cryptdata

Crítico: cópia de segurança e restauro do cabeçalho

Um cadeado sobre o teclado de um portátil.

A cópia de segurança do cabeçalho LUKS é o passo operacional mais importante deste guia. Sem ela, a corrupção dos primeiros megabytes da sua partição cifrada significa a perda permanente de dados.

Criar uma cópia de segurança do cabeçalho

sudo cryptsetup luksHeaderBackup /dev/sdX2 \
  --header-backup-file luks-header-backup-$(date +%Y%m%d).bin

Guarde este ficheiro de cópia de segurança em pelo menos dois locais: uma cópia offline (unidade USB num local fisicamente separado) e uma cópia na nuvem com cifragem independente. Uma boa opção é guardá-lo num contentor VeraCrypt ou no Proton Drive — a cópia em si não contém os dados, mas qualquer pessoa com a cópia e a sua palavra-passe pode aceder ao volume.

Restaurar um cabeçalho danificado

sudo cryptsetup luksHeaderRestore /dev/sdX2 \
  --header-backup-file luks-header-backup-20260612.bin

Isto sobrescreve o cabeçalho atual com a cópia de segurança. Se a cópia for anterior à adição de uma ranhura de chave, essa ranhura desaparecerá após o restauro.


Gerir ranhuras de chave

O LUKS2 suporta até 32 ranhuras de chave por cabeçalho. Use isto para manter uma palavra-passe primária forte e uma chave de recuperação separada guardada offline.

Adicionar uma ranhura de chave

# Adicionar uma nova palavra-passe (pede primeiro a palavra-passe existente)
sudo cryptsetup luksAddKey /dev/sdX2

# Adicionar um ficheiro de chave
sudo cryptsetup luksAddKey /dev/sdX2 /path/to/keyfile.bin

Remover uma ranhura de chave

# Remover por palavra-passe (pergunta qual remover)
sudo cryptsetup luksRemoveKey /dev/sdX2

# Remover por número de ranhura (ranhura 1 neste exemplo)
sudo cryptsetup luksKillSlot /dev/sdX2 1

Ver as ranhuras de chave ativas

sudo cryptsetup luksDump /dev/sdX2 | grep -A3 "Keyslot"

Desbloqueio automático baseado em TPM

As instalações modernas em sistemas com um chip TPM2 podem configurar o desbloqueio automático sem palavra-passe no arranque, protegendo ainda assim a chave contra a remoção do disco. É adequado para computadores de secretária e servidores onde a introdução da palavra-passe no arranque é operacionalmente impraticável.

No Fedora e no Ubuntu com systemd-cryptenroll:

# Registar o TPM2 para a ranhura 0 (requer a palavra-passe existente)
sudo systemd-cryptenroll --tpm2-device=auto /dev/sdX2

# Opcionalmente, vincular a valores PCR (adiciona imposição de measured boot)
sudo systemd-cryptenroll --tpm2-device=auto \
  --tpm2-pcrs=0+7 \
  /dev/sdX2

O PCR 0 cobre as medições do firmware; o PCR 7 cobre o estado do Secure Boot. Vincular a estes PCR significa que o TPM só libertará a chave se o estado do firmware e do Secure Boot estiver inalterado relativamente ao momento do registo — protegendo contra um bootloader modificado.

Limitação: o desbloqueio automático por TPM protege contra a remoção do disco, mas não contra um atacante que arranque o sistema normalmente (teria de conhecer a palavra-passe de uma ranhura de chave separada, ou comprometer o bootloader sem alterar os valores PCR). Para um portátil com um modelo de ameaça de alto risco, um TPM protegido por PIN ou uma abordagem apenas com palavra-passe pode ser mais apropriado. Veja o guia de reforço do Linux para o enquadramento mais amplo do modelo de ameaça.


Testes de desempenho

Num SSD NVMe moderno com uma CPU que suporta as instruções de hardware AES-NI (todos os processadores x86-64 desde cerca de 2010), o AES-XTS-512 através do dm-crypt adiciona aproximadamente 2–8% de sobrecarga para cargas de trabalho sequenciais. A sobrecarga das E/S aleatórias de 4K pode ser maior — até 10–15% em algumas cargas de trabalho.

Teste o seu hardware específico:

sudo cryptsetup benchmark

Isto executa testes de temporização para todas as combinações de cifras disponíveis. Na maioria do hardware moderno, o AES-XTS-512 com chave de 512 bits (256 bits por chave XTS) atinge um débito sequencial de 3–8 GB/s — bem acima da capacidade da maioria dos dispositivos de armazenamento.

Implicação prática: num portátil moderno com uma unidade NVMe, não notará a sobrecarga do LUKS durante o uso normal do ambiente de trabalho. Poderá notá-la em cargas de trabalho que movem centenas de gigabytes de dados de forma sequencial (cópias de ficheiros grandes, edição de vídeo).


LUKS2 vs VeraCrypt vs BitLocker

FuncionalidadeLUKS2VeraCryptBitLocker
PlataformaApenas LinuxLinux/Win/macOSApenas Windows
Volumes ocultosNãoSimNão
Integração TPMSim (systemd-cryptenroll)NãoSim (nativa)
Ranhuras multi-chave32512Limitadas
Auditoria independenteSimSimParcial (Microsoft)
KDFArgon2id / PBKDF2PBKDF2 / Argon2PBKDF2

Para uma comparação detalhada do VeraCrypt e do LUKS, veja o guia do VeraCrypt. Para o panorama mais amplo da cifragem, incluindo a abordagem do Tails à cifragem de disco, veja a comparação Qubes vs Tails vs Whonix.


FAQ

P: Se me esquecer da minha palavra-passe LUKS, os dados ficam irrecuperáveis? R: Sim — é por concepção. Se nenhuma ranhura de chave tiver uma palavra-passe válida e não existir nenhum ficheiro de chave, a chave-mestra fica inacessível e os dados não podem ser decifrados. É por isso que manter uma ranhura para a chave de recuperação (com uma segunda palavra-passe forte, guardada offline) é essencial. Escreva a palavra-passe de recuperação em papel e guarde-a num local fisicamente seguro.

P: Como adiciono cifragem LUKS a uma partição existente não cifrada sem perda de dados? R: A ferramenta cryptsetup-reencrypt suporta a cifragem no local dos dados existentes. É estável a partir do cryptsetup 2.4.0, mas exige uma preparação cuidadosa: uma cópia de segurança completa antes de começar, uma alimentação ininterrupta durante o processo e espaço livre no fim da partição para o cabeçalho. Teste primeiro com dados não críticos.

P: A cifragem LUKS protege um sistema Linux em hibernação? R: Em parte. Se a partição de swap também estiver cifrada com LUKS (o que tem de estar, em separado ou como volume lógico dentro do contentor LUKS), então a imagem de hibernação no disco está cifrada. No entanto, a chave de decifragem tem de ser carregada no momento da retoma, o que normalmente exige a palavra-passe. Se o seu sistema retomar automaticamente a partir de um TPM sem palavra-passe, a imagem de hibernação está protegida contra o acesso offline ao disco, mas não contra um ataque com o sistema em execução. Veja o guia de reforço do Linux para a configuração da cifragem do swap.