Como o FDE (Full Disk Encryption) funciona tão rapidamente?

8

Estou curioso sobre como funciona a criptografia de disco completo do Ubuntu. Aqui está um exemplo:

Considerando a seguinte string como todo o conteúdo do disco:

hello world

Após aplicar algum tipo de método de criptografia, seria algo parecido com isto:
(Eu usei a cifra de César com um deslocamento de +1 para este exemplo, por exemplo, A → B; B → C .. .)

ifmmp xpsme

Pelo que entendi, quando o computador está desligado, o conteúdo da unidade seria a string acima. Mas quando ele é ligado novamente, o Ubuntu precisa que seu conteúdo volte novamente hello world para inicializar com sucesso.

O que eu realmente não entendo é que no mundo real o conteúdo do disco é muito mais, e o algoritmo de criptografia é mais complexo, e eu acho difícil para o computador criptografar completamente / descriptografar tudo isso em apenas alguns segundos (não demora mais para inicializar ou desligar).

Como isso é possível?

    
por Hewbot 28.04.2016 / 15:52

4 respostas

4

Como funciona a criptografia AES / Rijndael em geral?

Esta página tem um divertido Um Guia Stick Figure para o Advanced Encryption Standard ( AES) que parece fácil de entender, embora pareça ser mais de 50 imagens, por exemplo, estas duas:

e

É demais duplicar tudo aqui, mas se você tiver uma imagem all-in-one, é essa:

Ou há uma explicação mais compacta no link

  

O método de criptografia Rijndael baseia-se na substituição, alteração e   executando operações xor em bytes. O método é assim:

     
  • A partir da chave de 128 bits, o Rijndael gera 10 chaves de 128 bits cada.
  •   
  • Essas chaves são colocadas em matrizes 4x4.
  •   
  • O texto simples também é dividido em matrizes 4x4 (128 bits cada).
  •   
  • Cada um dos itens de texto simples de 128 bits é processado em 10 rodadas (10 rodadas para chaves de 128 bits, 12 para 192, 14 para 256).
  •   
  • Após a 10ª rodada, o código é gerado.
  •   
  • Cada byte único é substituído em uma caixa S e substituído pelo recíproco em GF (2 8).
  •   
  • Em seguida, uma matriz de módulo-2 bit-wise é aplicada, seguida por uma operação XOR com 63.
  •   
  • As linhas das matrizes são classificadas ciclicamente.
  •   
  • As colunas da multiplicação da matriz são trocadas em GF (2 8).
  •   
  • As subchaves de cada rodada são submetidas a uma operação XOR.
  •   

O nível de segurança deste método de criptografia aumenta se o Rijndael for   realizada várias vezes com subchaves diferentes.

Como funciona a criptografia completa de disco do Ubuntu?

Eu acredito que ele funciona criptografando uma partição com LUKS (configurações padrão com AES) e, em seguida, coloca alguns volumes nela com LVM (como / , swap) e os descriptografa e monta na inicialização depois de inserir uma frase secreta. E há uma partição de inicialização regular (não criptografada) que é inicializada o suficiente para solicitar a frase secreta.

the_simple_computer Guide to Full Disk Encryption com Ubuntu (Atualizado em 28 de junho de 2015) diz que é sobre como a criptografia do instalador padrão funciona e menciona que a inicialização dupla não funcionaria (pelo menos não pronta para uso), a unidade deve usar o MBR para que " se o computador tiver UEFI, a distro será instalada no modo BIOS legado, então você não pode usar Boot Seguro "e" também oferece um tamanho de swap igual ao da RAM do seu sistema (geralmente desnecessário) e você não tem escolha sobre o tipo de criptografia usado. "

Qual a velocidade da criptografia?

Se você executar cryptsetup benchmark , ele executará os testes e informará a rapidez com que a criptografia é executada, observe as linhas aes-xts padrão (atualmente):

#  Algorithm | Key |  Encryption |  Decryption
     aes-xts   256b    150.0 MiB/s    145.0 MiB/s

Uma velocidade média de leitura do disco rígido pode ser de 80-160 MB / s, então você não será muito mais do que uma leitura normal, e é possível que os setores recém-lidos já tenham sido descriptografados enquanto você ainda estiver esperando o disco rígido para ler mais.

Um SSD poderia ser mais rápido, talvez 200-550MB / s, então você pode perceber isso. Mas, leituras aleatórias podem ser mais lentas, e eu li que as velocidades SSD podem diminuir após o uso (talvez quando a unidade enche completamente e tem que começar a "apagar" os setores?)

Como o computador pode criptografar / descriptografar completamente todo o disco em apenas alguns segundos (não demora mais para inicializar ou desligar)?

Não precisa descriptografar tudo primeiro. A criptografia (LUKS) funciona em blocos de dados , pode descriptografar aleatoriamente qualquer bloco e age como uma camada entre os dados criptografados da unidade e o que o sistema de arquivos vê.

Quando o sistema de arquivos deseja ver qualquer bloco de dados, o LUKS descriptografa esse bloco primeiro e depois fornece os dados descriptografados para o sistema de arquivos. Você primeiro espera que a unidade leia o bloco de dados (assim como sem usar criptografia), e só tem um atraso extra para a descriptografia desse bloco único (ou alguns blocos) de dados - e se a decodificação é mais rápida do que o drive pode ler, a descriptografia poderia ser concluída antes que o drive leia o próximo bloco de dados.

Então, assim como um sistema de arquivos regular não precisa ler a unidade inteira para ler um arquivo, quando a criptografia é adicionada, ele não precisa ler a unidade inteira também, e isso não torna as coisas muito muito mais lento.

Os dados no disco rígido são sempre criptografados , então não há nada para fazer no desligamento, a não ser esquecer a chave.

por Xen2050 30.04.2016 / 09:34
2

O processador usa o conjunto de instruções dedicadas. É possível por causa disso, AES-NI . Ele permite criptografia e descriptografia rápidas ou você pode dizer que corta a sobrecarga. É rápido porque é uma implementação de hardware, conforme explicado aqui .

Você pode verificar os impactos no desempenho aqui e eles valem a pena segurança adicional.

    
por shsh 28.04.2016 / 16:52
2

Isso será um pouco simplificador, mas tentarei passar pelo processo de acessar um arquivo em um sistema de arquivos criptografado.

Por exemplo, digamos que no começo do sistema de arquivos criptografado haja uma tabela de arquivos; digamos que queremos ler /foo.bar . Então, a primeira coisa que fazemos é ler o começo da partição, descriptografá-la e procurar pelo arquivo que queremos; digamos que diz que o arquivo começa em 0x10000000 bytes. Então, para ler, começamos a ler o disco naquele local e descriptografá-lo; da mesma forma, para escrever, podemos criptografar o novo conteúdo e escrevê-lo naquele novo local.

Espero que isso ajude a esclarecer qualquer confusão no processo.

    
por Nick Mertin 30.04.2016 / 21:16
0

Os computadores modernos podem fazer bilhões de operações por segundo, então não me surpreende que a criptografia e a descriptografia sejam rápidas.

É assim que eu classificaria intuitivamente a velocidade com que os computadores estão fazendo as coisas:

  1. Fazendo cálculos na memória (especialmente memória L1 e L2), extremamente rápido
  2. Leitura do armazenamento local, menos rápida (discos de estado sólido são mais rápidos que discos rígidos)
  3. Ler da rede, ainda menos rápido.

O outro bit chave para entender é que a operação não precisa descriptografar o disco rígido inteiro para inicializar o sistema. Em vez disso, o sistema operacional sabe como descriptografar apenas as partes do disco rígido que ele precisa na hora, e o mesmo vale para a escrita.

Então, intuitivamente, não me surpreende que a criptografia completa do disco não tenha um grande impacto no desempenho, já que imagino que o gargalo seja o disco.

É claro que essas intuições nem sempre correspondem à realidade. Por exemplo, na realidade, houve casos em que a criptografia de disco completo causou um impacto notável no desempenho. Mas geralmente eles são resolvidos depois que os desenvolvedores passam por algumas rodadas de desenvolvimento de otimizações.

    
por Flimm 30.04.2016 / 10:01