close

ECryptfs

Ir para a navegação Ir para a pesquisa

eCryptfs  é um sistema de arquivos criptográficos em camadas compatível com POSIX no kernel Linux (introduzido no kernel versão 2.6.19).

Informações gerais

A diferença entre o eCryptfs e a maioria dos outros sistemas de arquivos criptográficos é que todos os metadados criptográficos são armazenados dentro do arquivo criptografado. Isso permite que esses arquivos sejam movidos por canais confiáveis, enquanto ainda permite que indivíduos autorizados acessem o conteúdo dos arquivos.

O eCryptfs é implementado como um módulo do kernel Linux, complementado com vários utilitários para trabalhar com chaves. Este módulo criptografa o conteúdo dos arquivos usando a API criptográfica do kernel. O módulo de armazenamento de chaves extrai informações dos cabeçalhos de arquivos individuais e envia esses dados para o aplicativo de criptografia. Com base nas informações recebidas, as regras de criptografia são determinadas, de acordo com as quais uma decisão é tomada sobre outras ações (por exemplo, solicitar que o usuário insira uma senha ou descriptografe a chave de sessão usando a chave privada).

Características arquitetônicas

eCryptfs é baseado no formato de arquivo OpenPGP descrito na RFC2440 [1] . Ao mesmo tempo, para preservar a possibilidade de acesso aleatório aos dados em um arquivo, os desenvolvedores se desviaram do padrão. De acordo com o formato OpenPGP, as operações de criptografia e descriptografia devem ser realizadas em todo o conteúdo do arquivo. Isso leva ao fato de que nem um único byte pode ser lido do arquivo até que ele seja completamente descriptografado. Para contornar esse problema sem comprometer a segurança do sistema, o eCryptfs divide os dados em extensões . Por padrão, esses pedaços são o tamanho da página do sistema de arquivos (definido no kernel, normalmente 4096 bytes ). Para ler dados de uma peça, ela deve ser totalmente descriptografada e para gravar dados em um bloco, todo o bloco deve ser criptografado.

Image
Arquitetura do sistema eCryptfs

Cada bloco tem seu próprio vetor de inicialização exclusivo. Vários vetores de inicialização são armazenados em um bloco que precede vários blocos de dados subsequentes. Quando os dados são gravados em um bloco, o vetor de inicialização correspondente no bloco desses vetores é atualizado e substituído antes que o bloco seja criptografado. Os blocos são criptografados com uma cifra de bloco escolhida com base nas regras correspondentes ao arquivo fornecido no modo de concatenação de blocos de texto cifrado .

Image
Esquema de extensão e criptografia usado no sistema de arquivos eCryptfs

Implementar a criptografia no nível do sistema de arquivos e armazenar dados criptográficos junto com os próprios arquivos tem algumas vantagens:

  • As chaves de criptografia podem ser anexadas a arquivos individuais em vez de a um diretório ou sistema de arquivos como um todo.
  • Os utilitários de backup incremental podem funcionar corretamente em arquivos sem acesso ao conteúdo descriptografado.
  • Aumento da produtividade. Na maioria dos casos, apenas alguns arquivos precisam ser criptografados. Assim, por exemplo, bibliotecas e arquivos executáveis, via de regra, não precisam ser criptografados.
  • Os arquivos podem ser transferidos livremente de um dispositivo para outro sem qualquer conversão.

Estrutura do cabeçalho

Cada inode eCryptfs corresponde a um inode do sistema de arquivos subjacente e contém um contexto criptográfico associado a ele. Este contexto inclui:

  • Chave de criptografia de sessão
  • Sinalizador - o arquivo é criptografado ou não
  • Assinaturas dos tokens de autenticação associados a este arquivo
  • Tamanhos de extensão

O eCryptfs pode armazenar em cache o contexto criptográfico de cada arquivo para acelerar o sistema.

Trabalhando com senhas

Para evitar ataques de dicionário em senhas, eCryptfs " salts " senhas de autenticação: a senha é concatenada com uma string "salt", então a string concatenada é iterativamente hash (65537 vezes por padrão) para gerar uma assinatura de autenticação correspondente à senha.

Trabalhando com chaves

O eCryptfs funciona da forma mais transparente possível para todos os aplicativos que trabalham com arquivos criptografados. Na maioria dos casos em que o controle de acesso não pode ser totalmente aplicado pelo host, o fato de o arquivo ser criptografado não deve ser um problema para o usuário. A criptografia, por definição, deve garantir a integridade e confidencialidade das informações, e o sistema resolve esses problemas usando dados de autenticação do usuário para gerar chaves e acessar o conteúdo.

Chaves de sessão

Cada arquivo recebe uma chave de sessão gerada aleatoriamente, que é usada para criptografar o conteúdo do arquivo. O eCryptfs armazena essa chave de sessão nos metadados criptográficos do arquivo. Estes, por sua vez, são armazenados pelo respetivo utilizador. Quando um aplicativo fecha um arquivo recém-criado, o eCryptfs criptografa a chave de sessão exatamente uma vez para cada token de autenticação associado a esse arquivo, de acordo com as regras de criptografia. Essas chaves de sessão criptografadas são então gravadas nos cabeçalhos dos arquivos correspondentes. Quando o aplicativo abre o arquivo criptografado posteriormente, o eCryptfs lê as chaves de sessão criptografadas e as extrai do contexto criptográfico do arquivo. O sistema então examina os tokens de autenticação do usuário, tentando corresponder às chaves de sessão criptografadas. A primeira chave encontrada é usada para descriptografar a chave de sessão. No caso em que nenhum token é adequado para descriptografia, o sistema atua de acordo com a política de trabalho. A próxima ação pode ser, por exemplo, uma solicitação ao módulo PKI ou uma solicitação de senha.

Algoritmos de criptografia usados

Os seguintes algoritmos de criptografia simétrica [2] são usados ​​para criptografia :

  • AES com tamanho de bloco de 16; tamanho da chave em bytes - 16, 32
  • Baiacu com tamanho de bloco 8; tamanho da chave em bytes - 16, 56
  • DES3_EDE com tamanho de bloco 8; tamanho da chave em bytes - 24
  • Twofish com um tamanho de bloco de 16; tamanho da chave em bytes - 16, 32
  • CAST6 com tamanho de bloco 16; tamanho da chave em bytes - 16, 32
  • CAST5 com tamanho de bloco 8; tamanho da chave em bytes - 5, 16

Utilitários adicionais

O eCryptfs possui diversas ferramentas integradas para facilitar o trabalho com o sistema.

Plug-ins de autenticação

O módulo de autenticação conectável ( PAM ) fornece um  mecanismo para ajudar o administrador a determinar como os usuários finais serão autenticados. O PAM obtém a senha do usuário e a armazena nos dados do usuário. A senha é armazenada como um token de autenticação sem sal. A vantagem deste sistema é a flexibilidade. Assim, a autenticação por senha pode ser facilmente substituída pela autenticação por chave USB.

Interface PKI

O eCryptfs fornece uma PKI (Infraestrutura de Chave Pública) personalizável. O módulo PKI aceita chaves e dados como entrada e retorna dados criptografados ou descriptografados.

Segurança do sistema

Em 2014, o site DefuseSec auditou [3] eCryptfs (quase simultaneamente com a auditoria do sistema EncFS). De acordo com seus resultados, o sistema eCryptfs é atualmente seguro de usar. No entanto, ele precisa de mais pesquisas de segurança, pois não foi desenvolvido por um criptógrafo.

Veja também

Notas

  1. Donnerhacke, Lutz, Callas, Jon. Formato de mensagem OpenPGP . tools.ietf.org. Data de acesso: 30 de outubro de 2015. Arquivado a partir do original em 16 de novembro de 2015.
  2. Algoritmos de criptografia em ECryptfs . Recuperado em 19 de setembro de 2018. Arquivado a partir do original em 19 de setembro de 2018.
  3. Auditoria de Segurança eCryptfs . defuse.ca. Data de acesso: 30 de outubro de 2015. Arquivado a partir do original em 17 de novembro de 2015.

Links