Português do Brasil English
Devin no Facebook  Devin no Twitter  RSS do Site 
Segurança    

Protegendo senhas com GPG


Comentários  5
Visualizações  
17,646

Uma das coisas que mais nos dá trabalho é ficar decorando senhas. É uma senha para cada coisa em nossas vidas, e quando não as utilizamos com muita frequência, é muito difícil mantê-las sempre na cabeça, prontas para serem digitadas corretamente… Este tutorial nos mostra uma maneira de resolver este problema de esquecimento de senhas utilizando o Linux.

1. Introdução

Hoje em dia é muito comum alguns administradores de rede possuírem vários servidores e uma senha (forte) para cada um deles. Nas palestras que tenho ministrado ja fui questionado algumas vezes: Como guardar dezenas de senhas diferentes com segurança? Bem, na minha opinião a melhor forma é guarda-las no cérebro mesmo… (rsrs) mas como nem sempre possuímos capacidade para armazenar tais informações nos meros 10% que utilizamos do nosso cérebro, decidi pesquisar sobre uma solução para tal problema e achei diversos programas que propoem uma solução simples para nosso problema: eles armazenam as senhas em arquivos criptografados, ou seja, ao invés de termos que decorar 15 senhas com 20 caracteres cada uma precisamos lembras de apenas uma única senha.

Dentre os programas que eu achei mais interesantes estão o jpws, o Password Gorilla, o Password Dragon e o KeePassX. A proposta de todos eles é bem interessante: gerenciar o armazenamento de senhas de forma segura. Porém, depois de ler sobre os programas eu pensei: “Peraê, por que diabos estou querendo reinventar a roda?”

A solução sempre esteve mais perto do que imaginei, basta utilizar o GnuPG (GNU Privacy Guard), um projeto de código-aberto que implementa as definições da RFC 4880. O GnuPG nos permite criptografar e assinar arquivos, emails, etc. A utilização do GnuPG (ou gpg na linha de comando) é bem simples como veremos a seguir.

2. Criando uma chave de criptografia

Para criarmos um arquivo com as nossas senhas, comece verificando se você possui o pacote gnupg instalado:

Para sistemas baseados em Debian (DEB):

$ dpkg -s gnupg

Para sistemas baseados em Red Hat (RPM):

$ rpm -qv gnupg

Possuindo o gnupg instalado, vamos criar uma chave de criptografia para o nosso usuário

$ gpg --gen-key (Comando para gerar uma nova assinatura)

gpg (GnuPG) 1.4.6; Copyright (C) 2006 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.

Por favor selecione o tipo de chave desejado:

(1) DSA e Elgamal (padrão)
(2) DSA (apenas assinatura)
(5) RSA (apenas assinar)

Sua opção? 1

Escolheremos a opção 1 (padrão). Em seguida, o gnupg perguntará sobre o tamanho da chave criptográfica, que pode ter entre 1024 e 4096 bits. Neste ponto, quanto maior a chave, mais segura ela será. Neste exemplo escolhi uma chave com 2048 bits:

Par de chaves DSA vai ter 1024 bits.
ELG-E chaves podem ter o seu comprimento entre 1024 e 4096 bits.
Que tamanho de chave você quer? (2048) 2048

Após definir o tamanho da chave seremos questionados sobre o tempo de validade da chave, podemos definir um tempo X para que a chave expire, porém como no nosso caso não vamos divulgá-la (utilizando-a apenas para criptografar nosso arquivo de senhas), podemos escolher a opção “0 = chave não expira”:

Por favor, especifique por quanto tempo a chave deve ser válida.

0 = chave não expira
 = chave expira em n dias
w = chave expira em n semanas
m = chave expira em n meses
y = chave expira em n anos

A chave é valida por? (0) 0

Agora vamos definir um identificador do usuário para o qual estamos criando a chave. No exemplo vamos utilizar o Zé da Silva.

Você precisa de um identificador de usuário para identificar sua chave; o
programa constrói o identificador a partir do Nome Completo, Comentário e
Endereço Eletrônico desta forma:

"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"

Nome completo: Ze da Silva
Endereço de correio eletrônico: ze@example.com
Comentário: Chave do Ze da Silva

Você selecionou este identificador de usuário:

"Ze da Silva (Chave do Ze da Silva) "

Muda (N)ome, (C)omentário, (E)ndereço ou (O)k/(S)air? O

Agora vamos definir uma senha para esta chave. Esta será a senha que nós não podemos esquecer, pois ela será utilizada para criptografar o nosso arquivo de texto com as outras senhas.

Você precisa de uma frase secreta para proteger sua chave.

Digite a frase secreta: (senha)
Digite novamente a frase secreta: (novamente a senha)

+++++++++++++++...+++++.+++++++++++++++++++++++++.+++++++++++++++....+++++.+++++++++++++++++++++++++++++++++++++++++++++.
.++++++++++.+++++++++++++++....++++++++++>..+++++..+++++>+++++>.+++++..>+++++..+++++^^^

gpg: chave 62B6EE12 marcada como plenamente confiável
chaves pública e privada criadas e assinadas.
gpg: checando o trustdb
gpg: 3 parcial(is) necessária(s), 1 completa(s) necessária(s), modelo de confiança PGP
gpg: profundidade: 0 válidas: 2 assinadas: 0 confiança: 0-, 0q, 0n, 0m, 0f, 2u
pub 1024D/62B6EE12 2008-11-03
Impressão digital da chave: 6686 B77A 0DEB 5FBF 6A29 33C6 74F7 8A32 62B6 EE12
uid Ze da Silva (Chave do Ze da Silva)
sub 2048g/EB413A88 2008-11-03

Pronto, já temos uma chave para o Zé da Silva.

Para verificar os dados da chave criada, basta utilizar o comando:

$ gpg --list-key
/home/ze/.gnupg/pubring.gpg

pub 1024D/62B6EE12 2008-11-03
uid Ze da Silva (Chave do Ze da Silva)
sub 2048g/EB413A88 2008-11-03

3. Criando o arquivo de senhas criptografado

Agora ao que interessa! Vamos criar um arquivo com as nossas senhas.

$ cat senha.txt

Senha de root
root=22#$54543%4FDDwkdk439

Senha do gmail
ze@gmail.com = Z20r$55ec$

Senha do msn
ze_silva@hotmail = Z3$1l/@

Agora que já temos o arquivo com as senhas, vamos criptografá-lo com a chave que criamos. No comando abaixo, a opção -r indica o ID de usuário para o qual estamos criptografando este arquivo e a opção -e indica que queremos criptografar ao dados do arquivo senha.txt:

$ gpg -r Ze -e senha.txt

Após executar o comando acima, você perceberá que foi criado um arquivo chamado senha.txt.gpg, que é o arquivo criptografado. Com esse arquivo já existente, já podemos apagar o arquivo original (senha.txt), ficando apenas com o arquivo criptografado:

$ rm -f senha.txt

Então, para visualizarmos as senhas dentro do arquivo criptografado, basta executar o seguinte comando:

$ gpg -d senha.txt.gpg
Você precisa de uma frase secreta para destravar a chave secreta do usuário: "Ze da Silva (Chave do Ze da Silva) "
2048-bit ELG-E chave, ID EB413A88, criada 2008-11-03 (ID principal da chave 62B6EE12)

Digite a frase secreta:

Após digitar a frase secreta corretamente, o conteúdo do arquivo será exibido:

gpg: criptografado com 2048-bit ELG-E chave, ID EB413A88, criado 2008-11-03
"Ze da Silva (Chave do Ze da Silva) "

Senha de root
root=22#$54543%4FDDwkdk439

Senha do gmail
ze@gmail.com = Z20r$55ec$

Senha do msn
ze_silva@hotmail = Z3$1l/@

4. Exportando sua chave para outras pessoas

Outra opção legal é exportar a chave pública e enviar para outra pessoa, desta forma a pessoa que receber esta chave pública também poderá criptografar arquivos que só você pode descriptografar.

Exportar chave publica:

$ gpg -a --export -r Ze > chave_publica-Ze.asc

Agora é só enviar o arquivo “chave_publica-Ze.asc” para alguém e pedir para esse alguém importá-la com o comando:

$ gpg --import chave_publica-Ze.asc
gpg: chave 62B6EE12: chave pública "Ze da Silva (Chave do Ze da Silva) " importada
gpg: Número total processado: 1

gpg: importados: 1

Bem por enquanto é só, agora podemos ocupar a mente com outras coisas que não sejam as senhas. Espero que seja útil para alguém…

Se quiser enviar críticas, elogios, sugestões ou até mesmo me chamar para tomar uma cerveja, basta enviar um e-mail para clebeer@gmail.com.


Comentários  5
Visualizações  
17,646


TagsLeia também


Leia também



Comentários

5 respostas para “Protegendo senhas com GPG”

  1. Bem interessante o artigo. É legal lembrar que também há front-ends gráficos para essas operações. Uma vez criada uma chave GPG, programas como o kgpg (do KDE) podem ser utilizados para criptografar e descriptografar arquivos.

    Um próximo passo seria como fazer tudo isso "automaticamente" via interface gráfica ou linha de comando mesmo (via mount). :)

  2. Marcelo disse:

    Muito bom esse artigo, bem feito e detalhado!

  3. Jose Out disse:

    Teria como colocar em um shel scrip todo o processo de criação da chave pública transformando em automatico a criação com atribuições predeterminadas.

  4. Jose Out disse:

    Criando um arquivo .sh para gerar a chave, é uma duvida importante minha…

  5. André Carvalh disse:

    Então não há como criar a senha e, ao mesmo tempo, deletar o arquivo original? tudo num só comando?

Deixe uma resposta