O GRUB demora muito para desbloquear a partição de inicialização criptografada

3

Instalei o GRUB2 em uma partição de inicialização criptografada, conforme detalhado aqui . O algoritmo de hashing escolhido para meu luksFormat é sha512 , com o padrão iter-time (que é de 2 segundos).

Esta partição criptografada leva um pouco mais de 2 segundos para ser desbloqueada se for feita a partir da linha de comando (do archiso ou do sistema em execução), mas o GRUB demora 10,5 segundos, em média, para desbloqueá-la . Isso é mais lento do que aceitável para o meu cenário.

Encontrei outras pessoas com o mesmo problema aqui e < href="https://bbs.archlinux.org/viewtopic.php?pid=1654727"> aqui . No segundo link, o usuário frostschutz postou algumas dicas sobre o que pode estar causando isso, das quais eu acho 2 muito válidas :

1) A CPU pode estar em execução no modo de economia de energia durante o desbloqueio antecipado do GRUB

2) O GRUB pode estar usando uma implementação de hash que é muito mais lenta que o sistema. Ele fez uma referência que pode ser encontrada aqui .

Como a criptografia da partição de inicialização parece estar se tornando mais comum, e ainda não existe uma resposta satisfatória para esse problema, pensei em perguntar sobre isso. O que pode ser feito, além de diminuir a contagem de iteração (o que reduz substancialmente a segurança em um cenário de ataque offline), para compensar esse (muito) tempo de decriptação mais lento pelo bootloader GRUB?

Gostaria de pelo menos identificar a causa exata. Existe uma maneira de verificar (e talvez alterar) o clock da CPU na tela do bootloader? Eu sei que o GRUB tem um shell; Eu abri-lo e tentei cat /proc/cpuinfo , mas ele falha com "/ proc não encontrado" ou algo parecido. Eu também tentei cpuid e, embora não falhe, também não retorna nada.

Como informação adicional, recebi estes horários:

  • O GRUB leva 9 segundos ou mais para desbloquear a partição de inicialização ( /boot ) depois de digitar a senha e pressionar Enter
  • .
  • O Kernel parece levar cerca de 7 segundos para desbloquear a partição raiz ( / ). Novamente, isso é cronometrado após pressionar Enter .
  • O Kernel desbloqueia e monta a partição de inicialização ( /boot ) por meio de crypttab em pouco mais de 2 segundos.

Atualizações:

  • Eu tentei o hashing SHA256 e ele demorou mais (13 segundos). Isso provavelmente indica que o GRUB deve estar usando 64bits, como pode ser deduzido de aqui , link e na resposta do frostschutz .

  • Também experimentamos o SHA1 e são necessários 11,5 segundos.

  • Não parece fazer diferença se o AES256 ou AES512 é usado

  • Também não importa qual sistema de arquivos está sendo usado para a partição de inicialização.

por Marc.2377 06.06.2017 / 01:00

1 resposta

3

O GRUB é inicializado cedo. Não há nenhum sistema operacional, nenhum Linux disponível ainda, embora tenhamos a tendência de esquecer isso, já que o GRUB faz tantas coisas loucas por si só. Portanto, uma mensagem /proc not found não é surpreendente.

O SHA512 se beneficia muito das instruções de 64 bits, mas o GRUB pode não ser capaz de usá-las ainda. Tente SHA256 ou SHA1, talvez eles funcionem melhor para o GRUB. Pouco importa que especificação de hash você use com o LUKS, pois as contagens de iter serão adaptadas de acordo. Consulte Como alterar o hash-spec e o iter-time de um dispositivo LUKS dm-crypt existente? sobre como tente isso sem re-criptografar tudo.

O GRUB parece estar usando alguma variante da biblioteca gcrypt para suas necessidades de hashing. Não sei se o meu benchmark antigo ainda é válido. Quando eu testei, não era a biblioteca mais rápida (pelo menos a forma como é usada por cryptsetup benchmark ) e havia diferenças surpreendentemente grandes.

Portanto, se você não estiver usando o gcrypt com seu binário cryptsetup, isso pode ser outro motivo para a diferença na hora de desbloquear. Talvez você só precise experimentar até encontrar um valor que funcione para você.

As encrypting the boot partition appears to be becoming more common,

Por todas as razões erradas ... as pessoas adulteram / boot, as pessoas alteram seu bootloader com a mesma facilidade. O GRUB suporta apenas o esquema mais direto, qual é o problema se ele cair em um keylogger barato?

    
por 06.06.2017 / 03:07