Criptografia de disco completa com autenticação de dois fatores para o Ubuntu: como?

9

Informações básicas

Eu sou um novato em Linux recentemente retirado o Windows. Atualmente, estou usando o Ubuntu 11.04 sem criptografia de disco completo. Apenas meu diretório pessoal é criptografado e com o eCryptFS. Ultimamente, comecei a perceber que a criptografia não é tão transparente quanto deveria ser. O VMWare, por exemplo, às vezes encontra problemas em máquinas virtuais armazenadas no meu diretório pessoal criptografado, então simplesmente movi as máquinas virtuais para um local não criptografado e vinculei a ele no meu diretório pessoal criptografado. Mas isso está além do ponto: percebi que na verdade não é muito seguro deixar o sistema não criptografado, pois um sistema operacional de código aberto como o Ubuntu é muito fácil de modificar para divulgar informações que deveriam manter em segredo.


Objetivo

Eu gostaria de poder trabalhar com a criptografia de disco completo em conjunto com um dispositivo principal e uma senha para autenticação pré-inicialização.


Requisitos / Detalhes

  1. O disco inteiro deve ser criptografado. No mínimo, o disco consiste em partições individuais que são todas criptografadas. Se for possível ocultar até as partições com criptografia, eu irei em frente. Quanto mais transparente a criptografia, melhor; Eu não deveria ter que usar meu computador de maneira diferente ou configurar qualquer outra coisa.
  2. O dispositivo usado para desbloquear e inicializar a partição criptografada deve ser um pequeno dispositivo portátil externo. Isso tem dois propósitos: é muito menos provável que o carregador de inicialização seja alterado para fins maliciosos, pois permanecerá comigo quando não estiver em uso; e os arquivos principais para descriptografar o disco não serão encontrados em nenhum lugar do próprio disco criptografado, sob nenhuma forma.
  3. Os arquivos de chave devem ser criptografados com uma senha. Se eu perder meu computador e meu dispositivo USB, os dados e o sistema operacional ainda estarão seguros. Se eu perder a chave USB ou ela estiver comprometida, posso criar outra limpa a partir de um backup. Nenhuma informação é divulgada nos dois casos. Claro, se eu perder meu computador, isso é inconseqüente.

Sim, já procurei guias de vários lugares, mas o problema é que eles não atendem a todos os requisitos (especialmente o número 3). Tenho certeza de que meus requisitos são comuns o suficiente para que alguém já tenha tentado e implementado com êxito essa configuração. Ficaria muito grato se algum profissional do Linux pudesse compartilhar uma solução.

Kevin Li
fonte
2
Re ", já que um sistema operacional de código aberto como o Ubuntu é muito fácil de modificar para divulgar informações que deveria manter em segredo". - Você ficaria surpreso com a facilidade de convencer os sistemas operacionais de código fechado a fazer o mesmo. O fato de um programa ser de código aberto não significa nada sobre sua segurança ou insegurança contra ataques locais.
precisa saber é o seguinte

Respostas:

2

Existe uma maneira simples de ter criptografia de disco completa que requer a presença de um pen drive específico E sua senha para inicializar.

O que você faz é desconectar o cabeçalho LUKS do seu disco rígido totalmente criptografado e armazená-lo no seu pen drive.

Presumo que você já tenha a seguinte configuração:

# /dev/sda1 is the boot partition (100MB)
# /dev/sda2 is the encrypted partition
parted /dev/sda mklabel msdos
parted /dev/sda -- mkpart primary ext2 1M 200M
parted /dev/sda -- mkpart primary ext4 200M -100M
cryptsetup luksFormat /dev/sda2

Crie uma cópia do cabeçalho luks e apague-a do dispositivo local:

mkdir /media/ramdisk && mount -t tmpfs -osize=20m,rw tmpfs /media/ramdisk
cryptsetup luksHeaderBackup /dev/sda2 --header-backup-file /media/ramdisk/header.img
dd if=/dev/urandom of=/dev/sda2 bs=1M count=2

Execute a última etapa várias vezes se você for o alvo de uma agência de alto orçamento. Também criei um ramdisk para segurar o cabeçalho temporariamente, para que não permaneça depois.

Com o seu dispositivo USB em / dev / sdb, faça uma partição de 2 MB e carregue o cabeçalho nela:

parted /dev/sdb -- mklabel MSDOS
parted /dev/sdb -- mkpart primary 1M 3M
dd if=/media/ramdisk/header.img of=/dev/sdb1

No momento, tudo em / dev / sda2 se parece com dados aleatórios e você tem seu cabeçalho em / dev / sdb1. Para acessar a unidade criptografada manualmente, use:

cryptsetup luksOpen --header /dev/sdb1 /dev/sda2 rootfs
mount /dev/mapper/rootfs /target

O próximo passo é fazer com que seu processo de inicialização solicite a inserção do pendrive na inicialização. Achei mais fácil apenas assumir que ele estará lá e falhará de outra forma. Primeiro, descubra o ID e o UUID dos seus dispositivos:

find -L /dev/disk/by-id/ -samefile /dev/sdb1
/dev/disk/by-id/usb-Generic-_Compact_Flash-part1
find -L /dev/disk/by-id/ -samefile /dev/sda2
/dev/disk/by-id/scsi-SATA_ST3320820AS_5QF28W6V-part2

blkid /dev/sdb1
/dev/sdb1: UUID="63347546-2db3-4bc1-9414-1142739a4c9f" TYPE="crypto_LUKS"

Em seguida, edite sua /etc/crypttablinha para ficar assim:

root /dev/disk/by-id/scsi-SATA_ST3320820AS_5QF28W6V-part2 none luks,header=/dev/disk/by-id/usb-Generic-_Compact_Flash-part1

(Você pode precisar deste patch para obter suporte para a headeropção crypttab)

Por último, mas não menos importante, atualize seu initram:

update-initramfs -u

Você poderia dar um passo adiante e, na verdade, ter toda a partição de inicialização carregada na unidade USB . O autor deste artigo esteve neste site fazendo um acompanhamento .

Existem muitas abordagens diferentes que você pode adotar , com diferentes graus de segurança e conveniência.

Uma observação específica sobre segurança: se a sua senha estiver comprometida, qualquer pessoa com uma cópia do cabeçalho poderá descriptografar os dados, mesmo que você a altere posteriormente.

GnP
fonte
1

Eu sei que o TrueCrypt está disponível para OSX, Windows e Linux. Você pode fazer dois níveis de criptografia para toda a unidade. Eu o usei no Debian com criptografia de disco completo AES. Requer a senha na inicialização para acessar os dados no disco rígido.

kobaltz
fonte
3
Eu pensei que a criptografia de disco completo TrueCrypt só funcionava com o Windows.
21711 Kevin Kevin Li
two levels of encryption for the whole drive! =two factor auth
GnP 02/07/2015