Entenda por que você deveria mudar seu site para HTTPS

Se você tem um blog ou um site de comércio eletrônico, deveria começar a pensar seriamente em adotar o recurso de conexão segura para você e seus leitores.
Há vários motivos para isto.

O motivo mais banal e não menos importante é que o Google irá (cada vez mais) priorizar sites seguros na sua indexação.

A audiência, para quem tem um site sério, não é a principal preocupação, mas é um fator a se levar em consideração, convenhamos.

O motivo desta política do Google é a segurança. E este deveria ser o seu motivo também.
Já discutimos o assunto antes, no artigo É hora de criptografar toda a Internet.
Desta vez, quero reforçar e acrescentar argumentos.

Os protocolos de criptografia

Neste tópico, vou repassar alguns dos aspectos técnicos. Se você detesta isto, pule para o próximo. Sem mágoas. 😉
Sites HTTPS são os que possuem certificados SSL/TLS.
O TLS é abreviatura para Transport Layer Security (ou camada de segurança de transporte) e o SSL, Secure Sockets Layer (ou camada de soquetes de segurança).
Ambos são protocolos criptográficos que oferecem proteção aos dados durante o tráfego em uma rede de computadores.
Sites seguros oferecem suporte a este tipo de proteção entre o servidor e o navegador do visitante.
O principal objetivo do TLS é dar privacidade e garantir a integridade dos dados entre duas aplicações de computador.
Uma vez que o cliente e o servidor estabelecem a primeira conexão e concordam em usar o TLS, negociam uma conexão a partir de um procedimento conhecido como handshaking (aperto de mãos).
Durante o aperto de mãos, as duas pontas concordam com certos parâmetros, usados para estabelecer a segurança da conexão.
O procedimento tem por objetivo trafegar dados de forma privada (ou segura) com uso de um sistema de criptografa simétrica.

Por que criptografar os dados é importante para o seu site

É importante deixar claro que o protocolo SSL/TLS não criptografa dados armazenados, mas apenas os que estiverem em tráfego entre o servidor e o visitante.

Com este procedimento, você aumenta as condições de segurança e privacidade dos seus leitores.

Em vez de acessar o site em HTTP, seus leitores passam a acessá-lo via HTTPS, uma versão mais segura do protocolo padrão da web.
Entre os dados que passarão a ser melhor protegidos, constam:

  • o conteúdo do site enquanto ele estiver em tráfego
  • dados que o visitante deseja enviar para o servidor, documentos, cartão de crédito etc.
  • senhas de acesso ao site, de administradores(as), editoras(es) etc.

Se você é blogueiro(a) e realiza atividades administrativas no seu site, fora da sua casa, usando o wi-fi de outros locais, certamente, deveria considerar o uso desta camada adicional de proteção.
Se você tem um site de e-commerce ou comércio eletrônico, provavelmente está perdendo clientes que se preocupam com a segurança.
Obviamente, adotar o HTTPS, somente, não resolve todos os seus problemas de segurança.
Mas é um dos procedimentos mais simples e (atualmente) é gratuito (só custa o seu tempo).

É um primeiro passo de um conjunto de ações que compõem uma necessária política de segurança.

Se as informações forem interceptadas durante o tráfego, elas estarão “embaralhadas” aos olhos do intruso.

Como proceder para começar a usar o HTTPS no site

Atualmente, a maioria dos provedores de hospedagem oferecem a opções pagas e gratuitas de certificação SSL/TLS.
Se estiver disponível, use a gratuita.
Provedores, como o Dreamhost, oferecem a opção “Let’s Encrypt“, que é grátis, confiável e implementa a mudança automaticamente.
dreamhost ssl tls encryption
Existe também a opção “Self-signed“, voltada para sites em teste ou para uso de um grupo restrito — em resumo, só serve para quem sabe o que está fazendo.
Se você tiver dúvidas, contate o suporte da hospedagem ou consulte um usuário mais experiente.

Referências

Link para o site de hospedagem web do DreamHost.

Os primeiros passos com o QEMU

O QEMU é uma plataforma de emulação ou virtualização de diversas outras plataformas.
Desenvolvedores podem usar a aplicação para verificar o comportamento de seus softwares em arquiteturas diferentes.

Um servidor, com hardware poderoso, pode hospedar dezenas de outros servidores virtuais, permitindo que diversas empresas ou usuários rodem aplicações independentes (servidores web, armazenamento de arquivos etc.)
O avanço da tecnologia de virtualização ajudou a reduzir os custos de hospedagem de sites, por exemplo.
Neste texto, vou mostrar como criar um espaço (drive) virtual para armazenar arquivos, como erguer uma máquina virtual e rodar um sistema operacional nela.
Na minha máquina física, eu rodo o Debian 10 testing (Buster).
O sistema operacional hospedeiro, usado no exemplo será o Ubuntu 17.10 (Artful Aardvark) 64 bit.
Você pode ir até o site https://ubuntu.com e baixar outra versão (provavelmente mais atual que a minha) ou usar qualquer outra imagem ISO de sistema operacional.
Os princípios explicados neste texto são os mesmos para qualquer distro Linux ou outro sistema operacional.
Se quiser, veja outros exemplos de virtualização com o QEMU, neste mesmo site.
E sempre clique nos links para obter mais informações importantes sobre algum tema.

Como montar uma máquina virtual

É bem fácil pôr no ar um PC ou servidor virtual completo, usando o QEMU.
Na verdade, é possível fazer isto em 5 minutos.
Mas, se você pretende experimentar um sistema operacional (uma distro GNU/Linux, por exemplo), baixada da Internet, em um arquivo ISO, é possível indicar em que máquina, especificamente, você deseja rodar o seu sistema operacional.
A minha ISO do Ubuntu pode ser experimentada com o seguinte comando:


qemu-system-x86_64 ubuntu-17.10-desktop-amd64.iso

Se você pretende usar outras vezes esta distribuição e gostaria que as mudanças feitas nela fossem persistentes, crie um espaço de armazenamento específico para ela, com o qemu-img:


 qemu-img create -f qcow2 ubuntu17.qcow2 50G

Formatting 'ubuntu17.qcow2', fmt=qcow2 size=53687091200 encryption=off cluster_size=65536 lazy_refcounts=off refcount_bits=16

O comando, acima, cria uma imagem no formato qcow2, com o nome ‘ubuntu17.10.qcow2’ e com espaço de armazenamento de 50 Gigabytes.
Sinta-se à vontade para usar outros valores, mais adequados para você.
Se quiser obter informações sobre a imagem recém criada, use a opção ‘info’:


qemu-img info ubuntu17.qcow2 

image: ubuntu17.qcow2
file format: qcow2
virtual size: 50G (53687091200 bytes)
disk size: 324K
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false
    refcount bits: 16
    corrupt: false

No comando, abaixo, vou acionar a recém-criada unidade (ubuntu17.qcow2) e rodar a imagem ISO, baixada, do Ubuntu 17.10, como se fosse de um CD-ROM:


qemu-system-x86_64 -hda ubuntu17.qcow2 -cdrom ubuntu-17.10-desktop-amd64.iso -boot d

Ao final da linha, a opção ‘-boot d’, informa que o meu sistema virtual deve iniciar a partir da unidade ótica (CD-ROM).
Vamos melhorar isto?!
A seguir, vou adicionar opções que (respectivamente) habilitam o kvm, estabelecem uma quantidade de memória de 2048 MB e inscreve o nome da distro no título da janela do QEMU:


qemu-system-x86_64 -enable-kvm -m 2048 -name 'UBUNTU 17.10' -boot d -hda ubuntu17.qcow2 -cdrom ubuntu-17.10-desktop-amd64.iso

Ubuntu 17.10 tela inicial
Se você decidir continuar a instalação, o sistema irá sugerir o unidade virtual, criada com o qemu-img.
Observe a imagem abaixo:
Instalação do Ubuntu 17.10
Depois de instalado, você pode dispensar o arquivo de imagem ISO e rodar o sistema operacional apenas da unidade de armazenamento virtual. Para mim, o comando é o seguinte:


qemu-system-x86_64 -enable-kvm -m 2048 -name 'UBUNTU 17.10' -hda ubuntu17.qcow2

Leia mais sobre o uso do QEMU, no Linux.

Criptografe arquivos usando uma chave pública GPG

Antes de armazenar um arquivo com conteúdo sensível, convém protegê-lo com uma camada de criptografia forte.
Se você não precisa de recursos criptográficos muito fortes e se sente melhor usando a interface gráfica (GUI) do Linux, experimente usar o Xarchiver.

Neste texto vou mostrar como criptografar um arquivo (ou vários), usando uma chave pública, na linha de comando (CLI) do Linux, usando o gpg.
Depois de seguro, o arquivo pode ser armazenado em CD/DVD, em flash drive (pendrive), na nuvem etc.
É claro que você ou o destinatário precisa ter criado uma chave pública antes, a ser usada no procedimento.
No artigo como encriptar seus arquivos com gpg, ensinei uma maneira um pouquinho mais simplificada de aplicar a criptografia a arquivos, usando apenas uma senha criada na hora.
Neste texto, vamos abordar um método mais sofisticado — sob o ponto de vista da segurança.
É necessário saber o nome do arquivo e o email usado para registrar a chave pública, em questão, além da sua própria chave privada.


Tá confuso? Então leia mais sobre o gpg.

O comando para criptografar um arquivo, com o uso da sua chave pública é o seguinte:

gpg -e -r email seu-arquivo

Troque, no comando acima, “email”, pela conta de email usada para definir a public key.
No lugar de “seu-arquivo”, use o nome do arquivo a ser criptografado.
Veja um comando real:


gpg -e -r justincase@gmail.com texto.txt

Será gerado um segundo arquivo criptografado ‘texto.txt.gpg’.
Por segurança, remova o original e mantenha apenas a versão segura — com extensão .gpg.
Este arquivo pode ser guardado em segurança.

Se você deseja enviar este arquivo para alguém, deve usar a chave pública do destinatário, ou seja, informar a conta de email que este usou pra registrar sua public key.
O destinatário do arquivo poderá abri-lo usando o gpg:


gpg texto.txt.gpg

Novamente será criado um arquivo ‘texto.txt’, descriptografado.
Se for texto puro, pode ser lido com o comando cat:


cat texto.txt

Perl, PHP e Python.

Cada qual com suas próprias vantagens e desvantagens, Perl, PHP e Python têm mais do que a letra ‘P’, no início de seus nomes, em comum.
Trata-se de 3 linguagens de programação modernas e muito populares.

Para se tornar um bom programador, dominar uma única linguagem de programação não é o suficiente.
É muito comum nos envolvermos em projetos que fazem uso de mais de uma linguagem, como meio para solucionar problemas.
Fazer a mudança de uma linguagem de programação para outra é mais fácil quando se tem intimidade com mais de uma.
O problema é que há muitas linguagens de programação no mundo.
Neste post, vou tentar mostrar porque Perl, PHP e Python merecem que você dedique parte do seu tempo para aprender, pelo menos, uma delas.
Claro que a escolha de uma linguagem, para erigir um projeto, parte de se considerar diferentes fatores — tais como

  • as funcionalidades que se deseja que as aplicações tenham,
  • que novos recursos elas devem suportar,
  • a(s) plataforma(s) de hardware/sistemas operacionais para as quais se vai desenvolver as soluções
  • performance, segurança, quantidade de código que precisará ser criado, a comunidade etc.

As linguagens dos ‘P’, são dinâmicas e poderosas, cada qual do seu jeito e têm em comum o fato de que são muito usadas para desenvolver aplicações web e scripts.
Vamos conhecer um pouco de cada uma, suas vantagens e (lógico!) desvantagens.

Perl

O Perl (nas versões 5.x e 6.x) é uma linguagem de programação dinâmica, interpretada, de propósito geral e de alto nível.
Originalmente desenvolvida por Larry Wall, em 1987, para uso no sistema operacional Unix — tinha um objetivo inicial de facilitar o processamento de relatórios de sistema.
O Perl passou por várias mudanças e revisões e tem sido reprojetada na versão 6 — a ponto de evoluir para uma nova linguagem, em relação á original.
Ambas as ramificações (Perl 5 e 6) têm desenvolvimento ativo e independente uma da outra, formando a família de linguagens Perl.
A família pega emprestado características de outras linguagens importantes, como C, shell script, AWK e sed.
Atualmente, encontra aplicação na administração de sistemas, programação de redes, aplicações financeiras, bioinformática etc.

Manipulação de cadeias de caracteres (strings) e expressões regulares são pontos fortes conhecidos do Perl.

Vantagens

  • Perl é muito boa para lidar com expressões regulares e costuma ser a primeira opção para fazer trabalho pesado nesta área.
  • Seu código é bem curto e, comumente, é possível implementar soluções com apenas uma linha de código.
  • Pode ser usada como linguagem funcional, imperativa, procedural ou orientada a objetos.
  • O CPAN do Perl provê uma grande quantidade de módulos e código testado. Boa parte é gratuita.
  • Por ser uma linguagem, já tradicional e com bastante estrada (mais de 30 anos), conta com muita documentação online e uma grande comunidade de suporte.
  • Portabilidade e disponibilidade a todas as plataformas.

Desvantagens

  • Uma vez que tem sintaxe complexa, iniciantes podem ter alguma dificuldade de entender.
    O mesmo código pode ser escrito de modos diferentes — o que é muito bom, quando se já tem um conhecimento mais avançado sobre a linguagem, mas pode ser fator de confusão para quem está aprendendo.
  • Comparado ao Python, tem documentação escassa sobre como programar orientado a objetos.
  • Pode ser lenta, em comparação com outras linguagens de script.

Popularidade

Mesmo não sendo “nova no pedaço”, seu crescimento tem sido lento, (novamente) comparado a outras linguagens.
Ainda assim, goza de grande popularidade e de uma comunidade engajada.

PHP

Também se trata de uma linguagem de propósito geral, mas é amplamente usada em websites.
Projetada por Rasmus Lerdorf, é uma linguagem de script interpretada server-side, desenvolvida com o propósito de ser usada no desenvolvimento web — sendo que, inicialmente, seu nome correspondia a Personal Home Page.
Atualmente, PHP é um acrônimo recursivo para PHP: Hypertext Preprocessor — ou “PHP: Preprocessador de Hipertexto”.
É muito usada em meio ao código HTML e está inserida em vários sistemas de gestão de conteúdo online.
O código é geralmente processado por interpretador implementado como módulo no servidor web ou como CGI (Common Gateway Interface).
O código também pode ser executado/interpretado na interface de linha de comando (CLI) e pode ser usado para implementar aplicações standalone.
Com um desenvolvimento, cujo início data de 1995, o PHP se encontra na versão 7.x, atualmente.
Ao contrário do Perl (5 e 6) e do Python (2 e 3), a comunidade do PHP caminha junto com as novas versões — de forma que a linguagem não sofreu uma bifurcação em seu desenvolvimento.
É usado no YouTube, no Facebook e em vários outros grandes projetos na Internet.

Vantagens

  • A grande maioria dos provedores de Internet oferece um ambiente pronto para você desenvolver em PHP, nas implementações mais atuais da linguagem.
  • É fácil de aprender e usar. A sintaxe é muito parecida com a da linguagem C.
  • Conta com uma enorme comunidade de suporte.
  • É estável e rápido.
  • Tem suporte a muitos bancos de dados e provê gestão nativa de sessão.

Desvantagens

  • Algumas das bibliotecas escritas em PHP usam uma abordagem procedural e podem ser de difícil compreensão para programadores com formação exclusiva em orientação a objetos.
  • Pode se tornar lenta com a escalabilidade das suas necessidades.
    Algumas organizações fazem uso de frameworks para contornar este problema, contudo.
  • Não é a opção ideal para escrever aplicações desktop.

Popularidade

É, certamente, muito popular e costuma integrar a lista top 10 de linguagens de programação — principalmente quando o assunto é desenvolvimento para a web.

Leia mais sobre o PHP.

Python

Desenvolvida no fim dos anos 80, por Guido van Rossum, Python é uma linguagem de programação elegante e fácil de aprender.
Tem se tornado especialmente popular nos últimos anos e costuma-se recomendar seu aprendizado (como primeira linguagem) a iniciantes em programação.
Tem suporte a múltiplos paradigmas — funcional, imperativa, procedural e, obviamente, orientada a objetos.
Pode ser usada para desenvolver aplicações para desktop, para dispositivos móveis, análise de dados, Web, computação nas nuvens, jogos etc.
A linguagem usa a indentação para identificar blocos de código, o que elimina a necessidade de usar pontos-e-vírgulas etc.

Vantagens

  • Muito bem documentada e você encontra muitos livros sobre a linguagem, inclusive ótimas publicações de autores nacionais. Ou seja, você não precisa comprar traduções malfeitas.
  • É usada em animação 3D e no desenvolvimento de jogos, diferente das outras linguagens de que falamos aqui.
  • Estudantes costumam aprender Python mais rápido do que C ou C++.
  • O código é mais enxuto e mais limpo e, portanto, mais fácil de entender.
  • Comparado a outras linguagens, seu código costuma ser mais curto.
  • Tem suporte a JVM, de forma que seu código pode rodar alguns objetos ou APIs Java.

Desvantagens

Por mais animado que se esteja com uma linguagem de programação, não dá para fechar os olhos para seus pontos fracos:

  • O seu código pode simplesmente não funcionar por que você esqueceu de indentar corretamente.
  • O Python força os programadores a seguir uma convenção.
  • É uma linguagem interpretada e mais lenta que C ou C++.
  • Até o momento, não é muito eficiente para rodar código voltado para múltiplos processadores e/ou núcleos.

Popularidade

Tem se tornado mais e mais popular nos últimos anos e chegou a ganhar o TIOBE Programming Language of the Year/2007. A instituição mede o crescimento e a popularidade de uma linguagem no período de um ano.
A linguagem se manteve em 2o, durante o ano de 2017.

Conclusão

Não existe resposta pronta para a pergunta “qual a melhor linguagem ….”
No caso destas 3, todas podem realizar os mesmos projetos — algumas, com mais eficiência do que as outras.
A título de sugestão, segue a minha lista:

  • PHP é a mais indicada para o desenvolvimento Web e projetos na Internet. Dos servidores gratuitos aos mais caros, quase todos oferecem suporte a PHP e a bancos de dados MySQL/MariaDB.
  • Projetos do lado do cliente, para rodar no desktop ou em dispositivos móveis, podem ser melhor servidos com Python.
  • Perl é mais vantajoso na automação de serviços, na administração de sistemas e em scripts.

Se você tem planos de iniciar um projeto na Web, vale saber que, com o PHP, vai encontrar quase tudo pronto para começar a trabalhar e ver os resultados.
Contudo, se ainda não tiver qualquer projeto em mente, minha recomendação pessoal é a favor do Python.

Referências

https://pt.wikipedia.org/wiki/Perl.

https://pt.wikipedia.org/wiki/PHP.

https://pt.wikipedia.org/wiki/Python.

Leia mais sobre Python.

https://electronicsforu.com/resources/software/a-guide-to-rogramming-in-perl-php-and-python.

criptografia com o GNUPG para iniciantes

O GNU Privacy Guard ou GnuPG (GPG ou segurança da privacidade GNU, em uma tradução livre) é um software livre desenvolvido para oferecer uma solução segura, com padrões abertos e auditáveis para criptografar dados de usuários.
Com desenvolvimento iniciado em 1997, na Alemanha, teve sua primeira versão estável lançada em 1999.
É, hoje, uma solução madura e sólida para dar mais segurança às suas informações — tanto no armazenamento, quanto no tráfego.

O GPG pode dar uma camada concreta de segurança para arquivos desde os mais simples, de texto, a pacotes volumosos de backups.
O software pode manter suas conversas por chat ou email protegidas de olhares bisbilhoteiros do governo, de grandes corporações ou dos seus concorrentes empresariais.

Usuários Linux dispõem de clientes de email com a tecnologia integrada, desde a instalação — como o Kmail (KDE) e o Evolution (GNOME).
Outros aplicativos podem receber a funcionalidade através de plugins.

Resumidamente, é uma solução para criptografar e descriptografar, além de assinar digitalmente os dados que você envia — para garantir ao recebedor que as informações estão realmente vindo de você.
Quem ainda não tem o hábito de criptografar informações sensíveis, deveria começar a levar isto a sério.
Os tempos atuais já exigem que se tenha este tipo de cuidados com os dados, seja no servidor, no computador pessoal ou do trabalho.

Este post é baseado no GNU/Linux (Debian 10 testing “Buster”, mais especificamente). Os conceitos, contudo se aplicam a qualquer outra distribuição ou sistema operacional.

É importante garantir que seus dados não serão facilmente lidos pelas pessoas erradas.

Este artigo parte do zero, ou seja, do pressuposto de que você não sabe nada sobre o GPG ainda.
Inúmeras aplicações fazem uso da criptografia com o GPG.
Na medida em que o seu conhecimento sobre o assunto for se consolidando, sua compreensão irá melhorar sobre o funcionamento deste recurso.

Neste sentido, vamos fazer um passo a passo, que começa com a instalação à geração de uma chave pública e outra privada para você usar.
Vamos começar pela linha de comando (CLI) e, em outros artigos, vou mostrar como usar a criptografia em aplicativos (CLI e GUI).
Abra o terminal!

Instalação do GnuPG

Baixe e instale o pacote de criptografia dos repositórios.
No Debian, no Ubuntu e nas outras distribuições derivadas destas, use o apt (ou apt-get):


sudo apt install gnupg

Isto é tudo o que você precisa, por enquanto.
Vamos em frente.

Como funcionam as chaves criptográficas

Tecnicamente, o gpg já está pronto para ser usado para criptografar seus arquivos.
Para usar todos os recursos do software, é necessário gerar algumas chaves criptográficas.
São duas:

  • a chave pública ou public key
  • a chave privada ou private key

É com este par de chaves que seus dados são codificados/decodificados.
Elas são associadas ao seu endereço de email.
A chave pública é a que você compartilha com as pessoas que desejam se comunicar com você, em segurança.
A chave privada, como o nome sugere, é a que só lhe diz respeito. Esta não é para ser compartilhada.
Quando você e outra pessoa trocam suas chaves públicas, podem passar a trocar mensagens privadas entre si.

Por exemplo, para enviar uma mensagem criptografada para João, é necessário que você e ele troquem chaves públicas entre si.
Então você abre o seu email (com suporte a criptografia) e digita sua mensagem para João.
Antes de enviar sua mensagem, clique no botão para criptografá-la.
A mensagem será codificada (ou embaralhada) com a chave pública de João e só ele poderá abri-la, com a chave privada dele.

Como gerar suas chaves criptográficas


Segue o passo a passo para criar seu par de chaves (pública e privada) para usar todo o potencial do GPG
No terminal rode o comando


gpg --gen-key 

gpg (GnuPG) 2.1.18; Copyright (C) 2017 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Note: Use "gpg --full-generate-key" for a full featured key generation dialog.

GnuPG needs to construct a user ID to identify your key.

Real name: 

O seu nome real será pedido, como primeiro requisito.
Em seguida, seu endereço de email.
Seja cuidadosa(o) e verifique se as informações estão corretas.
O gpg irá pedir para entrar uma senha (sua chave privada) — que deve ser o mais complexa possível, envolvendo caracteres alfanuméricos, números, letras alternadamente maiúsculas/minúsculas e símbolos.

O ponto mais fraco do GPG é a senha que você escolhe como chave privada. Sugiro ler sobre o uso do apg, para ajudar a gerar senhas pessoais mais seguras.

Ao confirmar, uma série de bytes aleatórios serão gerados, para compor a sua nova chave pública.
Este processo pode demorar um pouco.
É uma boa ideia manter o sistema ocupado com outras ações: usar o teclado, o mouse, abrir o conteúdo do pendrive etc. Com isto, você ajuda a “gerar ruído” a ser usado para aumentar a complexidade da sua public key.
Ao fim do processo, o gpg irá reportar a criação com sucesso da chave e exibir sua ID de chave pública, sua “impressão digital” (fingerprint), entre outras informações.

Com isto, você está pronto para os próximos passos.
Continue no terminal!

Como exportar sua chave pública

Este procedimento é muito importante.
Sem isto, não é possível às outras pessoas criptografarem mensagens exclusivas para você.
Para exportar sua chave pública, rode o seguinte comando:


gpg --armor --export seu-email > chave_publica.asc

Acima, substitua “seu-email” pelo email usado para criar a chave pública, anteriormente.
Este comando cria o arquivo chave_publica.asc (você pode usar outro nome, se quiser).
Este arquivo contém a sua chave pública. Se quiser ver o seu conteúdo, use o comando cat:


cat chave_publica.asc 

-----BEGIN PGP PUBLIC KEY BLOCK-----

PkoQEWmlxNAEllQWoHwVbXBmgi6bkB945gg6M9QNLujLgfsDY0vAgeMMxTXbAnTR
BxL+w/PikSy44CIGy9EtQ+d27PpcrLkRM/HLABEBAAG0NkVsaWFzIFNlcnJhIFBy
YWNpYW5vIFBlcmVpcmEgPGVsaWFzcHJhY2lhbm9AZ21haWwuY29tPokBVAQTAQgA
PhYhBA2NPdDX0EfJoPcb2v2mn4cCXf7cBQJaB1EEAhsDBQkDwmcABQsJCAcCBhUI
CQoLAgQWAgMBAh4BAheAAAoJEP2mn4cCXf7cLU0H/3xW3ShRh1xXGQ5NLAmAuTOl
6D8ECyQmpxdhTJaiQ2wsosnrRIBi6XNuMj5b3Mhd51pVNlMadKRIWfNs99Yjaci5
S5oQz3oHwlIZ2C/g35utcHcTpShbSBJrm3bgY+dOeXtk2M0cuKPxJ4uyLvSfgknG
x1eqF6OAKhIqHi9NC7sW5YJ3Fq4zXh0gYyVTmLQ5O5LviPOGjn+B9IMg/Ewjk/vL
8rI4w1IRuXL+BAy3RKwv4Cb0qmsu2o0WfzkAEQEAAYkBPAQYAQgAJhYhBA2NPdDX

...

6D8ECyQmpxdhTJaiQ2wsosnrRIBi6XNuMj5b3Mhd51pVNlMadKRIWfNs99Yjaci5
S5oQz3oHwlIZ2C/g35utcHcTpShbSBJrm3bgY+dOeXtk2M0cuKPxJ4uyLvSfgknG
x1eqF6OAKhIqHi9NC7sW5YJ3Fq4zXh0gYyVTmLQ5O5LviPOGjn+B9IMg/Ewjk/vL
qGuITvoL2H2C+I6Z1hxLxnFq4BciiEXpErxTk+A+HbUYSTyCf4LsjZn0vVaYpq7C
sBBsFXTMWZS1osrgvkE9K05g/yEKBYxpFVR98hSKrmxfNSL8YPnjCXQ7vn7eV5K5
-----END PGP PUBLIC KEY BLOCK-----

Se quiser, você pode inserir este conteúdo no rodapé dos seus emails. Ele é para ser compartilhado com todo mundo que deseja te enviar informações criptografadas.
Se achar mais cômodo, apenas envie o arquivo chave_publica.asc para as pessoas.

Outra solução é enviar a sua chave pública para um servidor (public key server), de forma que ela fique catalogada e possa ser acessada por qualquer pessoa no mundo que queira trocar mensagens seguras com você.
Para isto, use a opção --list-keys:


gpg --list-keys 

/home/justincase/.gnupg/pubring.kbx
-----------------------------------
pub   rsa2048 2017-11-23 [SC] [expires: 2019-11-23]
      6750982194C7BB445CE45LL0B092D0E68C08315A
uid           [ultimate] Justin Case 
sub   rsa2048 2017-11-23 [E] [expires: 2019-11-23]

Preste atenção na cadeia de caracteres na segunda linha, logo após a data de expiração. No meu caso, é a seguinte: 6750982194C7GG445CE45FF0B092D0E68C08315A.
Esta é a identificação primária (primary ID), associada à chave que será exportada.
Agora rode o seguinte comando:


gpg --keyserver pgp.mit.edu --send-keys 6750982194C7CC445CE45BB0B092D0E68C08315A

gpg: sending key 2194C7GG445CE45FF0 to hkp://pgp.mit.edu

Você já deve ter deduzido que o comando acima envia sua chave pública para armazenamento em um dos servidores do MIT. Lá, ela poderá ser acessada e baixada por qualquer um.

Como acessar a chave pública de uma pessoa

Depois de exportada, sua public key poderá ser vista e usada para criar documentos criptografados para você, a partir do servidor do MIT:

https://pgp.mit.edu/

Se a pessoa souber o seu nome ou o seu email, ela pode fazer uma busca no servidor, conforme a imagem abaixo:
elias praciano chave publica no servidor do MIT
Resultado da busca:
mit public key

Como importar a chave pública de alguém

No caminho inverso, se você quiser enviar um email com conteúdo criptografado para alguém, vai precisar da chave pública desta pessoa.
Você pode obter a chave diretamente da pessoa ou de um servidor público.
De posse da chave, é necessário “importá-la”. Veja como fazer isso.
Vamos supor que a chave esteja dentro do arquivo ‘fulano_public_key.asc’. Use ‘--import‘:


gpg --import ~/.PUBKEYS/fulano_public_key.asc

De acordo com a configuração de cada aplicativo que usa o GPG, o seu sistema vai saber aonde encontrar as chaves públicas que você tiver, aí.
Ou seja, se estiver usando o plugin Enigmail, o cliente de email Thunderbird fará uso intuitivo e automático da criptografia, quando requerido.

referências

https://pt.wikipedia.org/wiki/GNU_Privacy_Guard.

https://www.linux.com/learn/how-send-and-receive-encrypted-data-gnupg.