By Marcos Oliveira,

Criptografia de Dados

Usando pgp (gpg)para criptografia de arquivos

O gpg (GNU pgp, versão livre da ferramenta pgp ) permite encriptar dados, assim somente o destinatário terá acesso aos dados, adicionalmente poderá verificar se a origem dos dados é confiável (através da assinatura de arquivos). O sistema PGP se baseia no conceito de chave pública e privada: Sua chave pública é distribuída para as pessoas que deseja trocar dados/mensagens e a chave privada fica em sua máquina (ela não pode ser distribuída). As chaves públicas e privadas são armazenadas nos arquivos pubring.gpg e secring.gpg respectivamente, dentro do subdiretório ~/.gnupg . Os dados que recebe de outra pessoa são criptografados usando sua chave pública e somente você (de posse da chave privada) poderá desencriptar os dados. Quando assina um arquivo usando o pgp, ele faz isto usando sua chave privada, o destinatário de posse da chave pública poderá então confirmar que a origem dos dados é confiável. O gpg vem largamente sendo usado para transmissão segura de dados via internet. Muitos programas de e-mails como o mutt e sylpheed incluem o suporte a pgp embutido para envio de mensagens assinadas/encriptadas (MIME não tem uma codificação segura e não garante que a mensagem vem de quem realmente diz ser). Um servidor de e-mail no Linux configurado como as mesmas configurações/endereços do provedor da vítima pode enganar com sucesso um usuário passando-se por outro.

Instalando o PGP

apt-get install gnupg

Após instalar o gnupg, execute o comando gpg para criar o diretório ~/.gnupg que armazenará as chaves pública e privada.

Criando um par de chaves pública/privada

Para gerar um par de chaves pessoais use o comando gpg –gen-key. Ele executará os seguintes passos

  • Chave criptográfica - Selecione DS__A e __ELGamal a não ser que tenha necessidades específicas.
  • Tamanho da chave - 1024 bits traz uma boa combinação de proteção/velocidade.
  • Validade da chave - 0 a chave não expira. Um número positivo tem o valor de dias, que pode ser seguido das letras w (semanas), m (meses) ou y (anos). Por exemplo, “7m”, “2y”, “60”.

Após a validade, a chave será considerada inválida.

  • Nome de usuário - Nome para identificar a chave
  • E-mail - E-mail do dono da chave
  • comentário - Uma descrição sobre a chave do usuário.
  • Confirmação - Tecle “O” para confirmar os dados ou uma das outras letras para modificar os dados de sua chave.

Digite a FraseSenha - Senha que irá identificá-lo(a) como proprietário da chave privada. É chamada de FraseSenha pois pode conter espaços e não há limite de caracteres.Confirme e aguarde a geração da chave pública/privada.

Encriptando dados

Use o comando gpg -e arquivo faz a encriptação de dados

gpg -e arquivo.txt

Será pedida a identificação de usuário, digite o nome que usou para criar a chave. O arquivo criado será encriptado usando a chave pública do usuário (~/.gnupg/pubring.gpg) e terá a extensão .gpg adicionada (arquivo.txt.gpg). Além de criptografado, este arquivo é compactado (recomendável para grande quantidade de textos). A opção -a é usada para criar um arquivo criptografado com saída ASCII 7 bits

gpg -e -a arquivo.txt

O arquivo gerado terá a extensão .asc acrescentada (arquivo.txt.asc) e não será compactado. A opção -a é muito usada para o envio de e-mails. Para criptografar o arquivo para ser enviado a outro usuário, você deverá ter a chave pública do usuário cadastrado no seu chaveiro e especificar a opção -r seguida do nome/e-mail/ID da chave pública

gpg -r kov -e arquivo.txt

O exemplo acima utiliza a chave pública de kov para encriptar o arquivo arquivo.txt (somente ele poderá decriptar a mensagem usando sua chave privada).

OBS: É recomendável especificar o nome de arquivo sempre como último argumento.

Decriptando dados com o gpg

Agora vamos fazer a operação reversa da acima, a opção -d é usada para decriptar os dados usando a chave privada

gpg -d arquivo.txt.asc >arquivo.txt
gpg -d arquivo.txt.gpg >arquivo.txt

Descriptografa os arquivos arquivo.txt.asc e arquivo.txt.gpg recuperando seu conteúdo original. A sua “FraseSenha” será pedida para descriptografar os dados usando a chave privada (~/.gnupg/secring.gpg).

Assinando arquivos

Assinar um arquivo é garantir que você é a pessoa que realmente enviou aquele arquivo. Use a opção -s para assinar arquivos usando sua chave privada

gpg -s arquivo.txt

A “FraseSenha” será pedida para assinar os dados usando sua chave privada. Será gerado um arquivo a__rquivo.txt.gpg__ (assinado e compactado). Adicionalmente a opção –clearsign poderá ser usada para fazer uma assinatura em um texto plano, este é um recurso muito usado por programas de e-mails com suporte ao gpg

gpg -s --clearsign arquivo.txt

Será criado um arquivo chamado arquivo.txt.asc contendo o arquivo assinado e sem compactação.

Checando assinaturas

A checagem de assinatura consiste em verificar que quem nos enviou o arquivo é realmente quem diz ser e se os dados foram de alguma forma alterados. Você deverá ter a chave pública do usuário no seu chaveiro para fazer esta checagem . Para verificar os dados assinados acima usamos a opção –verify

gpg --verify arquivo.txt.asc
  • Se a saída for “Assinatura Correta”, significa que a origem do arquivo é segura e que ele não foi de qualquer forma modificado.
gpg --verify arquivo.txt.gpg
  • Se a saída for “Assinatura INCORRETA” significa que ou o usuário que enviou o arquivo não confere ou o arquivo enviado foi de alguma forma modificado.

Extraindo sua chave pública do chaveiro

Sua chave pública deve ser distribuída a outros usuários para que possam enviar dados criptografados ou checar a autenticidade de seus arquivos. Para exportar sua chave pública em um arquivo que será distribuído a outras pessoas ou servidores de chaves na Internet, use a opção –export

gpg --export -a usuario > chave-pub.txt

Ao invés do nome do usuário, poderá ser usado seu e-mail, ID da chave, etc. A opção -a permite que os dados sejam gerados usando bits ASCII 7.

Adicionando chaves públicas ao seu chaveiro pessoal

Isto é necessário para o envio de dados criptografados e checagem de assinatura do usuário, use a opção –import

gpg --import chave-pub-usuario.txt

Assumindo que o arquivo chave-pub-usuario.txt contém a chave pública do usuário criada em. O gpg detecta chaves públicas dentro de textos e faz a extração corretamente. Minha chave pública pode ser encontrada em http://pgp.ai.mit.edu.

Listando chaves de seu chaveiro

Use o comando

gpg --list-keys

Para listar as chaves pública do seu chaveiro. O comando gpg –list-secret-keys lista suas chaves privadas.

Apagando chaves de seu chaveiro

Quando uma chave pública é modificada ou por qualquer outro motivo deseja retira-la do seu chaveiro público, utilize a opção –delete-key

gpg --delete-key usuario

Pode ser especificado o nome de usuário, e-mail IDchave ou qualquer outro detalhe que confira com a chave pública do usuário. Será pedida a confirmação para excluir a chave pública.

OBS: A chave privada pode ser excluída com a opção -__-delete-secret-key__. Utilize-a com o máximo de atenção para excluir chaves secretas que não utiliza (caso use mais de uma), a exclusão acidental de sua chave secreta significa é como perder a chave de um cofre de banco: você não poderá descriptografar os arquivos enviados a você e não poderá enviar arquivos assinados. Mesmo assim se isto acontecer acidentalmente, você poderá recuperar o último backup da chave privada em ~/.gnupg/secring.gpg~.

Mudando sua FraseSenha

Execute o comando gpg –edit-key usuário, quando o programa entrar em modo de comandos, digite passwd. Será lhe pedida a “Frase Senha” atual e a novaFrase Senha”. Digite “save” para sair e salvar as alterações ou “quit” para sair e abandonar o que foi feito. O gpg –edit-key permite gerenciar diversos aspectos de suas chaves é interessante explora-lo digitando “?” para exibir todas as opções disponíveis.

Assinando uma chave digital

A assinatura de chaves é um meio de criar laços de confiança entre usuários PGP. Assinar uma chave de alguém é algo sério, você deve ter noção do que isto significa e das consequências que isto pode trazer antes de sair assinando chaves de qualquer um. O próprio teste para desenvolvedor da distribuição Debian requer como primeiro passo a identificação do candidato, caso sua chave pgp seja assinada por algum desenvolvedor desta distribuição, imediatamente o teste de identificação é completado. A partir disso você deve ter uma noção básica do que isto significa.

Para assinar uma chave siga os seguintes passos

  • Importe a chave pública do usuário.
  • Execute o comando gpg –edit-key usuario (onde usuario é o nome do usuário/e-mail/IDchave da chave pública importada).
  • Digite list, e selecione a chave pública (pub) do usuário com o comando uid [numero_chave]. Para assinar todas as chaves públicas do usuário, não selecione qualquer chave com o comando uid.
  • Para assinar a chave pública do usuário digite sign, será perguntado se deseja realmente assinar a chave do usuário e então pedida a “FraseSenha” de sua chave privada.
  • Digite “list”, repare que existe um campo chamado trust: n/q no lado direito. O primeiro parâmetro do “trust” indica o valor de confiança do dono e o segundo (após a /) o valor de confiança calculado automaticamente na chave. As seguintes possuem o seguinte significado
  • - - Nenhum dono encontrado/confiança não calculada.
  • e - Chave expirada/falha na checagem de confiança.
  • q - Quando não conhece o usuário.
  • n - Quando não confia no usuário (é o padrão).
  • m - Pouca confiança no usuário.
  • f - Totalmente confiável.
  • u - Indiscutivelmente confiável. Somente usado para especificar a chave pública do próprio usuário.

O valor de confiança da chave pode ser modificado com o comando trust e selecionando uma das opções de confiança. Os valores de confiança para a chave pública pessoal é -/u (não é necessário calcular a confiança/indiscutivelmente confiável).

Listando assinaturas digitais

Execute o comando gpg –list-sigs para listas todas as assinaturas existentes no seu chaveiro. Opcionalmente pode ser especificado um parâmetro para fazer referência a assinatura de um usuário:gpg –list-sigs usuario. O comando gpg –check-sigs adicionalmente faz a checagem de assinaturas.

Recomendações para a assinatura de chaves gpg

Este texto foi divulgado por uma pessoa que pediu para permanecer anônima na lista debian-user-portuguese@lists.debian.org explicando os procedimentos de segurança para a troca de chaves públicas individuais e em grupo de usuários. Ele é um pouco longo mas a pessoa é especializada no assunto, e seu foco é a segurança na troca de chaves e o que isto significa. Após consulta ao autor do texto, o texto foi reproduzido na íntegra, mantendo os padrões de formatação da mensagem.

Trocando assinaturas de chaves digitais

Direitos de republicação cedidos ao domínio público, contanto que o texto seja reproduzido em sua íntegra, sem modificações de quaisquer espécie, e incluindo o título e nome do autor.

    1. Assinaturas digitais
    1. Chaves digitais e a teia de confiança
    1. Trocando assinaturas de chaves digitais com um grupo de pessoas

Criando arquivos .tar.gz com senha

Aqui vai uma dica para deixar seus arquivos compactados em tar.gz com senha, na verdade o arquivo será transformado num .gpg, segue

Para compactar

  • Cria o tar(-cf, C de C reate) e (f de F iles), logo (-cf Create Files, serve pra memorizar)
tar -cf nome_que_vc_escolher.tar arquivo_ou_pasta
  • Agora transforma ele em tar.gz
$gzip -9 arquivo_que_vc_criou.tar
  • e agora usa-se o gpg pôr senha
gpg -c arquivo.tar.gz
  • Descompactando , é preciso pôr a senha pré criada, quando ele solicitar
gpg arquivo.tar.gz.gpg
  • Agora extrair(-xf X de e X tract e F de F iles, eXtract Files)
tar -xf arquivo.tar.gz

Pronto!

Fonte: http://pt.wikibooks.org/wiki/Guia_do_Linux/Avançado

Curso Extremamente Avançado em Shell Script Bash

Você irá descobrir técnicas avançadas de escrever em Shell Script. Como criar instaladores para distribuições Linux, Animações, Documentações, além de tudo sobre Processos em sistemas tipo UNIX, detalhes sobre Comandos Avançados e Muito Mais !