Ataques contra Encriptação de Disco via Acesso a DRAM

Persistência da Memória

"A Persistência da Memória", Salvador Dalí, 1931

Você já deve ter lido sobre o trabalho de pesquisadores da Universidade de Princeton sobre a possibilidade de quebrar diversos sistemas de encriptação obtendo as chaves acessando diretamente os chips de memória do sistema (o paper pode ser obtido aqui).

Nestes ataques, os pesquisadores usam uma propriedade física da memória DRAM, que mantém os dados armazenados por um período de tempo mesmo depois da energia ser cortada. Memórias DRAM são efetivamente capacitores que armazenam energia, e este período consiste no tempo em que o capacitor demora para decair ao estado de "terra". Este período depende da temperatura do ambiente, e em condições normais leva de 2,5 a 35 segundos, muito curto para um ataque na prática. No entanto, a uma temperatura de -50°C ou menor o conteúdo da memória pode se conservar por horas ou até mesmo dias, mesmo sem energia.

Isto permite que por exemplo um chip de memória possa ser retirado de um sistema em funcionamento, imediatamente congelado, e levado depois para análise em um outro PC onde todo o seu conteúdo poderá ser lido. Se a chave de encriptação estiver em memória - e normalmente está - ela vai poder ser lida e usada para decriptar o conteúdo do disco. Este ataque foi executado com sucesso contra vários sistemas de encriptação, incluindo o BitLocker presente no Windows Vista.

É um ataque interessante do ponto de vista técnico, mas na prática não significa nenhuma novidade para os usuários do BitLocker. Existem diversas formas de se obter a chave de encriptação acessando diretamente a memória, e o congelamento talvez seja uma das mais complicadas. Por exemplo,. devido a forma como a arquitetura dos PCs atuais foi desenhada, um equipamento conectado via interface Firewire, PCMCIA ou em um slot PCI pode ler diretamente a memória usando DMA e obter as chaves diretamente da memória - dispensando o nitrogênio líquido.

Em todos estes cenários o ataque tem que ser feito contra um sistema em funcionamento, já que a chave de encriptação tem que estar carregada na memória. A proteção contra este ataque, portanto, é manter o computador desligado quando o usuário não estiver ele próprio o utilizando. Isso significa desligar o equipamento quando você for sair com ele ou deixá-lo sozinho, ou usar a função de "hibernar" (hibernate) do Windows. O hibernate copia todo o conteúdo da memória para o disco (encriptado) e desliga totalmente o equipamento. Menos de um minuto depois o conteúdo da memória terá decaído e nenhum ataque poderá ser feito.

O hibernate é diferente do sleep (ou "suspender"), que na verdade apenas reduz o consumo de energia mas mantém o equipamento ligado, e portanto vulnerável a estes ataques. Portanto usuários do BitLocker nunca devem utilizar o recurso de sleep. Isto pode ser desabilitado nas novas opções de Gerenciamento de Energia incluídas nas políticas de grupo do Windows Vista. As mesmas políticas também podem programar o Vista para entrar em hibernate automaticamente depois de um determinado tempo de inatividade, protegendo assim o computador caso o usuário tenha deixado ele ligado sozinho.

Outro ponto importante é utilizar o BitLocker no chamado modo avançado, onde a proteção do TPM é completada com a inserção de um PIN ou chave USB pelo usuário. Desta forma somente com a presença do usuário o sistemapode ser ligado e a chave de encriptação carregada na memória.

Em resumo, para você ficar protegido:

1. Não use sleep, use hibernate.

2. Use BitLocker requerendo a entrada de um PIN ou uso de um token USB durante o boot.

No blog de System Integrity da Microsoft você pode ler também um post mais completo sobre esse assunto, colocado pelo Douglas Maciver do time de ataque e penetração do BitLocker.