Há uma maneira simples de ter a criptografia completa de disco que requer a presença de um pen drive específico e sua senha para inicializar.
O que você faz é desanexar o cabeçalho LUKS do seu disco rígido totalmente criptografado e armazená-lo no seu pen drive.
Suponho 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-o 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 alvo de uma agência de alto orçamento. Eu também criei um ramdisk para manter o cabeçalho temporariamente para que ele não permaneça depois.
Com seu dispositivo usb em / dev / sdb, crie uma partição de 2MB e carregue o cabeçalho nele:
parted /dev/sdb -- mklabel MSDOS
parted /dev/sdb -- mkpart primary 1M 3M
dd if=/media/ramdisk/header.img of=/dev/sdb1
Agora, tudo em / dev / sda2 se parece com dados aleatórios, e você tem seu cabeçalho em / dev / sdb1. Para acessar manualmente a unidade criptografada, você usa:
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 que o pendrive seja inserido na inicialização. Eu achei mais fácil apenas assumir que vai 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 linha /etc/crypttab
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 de este patch para obter suporte para a opção header
em crypttab
)
Por último, mas não menos importante, atualize seu initram:
update-initramfs -u
Você poderia levar isso um passo adiante e, na verdade, ter o todo partição de inicialização carregada na unidade USB . O autor deste artigo estava neste site fazendo um follow-up .
Existem muitos abordagens diferentes você pode tirar um>, com diferentes graus de segurança e conviniência.
Uma nota específica sobre segurança: se sua frase secreta for comprometida, qualquer pessoa com uma cópia do cabeçalho poderá descriptografar os dados, mesmo se você alterar a senha mais tarde.