GnuPGEmDispositivoUSB

Redirected from page "GnuPGEmPenDrivers"

Clear message

Armazernando Chaves GPG em um Dispositivo USB (Pendrive) Encriptado

Geralmente é desejado ser possível utilizar ima Chave GPG em mais de um computador, como em casa e no escritório, ou em um computador de Mesa e em um Portátil. Infelizmente, armazenar chaves de encriptação em local sobre o qual não se exerça posse o tempo todo não é uma boa idéia. Até mesmo armazenar chaves em um computador portátil pode se tornar um problema, pois se este for roubado, o mesmo ocorre com sua chave GPG. Felizmente, ainda assim seria possível revogar a chave antes que alguém pudesse decifrá-la, mas isso continua a causar inconvenientes. E se fosse possível armazenar a chave, com segurança, em um dispositivo que estivesse sempre consigo?

Icones/importante.png IMPORTANTE: Tenha certeza de que foi feita uma cópia de segurança da pasta ~/.gnupg antes de seguir os passos abaixo. A última coisa que você quer é perder todos as chaves por que algo saiu errado.

Conheça o dm-crypt

No site do dm-crypt lê-se: "Mapeador de dispositivos (Device-mapper) é uma nova infraestrutura no Kernel Linux versão 2.6 que provê uma forma genérica de se criar camadas virtuais de blocos de dispositivos que podem fazer coisas diferentes sobre uma camada de dispositivos reais, como dividí-lo, concatená-lo, espelhá-lo, sincronizá-lo, etc. O Mapeador de dispositivos (device-mapper) é utilizado nas ferramentas LVM2 e EVMS 2.x, por exemplo. O dm-crypt é um desses mapeadores de dispositivos, cujo objeto provê encriptação transparente de blocos de dispositivos utilizando o novo cryptoapi do Linux 2.6. O usuário pode, basicamente, especificar uma forma criptografia simétrica, uma chave de senha (de qualquer tamanho), um modo de geração iv, e então criar um novo bloco em /dev. Escrita e gravação neste dispositivo serão criptografadas e a leitura será decifrada. É possível montar o sistema de arquivos normalmente. Mas sem a chave de acesso não será possível acessar os dados."

Isso se encaixa perfeitamente nas nossas necessidades. Criemos, então, um sistema de arquivos criptografado dentro de um arquivo comum no dispositivo USB, onde salvaremos as nossas tão preciosas Chaves GnuPG.

Instalando o Software

Primeiro, será necessário instalar o cryptsetup:

sudo apt-get install cryptsetup

Isso já terá se encarregado das correspondentes dependências.

Configurando o Sistema de Arquivos encriptado

É comum armazenar as chaves GPG em um pequeno e comum dispositivo USB, do tamanho de um chaveiro. Quando este é conectado ao computador, é automaticamente montado em um dispositivo na pasta /media (normalmente /media/usbdisk, se você não tiver configurado um outro ponto de montagem). As instruções a seguir irão considerar este configuração.

Será mais adequado criar o sistema de arquivos encriptado dentro de um arquivo comum, em vez de particionar o dispositivo USB. Esta forma requer menos alterações à estrutura do dispositivo, assim como facilitará a montagem e desmontagem do volume. Entretanto, muitos dos passos a seguir podem ser adaptado para tal opção de particionamento.

Criando o Arquivo

Antes de criar o sistema de arquivos, é preciso termos um arquivo que seja grande o bastante para acondicioná-lo. Isto pode ser obtido com o comando dd:

dd if=/dev/zero of=/media/usbdisk/disk.img bs=1M count=16

O comando acima criará um arquivo de 16MB contendo apenas zeros. Modifique o número após count para obter o tamanho desejado do arquivo que armazenará o sistema de arquivos encriptado, em megabytes.

Configurando o Dispositivo Loop encriptado

Antes de realmente criar o sistema de arquivos no nosso novo arquivo, é preciso anexá-lo a um dispositivo do tipo loop, configurando-o como um objeto de mapeador de dispositivos. O comando losetup -f encontrará o primeiro dispositivo loop disponível, para que possamos definir a saída deste dispositivo para uma variável chamada loopdev e usá-la para diversos comandos:

sudo modprobe loop
sudo modprobe dm-crypt
sudo modprobe aes
export loopdev=$(sudo losetup -f)
sudo losetup $loopdev /media/usbdisk/disk.img
sudo cryptsetup -c aes -s 256 -h sha256 -y create usbkey $loopdev

Os comandos acima estabelecerão no arquivo alvo uma criptografia AES de 256-bit, cifrando (hashing) a senha utilizada pelo algoritmo SHA-256.

Após a configuração, é uma boa idéia remover o mapeador de dispositivos usbkey (criado acima) e executar novamente o cryptsetup para termos certeza de que a senha não foi digitada com erros (Dica valiosíssima...):

sudo cryptsetup remove usbkey
sudo cryptsetup -c aes -s 256 -h sha256 create usbkey $loopdev

Se tudo tiver corrido bem, está tudo pronto para o próximo passo!

Criando de fato o Sistema de Arquivos

Este é o passo mais fácil de todos. Sugere-se o Sistema de Arquivos ext3 (devido à capacidade de journaling, para evitar erros em caso de remoção do dispositivo USB antes de ter sido desmontado corretamente). O comando cryptsetup acima criou o dispositivo /dev/mapper/usbkey, que consiste em um mapa pelo qual o dm-crypt acessa o SistemaDeArquivos. Assim, este dispositivo se apresenta, para o sistema, como qualquer outro dispositivo em bloco, como um Disco Rígido ou partição. O comando a seguir cria o Sistema de Arquivos ext3 no arquivo criptografado:

sudo mkfs.ext3 /dev/mapper/usbkey

Agora, tente montar o Sistema de Arquivos:

sudo mkdir -p /mnt/encrypted
sudo mount -t ext3 /dev/mapper/usbkey /mnt/encrypted

Configurando o GnuPG no Sistema de Arquivos Criptografado

Para este passo, crie o diretório .gnupg em /mnt/encrypted, tornando proprietário o seu usuário, então criando um atalho (link) para o diretório ~/.gnupg na sua pasta pessoal (home), fazendo uma cópia de segurança deste último, para garantir a sua integridade:

sudo mkdir /mnt/encrypted/.gnupg
sudo chown $UID.$UID /mnt/encrypted/.gnupg
chmod 0700 /mnt/encrypted/.gnupg
ln -s /mnt/encrypted/.gnupg ~/.gnupg

A seguir, crie uma Chave GPG conforme descrito em GPG ou utilize as chaves anteriormente criadas, movendo os arquivos antigos em .gnupg para a nova pasta, possivelmente utilizando os comandos shred ou wipe para apagar de forma definitiva os arquivos antigos.

Facilitando a sua vida

Simplifique o processo de montagem

Não tem graça ficar digitando três ou quatro comandos toda vez que desejar montar o sistema de arquivos criptografados. Por isso, crie um script bem simples para montagem e desmontagem. Antes de utilizá-los, desmonte o sistema de arquivos criptografado e desanexe-o do dispositivo loop:

sudo umount /mnt/encrypted
sudo cryptsetup remove usbkey
sudo losetup -d $loopdev

Agora, salve os comandos abaixo como mount.sh na raiz do dispositivo USB (Pendrive), e não no sistema criptografado(!):

dir=`dirname $0`
loopdev=$(sudo losetup -f)

sudo -p "Password (sudo): " modprobe loop && \
sudo modprobe dm-crypt && \
sudo modprobe aes && \
sudo mkdir -p /mnt/encrypted && \
sudo losetup $loopdev $dir/disk.img && \
sudo cryptsetup -c aes -s 256 -h sha256 create usbkey $loopdev && \
sudo mount -t ext3 /dev/mapper/usbkey /mnt/encrypted && \
sudo chown -R $UID.$UID /mnt/encrypted/

Então, salve os comandos abaixo, da mesma forma, como umount.sh no mesmo local acima:

loopdev=$(sudo cryptsetup status usbkey | grep device | sed -e "s/ *device:[ \t]*//")

sync
sudo umount /mnt/encrypted
sudo cryptsetup remove usbkey
sudo losetup -d $loopdev

Você pode não conseguir executar estes scripts diretamente, pois a opção padrão de auto-montagem não permite tais execuções. Porém, como são shell scripts, você pode direcioná-los para o sh. Assim, quando o dispositivo USB for montado, digite o comando

sh /media/usbdisk/mount.sh

e todo o trabalho terá sido feito automaticamente! (Claro que será necessário digitar a senha de acesso e talvez a senha para a execução do comando sudo.)

Verificar Assinaturas PGP sem o Sistema de Arquivos Criptografado

Para agilizar o trabalho de verificar uma mensagem assinada digitalmente, sem a necessidade de montar o dispositivo, apenas copie o chaveiro (keyring) público e o Banco de dados confiáveis (trust database) para a pasta .gnupg "de verdade":

cp /mnt/encrypted/.gnupg/{pubring,trustdb}.gpg /tmp
sh /media/usbdisk/umount.sh
sudo mv /tmp/{pubring,trustdb}.gpg /mnt/encrypted/.gnupg

Agora, quando o sistema de arquivos não estiver montado, você poderá visualizar estes arquivos na pasta .gnupg local, para que o comando gpg --verify funciona como esperado. Entretanto, quando estiver devidamente montado, você verá os arquivos que de fato estão contidos no sistema de arquivos criptografado.



CategoryRevisada

GnuPGEmDispositivoUSB (last edited 2011-09-19 23:20:55 by localhost)