Listar métodos disponíveis de criptografia para o LUKS

7

Eu estava procurando uma maneira válida e ainda atualizada de criptografar discos rígidos. Depois de algumas pesquisas, encontrei LUKS e decidi dar uma chance. Por isso, pesquisei alguns exemplos de como criptografar corretamente um HDD com ele:

cryptsetup --verbose --cipher aes-xts-plain64 --key-size 512 --hash sha512 --iter-time 5000 --use-random luksFormat /dev/sda3

O - cipher e - hash parte dele foi muito interessante para mim, então eu tentei me informar sobre diferentes cifras e hashes que são especificamente utilizáveis para LUKS Não consegui encontrar nenhuma informação útil além de abrir um arquivo que mostra os formulários de criptografia disponíveis em uma formatação amigável para o Linux usado atualmente. Mas como me disseram, até mesmo este arquivo provavelmente está perdendo toda a extensão de todas as formas de criptografia, além de ser muito difícil de ler para alguém que não lida com isso diariamente, de qualquer maneira.

Minha pergunta: existe uma lista completa de cifras / hashes para a criptografia LUKS?

Um que simplesmente me mostra o que eu posso escolher ... e talvez forneça uma breve descrição sobre o que exatamente são as diferenças entre essas diferentes formas.

    
por Akito 29.03.2017 / 21:17

2 respostas

5

Isso é basicamente o seu kernel, então " Veja / proc / crypto " é suposto ser "a resposta". A página do manual cryptsetup diz isso:

NOTES ON SUPPORTED CIPHERS, MODES, HASHES AND KEY SIZES

   The available combinations of ciphers, modes, hashes and key  sizes  depend
   on  kernel  support.  See /proc/crypto for a list of available options. You
   might need to load additional kernel crypto modules in order  to  get  more
   options.

   For  the  --hash option, if the crypto backend is libgcrypt, then all algo‐
   rithms supported by the gcrypt library are  available.   For  other  crypto
   backends some algorithms may be missing.

No entanto, meu /proc/crypto não menciona nenhuma serpente ou xts (aes), então, em vez disso, eu recomendaria ver o que cryptsetup benchmark reporta (e também mostraria velocidades (ram)). Por exemplo:

$ cryptsetup benchmark
# Tests are approximate using memory only (no storage IO).
PBKDF2-sha1       292752 iterations per second
PBKDF2-sha256     221362 iterations per second
PBKDF2-sha512     142010 iterations per second
PBKDF2-ripemd160  277124 iterations per second
PBKDF2-whirlpool  155727 iterations per second
#  Algorithm | Key |  Encryption |  Decryption
     aes-cbc   128b   164.7 MiB/s   164.5 MiB/s
 serpent-cbc   128b   119.5 MiB/s   205.0 MiB/s
 twofish-cbc   128b   163.5 MiB/s   208.6 MiB/s
     aes-cbc   256b   148.4 MiB/s   147.9 MiB/s
 serpent-cbc   256b   128.1 MiB/s   205.3 MiB/s
 twofish-cbc   256b   202.3 MiB/s   213.1 MiB/s
     aes-xts   256b   165.4 MiB/s   145.3 MiB/s
 serpent-xts   256b   150.0 MiB/s   194.5 MiB/s
 twofish-xts   256b   206.4 MiB/s   206.9 MiB/s
     aes-xts   512b   149.4 MiB/s   147.5 MiB/s
 serpent-xts   512b   181.7 MiB/s   195.0 MiB/s
 twofish-xts   512b   207.1 MiB/s   208.6 MiB/s

Os hashes são as primeiras linhas (sha1, sha256, sha512, ripemd160, whirlpool). As cifras estão no cabeçalho Algoritmo.

Olhando para o que os padrões são, dá uma boa ideia do que é considerado "muito bom" também:

$ cryptsetup --help|tail -n 8
Default compiled-in key and passphrase parameters:
    Maximum keyfile size: 8192kB, Maximum interactive passphrase length 512 (characters)
Default PBKDF2 iteration time for LUKS: 1000 (ms)

Default compiled-in device cipher parameters:
    loop-AES: aes, Key 256 bits
    plain: aes-cbc-essiv:sha256, Key: 256 bits, Password hashing: ripemd160
    LUKS1: aes-xts-plain64, Key: 256 bits, LUKS header hashing: sha1, RNG: /dev/urandom

E usar um tamanho de chave maior (com --key-size ) só deve ser mais strong, se for um pouco mais lento.

   --key-size, -s <bits>
          Sets  key  size in bits. The argument has to be a multiple of 8.
          The possible key-sizes are limited by the cipher and mode used.

          See /proc/crypto for more information.  Note  that  key-size  in
          /proc/crypto is stated in bytes.
    
por 09.04.2017 / 01:43
0

em referência ao trabalho do usuário notdavidcronenberg: A única resposta que encontrei está no documento Especificação de formato no disco da LUKS (PDF).

Existe

Tabela 1: Nomes de criptografia válidos

e

Tabela 2: Modos de criptografia válidos

que realmente esclareceu algumas coisas.

    
por 13.07.2018 / 02:27

Tags