Shufflecake, um kit de ferramentas para criar partições de disco criptografadas ocultas, foi publicado

A empresa de auditoria de segurança Kudelski Security publicou uma ferramenta chamada Shufflecake que permite criar sistemas de arquivos ocultos espalhados pelo espaço livre disponível em partições existentes e indistinguíveis de dados residuais aleatórios. As partições são criadas de tal forma que sem conhecer a chave de acesso é difícil comprovar a sua existência mesmo durante a realização de análises forenses. O código dos utilitários (shufflecake-userland) e do módulo do kernel Linux (dm-sflc) é escrito em C e distribuído sob a licença GPLv3, o que impossibilita a inclusão do módulo do kernel publicado no kernel principal do Linux devido à incompatibilidade com a licença GPLv2 sob a qual o kernel é fornecido.

O projeto se posiciona como uma solução mais avançada que Truecrypt e Veracrypt para ocultar dados que requerem proteção, que possui suporte nativo para a plataforma Linux e permite colocar até 15 partições ocultas no dispositivo, aninhadas umas dentro das outras para confundir a análise da sua existência. Se o uso do Shufflecake em si não for segredo, como pode ser avaliado, por exemplo, pela presença dos utilitários correspondentes no sistema, então o número total de partições ocultas criadas não pode ser determinado. As partições ocultas criadas podem ser formatadas a critério do usuário para acomodar qualquer sistema de arquivos, por exemplo, ext4, xfs ou btrfs. Cada partição é tratada como um dispositivo de bloco virtual separado com sua própria chave de desbloqueio.

Para confundir os rastros, propõe-se a utilização do modelo de comportamento de “negação plausível”, cuja essência é que dados valiosos são ocultados como camadas adicionais em seções criptografadas com dados menos valiosos, formando uma espécie de hierarquia oculta de seções. Em caso de pressão, o proprietário do dispositivo pode revelar a chave da partição criptografada, mas outras partições (até 15 níveis aninhados) podem estar ocultas nesta partição, e determinar sua presença e provar sua existência é problemático.

A ocultação é obtida construindo cada partição como um conjunto de fatias criptografadas colocadas em posições aleatórias no dispositivo de armazenamento. Cada fatia é criada dinamicamente quando é necessário espaço de armazenamento adicional na partição. Para dificultar a análise, alternam-se fatias de seções diferentes, ou seja, As seções do Shufflecake não estão vinculadas a regiões contíguas e as fatias de todas as seções são misturadas. As informações sobre fatias usadas e gratuitas são armazenadas em um mapa de localização associado a cada partição, que é referenciado por um cabeçalho criptografado. Os cartões e o cabeçalho são criptografados e, sem o conhecimento da chave de acesso, são indistinguíveis dos dados aleatórios.

O cabeçalho é dividido em slots, cada um dos quais define sua própria seção e fatias associadas. Os slots no cabeçalho são empilhados e vinculados recursivamente - o slot atual contém a chave para descriptografar os parâmetros da seção anterior na hierarquia (a menos oculta), permitindo que uma senha seja usada para descriptografar todas as seções menos ocultas associadas. a seção selecionada. Cada partição menos oculta trata as fatias das partições aninhadas como livres.

Por padrão, todas as subseções do Shufflecake têm o mesmo tamanho visível da seção de nível superior. Por exemplo, se houver três partições em um dispositivo de 1 GB, cada uma delas ficará visível para o sistema como uma partição de 1 GB e o espaço total disponível em disco será compartilhado entre todas as partições - se o tamanho total dos dados armazenados exceder o tamanho real do dispositivo, ele iniciará um erro de E/S.

Seções aninhadas que não estão abertas não participam da alocação de espaço, ou seja, uma tentativa de preencher uma partição de nível superior resultará na destruição de dados em partições aninhadas, mas não tornará possível revelar sua presença através da análise do tamanho dos dados que podem ser colocados na partição antes do início do erro (é assume-se que as partições superiores contêm dados imutáveis ​​​​para distrair a atenção e nunca são usadas separadamente, e o trabalho regular é sempre realizado com a seção aninhada mais recente, o próprio esquema implica que é mais importante manter o segredo da existência de dados do que perdê-los).

Na verdade, 15 partições Shufflecake são sempre criadas - a senha do usuário é anexada às partições usadas e as partições não utilizadas são fornecidas com uma senha gerada aleatoriamente (é impossível entender quantas partições são realmente usadas). Quando as partições do Shufflecake são inicializadas, o disco, partição ou dispositivo de bloco virtual alocado para seu posicionamento é preenchido com dados aleatórios, o que torna impossível identificar os metadados e dados do Shufflecake no contexto geral.

A implementação do Shufflecake tem desempenho bastante alto, mas devido à presença de sobrecarga, seu rendimento é aproximadamente duas vezes mais lento em comparação com a criptografia de disco baseada no subsistema LUKS. Usar o Shufflecake também resulta em custos adicionais de RAM e espaço em disco para armazenar dados de serviço. O consumo de memória é estimado em 60 MB por partição e o espaço em disco em 1% do tamanho total. Para efeito de comparação, a técnica WORAM, de propósito semelhante, leva a uma desaceleração de 5 a 200 vezes com uma perda de 75% de espaço utilizável em disco.

O kit de ferramentas e o módulo do kernel foram testados apenas no Debian e Ubuntu com kernels 5.13 e 5.15 (suportado no Ubuntu 22.04). Ressalta-se que o projeto ainda deve ser considerado como um protótipo funcional, que não deve ser utilizado para armazenar dados importantes. No futuro, planejamos fazer otimizações adicionais de desempenho, confiabilidade e segurança, bem como fornecer a capacidade de inicializar a partir de partições Shufflecake.

Fonte: opennet.ru

Adicionar um comentário