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:
- Introdução ao Tails RAM Wipe
- Mais algumas informações sobre a implementação do RAM Wipe do tails
- Liberte Linux RAM Wipe introdução
- Mais detalhes sobre a implementação do Liberte Linux RAM Wipe
- O memtest não está excluindo tudo
- Teste se o RAM Wipe está funcionando
- Discussão da lista de discussão do Tails
- Outra discussão na lista de discussão do Tails
- Relatório de bug do kernel
Se você quiser ver o recurso se tornando realidade, vote no Ubuntu Brainstorm!
security
memory
encryption
James Mitch
fonte
fonte
Respostas:
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:
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:
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:
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á:
Para Windows:
Para Linux:
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.
fonte
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.
fonte
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
kexec
página do manual . E não tentekexec
o .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
kexec
comando 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-tools
pacote 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 invoquekexec
como 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
kexec
nã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/random
para o dispositivo de bloco por algumas iterações.fonte
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.
fonte
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.
fonte
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:
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:
truecrypt /wipecache
mencionado pelo mnmnc) pode dificultar o trabalho do invasor. Ainda: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.
fonte