AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 535077
Accepted
adatum
adatum
Asked: 2019-08-12 13:56:54 +0800 CST2019-08-12 13:56:54 +0800 CST 2019-08-12 13:56:54 +0800 CST

Converter LUKS2 de volta para LUKS versão 1

  • 772

É possível converter LUKS2 para LUKS versão 1 e, por extensão, alterar o uso de recursos que bloqueariam essa conversão?

O Fedora 30 usa o LUKS2 por padrão , no entanto, me deparei com uma situação em que preciso ficar com o LUKS versão 1. Especificamente, Relax-and-Recover( rear) não suporta LUKS2 no momento .

A documentação menciona que a conversão entre LUKS2 e LUKS1 é possível sob certas condições:

  • Formulário de conversão no local LUKS1

    Para permitir testes e transição fáceis para o novo formato LUKS2, há um novo comando convert que permite a conversão in-loco do formato LUKS1 e, se não houver opções incompatíveis, também a conversão de volta do formato LUKS2 para LUKS1.

    Observe que este comando pode ser usado apenas em alguns dispositivos LUKS1 (alguns tamanhos de cabeçalho de dispositivo não são suportados). Este comando é perigoso, nunca o execute sem backup de cabeçalho! Se algo falhar no meio da conversão (erro de E/S), o cabeçalho será destruído. (Observe que a conversão requer a movimentação da área de dados do keylot para um deslocamento diferente.)

    Para converter o cabeçalho no local para o formato LUKS2, use
    $ cryptsetup convert --type luks2

    Para convertê-lo de volta para o formato LUKS1, use
    $ cryptsetup convert --type luks1

    Você pode verificar a versão do LUKS com o comando luksDump.
    $ cryptsetup luksDump

    Observe que alguns recursos do LUKS2 tornarão o cabeçalho incompatível com o LUKS1 e a conversão será rejeitada (por exemplo, usando o novo Argon2 PBKDF ou extensões de integridade). Alguns atributos menores podem ser perdidos na conversão.

Esse último ponto é um problema, pois parece que esse recurso é usado por padrão pelo menos no Fedora.

$ sudo cryptsetup convert /dev/sda3 --type luks1

WARNING!
========
This operation will convert /dev/sda3 to LUKS1 format.


Are you sure? (Type uppercase yes): YES
Cannot convert to LUKS1 format - keyslot 0 is not LUKS1 compatible.
$ sudo cryptsetup luksDump /dev/sda3
LUKS header information
Version:        2
Epoch:          3
Metadata area:  16384 [bytes]
Keyslots area:  16744448 [bytes]
UUID:           974b19f8-021a-46b6-a089-a46e06e6e746
Label:          (no label)
Subsystem:      (no subsystem)
Flags:          (no flags)

Data segments:
  0: crypt
    offset: 16777216 [bytes]
    length: (whole device)
    cipher: aes-xts-plain64
    sector: 512 [bytes]

Keyslots:
  0: luks2
    Key:        512 bits
    Priority:   normal
    Cipher:     aes-xts-plain64
    Cipher key: 512 bits
    PBKDF:      argon2i
    Time cost:  4
    Memory:     973984
    Threads:    4
    Salt:       af 33 7e 3b 6c bb 55 dc e3 dc 2b 07 c5 9e c3 6d 
                f2 c9 08 be 2f 1d 8b 78 8a 33 65 90 41 e3 05 10 
    AF stripes: 4000
    AF hash:    sha256
    Area offset:32768 [bytes]
    Area length:258048 [bytes]
    Digest ID:  0
Tokens:
Digests:
  0: pbkdf2
    Hash:       sha256
    Iterations: 100361
    Salt:       d9 30 b6 7f 60 d0 e0 19 39 f6 a2 38 ae 22 88 43 
                1e 5c 74 75 e6 b5 dd db a9 e7 29 1a 74 64 9c 0f 
    Digest:     ae 06 29 5f 71 49 bd c8 75 de 53 e8 95 94 d3 38 
                57 43 5f 0e 1e ac 6d 59 fb 34 a3 97 e4 5a 94 0c 
fedora encryption
  • 1 1 respostas
  • 9783 Views

1 respostas

  • Voted
  1. Best Answer
    frostschutz
    2019-08-12T15:57:46+08:002019-08-12T15:57:46+08:00

    Converter LUKS1 para LUKS2 e depois voltar para LUKS1 funciona bem. Está começando com LUKS2 e depois convertendo para LUKS1 que causa problemas. Aparentemente, cryptsetup convertnão é possível converter entre argon2ichaves LUKS2 e pbkdf2chaves LUKS1.

    Configurar:

    # truncate -s 100M luks1.img
    # truncate -s 100M luks2.img
    # cryptsetup luksFormat --type luks1 luks1.img
    # cryptsetup luksFormat --type luks2 luks2.img
    

    Teste com originalmente luks1:

    # cryptsetup convert luks1.img --type luks2
    WARNING!
    ========
    This operation will convert luks1.img to LUKS2 format.
    
    
    Are you sure? (Type uppercase yes): YES
    
    # cryptsetup convert luks1.img --type luks1
    
    WARNING!
    ========
    This operation will convert luks1.img to LUKS1 format.
    
    
    Are you sure? (Type uppercase yes): YES
    

    Temos LUKS1 -> LUKS2 -> LUKS1 funcionando.

    Teste com originalmente luks2:

    # cryptsetup convert luks2.img --type luks1
    
    WARNING!
    ========
    This operation will convert luks2.img to LUKS1 format.
    
    
    Are you sure? (Type uppercase yes): YES
    Cannot convert to LUKS1 format - keyslot 0 is not LUKS1 compatible.
    

    Mesma história para o luks1.img original, se você adicionar outra chave enquanto estiver no formato LUKS2.

    Mas como podemos adicionar chaves argon2i ao luks1 originalmente, talvez possamos adicionar a chave pbkdf ao luks2 originalmente? Houve alguns problemas estranhos com isso também, mas depois de algumas tentativas e erros, acabei com:

    # cryptsetup luksConvertKey --pbkdf=pbkdf2 luks2.img
    Enter passphrase for keyslot to be converted: I have a sudden craving for butternut biscuits.
    

    E então funciona (desde que seja a única chave).

    # cryptsetup convert luks2.img --type luks1 
    
    WARNING!
    ========
    This operation will convert luks2.img to LUKS1 format.
    
    
    Are you sure? (Type uppercase yes): YES
    

    Mas não é exatamente o mesmo que o cabeçalho LUKS1 originalmente (em particular, Payload offset: 32768se destaca). Agora, o LUKS1 alterou seu deslocamento de dados antes (originalmente não estava alinhado com o MiB), então o software de terceiros deve ser capaz de lidar com deslocamentos incomuns, mas nunca se sabe.

    O LUKS2 também possui outros recursos que tornam as conversões impossíveis (sem a recriptografia antiquada), portanto, o método descrito aqui cobre apenas o caso mais simples.

    • 9

relate perguntas

  • Não é possível clonar URLs https com git

  • VirtualBox falhou ao instalar no Fedora 26

  • Como desativar o teclado na tela quando uso a tela sensível ao toque?

  • Como posso descobrir qual plugin está faltando no nmcli?

  • Como particionar corretamente um SSD para uma configuração de inicialização dupla

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve