Eu li muitos tutoriais sobre LUKS/dm-crypt/cryptsetup, em particular sobre como criar um contêiner de arquivo criptografado.
O primeiro passo é criar o arquivo com extensão dd
.
Em seguida, alguns tutoriais mapeiam o arquivo /dev/loop0
e formatam o dispositivo de loop, outros tutoriais formatam diretamente o arquivo sem mapeá-lo em um dispositivo de loop.
Minha dúvida: É necessária a etapa do dispositivo loop? Qual é a diferença?
Responder1
Você pode usar dd
ou fallocate
(ou head
algumas outras ferramentas) para criar um arquivo para atuar como seu contêiner. Então, como Vincent Yu afirmou, cryptsetup
posso cuidar da configuração/desmontagem do loop para você.
fallocate -l 100M mypath/filecontainer
sudo losetup # Debug for demonstration, not necessary in a real script
sudo cryptsetup -y luksFormat mypath/filecontainer
sudo losetup # Debug for demonstration, not necessary in a real script
sudo cryptsetup luksOpen mypath/filecontainer filecontainer
sudo losetup # Debug for demonstration, not necessary in a real script
sudo mkfs -t ext4 /dev/mapper/filecontainer
sync
sudo cryptsetup luksClose filecontainer
sudo losetup # Debug for demonstration, not necessary in a real script
Na sudo losetup
saída de depuração, observe o AUTOCLEAR = 1
para a filecontainer
entrada. Vocêpoderiaem vez disso, enlouqueça loopdev=$(sudo losetup -f); mount -o loop <etc>
, mas deixar cryptsetup
lidar com isso éCAMINHOAgradável.
A chave é que você deseja ter certeza de usar PRIMEIRO cryptsetup luksOpen containerfile mappedname
para montá-lo /dev/mapper/mappedname
por padrão (você pode fornecer um caminho completo começando com /
e ele será montado lá, eu acredito, e ENTÃO formate o /dev/mapper/mappedname
destino e certifique-se de NÃO tocar no filecontainer
diretamente, caso contrário você estará ignorando o mecanismo de criptografia e apenas criando um arquivo de loopback não criptografado.
Responder2
Se você não gerenciar o dispositivo de loop sozinho, cryptsetup
configurará automaticamente um dispositivo de loop e o fechará quando não for mais necessário. Portanto não há diferença entre os dois; cryptsetup
sempre funciona no dispositivo de loop. Ver man cryptsetup
:
NOTAS SOBRE O USO DO DISPOSITIVO LOOPBACK
O Cryptsetup geralmente é usado diretamente em um dispositivo de bloco (partição de disco ou volume LVM). Entretanto, se o argumento do dispositivo for um arquivo, o cryptsetup tenta alocar um dispositivo de loopback e mapeá-lo neste arquivo. Este modo requer o kernel Linux 2.6.25 ou mais recente que suporta o sinalizador autoclear de loop (o dispositivo de loop é limpo automaticamente no último fechamento). Claro, você sempre pode mapear um arquivo para um dispositivo de loop manualmente. Veja o FAQ do cryptsetup para ver um exemplo.
Quando o mapeamento do dispositivo está ativo, você pode ver o arquivo de backup de loop na saída do comando de status. Veja também lossup(8).