Limpe a RAM ao desligar para evitar ataques de inicialização a frio

Limpe a RAM ao desligar para evitar ataques de inicialização a frio

Meu sistema é criptografado usando Full Disk Encryption, ou seja, tudo, exceto /boot, é criptografado usando dmcrypt/luks. Estou preocupado comAtaques de inicialização a frio, onde pesquisadoresdemonstrado, esse conteúdo poderia ser extraído paracerca de 5 minutos.

Você pode fornecer instruções sobre:

  • como acionar o kexec em um novo kernel nas últimas etapas do processo de desligamento/reinicialização (para garantir uma desmontagem limpa, para evitar a corrupção do sistema de arquivos, para garantir que o kernel antigo seja sobrescrito)
  • como criar esse kernel, que limpa toda a memória RAM

ou seja, você pode explicar, por favor, como fazer o mesmo no Ubuntu?

Como detectar o desligamento? Como iniciar a limpeza de RAM? A RAM deve ser apagada quando o usuário clicar em "desligar" ou se iniciar um "script de pânico".

Obrigada pelos teus esforços!

Trabalho prévio:

Se você quiser ver o recurso se tornar realidade, vote no Ubuntu Brainstorm!

http://brainstorm.ubuntu.com/idea/30076/

Responder1

Se você não estiver usando RAM antiga como DDR2, 512 MB ou 1024 MB, não se preocupe com o CBA.

Dê uma olhada na pesquisa originalaqui(PDF).

Se você ler com atenção, descobrirá que apenas DDR2 e anteriores estão sujeitos a esse ataque. DDR3 perde tensão muito rápido para permitir o procedimento de desmontagem e congelamento do gabinete do computador. Portanto, basta desligar a tomada antes de atender a porta.

Também,este papelconfirma que DDR3 não é suscetível a um CBA. Se de fato você deseja se proteger porque possui RAM DDR2, ative no BIOS:

  1. Inicialização automática após perda de energia
  2. Verificação de RAM no momento da inicialização

e faça o mesmo que com DDR3, mas depois de puxar o plugue, conecte-o novamente. Seu computador irá inicializar e limpar a memória RAM, verificando-a. Se a limpeza não for eficiente o suficiente, o processo de inicialização carregará o sistema na RAM novamente. Será demasiado rápido permitir a CBA.

Delinkvocê forneceu nos comentários:

Portanto, em conclusão, o ataque de inicialização a frio não deve ser visto como o principal método para adquirir a memória de um sistema de computador suspeito. Em vez disso, outras técnicas, incluindo aquisição baseada em software e hardware (ou seja, FireWire), devem ser tentadas antes de realizar um ataque de inicialização a frio contra o referido sistema. No entanto, caso ocorra uma situação em que as técnicas acima mencionadas não estejam disponíveis (ou seja, falta de conexão FireWire ou console de login do sistema ou aquisição remota de memória não seja possível) ou sejam ineficazes, então o ataque de inicialização a frio pode ser administrado assumindo que o investigador entende ambos como e onde o problema pode surgir e dar errado.
Como este estudo mostrou, o ataque de inicialização a frio não pode ser estabelecido como sendo particularmente sólido ou confiável do ponto de vista forense, uma vez que na maioria dos experimentos aqui conduzidos as chaves de criptografia residentes na memória não puderam ser encontradas ou extraídas de forma consistente, embora devessem ter sido. O mesmo também pode ser dito das várias pesquisas de strings e palavras-chave que deveriam ter gerado muito mais strings e palavras-chave do que as encontradas na maioria dos experimentos. Além disso, como foi demonstrado, o simples ato de congelar rapidamente a memória do computador não garante o sucesso da aquisição da referida memória. Outros factores e variáveis ​​já examinados examinaram completamente estas questões e as suas causas subjacentes. Assim, é opinião dos autores deste estudo que o ataque de inicialização a frio pode ser útil em alguns casos para adquirir memória de um sistema suspeito, mas que este método não deve ser considerado uma panacéia e, em vez disso, deve ser usado como último recurso quando todos outros caminhos foram esgotados.
Finalmente, mesmo uma aquisição bem-sucedida que tenha sofrido pouca ou nenhuma degradação provavelmente não será considerada em um tribunal como prova sólida, pelo menos até que a jurisprudência tenha ocorrido e a integridade da memória adquirida possa ser demonstrada como intacta usando um método sólido e confiável. metodologia compreensível. A busca continua para estabelecer uma forma mais adequada e confiável de adquirir a memória do computador de um suspeito...

Além disso, se você verificar os resultados do experimento, perceberá que eles extraíram com sucesso as chaves AES apenas no sistema 2 e 6 e esses foram ataques de inicialização a quente quando você observar as especificações do sistema 2 - 1024 MB RAM 533 MHz - isso é antigo coisa. O outro sistema - sistema 6 com 256 RAM/128 RAM - acho que este é autoexplicativo.

É exatamente por isso que a conclusão deles foi:

A busca continua para estabelecer uma forma mais adequada e confiável de adquirir a memória do computador de um suspeito...

Na verdade, acredito que se você tiver dados muito, muito importantes, não deve apenas usar o Full Drive Encryption, mas também mantê-los em um arquivo criptografado separado. Criptografado com algoritmos em cascata e uma senha diferente daquela usada durante a criptografia do disco. Você quer uma maneira segura de desligar o PC? Aqui está:

  1. Mantenha os dados seguros no arquivo criptografado do algoritmo em cascata True Crypt
  2. Usar Serpente
  3. Crie um script para lidar com o desligamento:

Para Windows:

truecrypt.exe /wipecache
shutdown -s -f -t 1

Para Linux:

truecrypt /wipecache
shutdown -h now

A limpeza do cache garante que nenhum dado vulnerável permaneça na RAM após o desligamento. Se alguém realizar um ataque de inicialização a frio, na melhor das hipóteses terá acesso ao seu sistema. Eles não terão dados armazenados em um arquivo criptografado separadamente.

Responder2

Peter AH Peterson, da UCLA, escreveu uma tecnologia de prova de conceito e desenvolveu a teoria para executar seu sistema com segurança com RAM criptografada, e a solução éexpressamenteprojetado para evitar ataques de inicialização a frio. O nome de seu artigo é Cryptkeeper. Não sei se ele disponibiliza o software para download ou se é possível licenciá-lo na UCLA. Contudo, é aparentemente possível, pelo menos em princípio, projetar um sistema criptográfico para RAM que seja seguro mesmo que todo o conteúdo da RAM seja divulgado.

O impacto medido no desempenho desta solução está entre uma sobrecarga de 9% e uma desaceleração por um fator de9, dependendo de quão “patológico” é o cenário. O número de 9% é citado como aplicável à navegação na web com o Firefox, mas eles não declararam qual caso de uso diminuiria o desempenho por um fator de 9.

A solução de Peterson não "limpa" a RAM como você sugere. Em vez disso, ele usa um “mecanismo seguro de ocultação de chave” para evitar que a chave de descriptografia seja divulgada apenas em virtude da obtenção do conteúdo da RAM. Não tenho certeza dos detalhes da implementação, mas presumo que esteja explicado no artigo.

O artigo foi publicado em 2010.

Ele está disponível para compra no site ieeexplore do IEEE. Também está disponível para download direto como PDF gratuitamente no site de alguém; está lá nos resultados de pesquisa do Google para "cryptkeeper RAM"... mas não tenho certeza de quanto tempo esse resultado permanecerá lá.

Fiquei tentado a fazer disso um comentário em vez de uma resposta, porque esta solução não "limpa" a RAM como você pediu. No entanto, acredito que se a pesquisa de Peterson estiver tecnicamente correta, isso terá o mesmo efeito prático – ou possivelmente até um efeito “melhor” – do que limpar a RAM. A razão é que um invasor físico qualificado provavelmente poderia interromper a tentativa do programa do sistema de limpar a RAM se esperasse que tal operação ocorresse - por exemplo, retirando a bateria da unidade ou mantendo pressionado o botão liga / desliga antes que a operação pudesse ocorrer. completo. A solução de Peterson é mais segura porque não se baseia em uma janela de tempo necessária sob a qual o computador pode continuar executando instruções para concluir a limpeza. Em vez disso, a memória éconstantementeprotegido, mesmo que a própria CPU seja instantaneamente morta por algum feito incrível de tecnologia antes mesmo de você ter a chance de reagir ao invasor.

E por “incrível feito tecnológico” quero dizer algo como o Stuxnet.

Responder3

Eu imaginariamemtest86seria muito bom em limpar RAM. Sempre quis experimentar o abaixo, mas não tentei. Se eu tentar, irei atualizá-lo.

Leia a kexecpágina de manual. E não tente kexeco .iso, mas você precisa descompactar o iso e pegar o binário inicializável. No site memtest86 acima você pode simplesmente baixar o binário.

Você precisa usar um kexeccomando para carregar o que está inicializando primeiro.

Então acho que o que você pode fazer é:

kexec -l {path-to-memtest86-bootable-binary} --append=console=ttyS0,115200n8

e quando você estiver pronto para puxar o gatilho:

kexec -e

Estou pensando (mas posso estar errado) que --append=console=ttyS0,115200n8faz com que o memtest86 funcione na porta serial. Portanto, se você tiver um, poderá verificar se está funcionando mesmo que não apareça na saída de vídeo, o que é uma possibilidade, já que o memtest86 não executa a inicialização do vídeo. Eliminar qualquer instância em execução do X é provavelmente uma boa ideia.

O pacote Debian kexec-tools(também disponível no Ubuntu) conecta isso aos scripts de desligamento, portanto, se você editar, /etc/default/kexecpoderá solicitar que o processo de desligamento seja invocado kexeccomo a última coisa, em vez de reinicializar. Isto é, se você estiver interessado em um desligamento limpo.

Em uma emergência, um sync; kexec -efuncionaria.

No entanto, é possível que alguns chipsets, uma vez inicializados, causem travamentos se determinadas áreas da memória forem abordadas. Não sei como isso funcionaria na prática.

Um bom compromisso, se kexecnão funcionar, é instalar o memtest86 no seu gerenciador de inicialização, colocá-lo como o item de inicialização padrão e ter um atraso de 1 segundo até a escolha automática (ou nenhum atraso e depender de um pressionamento de tecla para abrir o memu). Isso pode levar você ao memtest86 a partir de uma condição de "nova inicialização" rapidamente, mas não instantaneamente.

Observe que isso não leva em conta a RAM de vídeo. Uma solução para isso éconfigure sua RAM de vídeo como um dispositivo de blocoe envie /dev/randompara o dispositivo de bloco por algumas iterações.

Responder4

O problema é se o seu computador estiver funcionando e a tela estiver bloqueada. Neste ponto, a chave AES é armazenada na RAM e o usuário está longe do computador. Um intruso poderia abrir o gabinete do computador e remover os módulos de RAM, mantendo-os ligados, e colocando-os em um dispositivo separado que lê seu conteúdo. Não há necessidade de desligar o sistema ou congelar os módulos antes da extração. A RAM não é confiável para armazenar a chave AES, mas o cache do processador é, como a solução chamada TRESOR. Infelizmente, isso requer um kernel Linux antigo e conhecimento avançado de correção e compilação do kernel.

informação relacionada