LUKS (Linux Unified Key Setup) é o padrão para criptografia de disco no Linux. Ele opera sobre o dm-crypt e fornece um formato padronizado em disco, múltiplas senhas por volume e gerenciamento seguro de chaves. Seja para criptografar uma partição de dados em um servidor, proteger o disco de um laptop ou atender requisitos de conformidade para dados em repouso, LUKS é a ferramenta que todo administrador Linux deve conhecer.
Este guia cobre a criptografia de partições com LUKS2, gerenciamento de keyslots, configuração de desbloqueio automático na inicialização e recuperação de problemas comuns.
Pré-requisitos
- Sistema Linux com kernel 4.12+ (para suporte a LUKS2 e Argon2id)
cryptsetup2.0+ instalado- Acesso root ou sudo
- Uma partição ou disco disponível para criptografar (a formatação LUKS é destrutiva)
- Backup de quaisquer dados no dispositivo de destino
LUKS vs Outras Opções de Criptografia no Linux
Antes de começar, veja como o LUKS se compara às alternativas:
| Recurso | LUKS/dm-crypt | eCryptfs | fscrypt | VeraCrypt |
|---|---|---|---|---|
| Escopo | Partição/disco completo | Por diretório | Por diretório | Partição completa/container |
| Performance | Próxima ao nativo (AES-NI) | Mais lento (FS empilhado) | Próxima ao nativo | Próxima ao nativo |
| Gerenciamento de chaves | Até 32 keyslots | Wrapping por usuário | Chaves por diretório | Senha única |
| Criptografia de boot | Sim (com initramfs) | Não | Não | Sim (bootloader customizado) |
| Padrão no Linux | Sim (padrão) | Obsoleto | Apenas Ext4/F2FS | Multi-plataforma |
LUKS é a escolha certa para partições de servidor, criptografia de disco completo e qualquer cenário onde você precise de múltiplos métodos de desbloqueio (senha + arquivo de chave + chave de recuperação).
Criptografando uma Partição com LUKS2
Passo 1: Identificar Seu Dispositivo de Destino
lsblk -f
NAME FSTYPE SIZE MOUNTPOINT
sda 100G
├─sda1 ext4 50G /
├─sda2 swap 4G [SWAP]
└─sda3 46G
Neste exemplo, /dev/sda3 é a partição não formatada que vamos criptografar. Verifique duas vezes o nome do dispositivo — luksFormat vai destruir todos os dados nele.
Passo 2: Instalar o cryptsetup
No Debian/Ubuntu:
sudo apt update && sudo apt install -y cryptsetup
No RHEL/Fedora/AlmaLinux:
sudo dnf install -y cryptsetup
Verifique se a versão suporta LUKS2:
cryptsetup --version
Você precisa da versão 2.0.0 ou posterior. Qualquer distribuição moderna de 2018 em diante inclui isso.
Passo 3: Inicializar a Criptografia LUKS
sudo cryptsetup luksFormat --type luks2 /dev/sda3
Você verá um prompt de confirmação e será solicitado a definir uma senha:
WARNING: Device /dev/sda3 already contains a 'ext4' superblock signature.
WARNING!
========
This will overwrite data on /dev/sda3 irrevocably.
Are you sure? (Type 'yes' in capital letters): YES
Enter passphrase for /dev/sda3:
Verify passphrase:
Escolha uma senha forte. Este é seu método principal de desbloqueio. Se você perdê-la e não tiver um keyslot de backup, os dados serão perdidos — esse é o objetivo da criptografia.
O que luksFormat faz internamente:
- Grava um cabeçalho LUKS2 (16 MB por padrão) no início da partição
- Gera uma chave mestra aleatória (AES de 256 bits por padrão)
- Criptografa a chave mestra com sua senha usando derivação de chave Argon2id
- Armazena a chave mestra criptografada no keyslot 0
Passo 4: Abrir o Volume Criptografado
sudo cryptsetup open /dev/sda3 data_crypt
Isso solicita sua senha e depois cria /dev/mapper/data_crypt — um dispositivo de bloco virtual que criptografa/descriptografa transparentemente todas as operações de E/S.
Verifique se está aberto:
ls -la /dev/mapper/data_crypt
Passo 5: Criar um Sistema de Arquivos e Montar
sudo mkfs.ext4 /dev/mapper/data_crypt
sudo mkdir -p /mnt/encrypted
sudo mount /dev/mapper/data_crypt /mnt/encrypted
Teste:
echo "Encryption works" | sudo tee /mnt/encrypted/test.txt
cat /mnt/encrypted/test.txt
Os dados agora estão criptografados em repouso. Qualquer um que remover o disco sem a senha verá apenas bytes aleatórios.
Gerenciando Keyslots LUKS
LUKS2 suporta até 32 keyslots. Cada keyslot contém uma cópia criptografada independente da chave mestra. Isso significa que você pode ter múltiplas senhas, arquivos de chave ou chaves de recuperação — todas abrindo o mesmo volume.
Adicionar uma Senha de Backup
sudo cryptsetup luksAddKey /dev/sda3
Você vai inserir a senha existente primeiro, depois a nova. Ela vai para o próximo keyslot disponível.
Adicionar um Arquivo de Chave
Arquivos de chave permitem desbloqueio automatizado (scripts, sequências de boot) sem digitar uma senha:
sudo dd if=/dev/urandom of=/root/luks-keyfile bs=4096 count=1
sudo chmod 400 /root/luks-keyfile
sudo cryptsetup luksAddKey /dev/sda3 /root/luks-keyfile
Armazene arquivos de chave com segurança. Se o arquivo de chave estiver no mesmo disco não criptografado, isso anula o propósito. Mantenha-o em uma partição root criptografada separada ou em um token de hardware.
Listar Keyslots
sudo cryptsetup luksDump /dev/sda3 | grep -A5 "Keyslots:"
Para uma visão mais limpa:
sudo cryptsetup luksDump /dev/sda3 | grep "Key Slot"
Remover um Keyslot
sudo cryptsetup luksRemoveKey /dev/sda3
Insira a senha que você quer remover. Ou remova pelo número do slot:
sudo cryptsetup luksKillSlot /dev/sda3 1
Nunca remova todos os keyslots. Se você remover o último, o volume se torna permanentemente inacessível. O cryptsetup vai avisá-lo, mas não confie nisso.
Desbloqueio Automático do LUKS na Inicialização
Para partições de servidor que precisam ser montadas automaticamente, você tem duas opções:
Opção A: Arquivo de Chave na Partição Root
Isso funciona quando a partição root já está criptografada (ou é um disco de boot confiável) e você quer que partições secundárias desbloqueiem sem um prompt de senha.
- Crie o arquivo de chave (se você ainda não o fez):
sudo dd if=/dev/urandom of=/root/luks-keyfile bs=4096 count=1
sudo chmod 400 /root/luks-keyfile
sudo cryptsetup luksAddKey /dev/sda3 /root/luks-keyfile
- Obtenha o UUID da partição LUKS:
sudo blkid /dev/sda3
/dev/sda3: UUID="a1b2c3d4-e5f6-7890-abcd-ef1234567890" TYPE="crypto_LUKS"
- Adicione ao
/etc/crypttab:
echo 'data_crypt UUID=a1b2c3d4-e5f6-7890-abcd-ef1234567890 /root/luks-keyfile luks' | sudo tee -a /etc/crypttab
- Adicione ao
/etc/fstab:
echo '/dev/mapper/data_crypt /mnt/encrypted ext4 defaults 0 2' | sudo tee -a /etc/fstab
- Reconstrua o initramfs:
No Debian/Ubuntu:
sudo update-initramfs -u
No RHEL/Fedora:
sudo dracut -f
Opção B: Prompt de Senha na Inicialização
Se você quer a segurança de exigir uma senha a cada inicialização, adicione apenas isso ao /etc/crypttab:
echo 'data_crypt UUID=a1b2c3d4-e5f6-7890-abcd-ef1234567890 none luks' | sudo tee -a /etc/crypttab
A palavra-chave none instrui o sistema a solicitar uma senha durante a inicialização. Este é o padrão para partições root criptografadas.
Verificando a Saúde do Volume LUKS
Ver Detalhes do Volume
sudo cryptsetup luksDump /dev/sda3
Isso mostra a versão LUKS, cifra, hash, keyslots e tamanho do cabeçalho. Útil para verificar os parâmetros de criptografia.
Benchmark de Performance da Criptografia
cryptsetup benchmark
# Tests are approximate using memory only (no storage IO).
PBKDF2-sha256 1547453 iterations per second for 256-bit key
PBKDF2-sha512 987231 iterations per second for 256-bit key
Argon2id 8 iterations, 1048576 memory per thread for 256-bit key
# Algorithm | Key | Encryption | Decryption
aes-xts 256b 3512.0 MiB/s 3498.7 MiB/s
aes-xts 512b 2845.3 MiB/s 2830.1 MiB/s
Com aceleração de hardware AES-NI (presente em qualquer CPU x86 moderna), você verá throughput de 2-3 GB/s — a criptografia adiciona overhead negligenciável.
Fazer Backup do Cabeçalho LUKS
Se o cabeçalho LUKS estiver corrompido (setores ruins, sobrescrita acidental), você perde acesso ao volume inteiro. Sempre faça backup:
sudo cryptsetup luksHeaderBackup /dev/sda3 --header-backup-file /root/sda3-luks-header.bak
Armazene este backup fora do sistema — em um pen drive USB, compartilhamento de rede seguro ou cofre. Qualquer pessoa com o backup do cabeçalho e uma senha válida pode descriptografar o volume.
Restaure se necessário:
sudo cryptsetup luksHeaderRestore /dev/sda3 --header-backup-file /root/sda3-luks-header.bak
Fechando e Desmontando
Quando terminar, desmonte e feche o volume de forma limpa:
sudo umount /mnt/encrypted
sudo cryptsetup close data_crypt
A partição agora está bloqueada. Os dados em /dev/sda3 estão inacessíveis até que você abra novamente com a senha ou arquivo de chave correto.
Solução de Problemas
“Device /dev/sda3 is in use” ao tentar formatar: A partição está montada ou sendo usada por outro processo. Execute lsof /dev/sda3 ou fuser -mv /dev/sda3 para descobrir o que está usando.
Boot trava esperando senha: Se você adicionou um volume LUKS ao /etc/crypttab sem um arquivo de chave e o volume não é crítico, adicione nofail às opções: data_crypt UUID=... none luks,nofail. Isso permite que o boot continue após um timeout.
“No key available with this passphrase”: Senha errada ou o keyslot foi removido. Tente todas as senhas que você definiu. Se nenhuma funcionar, restaure de um backup do cabeçalho.
luksFormat lento em discos grandes: A formatação em si é rápida (apenas grava o cabeçalho). Mas se você quiser limpar a partição com segurança primeiro, execute sudo cryptsetup open --type plain /dev/sda3 wipe && sudo dd if=/dev/zero of=/dev/mapper/wipe bs=1M status=progress && sudo cryptsetup close wipe antes de formatar.
Não consigo redimensionar partição criptografada: Feche o volume primeiro, depois use cryptsetup resize após redimensionar a partição subjacente com parted ou fdisk.
Resumo
- LUKS2 é o padrão Linux para criptografia de disco — use
cryptsetup luksFormat --type luks2para criptografar qualquer partição - A criptografia é transparente: uma vez aberto com
cryptsetup open, todas as leituras e gravações são automaticamente criptografadas/descriptografadas - LUKS suporta até 32 keyslots — use múltiplas senhas e arquivos de chave para flexibilidade e recuperação
- Desbloqueio automático na inicialização via
/etc/crypttabcom um arquivo de chave armazenado em uma partição root criptografada - Sempre faça backup do cabeçalho LUKS com
luksHeaderBackup— corrupção do cabeçalho significa perda total de dados - O overhead de performance é negligenciável em CPUs modernas com aceleração de hardware AES-NI
- Você não pode criptografar uma partição in-place — sempre faça backup dos dados antes de executar
luksFormat
Automate SSL Certificates with Let’s Encrypt and Certbot | Configure UFW Firewall on Ubuntu Server | Restic Backups to Encrypted Cloud Storage