Casa criptografada eCryptfs - explicação

9

Estou tentando entender como o ecryptfs funciona internamente e a documentação no ecryptfs.org não ajuda. Talvez alguém seja capaz de explicar como isso realmente funciona. É claro que estou ciente dessas estruturas ocultas de diretórios .Private / .ecryptfs. Minhas perguntas são mais detalhadas:

  • Como o sistema sabe que minha casa está criptografada e descriptografada quando estou efetuando login?
  • Como ele procura por diretórios principais (aqueles com dados criptografados, ponto de montagem para ele (às vezes é home, às vezes / home / Private), diretório com frase secreta etc). Esses diretórios geralmente são colocados em /home/.ecryptfs/ e vinculados à home. Qual local é a chave? Os nomes de diretório ".ecryptfs" e ".Private" são reservados e codificados ou configuráveis?
  • Sobre o chaveiro: supondo que eu tenha várias chaves no meu chaveiro - como ele corresponde à chave adequada com determinado diretório criptografado?
ardabro
fonte

Respostas:

11

Isso descreve a configuração inicial criptografada padrão. Se você quiser usar senhas ou pastas diferentes, algoritmo de criptografia, tamanho da chave, etc ... poderá usar mount.ecryptfsdiretamente.

Quando você cria um usuário com uma casa criptografada ou usa ecryptfs-migrate-homeum usuário existente, ele usa o eCryptfs e configura um diretório que /home/.ecryptfs/contém pastas com a "casa real" do novo usuário, /home/.ecryptfs/user/contendo:

  • seus arquivos criptografados reais /home/.ecryptfs/user/.Private/e o diretório de configuração do eCryptfs que /home/.ecryptfs/user/.ecryptfs/contém:

    • montagem automática - se existir, ele diz ecryptfs-mount-privatepara executar no login, montando a pasta privada (inicial). Vejoman ecryptfs-mount-private

    • auto-umount - se existir, ele diz ecryptfs-umount-privatepara executar no logout, desmontando a pasta privada (inicial). Vejoman ecryptfs-umount-private

    • Private.mnt - um arquivo de configuração lido por mount.ecryptfs_privateno login que define onde seu diretório criptografado deve ser montado. Se você criptografou seu diretório pessoal, será $HOME.
    • Private.sig - contém a assinatura da senha do ponto de montagem. Ele fornece um mecanismo seguro para os eCryptfs determinarem se você está usando a chave correta ou não. (Consulte Q sobre Private.sig e Private.mnt )
    • senha de acesso quebrada - a senha de acesso real (aleatória) dos eCryptfs, criptografada ("quebrada") com sua senha de login

O diretório home regular em /home/user/contém apenas links para /home/.ecryptfs/user/.ecryptfse /home/.ecryptfs/user/.Privatee mais dois links para um arquivo de ajuda e /usr/share/ecryptfs-utils/ecryptfs-mount-private.desktop(apenas executa ecryptfs-mount-private).

O eCryptfs configura o PAM (consulte os arquivos /etc/pam.d/) para procurar automaticamente pastas /home/.ecryptfs/pessoais criptografadas e montar e desmontar pastas pessoais criptografadas no login / logout, dependendo da existência ou não dos arquivos auto-mounte auto-umount. Veja o código fonte do eCryptfs e os scripts preinst e postrm do pacote .deb (vinculados acima) para obter mais detalhes, e este clipe de man ecryptfs-setup-private:

[O] módulo pam_ecryptfs.so na pilha do PAM que usará automaticamente a senha de login para desembrulhar a senha de montagem, adicione a senha ao chaveiro de kernel do usuário e execute automaticamente a montagem. Veja pam_ecryptfs (8).

  • Esta página de ajuda do Ubuntu tem instruções sobre como " montar automaticamente um sistema de arquivos criptografado ecryptfs na inicialização ... usando um /root/.ecryptfsrcarquivo que contém opções de montagem, junto com um arquivo de senha que reside em uma chave USB " .

Depois de desembrulhadas, as chaves são armazenadas no chaveiro do kernel do usuário, você pode dar uma olhada nele keyctl show, pois se ele usasse o chaveiro raiz ( sudo keyctl show), um administrador poderia descobrir a senha. Você pode usar ecryptfs-unwrap-passphrasepara ver a senha efetiva do ecryptfs. O eCryptfs descriptografa seus arquivos usando a assinatura de chave correspondente (opções ecryptfs ecryptfs_sig=(fekek_sig)e ecryptfs_fnek_sig) no arquivo Private.sig.


Mais informações

O Ubuntu possui bons arquivos de ajuda, como arquivos criptografados em sua casa, e eCryptfs no guia do servidor Ubuntu .

O Arch Linux tem uma ajuda geralmente excelente, consulte https://wiki.archlinux.org/index.php/System_Encryption_with_eCryptfs

E veja as manpáginas de ecryptfs(online lá ou no seu sistema) e todas as suas ferramentas, especialmente ecryptfs-setup-private.

Você pode adicionar um novo usuário com uma casa criptografada usando adduser --encrypt-home(Para obter mais informações, consulte a opção -b de ecryptfs-setup-private) e veja como os arquivos são configurados por você. E para realmente se molhar com todos os detalhes que você provavelmente nunca quis saber, consulte o código-fonte :

Xen2050
fonte
No / etc / crypttab, tenho apenas uma linha para o cryptswap; nada de especial no fstab também. Minha casa está criptografada. Ainda não tenho idéia de como o sistema sabe que minha casa está criptografada e que sth special é necessário no logon.
Ardabro
Eu acho que é feito automaticamente quando a casa é visualizada no @login. Você leu a ajuda do archlinux, nada em qualquer lugar foi útil? Mas, por favor, defina "sth special", eu nem o "professor google" estamos familiarizados com isso. Abreviação de "algo especial"? Como o quê?
Xen2050
sth special é pegar a chave e montar o diretório criptografado, que é um caminho extra no processo de login. O wiki do Arch foi muito útil. Além disso, fiz algumas investigações no código-fonte ecryptfs. Mas ainda não sei onde está a chave "if" no processo de login e o que exatamente ele verifica.
Ardabro 12/12/14
Isso soa um pouco mais como o linux encontraria e usaria qualquer pasta pessoal, acho que algumas informações são armazenadas em /etc/passwd(pelo menos home e shell), isso parece diferente para um usuário doméstico criptografado? Eu vou adicionar um pouco de informação sobre o chaveiro do kernel para a minha resposta também, ecryptfs chaves armazena lá aparentemente
Xen2050
11
Desculpe, perdi a atualização. Ótima explicação. Muito Obrigado!
Ardabro 11/01