Manuais para a linha de comandos

Man » Manual do cryptsetup online - documentação online detalhada para a página de manual do cryptsetup

🌍
cryptsetup - utilitário para configurar e gerenciar dispositivos de armazenamento criptografados

SINTAXE

cryptsetup <ação> [<opções>] <argumentos da ação>

DESCRIÇÃO

Cryptsetup é um utilitário para configurar e gerenciar criptografia de disco completo em dispositivos de armazenamento. Ele pode criptografar dispositivos de bloco (como discos rígidos ou partições) e contêineres (imagens de disco armazenadas como arquivos).

Quando você desbloqueia um volume criptografado, o cryptsetup cria um novo mapeamento de dispositivo que os aplicativos podem acessar como qualquer dispositivo de armazenamento regular. O trabalho real de criptografia e descriptografia é executado de forma transparente pelo driver dm-crypt do kernel.

Cryptsetup funciona com dois tipos principais de volumes: volumes criptografados simples e volumes LUKS (Linux Unified Key Setup). Os volumes simples fornecem criptografia básica, enquanto os volumes LUKS incluem um cabeçalho de metadados que habilita recursos avançados, como vários slots de chave e gerenciamento de chaves. Além disso, o LUKS pode ser usado para gerenciar a criptografia baseada em hardware em unidades de armazenamento compatíveis com OPAL.

Cryptsetup também fornece suporte limitado para volumes criados por outros sistemas de criptografia, incluindo loop-AES, TrueCrypt, VeraCrypt, BitLocker e FileVault2.

Para obter mais informações sobre uma ação específica do cryptsetup, consulte cryptsetup-(8), onde é o nome da ação do cryptsetup.

Os dispositivos Cryptsetup podem ser ativados durante a inicialização por meio de crypttab(5), que faz parte do systemd(1) ou outros scripts de inicialização do sistema.

AÇÕES BÁSICAS

As seguintes são ações válidas para todos os tipos de dispositivos suportados.

ABRIR

open <dispositivo> <nome> --type <tipo_de_dispositivo>

Abre (cria um mapeamento com) com base no dispositivo . Consulte cryptsetup-open(8).

FECHAR

close <nome>

Remove o mapeamento existente e remove a chave da memória do kernel. Consulte cryptsetup-close(8).

STATUS

status <nome>

Relata o status do mapeamento . Consulte cryptsetup-status(8).

REDIZIONAR

resize <nome>

Redimensiona um mapeamento ativo . Consulte cryptsetup-resize(8).

ATUALIZAR

refresh <nome>

Atualiza os parâmetros do mapeamento ativo . Consulte cryptsetup-refresh(8).

RECRIPTAGRAFAR

reencrypt <dispositivo> ou --active-name <nome> [<novo_nome>]

Executa a recriptografia do dispositivo LUKS. Consulte cryptsetup-reencrypt(8).

MODO SIMPLES

O dm-crypt simples criptografa o dispositivo setor por setor com um único hash não salgado da senha. Nenhum verificação é executada e nenhum metadado é usado. Não há operação de formatação. Quando o dispositivo bruto é mapeado (aberto), as operações de dispositivo normais podem ser usadas no dispositivo mapeado, incluindo a criação do sistema de arquivos. Os dispositivos mapeados geralmente residem em /dev/mapper/.


As seguintes são ações válidas para o tipo de dispositivo simples:

ABRIR

open --type plain <dispositivo> <nome>
create <nome> <dispositivo> (sintaxe OBSOLETA)

Abre (cria um mapeamento com) suportado pelo dispositivo . Consulte cryptsetup-open(8).

EXTENSÃO LUKS

LUKS, o Linux Unified Key Setup, é um padrão para criptografia de disco. Ele adiciona um
cabeçalho padronizado no início do dispositivo, uma área de slots de chaves logo atrás do cabeçalho e a área de dados em massa logo atrás. O conjunto todo é chamado de 'contêiner LUKS'. O dispositivo em que um contêiner LUKS reside é chamado de 'dispositivo LUKS'. Para a maioria dos propósitos, ambos os termos podem ser usados de forma intercambiável.

LUKS pode gerenciar várias frases-senha que podem ser revogadas ou alteradas individualmente. Cada frase-senha usa um slot de chave individual contendo uma chave de volume para criptografia de dados. Os slots de chaves podem ser removidos com segurança da mídia persistente devido ao uso de faixas anti-forenses. As frases-senha são protegidas contra ataques de força bruta pelo Password-Based Key Derivation Function (PBKDF). Uma frase-senha armazenada em um arquivo é chamada de arquivo de chave. A única diferença entre uma frase-senha e um arquivo de chave é que um arquivo de chave pode conter dados binários. Ambos são processados da mesma forma.

LUKS versão 1 (ou LUKS1) é o formato de metadados original, enquanto LUKS2 é uma nova versão que
permite extensões adicionais, como algoritmos PBKDF diferentes ou criptografia autenticada. Você pode
formatar o dispositivo com uma versão LUKS específica com --type luks1 ou --type luks2 no
comando luksFormat. Normalmente, você não precisa especificar nenhuma versão, pois ela é reconhecida
automaticamente. O formato padrão é LUKS2.

O parâmetro também pode ser especificado por um UUID LUKS no formato UUID=.

O cabeçalho LUKS pode ser destacado dos dados (armazenado separadamente). Para especificar um cabeçalho destacado, o parâmetro --header pode ser usado em todos os comandos LUKS e sempre tem precedência sobre o parâmetro posicional .

As seguintes são ações LUKS válidas:

FORMATAR

luksFormat <dispositivo> [<arquivo de chave>]

Inicializa uma partição LUKS e define a frase-senha inicial (para o slot de chave 0). Consulte cryptsetup-luksFormat(8).

ABRIR

open --type luks <dispositivo> <nome>
luksOpen <dispositivo> <nome> (sintaxe antiga)

Abre o dispositivo LUKS e configura um mapeamento após a verificação bem-sucedida da frase-senha fornecida. Consulte cryptsetup-open(8).

SUSPENDER

luksSuspend <nome>

Suspende um dispositivo ativo (todas as operações de E/S serão bloqueadas e os acessos ao dispositivo aguardarão indefinidamente) e remove a chave de criptografia da memória do kernel. Consulte cryptsetup-luksSuspend(8).

RETOMAR

luksResume <nome>

Retoma um dispositivo suspenso e restaura a chave de criptografia. Consulte cryptsetup-luksResume(8).

ADICIONAR CHAVE

luksAddKey <dispositivo> [<arquivo de chave com a nova chave>]

Adiciona uma nova frase-senha usando uma frase-senha existente. Consulte cryptsetup-luksAddKey(8).

REMOVER CHAVE

luksRemoveKey <dispositivo> [<arquivo de chave com a frase-senha a ser removida>]

Remove a frase-senha fornecida do dispositivo LUKS. Consulte cryptsetup-luksRemoveKey(8).

ALTERAR CHAVE

luksChangeKey <dispositivo> [<novo arquivo de chave>]

Altera uma frase-senha existente. Consulte cryptsetup-luksChangeKey(8).

CONVERTER CHAVE

luksConvertKey <dispositivo>

Converte um slot de chaves LUKS2 existente para novos parâmetros PBKDF. Consulte cryptsetup-luksConvertKey(8).

ELIMINAR SLOT

luksKillSlot <dispositivo> <número>

Limpa o slot de chaves com o do dispositivo LUKS. Consulte cryptsetup-luksKillSlot(8).

APAGAR

erase <dispositivo>
luksErase <dispositivo> (sintaxe antiga)

Apaga todos os slots de chaves e torna o contêiner LUKS permanentemente inacessível. Consulte cryptsetup-erase(8).

UUID

luksUUID <dispositivo>

Imprime ou define o UUID de um dispositivo LUKS. Consulte cryptsetup-luksUUID(8).

É LUKS?

isLuks <dispositivo>

Retorna verdadeiro, se for um dispositivo LUKS, falso caso contrário. Consulte cryptsetup-isLuks(8).

DUMP

luksDump <dispositivo>

Faz o despejo das informações do cabeçalho de um dispositivo LUKS. Consulte cryptsetup-luksDump(8).

BACKUP DO CABEÇALHO

luksHeaderBackup <dispositivo> --header-backup-file <arquivo>

Armazena um backup binário do cabeçalho LUKS e da área do slot de chaves. Consulte cryptsetup-luksHeaderBackup(8).

RESTAURAR CABEÇALHO

luksHeaderRestore <dispositivo> --header-backup-file <arquivo>

Restaura um backup binário do cabeçalho LUKS e da área do slot de chaves do arquivo especificado. Consulte cryptsetup-luksHeaderRestore(8).

TOKEN

token <adicionar|remover|importar|exportar> <dispositivo>

Manipula objetos de token usados para obter frases-senha. Consulte cryptsetup-token(8).

CONVERTER

convert <dispositivo> --type <formato>

Converte o dispositivo entre os formatos LUKS1 e LUKS2 (se possível). Consulte cryptsetup-convert(8).

CONFIG

config <dispositivo>

Define opções de configuração permanentes (armazena no cabeçalho LUKS). Consulte cryptsetup-config(8).

EXTENSÃO LOOP-AES

O cryptsetup oferece suporte ao mapeamento de uma partição criptografada loop-AES usando um modo de compatibilidade.

ABRIR

open --type loopaes <dispositivo> <nome> --key-file <arquivo de chave>
loopaesOpen <dispositivo> <nome> --key-file <arquivo de chave> (sintaxe antiga)

Abre o dispositivo loop-AES e configura um mapeamento . Consulte cryptsetup-open(8).

Consulte também a seção 7 das Perguntas frequentes e loop-AES [http://loop-aes.sourceforge.net] para obter mais informações sobre loop-AES.

EXTENSÃO TCRYPT (COMPATÍVEL COM TRUECRYPT E VERACRYPT)

O cryptsetup oferece suporte ao mapeamento de partições criptografadas TrueCrypt, tcplay ou VeraCrypt usando uma API nativa do kernel Linux. O formato do cabeçalho e a alteração do cabeçalho TCRYPT não são suportados; o cryptsetup nunca altera o cabeçalho TCRYPT no dispositivo.

A extensão TCRYPT requer que a API de espaço de usuário de criptografia do kernel esteja disponível. Se você estiver configurando o kernel, habilite "Interface de espaço de usuário para algoritmos de cifra de chave simétrica" na seção "API de criptografia" (opção .config CRYPTO_USER_API_SKCIPHER).

Como o cabeçalho TCRYPT é criptografado, você sempre deve fornecer uma frase-senha e arquivos de chave válidos.


O cryptsetup deve reconhecer todas as variantes de cabeçalho, exceto as cadeias de criptografia legadas que usam o modo de criptografia LRW com um bloco de criptografia de 64 bits (ou seja, o Blowfish no modo LRW não é reconhecido; esta é uma limitação da API de criptografia do kernel).

O VeraCrypt é uma extensão do TrueCrypt com uma contagem de iterações aumentada, portanto, o desbloqueio pode levar bastante tempo.

Para abrir um dispositivo VeraCrypt com um valor personalizado do Multiplicador de Iterações Pessoais (PIM), use a opção --veracrypt-pim PIM para especificar diretamente o PIM na linha de comando ou use --veracrypt-query-pim para ser solicitado a inserir o PIM.

O valor do PIM afeta o número de iterações aplicadas durante a derivação de chave. Consulte [https://veracrypt.io/en/Personal%20Iterations%20Multiplier%20(PIM).html] para obter informações mais detalhadas.

Se você precisar desativar o suporte ao dispositivo VeraCrypt, use a opção --disable-veracrypt.

A ativação com tcryptOpen é suportada apenas para cadeias de criptografia que usam os modos de criptografia LRW ou XTS.

O comando tcryptDump deve funcionar para todos os dispositivos TCRYPT reconhecidos e não requer privilégios de superusuário.

Para mapear o dispositivo do sistema (dispositivo com o carregador de inicialização onde todo o sistema criptografado reside), use a opção --tcrypt-system. Leia as informações específicas na seção da opção --tcrypt-system em cryptsetup-tcryptOpen(8), pois mapear um dispositivo criptografado do sistema é complicado.

Para usar um cabeçalho oculto (e mapear o dispositivo oculto, se disponível), use a opção --tcrypt-hidden.

Para usar explicitamente o cabeçalho de backup (secundário), use a opção --tcrypt-backup.

Não há proteção para um volume oculto se o volume externo estiver montado. Isso ocorre porque, se houvesse alguma proteção, seria necessário algum metadado descrevendo o que proteger no volume externo, e o volume oculto se tornaria detectável.

ABRIR

open --type tcrypt <dispositivo> <nome>
tcryptOpen_ <dispositivo> <nome> (sintaxe antiga)

Abre o dispositivo TCRYPT (compatível com TrueCrypt) e configura um mapeamento . Veja cryptsetup-open(8).

DESCARREGAR

tcryptDump <dispositivo>

Descarrega as informações do cabeçalho de um dispositivo TCRYPT. Veja cryptsetup-tcryptDump(8).

Consulte também as páginas TrueCrypt [https://en.wikipedia.org/wiki/TrueCrypt] e VeraCrypt [https://en.wikipedia.org/wiki/VeraCrypt] para obter mais informações.

Observe que o cryptsetup não usa o código TrueCrypt ou VeraCrypt; relate todos os problemas relacionados a esta extensão de compatibilidade ao projeto cryptsetup.

EXTENSÃO BITLK (COMPATÍVEL COM BITLOCKER DO WINDOWS)

O cryptsetup suporta o mapeamento de partições criptografadas BitLocker e BitLocker to Go usando uma API de criptografia nativa do kernel Linux. O formato do cabeçalho e as alterações no cabeçalho BITLK não são suportados; o cryptsetup nunca altera o cabeçalho BITLK no dispositivo.

A extensão BITLK requer que a API de criptografia do espaço do usuário do kernel esteja disponível (para obter detalhes, consulte a seção TCRYPT).

O cryptsetup deve reconhecer todas as variantes de cabeçalho BITLK, exceto o cabeçalho legado usado nos sistemas Windows Vista e dispositivos BitLocker parcialmente descriptografados. A ativação de dispositivos legados criptografados no modo CBC requer pelo menos uma versão do kernel Linux 5.3 e, para dispositivos que usam o difusor Elephant, a versão 5.6.

O comando bitlkDump deve funcionar para todos os dispositivos BITLK reconhecidos e não requer privilégio de superusuário.

Para desbloquear com o comando open, uma senha, uma frase de recuperação ou uma chave de inicialização deve ser fornecida.

Além disso, o desbloqueio usando a tecla de volume é suportado. Você deve fornecer a Chave de Volume Completa do BitLocker (FVEK) usando a opção --volume-key-file. A chave deve ser descriptografada e não conter o cabeçalho (apenas 128/256/512 bits de dados da chave, dependendo da cifra e do modo usados).

Outros métodos de desbloqueio (TPM, SmartCard) não são suportados.

OPEN

open --type bitlk <device> <name>
bitlkOpen <device> <name> (sintaxe antiga)

Abre o dispositivo BITLK (compatível com BitLocker) <device> e configura um mapeamento <name>. Veja cryptsetup-open(8).

DUMP

bitlkDump <device>

Faz o dump das informações do cabeçalho de um dispositivo BITLK. Veja cryptsetup-bitlkDump(8).

Observe que o cryptsetup não usa nenhum código do Windows BitLocker; por favor, relate todos os problemas relacionados a esta extensão de compatibilidade ao projeto cryptsetup.

EXTENSÃO FVAULT2 (COMPATÍVEL COM FILEVAULT2 DA APPLE MACOS)

O cryptsetup suporta o mapeamento do FileVault2 (criptografia de disco completo FileVault2) da Apple para o sistema operacional macOS usando uma API nativa do kernel Linux.

O cryptsetup suporta apenas o FileVault2 baseado em Core Storage e no sistema de arquivos HFS+ (introduzido no macOS X 10.7 Lion). Ele NÃO suporta a nova versão do FileVault baseada no sistema de arquivos APFS usado nas versões recentes do macOS.

A formatação do cabeçalho e as alterações no cabeçalho FVAULT2 não são suportadas; o cryptsetup nunca altera o cabeçalho FVAULT2 no dispositivo.

A extensão FVAULT2 requer que a API de criptografia do espaço de usuário do kernel esteja disponível (para obter detalhes, veja a seção TCRYPT) e um driver de kernel para o sistema de arquivos HFS+ (hfsplus).

O cryptsetup deve reconhecer a configuração básica para unidades portáteis.

O comando fvault2Dump deve funcionar para todos os dispositivos FVAULT2 reconhecidos e não requer privilégio de superusuário.

Para desbloquear com o comando open, uma senha deve ser fornecida. Outros métodos de desbloqueio não são suportados.

OPEN

open --type fvault2 <device> <name>
fvault2Open <device> <name> (sintaxe antiga)

Abre o dispositivo FVAULT2 (compatível com FileVault2) <device> (geralmente a segunda partição do dispositivo) e configura um mapeamento <name>. Veja cryptsetup-open(8).

EXTENSÃO OPAL SED (UNIDADE DE ENCRIPTOGRAFIA AUTOMÁTICA)

O cryptsetup suporta o uso de criptografia de hardware nativa em unidades que fornecem uma interface OPAL, tanto aninhada com dm-crypt quanto de forma autônoma. As frases-senha, os tokens e os metadados são armazenados usando o formato de cabeçalho LUKS2 e, portanto, são compatíveis com qualquer software ou sistema que use o LUKS2 (por exemplo, tokens).

O suporte OPAL requer pelo menos a versão 6.4 do kernel. O redimensionamento de dispositivos não é suportado.

A opção --hw-opal pode ser especificada para OPAL + dm-crypt, e --hw-opal-only pode ser especificada para usar apenas OPAL, sem uma camada dm-crypt.


A abertura, o fechamento e o registro de tokens funcionam da mesma forma que com LUKS2 e dm-crypt. Os novos parâmetros são necessários apenas ao formatar; os metadados LUKS2 garantirão que a configuração correta seja realizada ao abrir ou fechar.

Se nenhum rótulo de subsistema for especificado, ele será definido automaticamente como HW-OPAL para que fique imediatamente claro quando um dispositivo usa OPAL.

FORMATAR

luksFormat --type luks2 --hw-opal <dispositivo> [<arquivo de chave>]

Especifique também --hw-opal-only em vez de --hw-opal para evitar a camada dm-crypt. Além da senha usual, uma senha de administrador deverá ser especificada ao formatar a primeira partição da unidade e deverá ser fornecida novamente ao formatar qualquer outra partição até que uma redefinição de fábrica seja realizada.

APAGAR

erase <dispositivo>

Apaga com segurança uma partição ou dispositivo. Requer senha de administrador. Especifique também --hw-opal-factory-reset para uma redefinição de fábrica COMPLETA da unidade, usando o PSID da unidade (geralmente impresso no rótulo) em vez da senha de administrador.

O PSID deve ser inserido sem traços, espaços ou sublinhados.

AVISO: Uma redefinição de fábrica fará com que TODOS os dados no dispositivo sejam perdidos, independentemente da partição em que for executada, se houver, e independentemente de qualquer backup do cabeçalho LUKS2.

AÇÕES DIVERSAS

REPARAR

repair <dispositivo>

Tenta reparar os metadados do dispositivo, se possível. Atualmente, suportado apenas para o tipo de dispositivo LUKS. Veja cryptsetup-repair(8).

TESTE DE DESEMPENHO

benchmark <opções>

Realiza testes de desempenho, cifras e KDF (função de derivação de chave). Veja cryptsetup-benchmark(8).

MODO SIMPLES OU LUKS?

A menos que você entenda bem o contexto criptográfico, use LUKS. Com o modo simples, há vários erros possíveis que diminuem muito a segurança. Embora o LUKS não possa corrigi-los todos, ele pode atenuar o impacto de muitos deles.

AVISOS

Muitas informações úteis sobre os riscos de usar armazenamento criptografado, sobre como lidar com problemas e sobre aspectos de segurança podem ser encontradas no FAQ do Cryptsetup. Leia-o. No entanto, alguns riscos merecem ser mencionados aqui.

Backup: Mídias de armazenamento falham. A criptografia não tem influência nisso. O backup é obrigatório para dados criptografados, se os dados tiverem algum valor. Veja o FAQ do Cryptsetup para obter conselhos sobre como fazer backup de um volume criptografado.

Codificação de caracteres: se você inserir uma senha com símbolos especiais, a senha pode mudar dependendo da codificação de caracteres. As configurações do teclado também podem ser alteradas, o que pode dificultar ou impossibilitar a entrada. Por exemplo, alternar de alguma variante ASCII de 8 bits para UTF-8 pode levar a uma codificação binária diferente e, portanto, a uma senha diferente vista pelo cryptsetup, mesmo que o que você veja no terminal seja exatamente o mesmo. Portanto, é altamente recomendável selecionar caracteres de senha apenas de 7 bits ASCII, pois a codificação para 7 bits ASCII permanece a mesma para todas as variantes ASCII e UTF-8.

Cabeçalho LUKS: se o cabeçalho de um volume LUKS for danificado, todos os dados serão perdidos permanentemente, a menos que você tenha um backup do cabeçalho. Se um slot de chaves for danificado, ele só poderá ser restaurado a partir de um backup do cabeçalho ou se outro slot de chaves ativo com uma senha conhecida não estiver danificado. Esse risco é o resultado de um compromisso entre segurança e proteção, pois o LUKS é projetado para apagamento rápido e seguro, simplesmente sobrescrevendo a área do cabeçalho e do slot de chaves.


Partições previamente usadas: Se uma partição foi previamente usada, é uma boa ideia remover as assinaturas do sistema de arquivos, dados, etc., antes de criar um contêiner LUKS ou dm-crypt simples. Para uma remoção rápida das assinaturas do sistema de arquivos, use wipefs(8) com a opção --all. Observe que isso não remove os dados; apenas invalida as assinaturas de formato conhecidas. Para uma limpeza completa, sobrescreva toda a partição antes de criar um contêiner. Se você não souber como fazer isso, o FAQ do cryptsetup descreve várias opções.

EXEMPLOS

Exemplo 1: Criar contêiner LUKS 2 no dispositivo de bloco /dev/sdX. sudo cryptsetup --type luks2 luksFormat /dev/sdX

Exemplo 2: Adicionar uma passphrase adicional ao slot de chave 5. sudo cryptsetup luksAddKey --key-slot 5 /dev/sdX

Exemplo 3: Criar um backup do cabeçalho LUKS e salvá-lo em um arquivo. sudo cryptsetup luksHeaderBackup /dev/sdX --header-backup-file /var/tmp/NameOfBackupFile

Exemplo 4: Abrir o contêiner LUKS em /dev/sdX e mapeá-lo para sdX_crypt. sudo cryptsetup open /dev/sdX sdX_crypt

AVISO: O comando no exemplo 5 apagará todos os slots de chave.

Você não poderá mais usar seu contêiner LUKS, a menos que tenha um backup para restaurar.

Exemplo 5: Apagar todos os slots de chave em /dev/sdX. sudo cryptsetup erase /dev/sdX

Exemplo 6: Restaurar o cabeçalho LUKS a partir do arquivo de backup. sudo cryptsetup luksHeaderRestore /dev/sdX --header-backup-file /var/tmp/NameOfBackupFile

CÓDIGOS DE RETORNO

Cryptsetup retorna 0 em caso de sucesso e um valor diferente de zero em caso de erro.

Os códigos de erro são: 1 parâmetros incorretos, 2 sem permissão (passphrase incorreta), 3 falta de memória, 4 dispositivo incorreto especificado, 5 dispositivo já existe ou está em uso.

NOTAS

Processamento de passphrase para o modo PLAIN

Observe que nenhum hash iterado ou "sal" é feito no modo plain. Se o hash for feito, é um hash direto único. Isso significa que passphrases de baixa entropia são fáceis de atacar no modo plain.

A partir do terminal: A passphrase é lida até o primeiro caractere de nova linha, ou seja, '\n'. A entrada sem o caractere de nova linha é processada com o hash padrão ou o hash especificado com --hash. O resultado do hash será truncado para o tamanho da chave do cifragem usada ou o tamanho especificado com -s.

A partir de stdin: A leitura continuará até uma nova linha (ou até que o tamanho máximo de entrada seja atingido), com a nova linha final sendo removida. O tamanho máximo de entrada é definido pelo mesmo padrão compilado do tamanho máximo do arquivo de chave e pode ser substituído usando a opção --keyfile-size.

Os dados lidos serão hashados com o hash padrão ou o hash especificado com --hash. O resultado do hash será truncado para o tamanho da chave do cifragem usada ou o tamanho especificado com -s.


Observe que, se --key-file=- for usado para ler a chave da entrada padrão, os caracteres de nova linha finais não serão removidos da entrada.

Se "plain" for usado como argumento para --hash, os dados de entrada não serão hashados. Em vez disso, eles serão preenchidos com zeros (se menores que o tamanho da chave) ou truncados (se maiores que o tamanho da chave) e usados diretamente como a chave binária. Isso é útil para especificar diretamente uma chave binária. Nenhum aviso será dado se a quantidade de dados lida da entrada padrão for menor que o tamanho da chave.

De um arquivo de chave: Ele será truncado para o tamanho da chave do cipher usado ou o tamanho fornecido por -s e usado diretamente como uma chave binária.

O argumento --hash está sendo ignorado. A opção --hash só pode ser usada para entrada de entrada padrão no modo "plain".

Se o arquivo de chave for menor que a chave, o cryptsetup será encerrado com um erro. O tamanho máximo da entrada é definido pelo mesmo padrão compilado como o tamanho máximo do arquivo de chave e pode ser substituído usando a opção --keyfile-size.

Processamento de frase-senha para LUKS

Do terminal: A frase-senha é lida até o primeiro caractere de nova linha e, em seguida, processada por PBKDF2 sem o caractere de nova linha.

Da entrada padrão: LUKS lerá frases-senha da entrada padrão até o primeiro caractere de nova linha ou o comprimento máximo do arquivo de chave compilado. Se --keyfile-size for fornecido, ele será ignorado.

Do arquivo de chave: O arquivo de chave completo é lido até o tamanho máximo compilado. Os caracteres de nova linha não terminam a entrada. A opção --keyfile-size pode ser usada para limitar o que é lido.

LUKS usa a Função de Derivação de Chave Baseada em Senha (PBKDF) para proteger contra ataques de força bruta e para fornecer alguma proteção para frases-senha de baixa entropia (veja as Perguntas Frequentes do cryptsetup). LUKS1 suporta apenas o algoritmo PBKDF2, enquanto LUKS2 também suporta o Argon2, que é mais intensivo em memória. Os PBKDFs são configurados com custos: por quanto tempo a iteração deve ser executada (custo de CPU ou contagem de iterações), quanta memória é usada (custo de memória) e quantos processos paralelos são usados (custo paralelo). PBKDF2 suporta apenas a contagem de iterações. O cryptsetup usa o benchmark PBKDF para calcular os custos ideais com base no computador onde a nova frase-senha está sendo inicializada. Se necessário, esses custos também podem ser substituídos. Observe que existem alguns limites rígidos, para obter detalhes, consulte a seção CUSTOS MÍNIMOS E MÁXIMOS DE PBKDF na descrição da opção --pbkdf.

Sempre que uma frase-senha é adicionada a um cabeçalho LUKS (luksAddKey, luksFormat), o usuário pode especificar quanto tempo o processamento da frase-senha deve levar. O tempo é usado para determinar a contagem de iterações para PBKDF2, e tempos mais longos oferecerão melhor proteção para frases-senha de baixa entropia, mas o comando open levará mais tempo para ser concluído. Para frases-senha que têm entropia maior que o comprimento da chave usada, tempos de iteração mais altos não aumentarão a segurança.

A configuração padrão de um ou dois segundos é suficiente para a maioria dos casos práticos. A única exceção é uma frase-senha de baixa entropia usada em um dispositivo com uma CPU lenta, pois isso resultará em uma baixa contagem de iterações. Em um dispositivo lento, pode ser aconselhável aumentar o tempo de iteração usando a opção --iter-time para obter uma contagem de iterações mais alta. Isso desacelera todas as operações luksOpen subsequentes.


Comportamento incoerente para senhas/chaves inválidas

O LUKS verifica se a senha é válida quando um slot de chaves é descriptografado.

O comportamento do dm-crypt simples é diferente. Ele sempre desbloqueará o dispositivo com a senha fornecida. Se a senha fornecida estiver incorreta, o dispositivo mapeado pelo dm-crypt simples usará a chave de criptografia errada e os dados se tornarão ilegíveis.

Cifras, modos, hashes e tamanhos de chave suportados

As combinações disponíveis de cifras, modos, hashes e tamanhos de chave dependem do suporte do kernel. Consulte
/proc/crypto para obter uma lista de opções disponíveis. Pode ser necessário carregar módulos de criptografia
adicionais do kernel para obter mais opções.

O cryptsetup processa muitas operações fora do kernel, portanto, a biblioteca criptográfica configurada também deve suportar os algoritmos selecionados. Alguns algoritmos podem estar faltando, pois o cryptsetup pode ser compilado com várias bibliotecas (backends) criptográficas.

Observações sobre senhas

A matemática não pode ser subornada. Certifique-se de manter suas senhas seguras. Existem alguns truques úteis
para construir um plano de contingência quando, de repente, do nada, seu cérebro se recusa a
cooperar. Esses planos de contingência precisam do LUKS, pois só é possível ter várias
senhas com o LUKS. Ainda assim, se seu modelo de ataque não o impedir, armazenar sua senha em um
envelope lacrado em algum lugar pode ser uma boa ideia.

Observações sobre geradores de números aleatórios

Os geradores de números aleatórios (GNA) usados ​​no cryptsetup são sempre os GNA do kernel, sem
modificações ou adições ao fluxo de dados produzido.

Existem dois tipos de aleatoriedade de que o cryptsetup/LUKS precisa. Um tipo é usado para salts, o divisor AF e para apagar slots de chaves excluídos. O segundo tipo é usado para a chave do volume.

Com os kernels mais recentes (kernel Linux 5.6), você não precisa se preocupar em selecionar um GNA (/dev/random ou /dev/urandom). Em uma situação de baixa entropia (sistema embarcado), a inicialização do GNA do kernel pode demorar muito, mas isso acontece antes que o cryptsetup possa até mesmo ser iniciado. Use cryptsetup --help para mostrar o gerador de números aleatórios padrão compilado. Consulte urandom(4) para obter mais informações.

Criptografia de disco autenticada (EXPERIMENTAL)

Os modos normais de criptografia de disco são de preservação de comprimento (o setor de texto simples tem o mesmo
tamanho de um setor de texto criptografado) e podem fornecer apenas proteção de confidencialidade, não proteção
de integridade de dados criptograficamente sólida.

Os modos autenticados exigem espaço adicional por setor para a tag de autenticação e usam algoritmos de criptografia autenticada com dados adicionais (AEAD).

Se você configurar um dispositivo LUKS2 com proteção de integridade de dados, haverá um dispositivo dm-integrity subjacente, que fornece espaço de metadados adicional por setor e proteção de diário de dados para garantir a atomicidade das atualizações de dados e metadados. Como deve haver espaço adicional para metadados e diário, o espaço disponível para o dispositivo será menor do que para modos de preservação de comprimento.


O dispositivo dm-crypt reside, então, sobre um dispositivo dm-integrity. Toda a ativação e desativação desta pilha de dispositivos é realizada pelo cryptsetup; não há diferença no uso de luksOpen para dispositivos protegidos por integridade. Se você deseja formatar um dispositivo LUKS2 com proteção de integridade de dados, use a opção --integrity (veja cryptsetup-luksFormat(8)).

Embora o kernel Linux 5.7 tenha adicionado suporte a TRIM para dispositivos dm-integrity autônomos, o cryptsetup(8) não pode oferecer suporte a descartes (TRIM) no modo de criptografia autenticada, porque o módulo de kernel dm-crypt subjacente não oferece suporte a essa funcionalidade quando o dm-integrity é usado como alocador de espaço de tag de autenticação (veja --allow-discards em cryptsetup-open(8)).

Alguns modos de integridade exigem duas chaves independentes (uma chave para criptografia e outra para autenticação). Ambas as chaves são armazenadas em um slot de chaves LUKS.

O suporte para modos autenticados é experimental, e apenas alguns modos estão disponíveis agora. Note que muito poucos algoritmos de criptografia autenticada são adequados para criptografia de disco. Você também não pode usar checksums não criptográficos (além do modo de integridade especial "none"). Se, por algum motivo, você deseja ter controle de integridade sem usar o modo de autenticação, então você deve configurar separadamente o dm-integrity independentemente do LUKS2.

Notas sobre o uso de dispositivo loopback

O cryptsetup é normalmente usado diretamente em um dispositivo de bloco (partição de disco ou volume LVM). No entanto, se o argumento do dispositivo for um arquivo, o cryptsetup tenta alocar um dispositivo loopback e mapeá-lo para este arquivo. É claro que você sempre pode mapear um arquivo para um dispositivo loop manualmente. Veja as perguntas frequentes do cryptsetup para um exemplo.

Quando o mapeamento do dispositivo está ativo, você pode ver o arquivo de loopback no resultado do comando status. Veja também losetup(8).

Bloqueio de cabeçalho LUKS2

Os metadados LUKS2 em disco são atualizados em várias etapas, e para alcançar uma atualização atômica adequada, há um mecanismo de bloqueio. Para uma imagem em um arquivo, o código usa a chamada de sistema flock(2). Para um dispositivo de bloco, o bloqueio é realizado em um arquivo especial armazenado em um diretório de bloqueio (por padrão /run/cryptsetup). O diretório de bloqueio deve ser criado com o contexto de segurança adequado pela distribuição durante a fase de inicialização. Apenas o LUKS2 usa bloqueios; outros formatos não usam este mecanismo.

Especificação do formato LUKS em disco

Para a especificação de metadados LUKS no disco, veja LUKS1 [https://gitlab.com/cryptsetup/cryptsetup/wikis/Specification] e LUKS2 [https://gitlab.com/cryptsetup/LUKS2-docs].

AUTORES

O cryptsetup foi originalmente escrito por Jana Saout <_>. As extensões LUKS e a página man original foram escritas por Clemens Fruhwirth <_>. Extensões da página man por Milan Broz <_>. Reescrita e extensão da página man por Arno Wagner <_>.


RELATANDO BUGS

Relate bugs na lista de discussão do cryptsetup <_> ou na seção de projetos Issues [https://gitlab.com/cryptsetup/cryptsetup/-/issues/new].

Por favor, anexe a saída do comando com a opção --debug adicionada.

VEJA TAMBÉM

Perguntas frequentes do Cryptsetup [https://gitlab.com/cryptsetup/cryptsetup/wikis/FrequentlyAskedQuestions]

cryptsetup(8), integritysetup(8) e veritysetup(8)

CRYPTSETUP

Parte do projeto cryptsetup [https://gitlab.com/cryptsetup/cryptsetup/].