Aprenda Criptografia e Segurança

  • Página Inicial
  • Contato!
  • Tudo sobre Criptografia e Segurança Parte 1!
  • Tudo sobre Criptografia e Segurança Parte 2!
  • Tudo sobre Criptografia e Segurança Parte 3!
  • Tudo sobre Criptografia e Segurança Parte 4!
  • Tudo sobre Criptografia e Segurança Parte 5!
  • Tudo sobre Criptografia e Segurança Parte 6!
  • Tudo sobre Criptografia e Segurança Parte 7!
  • Tudo sobre Criptografia e Segurança Parte 8!
  • Tudo sobre Criptografia e Segurança Parte 2

    Encriptar arquivos com GnuPG no Linux

    No Linux, usamos o GnuPG para criptografar dados, colocar assinatura digital e gerenciamento de chaves de criptografia.

    Pegue um arquivo comum, como um de texto, e vamos criptografar ele com esse programa, que usa uma chave privada (simétrica) com algoritmo o CAST5.

    Vá no terminal do Linux e digite para ler o arquivo no terminal cat teste.txt, e pra encriptar o arquivo, digite esse comando:

    
    gpg -c teste.txt
    
    

    Ele cria um diretório, um arquivo de configuração e um "chaveiro" com as chaves e pede pra criar uma senha. O arquivo criado terá um .gpg depois da extensão. Se quiser ver o conteúdo do arquivo criptografado, use o cat novamente.

    Para desencriptar, digite isso no comando:

    
    gpg teste.txt.gpg
    
    

    Ele pedirá a senha e desencriptará ele.

    Enviando E-Mails Criptografados e Assinados

    Primeiramente tenha o certificado criado com as chaves públicas e privadas com seu e-mail.

    No Thunderbird, instale a extensão Enigmail, que é integrada ao GPG. Ative e reinicie o Thunderbird, ele abrirá a configuração de e-mail, ele achará a chave de criptografia do seu chaveiro, além de opção para criar uma nova.

    No seu e-mail no Thunderbird, crie uma nova mensagem qualquer, em cima tem uma mensagem avisando que a mensagem não está assinada nem criptografada, clique em Enigmail e marque as opções Criptografar e/ou Assinar Mensagem. Do lado dele temos os atalhos para Criptografar, Assinar e Anexar Chave Pública.

    Mesmo se o destinatário não tiver chave pública, podemos marcar nosso e-mail remetente e criptografar ou assinar. Podemos criptografar apenas a mensagem ou também os anexos (atenção que a chave pública enviada será como anexo também, e não deve ser criptografada).

    No e-mail destinatário, ao clicarmos no e-mail recebido ele pedirá a chave pública e descriptografar normalmente.

    A resposta também será criptografada, ao responder o remetente.

    Podemos também salvar e adicionar a chave pública ao chaveiro.

    SSH - Conceitos Básicos e Conexão por Senha no Linux

    SSH (Secure Shell) é um protocolo de comunicação seguro que permite o envio de comandos e o controle remoto de um host por meio de uma conexão criptografada. O SSH possui uma arquitetura cliente/servidor, e está disponível em praticamente todas as plataformas, como Linux, Mac OS X, BSD, Windows, etc.

    O protocolo SSH cuida da autenticação, criptografia e integridade dos dados transmitidos em uma rede.

    O OpenSSH é uma versão gratuita do SSH. É desenvolvido pelo projeto OpenBSD (mas é disponível para várias plataformas), e podemos encontrá-lo em https://www.openssh.com/.

    Para instalar ele, vamos usar o apt mesmo, digitando isso pro cliente:

    
    sudo apt-get install openssh-client
    
    

    E isso pra instalar o servidor:

    
    sudo apt-get install openssh-server
    
    

    No servidor, inicie o serviço dele digitando sudo service ssh start.

    E para conectar a partir do cliente, use o nome de usuário e o IP privado (ou nome do host) dele, assim (em modo root):

    
    ssh -l nomedoservidor 192.168.1.129
    
    

    PS: Podemos dar um ping antes no IP do servidor, pra ver se ele está respondendo.

    Ao tentar fazer a conexão, ele pedirá a senha, e logará no sistema do servidor, que aparecerá no terminal do cliente. Para sair digite exit ou logout.

    PS: Pode ser necessário ter que liberar a porta 22 no Firewall do servidor.

    Se olharmos na pasta /etc/ssh do servidor, corretamente configurado, temos os arquivos de configuração ssh_config e sshd_config, que são a configuração do cliente e servidor, respectivamente.

    Voltando ao servidor, entre nesse diretório e abra esses arquivos pelo terminal, que vemos as portas, protocolos usados, autenticações, etc.

    Quando um cliente SSH se conecta a um servidor, cada um prova sua identidade ao outro. O servidor autentica o cliente e o cliente também autentica o servidor com o uso de criptografia de chave pública. Cada servidor SSH possui uma chave de identificação, chamada de hostkey, usada para identificar-se para os clientes.

    Observe no arquivo em /root ou /home, no cliente, que temos um diretório com o nome .ssh, que tem um arquivo com criptografia que identifica os servidores conhecidos pelo cliente, para conexão.

    PS: Lembre-se que o cliente é quem acessa, e o servidor quem é o acessado.

    SSH - Conexão por Chave Pública e Criptografia Assimétrica no Linux

    Podemos nos conectar por senha a um servidor SSH. Porém, senhas apresentam problemas como:

    Para eliminar esses problemas, o SSH suporta autenticação de chave pública, usando chaves criptográficas.

    Esse é o processo de autenticação:

    1. O cliente solicita uma conexão com o servidor em uma conta de usuário específica.
    2. O servidor responde enviando um desafio ao cliente, para que este prove sua identidade.
    3. O cliente recebe o desafio, gera um autenticador usando sua chave privada, e o envia ao servidor.
    4. O servidor verifica o autenticador recebido e a conta solicitada usando a chave pública do usuário para determinar a autenticidade da conexão, liberando ou não o acesso.

    Para usarmos esse esquema, precisamos de: Um par de chaves e um passphrase para protegê-las, e instalar a chave pública do usuário no servidor.

    Entrando no Linux cliente, entre no SSH igual anteriormente, com acesso root, mas com a opção -v, que mostrará na tela os passos que está executando:

    
    ssh -vl nomedoservidor 192.168.1.129
    
    

    Para usar a autenticação criptográfica primeiro devemos gerar um par de chaves. Usaremos o programa ssh-keygen para gerar chaves DSA ou RSA. No cliente basta digitar ssh-keygen -t rsa. O programa criará o diretório local (~/.ssh) se ele não existir ainda e armazenará as chaves criadas em dois arquivos nele. Por padrão, os nomes das chaves serão id_rsa e id_rsa.pub.

    Para isso, no cliente, digite isso:

    
    ssh-keygen -t rsa
    
    

    Ele gerará a chave rsa e criará o arquivo id_rsa (que pode ser alterado o nome, para não alterar é só dar enter sem escrever nada), digite uma passphrase (frase-chave) e dê enter. Ele gerará uma "imagem" aleatória para isso.

    PS: Prefira RSA ao invés de DSA, já que esta última não está mais sendo aceita.

    E no cliente, digite isso, na pasta ~/.ssh, para copiar o arquivo do cliente para o servidor:

    
    scp id_rsa.pub nomedoservidor@192.168.1.129: # Não esqueça dos dois pontos
    
    

    PS: Se definiu o arquivo pub com nome diferente, coloque esse nome.

    No acesso ao servidor (via SSH mesmo), em /home, digite isso:

    
    cat id_rsa.pub>>~/.ssh/authorized_keys
    
    cat ~/.ssh/authorized_keys
    
    

    O primeiro comando escrito acima pega o conteúdo do id_rsa e escreve no arquivo de chaves autorizadas para conexão.

    Pra finalizar, digite logout pra voltar à máquina cliente. E agora tente logar no servidor novamente com ssh -l nomedoservidor 192.168.1.129. Ele não pedirá mais a senha do outro computador, pedirá a passphrase, que é a chave pública que foi criada e adicionada ao servidor.

    A autenticação de chave pública é mais segura que a autenticação por senha porque são necessários dois componentes secretos (o arquivo de chave no disco e a passphrase), nem a passphrase e nem a chave privada são enviadas ao host remoto, apenas o autenticador gerado com elas, e chaves criptográficas geradores por computador são muito mais difícies de adivinhar do que chaves criadas por pessoas.

    O OpenSSH inclui um programa chamado ssh-copy-id que instala uma chave pública automaticamente em um servidor remoto com um comando, escrevendo no ~/.ssh/autorize_keys ssh-copy-id -i arquivo_chave usuario@servidor, por exemplo, digitamos no cliente ssh-copy-id -i id_rsa.pub nomedoservidor@192.168.1.129.

    Cada vez que nos conectamos ao servidor SSH precisamos redigitar a passphrase. Porém, se usarmos um agente SSH poderemos nos identificar apenas uma vez, e o ssh (e o scp) podem se "lembrar" de nossa identidade até efetuarmos logout do cliente, por exemplo.

    Um agente é um programa que mantém chaves privadas na memória e fornecem serviçoes de autenticação a clientes SSH. O agente usado pelo OpenSSH é o ssh-agent.

    Voltando ao cliente, digite isso (fora do SSH), para iniciar o ssh-agente no shell que estamos usando:

    
    ssh-agent $SHELL
    
    ssh-add
    
    

    Ele vai pedir o passphrase, digita ela e aí ele não a pedirá mais até fazermos logout no cliente. Para ver se a chave foi carregada, digite ssh-add -l (fora do SSH, no cliente).

    Conecta novamente ao servidor, ele não pedirá mais a senha enquanto estivermos nessa sessão.

    PS: Não use isso quanto tiver fora do acesso da máquina cliente, por questões de segurança.

    Pra apagar uma chave da memória, digite fora do SSH, no cliente, ssh-add -d id_rsa (ou o nome dela, caso seja outro), pra apagar todas, digite ssh-add -D.

    SSH - Usando SCP Para Transferência de Arquivos entre Hosts Linux

    O comando SCP (Secure Copy) é um programa utilizado para copiar arquivos de forma segura entre dois hosts numa rede, usando o SSH para transferência segura dos dados.

    Entre no servidor e pegue o ip dele, usando o ifconfig para isso. e o nome do usuário do mesmo.

    Na máquina cliente, dê um ping no IP do servidor, e veja se ele está respondendo.

    Crie um arquivo qualquer, como um de texto, na máquina cliente. E na máquina cliente, digite isso:

    
    scp arquivo.txt nomedoservidor@192.168.1.189:/home/usuario
    
    

    No caso, o que vai após o IP do servidor, é a pasta onde será salvo o arquivo.

    Ele pedirá a confirmação da conexão, a senha e transferirá o arquivo até lá.

    Também podemos transferir do servidor para o cliente, e use outro arquivo do servidor.

    Para baixar algo do servidor, faça isso no cliente:

    
    scp nomedoservidor@192.168.1.189:servidor.txt servidor.txt
    
    ls
    
    cat servidor.txt
    
    mkdir TesteSCP
    
    mv arquivo.txt /TesteSCP/
    mv servidor.txt /TesteSCP/
    
    

    No código acima, o padrão é a pasta /home/nomedoservidor, se for baixar de outro diretório, especifique ele após os dois pontos, o segunto nome é o nome que ele terá no cliente após o download.

    Para copiar do cliente para o servidor da pasta criada, fazemos assim:

    
    scp -r TesteSCP nomedoservidor@192.168.1.189:~/Imagens
    
    

    No servidor, podemos ver, na pasta especificada, que o diretório todo foi transferido, com todos os arquivos juntos.

    Outras opções do scp:

    Tor Browser Bundle - Baixando, Verificando e Rodando no Linux

    O projeto Tor é uma organização que conduz pesquisa e desenvolvimento em privacidade e anonimidade online. A ideia central do Tor é impedir que outras pessoas descubram sua localização, seus hábitos de navegação, mascarar sua identidade, etc.

    Para baixar o navegador tor, acesse esse site e escolha a opção referente ao seu sistema (no caso, o Linux): https://www.torproject.org/pt-BR/download/languages/

    Na página de download, existem algumas dicas e sugestões para usar o TOR corretamente e com segurança. Aqui vemos como verificar a assinatura dele: https://www.torproject.org/docs/verifying-signatures

    Baixe também o arquivo de chave do TOR, na mesma página. Com os dois arquivos na mesma pasta, digite isso:

    
    gpg --auto-key-locate nodefault,wkd --locate-keys torbrowser@torproject.org
    
    

    Depois, assine a chave pública com sua chave privada, assim:

    
    gpg --sign-key 5A4F5F4F5452677F32E55A17D0ACBC71C8C023AB
    
    

    Depois, para verificar se o pacote TOR realmente é o original, faça isso:

    
    gpg --verify tor-browser-linux32-3.5.3_pt-BR.tar.xz{.asc,}
    
    

    Veja se aparece "assinatura correta de "The Tor Browser Developers", que mostrará que o pacote é verídico.

    Para instalar, rode esses comandos:

    
    tar -xpvf tor-browser-linux32-3.5.3_pt-BR.tar.xz
    
    

    Entre no diretório do programa, e ver se aparece o start-tor-browser, que é o que inicializa o navegador, posteriormente, ele pode ser adicionado à um atalho ou ao lançador.

    Abrindo o Tor, aparecerá as configurações do navegador, que deverão ser feitas para permitir o acesso.

    Quando ele terminar, ele abrirá uma página de boas-vindas, mostrando seu IP anônimo e outras dicas para usar o Tor com segurança. A página em questão é essa: https://check.torproject.org/?lang=pt_BR