terça-feira, 27 de maio de 2008

Criptografia em Dispositivos de Armazenamento em Bloco no Linux

O procedimento a seguir foi testado no Ubuntu 7.10 e no Fedora 8, utilizando um memory stick de 1 GB já particionado e contendo apenas uma partição. Foi utilizado o LUKS (Linux Unified Key Setup) para criptografar os dados.

Primeiro temos que formatar o dispositivo para que o LUKS possa utilizar a partição:

$ sudo -H cryptsetup luksFormat /dev/sda1



WARNING!

========
This will overwrite data on /dev/sda1 irrevocably.

Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase:
Verify passphrase:
Command successful.


Note que no comando anterior foi solicitada a entrada de uma senha (passphrase), portanto memorize-a, se não os dados ficaram inacessíveis.

Inicie o dispositivo para que seja criado um ponto de acesso no diretório /dev. Este dispositivo é do tipo DM e ficará localizado em /dev/mapper/nome-do-device:


$ sudo -H cryptsetup luksOpen /dev/sda1 ms01-cr
Enter LUKS passphrase:
key slot 0 unlocked.
Command successful.


Crie o sistema de arquivos no dispositivo ms01-cr:


$ sudo -H mkfs.ext3 /dev/mapper/ms01-cr
mke2fs 1.40.2 (12-Jul-2007)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)

Fragment size=4096 (log=2)
125184 inodes, 250234 blocks
12511 blocks (5.00%) reserved for the super user
First data block=0

Maximum filesystem blocks=260046848
8 block groups
32768 blocks per group, 32768 fragments per group
15648 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376

Writing inode tables: done

Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 27 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.


Crie um ponto de montagem para poder ter acesso ao sistema de arquivos recém criado:

$ sudo mkdir /mnt/ms01-cr


Monte o sistema de arquivos:

$ sudo mount /dev/mapper/ms01-cr /mnt/ms01-cr


Faça um teste de criação de arquivo para certificar que tudo está funcionando normalmente:

$ sudo touch /mnt/ms01-cr/teste


Desmonte o sistema de arquivos:

$ sudo umount /mnt/ms01-cr


Feche o dispositivo de mapeamento:

$ sudo cryptsetup luksClose ms01-cr


Removar logicamente o memory stick:

$ sudo eject /dev/sda


Remova-o fisicamente.

Usando o memory stick encriptado

Conecte o memory-stick novamente e você verá a seguinte janela de diálogo solicitando a senha para acesso aos dados encriptados:



Após digitar a senha correta, na área de trabalho aparecerá um ícone chamado disk relativo ao volume encriptado. Detalhes sobre a montagem podem ser verificados com:

$ mount | grep luks
/dev/mapper/luks_crypto_64cbad69-0fcd-4fe5-b3c5-22bb5321ab78 on /media/disk type ext3 (rw,nosuid,nodev)


Agora o dispositivo pode ser utilizado normalmente com se não estivesse encriptado, pois todo o trabalho de criptografia é feito de forma transparente.

Antes de remover o dispositivo clique com o botão 2 sobre o ícone disk e selecione a opção ejetar, assim como é feito com qualquer outro disco removível.

Para mais informações consulte:

http://kbase.redhat.com/faq/FAQ_96_7091.shtm
http://www.howtoforge.com/ubuntu_dm_crypt_luks