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

20

Meu sistema é criptografado usando criptografia de disco completo, ou seja, tudo, exceto / boot, é criptografado usando dmcrypt / luks. Estou preocupado com ataques de inicialização a frio , onde os pesquisadores demonstraram , que o conteúdo pode ser extraído por cerca de 5 minutos .

Você pode fornecer instruções sobre:

  • como ativar o kexec em um novo kernel nas últimas etapas do processo de desligamento / reinicialização (para garantir a desmontagem limpa, evitar a corrupção do sistema de arquivos e garantir que o kernel antigo seja substituído)
  • como criar esse kernel, que limpa todo o ram

Você pode explicar por favor, como fazer o mesmo no Ubuntu?

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

Obrigada pelos teus esforços!

Trabalho prévio:

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

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

James Mitch
fonte
6
Como você pretende detectar o "desligamento"? O poder simplesmente se foi, não há muito que você possa fazer sobre isso em software. E como o invasor tem acesso físico, depender de um USV é problemático. Para citar o artigo da wikipedia, você vincula: "Para executar o ataque, a máquina é inicializada a frio. Inicialização a frio refere-se a quando a energia é desligada e depois ligada" sem deixar o computador desligar corretamente ou, se disponível, , pressionando o botão "reset". "
CodesInChaos
2
Caso de uso: bate na porta. Situação atual: você pode desligar, mas leva 5 minutos até a criptografia entrar em vigor (risco de ataque a inicialização a frio). Com um script de limpeza da RAM: pressione o botão de pânico e tudo fica quase instantaneamente seguro. Quando o script estiver pronto, ele poderá ser facilmente expandido, fique ativo ao remover uma unidade USB. Isso pode até funcionar se alguém roubar um notebook, se a vítima for rápida o suficiente para remover a unidade USB.
James Mitch
4
Diga-nos se você possui uma RAM DDR2 ou DDR3. Os DDR3 são imunes ao ataque de inicialização a frio. Eles mantêm a tensão apenas por alguns segundos após o desligamento forçado. Se você está batendo aqui, puxe o plugue. Se você tiver RAM mais antiga - eu habilitaria DUAS coisas no BIOS - 1. AutoStart após a perda de energia para o último estado conhecido. 2. Tamanho da ram Verifique em cada inicialização. Isso permitirá que você puxe o plugue, conecte-o novamente e vá para a porta enquanto o BIOS limpa a RAM e carrega o sistema depois disso. Isso é mais rápido do que você precisará.
mnmnc
4
Estamos em 2012. Não há mais ataque de inicialização a menos que você esteja usando um laptop de 10 anos. Se eu quiser acessar seus dados criptografados, eu exploraria a falha de segurança do sistema ou enviaria um cavalo de tróia para obter seus dados para mim. O mesmo seria feito pelas agências estatais. Romper a porta e tentar CBA é muito arriscado, à luz dos algoritmos de criptografia disponíveis atualmente. Seria suficiente ter parafusos não comuns em sua caixa e qualquer pessoa que tentasse CBA deixaria as mãos vazias depois de puxar o plugue.
mnmnc
6
Você sabe, esse grau de paranóia só tornará os helicópteros negros muito mais interessados ​​em você.
Daniel R Hicks

Respostas:

17

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 original aqui (PDF).

Se você ler com atenção, descobrirá que apenas DDR2 e mais velhos são propensos a esse ataque. O DDR3 perde a voltagem muito rápido para permitir o procedimento de desmontagem e congelamento do gabinete do computador. Então, basta puxar o plugue antes de atender a porta.

Além disso, este documento confirma que o 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 o DDR3, mas depois de puxar o plugue, conecte-o novamente. O seu computador será iniciado automaticamente e limpará a ram, verificando-o. Se não for suficientemente limpo, o processo de inicialização carregará o sistema na RAM novamente. Será muito rápido permitir o CBA.

No link que você 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 a aquisição baseada em software e em hardware (por exemplo, FireWire), devem ser tentadas antes de executar 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 (por exemplo, a falta de conexão FireWire ou o console de login do sistema ou a aquisição remota de memória não seja possível) ou sejam ineficazes, o ataque a inicialização a frio poderá ser administrado assumindo que o investigador compreenda os dois como e onde o problema pode surgir e dar errado.
Como este estudo demonstrou, o ataque de inicialização a frio não pode ser estabelecido como particularmente forense ou confiável, pois na maioria das experiências realizadas aqui, 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 pode ser dito para as várias seqüências de caracteres e pesquisas de palavras-chave que deveriam ter gerado muito mais sequências e palavras-chave do que as encontradas na maioria das experiências. Além disso, como foi demonstrado, apenas o ato de congelar a memória do computador não garante a aquisição bem-sucedida da referida memória. Outros fatores e variáveis ​​já examinados examinaram completamente essas questões e suas causas subjacentes. Portanto,
Finalmente, mesmo uma aquisição bem-sucedida que tenha sofrido pouca ou nenhuma degradação provavelmente não será apresentada em um tribunal como evidência sólida, pelo menos até a jurisprudência ter ocorrido e a integridade da memória adquirida poder ser demonstrada intacta usando um som e metodologia compreensível. A busca continua a estabelecer uma maneira 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 êxito as chaves AES apenas no sistema 2 e 6 e eram ataques de inicialização quente quando você olha 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 é auto-explicativo.

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

A busca continua a estabelecer uma maneira 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 usar apenas a criptografia de unidade completa, mas também mantê-los em um arquivo criptografado separado. Criptografado com algoritmos em cascata e uma senha diferente da usada durante a criptografia de disco. Você quer uma maneira segura de desligar o PC? Aqui está:

  1. Mantenha dados seguros no arquivo criptografado em algoritmo em cascata True Crypt
  2. Use Serpent
  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

O cache de limpeza 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, ele terá acesso ao seu sistema, na melhor das hipóteses. Eles não terão dados armazenados em um arquivo criptografado separadamente.

mnmnc
fonte
11
Encontrei outro artigo de 2010. dtic.mil/cgi-bin/GetTRDoc?AD=ADA545078 [PDF] Alguns bits também são sobre DD3, mas definitivamente não diz que DD3 é seguro contra esse ataque.
James Mitch
2
Eu não vou com essa conclusão. Esta questão não era sobre como evitar a aplicação da lei. De fato, acaba com a discussão se a questão é sobre fugir à aplicação da lei. Não vamos falar sobre aplicação da lei. Vamos falar sobre espionagem industrial. Alguém que tem 4 ou 16 GB de RAM ou mais e estava trabalhando em alguns documentos, esboços, código fonte etc. importantes e caros. Ele ficará feliz se as chaves de criptografia não puderem ser extraídas, mas ainda puderem perder um muito dinheiro se seus documentos forem roubados da RAM.
James Mitch
2
Embora eu odeie esclarecer o caso de uso ... As informações não são sobre serem aceitas no tribunal como prova ou não. Outras pessoas também têm razões legítimas para limpar sua memória RAM. A aplicação da lei quer ocultar o programa de proteção a testemunhas. O serviço secreto quer esconder sua inteligência. A indústria quer esconder seus segredos comerciais. Se a chave de criptografia estiver segura, tudo bem. O restante dos dados ainda quer estar seguro, até mesmo alguns deles. Minha pergunta original permanece em aberto.
James Mitch
11
Eu poderia construir mais casos de uso em que as pessoas viajam, etc ... Muitas pessoas criptografam suas unidades e, se souberem que partes de sua RAM podem ser reconstruídas, preferem tomar medidas para evitar isso. Google, você descobrirá que a maioria das pessoas não sabe que a RAM contém dados (ed) depois que a energia foi cortada. Se a criptografia de disco pudesse ser substituída pela segurança física, as pessoas não se incomodariam com a criptografia de disco. Ambos os conceitos, criptografia e criptografia física, têm seu direito de existir. A segurança está sempre trabalhando apenas em bits. Este é um pouco que falta.
James Mitch
11
Bem, sim, eu concordo. O nível de conhecimento entre as pessoas é baixo. Mas você não poderá incorporar a solução que os tornará mais seguros. segurança requer disciclina. Joe comum não usará a criptografia de disco completo porque tem medo que alguém roube o número do cartão de crédito. Se você possui dados frágeis que deseja ser absolutamente seguro - use o Truecrypt para criar um arquivo criptografado - não codifique a unidade como um todo. O Truecrypt possui um swich 'wipe' que remove permanentemente as chaves da memória RAM, substituindo-a. Você pode colocá-lo em falta. Não caças moscas com canhões.
Mnmnc
5

Peter AH Peterson, da UCLA, escreveu uma prova de tecnologia de conceito e desenvolveu a teoria para executar com segurança seu sistema com RAM criptografada, e a solução foi projetada expressamente para evitar ataques de inicialização a frio. O nome do seu trabalho é Cryptkeeper. Não sei se ele disponibiliza o software para download ou se é possível licenciá-lo da UCLA. No entanto, aparentemente é possível, pelo menos em princípio, projetar um sistema de criptografia para RAM 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 em um fator de 9 , 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 atrasaria o desempenho em um fator de 9.

A solução da Peterson não "limpa" a RAM, como você sugere. Em vez disso, ele usa um "mecanismo seguro de ocultação de chave" para impedir 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 isso seja explicado no documento.

O artigo foi publicado em 2010.

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

Fiquei tentado a fazer disso um comentário, e não 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. O motivo é que um invasor físico qualificado provavelmente poderia interromper a tentativa do programa do sistema de limpar a RAM se eles esperassem que uma operação desse tipo acontecesse - por exemplo, puxando a bateria da unidade ou mantendo pressionado o botão liga / desliga antes que a operação possa ser executada. completo. A solução da Peterson é mais segura porque não se baseia em uma janela de tempo necessária, na qual o computador pode continuar executando as instruções para concluir a limpeza. Em vez disso, a memória é constantemente protegido, mesmo que a própria CPU seja instantaneamente eliminada por algum feito incrível da tecnologia antes que você tenha a chance de reagir ao invasor.

E por "incrível façanha da tecnologia", quero dizer algo como Stuxnet.

allquixotic
fonte
Ótima descoberta. Definitivamente +1 de mim. Mas indisponível para confirmação - você precisa pagar para ler o documento. Pessoalmente, eu não confiaria nisso - embora não seja comumente usado, provavelmente terá bugs de implementação por todo o lado. Eu sentiria vontade de construir um muro de aço-concreto na frente da minha casa, sem ter sequer uma cerca na parte de trás.
mnmnc
Por outro lado, o fato de não ser comumente usado torna menos provável que seja conhecido pelos atacantes. É constantemente um jogo de gato e rato entre atacantes e defensores. A melhor solução possível é ter um sistema de segurança verdadeiramente robusto que também se beneficie da obscuridade / desconhecido. Se você não conseguir, a segunda melhor solução é ter uma solução conhecida e testada publicamente que também seja robusta, como o TLS. Este não é amplamente empregado como o TLS, portanto ainda não sabemos se é robusto. Hum. Problema do tipo Gato de Schroedinger ou Incerteza de Heisenberg.
allquixotic
11
Além disso, para sua informação, o principal resultado do Google para "Cryptkeeper RAM" é um PDF de download direto do trabalho deste pesquisador graduado, disponível diretamente em seu próprio site . Seu apelido é aparentemente Pedro e está hospedado em seu domínio tastytronic.net. Veja aqui e aqui . Então isso me diz que ele colocou o jornal em seu próprio site por vontade própria e, portanto, é de domínio público? Ou, pelo menos publicamente acessível com um "shhhh não diga IEEE" ;-)
allquixotic
Maravilhoso. Muito obrigado pelo link. Será uma palestra interessante.
mnmnc
Sim, interessante e talvez mais seguro do que apagar a RAM. Infelizmente ainda mais irrealista. Portanto, eu ficaria feliz em receber uma resposta para a pergunta original. Não é perfeito, mas é uma boa piada. Obrigado por compartilhar.
James Mitch
2

Eu imagino que o memtest86 seria muito bom em limpar a RAM. Eu sempre quis experimentar o abaixo, mas não o fiz. Se eu tentar, eu irei atualizá-lo.

Leia a kexecpágina do manual . E não tente kexeco .iso, mas você precisa descompactar o iso e prender 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 você está inicializando primeiro.

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

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

e quando você estiver pronto para pressionar o gatilho:

kexec -e

Estou pensando (mas poderia estar errado) que o --append=console=ttyS0,115200n8 memtest86 recebe para trabalhar através da porta serial. Portanto, se você tiver um, pode 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. Matar todas as instâncias em execução do X é provavelmente uma boa ideia.

O kexec-toolspacote Debian (também disponível no Ubuntu) vincula isso aos scripts de desligamento, portanto, se você editar/etc/default/kexec poderá solicitar ao processo de encerramento que invoque kexeccomo a coisa final em vez de reiniciar. Ou seja, se você estiver interessado em um desligamento limpo.

Numa emergência, um sync; kexec -e funcionaria.

No entanto, é possível que alguns chipsets, uma vez inicializados, causem bloqueios 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 carregador 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 sem atraso e contar com um pressionamento de tecla para exibir o memu). Isso pode levar você ao memtest86 a partir de uma condição de "inicialização recente" rapidamente, mas não instantaneamente.

Observe que isso não representa a RAM de vídeo. Uma solução para isso é configurar a RAM de vídeo como um dispositivo de bloco e enviar /dev/randompara o dispositivo de bloco por algumas iterações.

LawrenceC
fonte
2
Olhou para ele e google e assim por diante. De acordo com tails.boum.org/bugs/sdmem_does_not_clear_all_memory/…, existe um problema restante com o memtest: "Ainda há uma pequena quantidade de memória não limpa." Obrigado de qualquer maneira, o material kexec parece útil e fácil.
James Mitch
2

Esta é uma pergunta antiga, mas acho que posso contribuir. Como dito anteriormente, uma limpeza de memória baseada em software não é a melhor solução, simplesmente porque a energia pode ser cortada repentinamente, para que o software de limpeza não seja executado.

Posso imaginar o melhor cenário para ilustrar o problema: você administra negócios ilegais no seu computador em sua casa. Um dia, a energia elétrica desaparece repentinamente e, em seguida, um esquadrão do FBI invade a porta da sua casa, prende você e, em seguida, um técnico nerd abre rapidamente o gabinete do seu computador e usa dentro dele um gás frio para congelar o estado da memória para comprar um pouco. hora de fazer um ataque de inicialização a frio.

Portanto, a melhor maneira de resolver esse problema é tornar a caixa do computador mais segura, dificultando a abertura (algo como um cofre) ou até destruindo a memória aquecendo a placa usando uma resistência a bateria, acionada por uma violação mudar no caso. Poucos segundos a altas temperaturas podem destruir os dados ou até mesmo destruir os chips, o que não é um grande problema nessa situação.

Daniel Ribeiro
fonte
Eu sempre pensei sobre thermite aqui :-)
Konrad Gajewski
11
Thermite é realmente uma boa solução ... Fácil de inflamar e impossível parar a reação. Você só precisa fazer um circuito ativador seguro ... Porque se ele iniciar a reação por acidente, você terá muita dificuldade.
Daniel Ribeiro
0

O problema é se o seu computador está funcionando e a tela está bloqueada. Nesse ponto, a chave AES está armazenada na RAM e o usuário está ausente do computador. Um invasor pode abrir a caixa do computador e remover os módulos de RAM, mantendo-os energizados 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 manter a chave AES, mas o cache do processador é, como a solução denominada TRESOR. Infelizmente, isso requer um kernel Linux antigo e conhecimento avançado de aplicação de patches e compilação do kernel.

Derek
fonte
qualquer reivindicação para apoiar ram detém a chave aes?
precisa saber é o seguinte
Isso mostra que você não entende como a ram funciona; também é necessário ter um controlador de ram para atualizá-la a cada N ms para reter os dados.
Geoffrey
-2

Desculpe, mas você está sendo paranóico. Primeiro, como outros usuários indicaram, aparentemente o Cold Boot Attack funciona apenas em hardware antigo.

Se você ainda acha que é uma ameaça, a limpeza não é a solução.

O ataque de inicialização a frio envolve:

  • inicialização a frio da máquina
  • inicializando um sistema operacional leve para eliminar as chaves de criptografia da memória

Se alguém conseguir executar a inicialização a frio, obviamente o seu limpador não terá a oportunidade de executar. Portanto, não faz sentido instalar um.

Este é o principal caso do ataque. Vamos agora assumir que o invasor não deseja inicializar a frio o servidor em execução (por exemplo, porque isso acionaria um alerta de monitoramento). Em vez disso, ele espera executar o ataque a menos de 5 'de um desligamento limpo. Nesse caso:

  • Um limpador de RAM genérico também não é bom para você. Como se supõe que o invasor esteja fisicamente presente para ligar a máquina e vasculhar as chaves, ele também pode inicializar a máquina a frio antes de o limpador começar a funcionar. (Alertas de monitoramento neste momento são esperados.)
  • Um programa especializado que primeiro limpa a localização exata das chaves de criptografia FS antes de limpar o restante da RAM (por exemplo, truecrypt /wipecache mencionado pelo mnmnc) pode dificultar o trabalho do invasor. Ainda:
    • O invasor ainda seria capaz de vasculhar parte do conteúdo da RAM, não deixando o limpador percorrer toda a RAM. Mas pelo menos a maior parte dos dados no FS seria segura.
    • A solução não seria 100% infalível - apenas torna mais difícil para o invasor cronometrar a inicialização a frio.

Portanto, se você estiver realmente preocupado com esse ataque, sugiro que você aprenda kung-fu e fique de guarda por 5 pés ao lado da máquina cada vez que a desligar. Ou talvez use uma senha de inicialização no seu BIOS? Ambas as medidas sugeridas não precisam ser 100% eficazes: os invasores ainda podem derrotá-lo e ler a senha do BIOS do seu MB usando meios técnicos. Você só precisa atrasá-los por 5 'para que a janela do tempo de ataque expire.

Finalmente, se você está preocupado com alguém realizando todo o feito remotamente, você já está empenhado.

m000
fonte
2
O fato de funcionar apenas em hardware mais antigo não está comprovado. Postei isso em um fórum de segurança! Paranoico ou não. Se você não tem nada construtivo para adicionar, não responda. Que as pessoas paranóicas discutam suas coisas paranóicas. Há muita gente discutindo isso, vou adicionar mais alguns links à pergunta original.
James Mitch
O que você quer dizer com nada construtivo? Detalhei como a limpeza de memória é uma contramedida ineficiente para esse ataque. As pessoas que discutem sua proposta para limpar a memória não a tornam uma contramedida válida para o ataque. Para ser franco, é tecnicamente interessante adicionar esse limpador, mas apenas por isso. Não porque impedirá o ataque de inicialização a frio.
m000 21/08/12
"O ataque a inicialização a frio envolve: inicialização a frio da máquina"> Errado. Ram é removido e resfriado com gelo seco .; "inicializando um sistema operacional leve para remover as chaves de criptografia da memória"> Errado. Depois que a RAM esfria, ela pode ser examinada em outra máquina. Basta olhar para a pergunta original, há um link para a demonstração com o gelo seco.
James Mitch
11
Sobre a coisa DDR2 vs DDR 3: você não encontrará um documento de pesquisa alegando que a situação melhorou por causa da DDR 3. Essa é apenas uma afirmação não comprovada. Envie os autores do trabalho de pesquisa, eles não dirão que o DD3 é mais seguro.
James Mitch
11
@ JamesMitch "você não encontrará um trabalho de pesquisa alegando que a situação melhorou por causa da DDR 3" talvez você não encontre nenhum trabalho, mas acho que se os autores do TrueCrypt alegam ser dessa maneira - podemos confiar. Dê uma olhada aqui: truecrypt.org/docs/?s=unencrypted-data-in-ram e leia o primeiro asterisco * na parte inferior. Citação: "Novos tipos de módulos de memória supostamente exibem um tempo de decaimento muito menor (por exemplo, 1,5-2,5 segundos) do que os tipos mais antigos (a partir de 2008)." Isso significa que, desde 2008 algumas coisas mudaram na RAM ...
mnmnc