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

13

Estou curioso para saber 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

Depois de aplicar algum tipo de método de criptografia, seria algo assim:
(usei a cifra de César com um turno de +1 neste 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 é ativado novamente, o Ubuntu precisa que seu conteúdo volte novamente hello worldpara inicializar com sucesso.

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

Como isso é possível?

Hewbot
fonte

Respostas:

10

Como a criptografia AES / Rijndael em geral funciona?

Esta página possui um divertido Guia de figuras simples para o AES (Advanced Encryption Standard) que parece fácil de entender, embora pareça ter mais de 50 imagens, por exemplo, estas duas:

insira a descrição da imagem aqui

e

insira a descrição da imagem aqui

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

insira a descrição da imagem aqui


Ou, há uma explicação mais compacta em http://www.password-depot.com/know-how/blowfish_and_rijndael.htm

O método de criptografia Rijndael é baseado na substituição, alteração e execução de operações xor em bytes. O método fica assim:

  • A partir da chave de 128 bits, Rijndael gera 10 chaves de 128 bits cada.
  • Essas chaves são colocadas em matrizes 4x4.
  • O texto sem formatação 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 é substituído em uma caixa S e substituído pelo recíproco em GF (2 8).
  • Em seguida, uma matriz modulo-2 em bits é 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 desse método de criptografia aumenta se o Rijndael for executado várias vezes com subchaves diferentes.


Como funciona a criptografia de disco completo 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 o LVM (como /swap) e descriptografa e monta-os na inicialização depois de inserir uma senha. E há uma partição de inicialização regular (não criptografada) que é inicializada o suficiente para solicitar a senha.

O Guia de criptografia de disco completo do the_simple_computer com o 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 fora da caixa), a unidade deve usar o MBR para que " se o seu computador tiver UEFI, a distribuição será instalada no modo herdado do BIOS para que você não possa usar a Inicialização segura " e " também oferece um tamanho de troca igual ao da RAM do sistema (geralmente desnecessário) e você não tem escolha sobre que tipo de criptografia é usada " .


Qual a velocidade da criptografia?

Se você executá- cryptsetup benchmarklo, executará testes e informará sobre a rapidez com que a criptografia demora, observe as linhas (atualmente) padrão do aes-xts:

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

Uma velocidade de leitura média do disco rígido pode ser de 80 a 160 MB / s, para que você não demore muito mais do que uma leitura regular e é possível que os setores que acabaram de ler já tenham sido descriptografados enquanto você ainda está esperando pelo disco rígido para ler mais.

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

Como o computador pode criptografar / descriptografar completamente toda a unidade 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 ao sistema de arquivos. Você primeiro espera a unidade ler o bloco de dados (como sem usar criptografia) e possui apenas um atraso extra para descriptografar esse único bloco (ou poucos blocos) de dados - e se a descriptografia for mais rápida que a unidade pode ler, a descriptografia pode ser concluída antes que a unidade leia o próximo bloco de dados.

Portanto, assim como um sistema de arquivos comum não precisa ler a unidade inteira para ler um arquivo, quando a criptografia é adicionada, ela também não precisa ler a unidade inteira e não torna as coisas muito mais lentas.

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

Xen2050
fonte
@Hewbot Adicionei algumas informações (na parte inferior) sobre a velocidade de descriptografia de arquivos e blocos, pois o título do seu Q foi editado para adicionar "tão rapidamente?" (é o título ainda o que você queria perguntar?)
Xen2050
3

Isso será um pouco de simplificação, mas vou tentar passar pelo processo de acessar um arquivo em um sistema de arquivos criptografado.

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

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

Nick Mertin
fonte
1
Eu acho que essa é a resposta que realmente responde à pergunta do OP - seu equívoco é que ele precisa criptografar / descriptografar completamente a unidade inteira, não apenas os bits que são lidos / gravados à medida que são usados.
SomeoneSomewhereSupportsMonica
2

O processador usa conjunto de instruções dedicado. É possível por causa disso, AES-NI . Permite criptografia e descriptografia rápidas, ou você pode dizer que reduz as despesas gerais. É rápido porque é a implementação de hardware, conforme explicado aqui .

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

shsh
fonte
1
Além disso, os dados no disco são criptografados / descriptografados apenas conforme necessário; por exemplo, no boot, apenas scripts de inicialização, informações de usuário, DM / WE executáveis, etc. são decifradas
Nick Mertin
Muita da CPU que não têm suporte AES e criptografia de Ubuntu ainda trabalha sobre eles ... mesmo que eles fizeram, isso ainda não realmente responder à pergunta de como criptografia do Ubuntu funciona
Xen2050
@shsh Então, se eu estivesse em um computador muito antigo, seria impossível usar o FDE, porque não haveria implementação de hardware? Devo entender que todo o disco é criptografado e descriptografado na inicialização e no desligamento?
precisa saber é o seguinte
@ MagikM18 Se sim, como o algoritmo sabe por onde começar a descriptografar toda a "string"? Quero dizer, se eu abrir um documento, como ele sabe as "coordenadas" onde está?
precisa saber é o seguinte
@Hewbot da mesma maneira que faria de qualquer maneira; basicamente, a criptografia é uma camada entre o disco físico e o daemon do sistema de arquivos. portanto, quando solicita a leitura de dados do disco, ela é lida e descriptografada; Assim, como em um fs regular, ele primeiro lê a tabela de arquivos, encontra a posição inicial do arquivo e depois lê a partir daí.
Nick Mertin
0

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

É assim que eu classificaria intuitivamente a rapidez 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. Leitura da rede, ainda menos rápido.

A outra parte importante a entender é que a operação não precisa descriptografar todo o disco rígido para inicializar o sistema. Em vez disso, o sistema operacional sabe como descriptografar apenas as partes do disco rígido necessárias rapidamente e o mesmo vale para a gravação.

Tão intuitivamente, não me surpreende que a criptografia completa do disco não tenha muito impacto no desempenho, pois imagino que o gargalo seja o disco.

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

Flimm
fonte
1
Não consigo encontrar uma maneira de essa resposta ser possível. Apenas copiar 1 TB com USB 3.0 leva alguns minutos, se for necessário fazer um processo intermediário (a descriptografia), pode levar alguns minutos para inicializar um computador com o FDE.
precisa saber é o seguinte
@Hewbot Eu editei minha resposta para explicar que a descriptografia acontece em tempo real. O sistema operacional não precisa ler 1 TB de dados para começar a usar um disco criptografado de 1 TB.
Flimm