GPG - Criptografando e Decriptografando arquivos
O GPG é uma ferramenta bastante utilizada na área de Segurança da Informação para envio e recebimento de mensagens e arquivos de forma segura utilizando uma combinação de chaves pública/privada para criptografia/decriptografia destes objetos.
Na Wiki do Ubuntu o GPG é definido da seguinte maneira: "O GnuPG (GNU Privacy Guard) é uma ferramenta livre e gratuita para comunicação e armazenamento seguro de dados, que pode ser usado pela linha de comando para criptografar dados e criar assinaturas digitais.
O GnuPG utiliza um método de criptografia conhecido como chave assimétrica, em que duas chaves são criadas: a primeira, pública, serve para que qualquer pessoa codifique mensagens e arquivos de modo que apenas você possa decodificar; a segunda, privada, deve ser mantida em absoluto sigilo e serve para que você decodifique mensagens term papers criptografadas com sua chave pública equivalente. Por isso, esse método também é conhecido como criptografia de chave pública.
As chaves públicas e privadas são armazenadas nos arquivos pubring.gpg e secring.gpg respectivamente, dentro do subdiretório ~/.gnupg de sua pasta pessoal ($HOME). Convém tirar um cópia de segurança desses arquivos, para isso basta copiar os arquivos citados acima em uma mídia segura (pen-drive, CD-ROM, etc). " (Fonte: http://wiki.ubuntu-br.org/GnuPG)
Este artigo visa documentar (localmente) como criar e manter chaves públicas e privadas geradas pelo GPG bem como importar chaves externas, deletar chaves criadas/importadas e codificar arquivos.
BOAS PRÁTICAS
De acordo com o modo como as chaves públicas e privadas são utilizadas vale ressaltar antes de começarmos a importância de manter suas CHAVES PRIVADAS em total sigilo. Só com elas é possível decriptografar as mensagens geradas utilizando suas chaves públicas. Uma vez exposta uma chave privada, todo processo de segurança onde esta chave está baseada será comprometida já que qualquer pessoa será capaz de criptografar uma mensagem utilizando-a.
INSTALAÇÃO E GERAÇÃO DE CHAVES
Usa-se o comando apt para instalação da ferramenta gpg da seguinte forma:
$ sudo apt-get install gnupg
$ gpg
Após a instalação e primeira execução o diretório ~/.gnupg será criado no diretório do usuário que está sendo utilizada onde serão armazenadas as chaves públicas e privadas.
GERAÇÃO DE CHAVES
Para gerar as chaves pessoais usa-se o comando:
$ gpg --gen-key
Siga os passos pedidos para geração da chave, entre os dados estão o nome da organização, o e-mail e uma senha para acesso e utilização das chaves. Recomendamos utilizar uma senha forte para tal.
Este comando quando bem sucedido dará início ao processo de criação de chaves utilizando, chaves com a configuração padrão. Em alguns casos serão criadas chaves no padrão RSA e comprimento de 3072 bits. Por isso, se necessário utilize o comando a seguir para seleção de outras configurações de chave:
$ gpg --full-generate-key
As informações adicionais pedidas serão:
- Tipo de chave
- Comprimento da chave
- Tempo de validade, sendo:
- 0 = chave não expira
- <n> = expiração da chave em N DIAS
- <n>w = expiração em N SEMANAS
- <n>m = expiração em N MESES
- <n>y = expiração em N ANOS
- y para dizer que as informações estão corretas
- Nome da chave ou do usuário
- Endereço de e-mail
- Comentários
- Uma senha para as chaves
VISUALIZANDO CHAVES
Para visualizar suas chaves utilize os seguintes comandos:
$ gpg --list-keys
para listar suas chaves públicas
$ gpg --list-secret-keys
para listar suas chaves privadas
EXPORTANDO SUA CHAVE PÚBLICA
Em posse de sua chave pública, é necessário compartilhar com agentes externos para que eles possam criptografar arquivos e mensagens onde apenas você/sua organização serão capazes de decriptografá-los utilizando sua chave privada.
Para isso utiliza-se o seguinte comando:
$ gpg --export --output nomeDaChave --armor <key-ID>
--export = parâmetro de exportação de chave
--output = nome do arquivo de saída
--armor = transforma em arquivo de texto
<user-ID> = ID da chave que se quer exportar (pode ser a hash ou e-mail da chave)
Desta forma, você pode compartilhar este arquivo diretamente com qualquer outra pessoa ou enviar via mensagem o conteúdo deste arquivo.
EXPORTANDO SUA CHAVE PRIVADA (NÃO FAÇAM ISSO EM CASA, NO TRABALHO OU... SIMPLESMENTE NÃO FAÇAM!!!)
Como dito anteriormente, não recomendamos a exportação da sua chave privada, de modo que ela deve ficar protegida em sua origem. Exportá-la pode ocasionar em seu comprometimento em casos de vazamento. Entretanto, por vezes é necessário migrar sua chave para um novo equipamento, por exemplo, por isso apresentamos a seguir utilizando o seguinte comando:
$ gpg --export-secret-key --output nomeDaChave --armor <key-ID>
--export-secret-key = parâmetro de exportação de chave PRIVADA
--output = nome do arquivo de saída
--armor = transforma em arquivo de texto
<user-ID> = ID da chave que se quer exportar (pode ser a hash ou e-mail da chave)
No processo a ferramenta perguntará pela senha da chave para realizar a exportação. Esta é a mesma senha utilizada anteriormente no processo de criação da chave.
IMPORTANDO CHAVES
Já no caso onde é necessário utilizarmos a chave pública de terceiros para criptografia de mensagens/arquivos é necessário importarmos a chave compartilhada para dentro do GPG para então podermos utilizá-la.
Para isso utilizamos o seguinte comando:
$ gpg --import arquivoContendoChavePublica
Uma vez importada, podemos utilizar o parametro --list-keys para visualizar a chave importada
CODIFICANDO/DECODIFICANDO ARQUIVOS
ENCRIPTANDO
Depois de importada a chave pública o seguinte comando é utilizado para criptografia de um arquivo:
$ gpg --output Nome_Arquivo_de_Saida --encrypt arquivoQueSeQuerEncriptar
--output = nome do arquivo de saída
--encrypt = nome do arquivo que se quer encriptar
$ Entre com a <key-ID> da chave privada de quem você deseja encriptar o arquivo
Após este passo a ferramenta perguntará pelo user ID da chave que será utilizada na criptografia.
Nos próximos passos a ferramenta questionará se de fato essa chave pertence ao usuário indicado.
Isso acontece porque a chave não foi assinada, ou seja, não atestamos a ferramenta que de fato aquela chave importada pertence ao usuário indicado na ferramenta. Cobriremos essa etapa em um outro post. Por hora, é possível ignorar esta etapa indicando que conhecemos o emissor daquela chave.
Tecle Enter para finalizar o processo.
Utilizando o comando "cat" verificamos que o conteúdo do arquivo é ilegível.DECRIPTANDO
Depois de criado o arquivo codificado, o mesmo é enviado ao usuário que tem a posse da chave privada necessário para decodificar o arquivo. Uma vez em posse do arquivo é possivel utilizar o seguinte comando para decodificação:
Depois de criado o arquivo codificado, o mesmo é enviado ao usuário que tem a posse da chave privada necessário para decodificar o arquivo. Uma vez em posse do arquivo é possivel utilizar o seguinte comando para decodificação:
$ gpg --output Nome_Arquivo_de_Saida --decrypt arquivoQueSeQuerDecriptografar
--output = nome do arquivo de saída do comando
--decrypt = nome do arquivo que se quer decodificar
Lembrando que este passo requer a senha da chave privada que será utilziada para decodificação do arquivo.
CONCLUSÃO
A ferramenta GPG como dito no início é muito usado na área de segurança para criptografia/decriptografia de arquivos e mensagens. Grandes empresas e organizações costumam utilizar servidores de chaves para armazenamento e manipulação destas chaves de maneira ainda mais segura, vale a pena a busca por mais informações. O GPG também possui muitos outros parâmetros e recursos que podem ser usados, encorajamos a leitura do manual da ferramenta para mais detalhes. Também não entramos na seara de assinatura e verificação da chave de modo que pressupomos que quem esta recebendo a chave, arquivo ou mensagem confie na pessoa/organização que está provendo estar informações.
Diz aqui nos comentário se você já utilizou ou se utiliza chaves GPG para criptografia, toda e qualquer colaboração é incentivada e bem vinda.
Ótima publicação, um verdadeiro guia!
ResponderExcluir