5 comandos do GPG para criptografar e descriptografar arquivos

Os comandos que seguem, podem ser usados com o utilitário gpg, que pode ser instalado a partir dos repositórios oficiais da maioria das distribuições GNU/Linux.
Este post tem o propósito de fazer “um apanhado” geral do uso da ferramenta, nas funções de criptografia/descriptografia.

Caso tenha dúvidas ou queira se aprofundar mais sobre algum procedimento, clique nos links do texto.

gpg criptografia

Para criptografar um arquivo texto (por exemplo, ‘texto.txt’) com o uso de uma senha simples, definida durante o procedimento, use a opção ‘-c’:


gpg -c texto.txt

O comando irá lhe pedir uma senha (e confirmar, em seguida) e criar um novo arquivo, com extensão .gpg.
Se o arquivo, com esta extensão, já existir, você será avisado com a mensagem “File ‘texto.txt.gpg’ exists. Overwrite? (y/N) “.
Neste caso, tecle ‘y’ para sobrescrever ou ‘N’ para interromper a execução e voltar à linha de comando.
Leia mais sobre esta opção aqui.
Se usar ‘-e’, é possível criptografar usando a chave pública de um (ou mais) destinatário(s) — adicionando uma camada extra de proteção contra bisbilhoteiros corporativos ou governamentais.
Segue um exemplo:


gpg -e texto.txt

You did not specify a user ID. (you may use "-r")

Current recipients:

Enter the user ID.  End with an empty line: hermengardaafonso@yahoo.com.br
No such user ID.

Current recipients:
rsa2048/5ASDFS7832142418 2017-11-23 "Hermengarda Afonso" hermengardaafonso@yahoo.com.br

Enter the user ID.  End with an empty line: justincase@gmail.com

Current recipients:
rsa2048/4FE73CDD0A83E688 2017-11-23 "Justin Case justincase@gmail.com"
rsa2048/5ASDFS7832142418 2017-11-23 "Hermengarda Afonso" hermengardaafonso@yahoo.com.br

Enter the user ID.  End with an empty line:

Vamos entender o que houve aqui:

  • Você pode especificar mais de um destinatário a ter acesso ao arquivo. Digite o email dele ou dela e tecle Enter para fornecer o email do próximo.
  • Basta dar um ‘Enter’, para uma linha em branco, para o gpg entender que não há mais novos recipients a acrescentar.

Você também pode indicar o destinatário direto na linha de comando, com a opção ‘-r’:


gpg -er justincase@gmail.com texto.txt

Se quiser assinar um arquivo texto com sua chave secreta (privada), use a opção ‘-s’:


gpg -s texto.txt

Uma variante, para este comando é dado pela opção --clearsign.
Ele acrescenta a sua assinatura e mantém o arquivo legível para as pessoas que não possuem suporte ao GPG:


gpg --clearsign loremipsum.txt

cat loremipsum.txt.asc 

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

O que é o Lorem Ipsum?

 O Lorem Ipsum é um texto modelo da indústria tipográfica e de impressão. 

 O Lorem Ipsum tem vindo a ser o texto padrão usado por estas indústrias desde o ano de 1500, quando uma misturou os caracteres de um texto para criar um espécime de livro.

 Este texto não só sobreviveu 5 séculos, mas também o salto para a tipografia electrónica, mantendo-se essencialmente inalterada.

 Foi popularizada nos anos 60 com a disponibilização das folhas de Letraset, que continham passagens com Lorem Ipsum, e mais recentemente com os programas de publicação como o Aldus PageMaker que incluem versões do Lorem Ipsum.


Fonte: https://pt.lipsum.com/
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEwiKr3xCRZwLRemeMKsDy8hFgxDsFAlodsXAACgkQKsDy8hFg
xDvtCQf9EqpnF++3RbYb+LJBhlmjKdflJTg8xDX8WWFKDxL52dRHx9Hy1K7SlOo5
7gm+O38u0OVlPMx2OeUEBj9QSw9E9rKBOr/sMT2uK5ZoRDvTRXsfhcm0/oI5Xowa
9CtG2rWcH2RBZ+wiuFOQmPzMv7/T50wyx1Vxcqrw264XQ/1zPDegBajhe8CrgTXY
HbkLDfXeNBwfOY3GAvTwbRFlUa/bJ2mOxkAJyn8bynU6VaqEXKNL1rKnazHNrNwp
kHaQHw5+ZEdWzpslxPnuLblsV8XjWIsLYsCND4gZhcAA0jCTEoTWScUd3BbWBjm7
zZFvpaRT1/Rjd74cwRI3DerMT4vy/g==
=Lpy5
-----END PGP SIGNATURE----

Como é possível observar, acima, o conteúdo continua visível a qualquer. Ele foi acrescido da assinatura (PGP signature) do seu criador.
Neste caso, o procedimento pode ajudar a dar legitimidade a um arquivo ou certificar sua procedência.

O comando que segue, pode ser usado para assinar seu arquivo com sua chave privada e, em seguida, criptografá-lo com a chave pública do destinatário (recipient).


gpg -se -r justincase@email loremipsum.txt

… que irá gerar um arquivo ‘loremipsum.txt.gpg’, que poderá ser descriptografado pelo usuário (userid) justincase@email.

Ao descriptografar o arquivo ‘loremipsum.txt.gpg’, o programa irá criar um arquivo de saída, chamado ‘loremipsum.txt’.
Se você prefere que ele crie um arquivo de saída, descriptografado, com outro nome, use a opção ‘-o’:


gpg -o outroarquivo.txt loremipsum.txt.gpg

Referências

Texto sobre o Lorem Ipsum: https://pt.lipsum.com/.

Entenda porque 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.

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

Como gravar arquivos criptografados com o Vim

O editor de textos Vim tem suporte a diversos métodos de criptografia.
É possível guardar código ou qualquer outro texto (como senhas ou outras informações sensíveis) longe de olhares curiosos.

Uma vez criptografado, o texto não pode mais ser lido, sem a chave correta.
Tenha isto em mente, antes de usar este tipo de segurança em um arquivo — pra não ficar “trancado do lado de fora”.
Você pode enviar o texto codificado para outras pessoas, que usem o Vim no Windows ou no MacOS.
Se elas tiverem a senha para descriptografar, poderão ler o conteúdo da mensagem.

Para ativar a criptografia, a qualquer momento, use o comando ‘:X’.
Forneça a senha e a confirmação.
A criptografia será aplicada na hora de gravar o arquivo (:w).

criptografia no vim

É possível já abrir um arquivo com a criptografia ativada:

vim -x meu-arquivo-secreto.txt

Após este comando, o Vim iniciará pedindo uma nova chave de segurança para o seu arquivo.
Na próxima vez em que for abrir o arquivo, não precisa usar ‘-x’:

vim meu-arquivo-secreto.txt

Cuidados com a segurança criptográfica no Vim

Além de não perder a sua senha e usar, também, uma senha decente, há outros aspectos a levar em consideração, caso você se preocupe realmente com a sua segurança.
Quando tentar abrir o seu arquivo, só conseguirá ver um monte de caracteres desconexos.
texto criptografado

Tanto o texto contido no swap, quanto o do arquivo undo (usado para desfazer ações dentro do editor), são guardados sob criptografia.

Talvez não seja paranoia, mas a gente tem que falar sobre isso…
A codificação dos arquivos de swap e do undo são feitas bloco a bloco — fator que pode ajudar a reduzir o tempo necessário para um invasor quebrar sua senha.
Portanto, se quiser segurança extra, desative o swap e o undo (desfazer) para o arquivo.
Para desativar o recurso de swapping do Vim, entre no modo de comando (tecla ESC) e execute o seguinte:

:noswapfile

O comando abaixo, inicia a edição do arquivo ‘meus_segredos.txt’, com o swap desativado:

:noswapfile edit meus_segredos

Use o que achar melhor.
O lado ruim desta ação é que você pode perder texto, que ainda não tenha sido gravado, caso ocorra alguma queda de energia ou travamento no sistema operacional.
Já o arquivo undo pode ser desativado sem maiores problemas:

:set noundofile

Veja outros procedimentos adicionais (opcionais) de segurança que você pode adotar.
Para desativar também o backup automático:

:set nobackup

Para desativar o arquivo temporário:

:set nowritebackup

Para desativar a criptografia de um arquivo use o comando:

:set key=

Você também pode desativar o viminfo, que oferece informações sobre a sessão atual:

:set viminfo=

Quais métodos de criptografia estão disponíveis para o Vim

Você pode usar a opção ‘cryptmethod‘ (ou cm) para selecionar o tipo de criptografia a ser usado:

  1. zip: método mais fraco, porém rápido e mais difundido. Tem maior compatibilidade.
  2. blowfish: método mais seguro que o anterior.
  3. blowfish2: método atualizado e com segurança média para forte. É recomendado pela documentação oficial do Vim.

Para escolher o método de criptografia blowfish2, use o seguinte comando no Vim:

:setlocal cm=blowfish2

Você precisa fazer esta opção antes de começar a escrever no arquivo.
Quando você for abrir um arquivo, o Vim detecta automaticamente o método usado para criptografá-lo.
Você pode alterar o cryptmethod, ao abrir um arquivo, antes de começar editar.
Para definir permanentemente o método ou qualquer outro ajuste de que falamos neste post, edite o arquivo de configuração vimrc.

Como saber se a minha versão do Vim tem suporte a criptografia

Se você efetuou a instalação do aplicativo a partir dos repositórios oficiais da sua distro, não há muito o que fazer. E o suporte provavelmente já estará lá.
Alguns usuários preferem baixar e compilar o código fonte — entre outras coisas, isto lhes dá acesso a uma versão mais atual do aplicativo.
Neste caso, pode ser necessário compilar com a opção ‘cryptv’ selecionada.
Use a opção ‘–version’, combinada ao comando grep, para saber se a sua versão tem suporte a criptografia:


vim --version | grep crypt

Se o +cryptv estiver presente, então está tudo ok com a sua versão.

vim version

Referências

Como considerações finais, tenha cuidado para não começar a editar (e gravar em seguida) um arquivo criptografado, que você não descodificou adequadamente. Todo o conteúdo do arquivo será perdido, caso você o faça.
Lembre-se que o texto armazenado na memória não é criptografado.
Isto significa que o administrador do seu sistema, tecnicamente, poderá ler o seu conteúdo, enquanto você o estiver editando.
O manual do Vim também informa que, em uma máquina antiga (32 bit) é possível quebrar uma senha de 6 caracteres em menos de 1 dia, por força bruta, no caso de usar o cryptmethod zip.
Você pode iniciar o Vim com criptografia ativada e o swap desligado, com as seguintes opções:


vim -xn meuarquivo.txt

Leia mais:
https://linux-audit.com/using-encrypted-documents-with-vim/.

5 mitos sobre a segurança do seu website.

O site White Hat Security tem divulgado dados preocupantes que demonstram aumentos nos ataques a sites de pequenas e médias empresas em relação ao número de ataques aos das grandes.
Um dos motivos para esta mudança de foco, por parte dos invasores, é que as grandes empresas, agora, têm programas profissionais de segurança na Web — o que já torna mais difícil o cracking de seus sites.

Mudaram as vítimas, mas as técnicas de invasão continuam, basicamente, as mesmas.

O propósito deste artigo é questionar e, quem sabe, ajudar a desconstruir 5 dos maiores mitos sobre a segurança na web.

O SSL deixa o meu site mais seguro?

ssl lock
O TSL, sigla para Transport Layer Securty e o seu predecessor, SSL (Secure Sockets Layer), ambos são comumente referenciados pela mesma sigla: SSL.
Trata-se de protocolos criptográficos que oferecem um ambiente de comunicações seguro sobre uma rede de computadores.
O principal objetivo do protocolo é garantir privacidade e integridade à transferência de dados entre o servidor da empresa e o navegador do cliente.
Em outras palavras, sua função é dar ao seu cliente a certeza de que o site que ele está vendo é um site genuíno — e não uma impostura, com o objetivo de fornecer falsas informações ou de obter dados de forma fraudulenta de seus visitantes.
O SSL também assegura que o conteúdo da conversação entre o cliente e o site não possa ser lido, caso seja interceptada.
Se um website for crackeado e passar a ter um comportamento nocivo em relação aos visitantes, tudo o que SSL fará é lhes assegurar que o site é legítimo, genuíno — cumprindo a sua função.

Desta forma, o SSL não tem absolutamente qualquer impacto na segurança do website ou na forma como os seus dados e os de seus usuários são manipulados e guardados.

Por ser um protocolo de transporte de dados, o SSL procura garantir a segurança das informações, enquanto trafegam entre um ponto e outro, na rede.
Os dados armazenados no cliente ou no servidor, não são protegidos por este protocolo — nem ele foi concebido para protegê-los.
Leia mais sobre o SSL: É hora de encriptar toda a Internet? Isto é possível?

Firewalls protegem de ataques externos?

firewall parede corta-fogo
O firewall é um programa ou um equipamento que controla o fluxo de dados em uma rede, baseado em um conjunto de regras.
Sua função é estabelecer uma barreira entre uma rede segura e confiável e outra não considerada tão segura ou tão confiável (a Internet, por exemplo).
A principal função de um firewall é criar restrições ou filtros de acesso entre redes e evitar propagação de acessos ou comportamentos nocivos.
Os firewalls, ou “paredes corta-fogo”, não tem a função de proteger o site em si, seus dados ou a forma como são manipulados.
Portanto, todos os problemas e falhas de segurança de seus aplicativos Web (comércio eletrônico, fóruns, email etc) continuam intocados pela presença de um firewall.

Enquanto o SSL foi concebido para dar segurança ao transporte dos dados, os firewalls foram criados para dar segurança à sua passagem entre redes. Em todos os outros momentos, as vulnerabilidades permanecem inalteradas.

A ideia do firewall é a de separar o tráfego nocivo do “benigno” — o que é feito através de Listas de Controle de Acesso, ou ACL (Access Control List).
O ACL determina o que pode trafegar entre as redes e o que deve ser bloqueado.
Uma vez dentro da sua rede, através de algum dos serviços permitidos pelo(s) firewall(s), um visitante malicioso estaria livre para agir.
Isto quer dizer que o mundo inteiro entra no seu site, usa seus serviços de email, contatos, chat, navega por onde quiser etc — e é aí que mora o perigo.

Scanners de vulnerabilidade de rede são capazes de protegê-la?

satan
Um scanner de vulnerabilidades, é um programa projetado para acessar computadores, sistemas computacionais, redes ou aplicações em busca de pontos falhos na segurança.
Há vários tipos de vulnerability scanners. O que os distingue, entre eles, é o foco dado a problemas específicos.
O ponto em comum é o objetivo de listar as vulnerabilidades encontradas em um ou mais alvos.
No início dos anos 90, o programa SATAN (descontinuado), escrito em Perl, era muito popular entre administradores de sistemas e profissionais de segurança de rede, como software de teste de vulnerabilidades, entre outros.
A lógica é que, após encontrar e resolver todos os problemas de vulnerabilidade o website estará suficientemente seguro na Internet.
Contudo, os scanners de vulnerabilidades não abrangem os aplicativos Web, rodando nos servidores, que podem conter inúmeras falhas de segurança.
Este tipo de software pode ser usado para conduzir testes de reconhecimento da rede — um comportamento típico de um acesso remoto malicioso, com o objetivo de coletar informações ou obter acessos privilegiados e não autorizados à rede.

Os scanners trabalham com seus próprios bancos de dados ou listas, contendo os tipos e os detalhes das vulnerabilidades que devem ser encontradas.
Estas listas são baseadas em falhas já conhecidas.

As fragilidades e pontos de suscetibilidade dos seus aplicativos Web não são conhecidos pelos scanners e, por isto, não serão detectados.
Mesmo tendo um website profundamente comprometido, inseguro e com seus bancos de dados totalmente desprotegidos, você vai receber um sinal verde, informando que tudo está bem.

Os desenvolvedores são sempre culpados pelas falhas?

desenvolvedor digitando
Infelizmente, não é tão fácil encontrar culpados.
Há muitos fatores, fora do controle dos desenvolvedores, que promovem as fragilidades dos sites.
Parte do código (fechado ou não), escrito por terceiros e inserido nos aplicativos web da sua empresa, pode conter vulnerabilidades.

Com prazos curtos para finalizar projetos, os desenvolvedores raramente têm tempo para checar os meandros das linhas de código que chegam através de atualizações e patches.
Código proprietário e fechado, definitivamente, não pode sequer ser auditado.

Além disto, as falhas de segurança podem surgir da simples combinação entre componentes do sistema — e estamos provavelmente falando de milhares de componentes e quantidades exponenciais de possibilidades de combinação.
É humanamente impossível prever ou prevenir todas as falhas, portanto.

Avaliações anuais das vulnerabilidades são suficientes?

O código dos aplicativos Web estão em constante mudança. Muita coisa sofre alterações no período de um ano.
Cada nova versão do aplicativo ou atualização (mesmo que de segurança), traz novos riscos e potenciais pontos fracos a serem explorados por crackers.
Finalizar projetos estratégicos para os negócios é sempre prioritário e (como já foi dito) os desenvolvedores nunca têm tempo para testar todas as possibilidades de quebra da segurança dos aplicativos.
O ideal é ter práticas sempre em curso para resolver problemas de segurança, à medida em que forem detectados.

Conclusão

Se já sabemos que algumas ações não são eficazes para tornar um website mais seguro.
Há várias outras medidas, contudo, que podem ajudar neste sentido e devem ser consideradas com seriedade:

  1. A segurança do website deve ser reavaliada com maior periodicidade e, principalmente, a cada atualização de cada novo componente — cada nova linha de código é, potencialmente, um novo problema de segurança.
  2. Os scanners de vulnerabilidade podem ser usados em conjunto com um processo manual de testes, personalizado e adaptado aos aplicativos que você tem rodando no site.
  3. Aos desenvolvedores cabe nunca confiar nos dados fornecidos por usuários. Sempre preveja a introdução de códigos maliciosos nos formulários — esta é a principal porta de entrada dos crackers.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Referências

https://www.whitehatsec.com/assets/WP5myths041807.pdf.