Capítulo 7. Criptografia

Índice

Introdução
Introdução aos protocolos SSL e TLS
SSL
HTTPS
Ataque Man in the Middle (MITM)
TLS
Introdução a Certificados
Certificados X509
Validade de Certificados
CA Intermediária
Como é gerado um Certificado assinado por CA?
Tipos de certificados e suas extensões
A estrutura básica de um certificado?
Extensões para uso em certificados
Cadeia de confiança de certificados
Certificado raíz
Autenticação de Certificado SSL TLS
Tipos de certificados
Significado de campos usados em certificados
Nívels de validação do certificado
openssl
O arquivo de configuração /etc/ssl/openssl.cnf
Visualizando conteúdo de um certificado existente
Convertendo entre formatos de certificados
Gerenciamento de uma CA e de chaves publicas e privadas
Gerando uma chave RSA de 2048 bits
Gerando uma chave PKCS8 de 2048 bits
Exportando a chave RSA publica para arquivo
Protegendo a chave privada
Requisitos para gerenciar uma CA
Criando uma CA privada
Criando um certificado de CA
Assinando um arquivo CRT
Renovando um Certificado
Revogando um Certificado
Revogando uma CA
Gerando um par de chaves RSA a partir da chave privada
Extraindo a chave pública a partir da chave privada do certificado
Extraindo elementos texto do certificado
Gerando uma chave Pública
Gerando arquivo binário contendo números aleatórios
Automatizando preenchimento de dados de certificado
Usando SNI nos domínios
Encriptando arquivos grandes
Especificando níveis de validação no Apache
Enviando um certificado SSL de cliente para testes
Verificando uma identidade
Certificados Auto-Assinados
Beneficios de rodar uma CA própria
Criando Certificados Auto-Assinados
Concatenando os Certificados gerados
Configurando o Apache e Virtual Hosts
Testando a conexão SSL
Sobre certificados usando Curva Eliptica
Programas para gerenciamento de CA usando ambiente gráfico e WEB
Teste de cliente/servidor SSL/TLS com openssl
Servidor OpenSSL
Cliente OpenSSL
Cadeia de Confiança
Testando protocolos que fazem upgrade para TLS
Extraindo o certificado remoto do cliente
Usando formatos diferentes de HandShake de conexão
Testando o suporte a uma versão específica de protocolo SSL
Testando o suporte a um conjunto de Ciphers
Testando servidores que requerem SNI
Testando reuso de conexão no SSL
Validação de revogação OCSP
Testando o suporte a OCSP Stapling
Verificando a revogação de CRL
Verificando vulnerabilidade HeartBleed
Determinando o tamanho de parametros DH
Certificados com extensões X509 V3
Alternativas seguras a serviços sem criptografia
http
Transmissão segura de e-mails
Servidor pop3
Transferência de arquivos
login remoto
Bate papo via IRC
Transmissão de mensagens via ICQ
Usando o GPG para Autenticação e Criptografia
Instalando o PGP
Criando um par de chaves pública/privada
Encriptando Dados
Decriptando dados com o GPG
Assinando arquivos
Checando assinaturas
Extraindo sua chave pública do chaveiro
Adicionando chaves públicas ao seu chaveiro pessoal
Listando chaves de seu chaveiro
Apagando chaves de seu chaveiro
Mudando sua FraseSenha
Assinando uma chave digital
Listando assinaturas digitais
Recomendações para a assinatura de chaves GPG
Criptografia de blocos usando DM-Crypt / cryptsetup
Encriptando um sistema de arquivos com DM-Crypto / cryptsetup
Desmontando o dispositivo criptografado
Listando limites e algoritmos suportados
Avaliando a performance de cada algoritmo
Opções de encriptação com o DM-Crypt
Fazendo dump do cabeçalho de dispositivos
Gerenciamento de chaves
Backup e Restore de cabeçalho/chaves
Convertendo automaticamente sistemas para criptografia e desconvertendo
Convertendo a partição para Criptografica
Criptografia de arquivos usando ENCFS
Limitações
Instalando
Criando a Criptografia
Alterando a senha
Montando via fstab
Usando o eCryptfs para encriptar arquivos, montagem automatica do home
Configurando o ecryptfs
Remontando o sistema de arquivos criptografado
ecryptfsd
Diretório Privado Automático para o usuário
Migrando o home do usuário para criptografado
PAM ecryptfs
Limitações do eCryptfs
Criptografia usando TrueCrypt/VeraCrypt

Esta capítulo documenta os conceitos, configuração, utilização e manutenção de um ambiente utilizando criptografia para proteção de seus dados pessoais ou em nuvem. Com isso, você poderá tanto proteger um sistema local (seu PC/Notebook), ou um sistema que hospede em nuvem pública (Amazon, Google Cloud, Azure, Digital Ocean, etc.).

Introdução

Versão em vídeo desta seção pode estar disponível no canal do Guia Foca no YouTube: Gerando e gerenciando certificados X509.

A Criptografia basicamente tem o objetivo de proteger dados contra acesso indevido. Existem diversas formas de criptografia que podem ser utilizados para proteger dados, isso dependendo do seu armazenamento:

Como exemplo, quando acessa um site usando SSL, basicamente você está um canal criptografado e seguro, para que ninguém que esteja nos saltos entre sua origem e destino consiga capturar o tráfego sento trocado.

  • Arquivo, partições, disco - Protege contra acesso indevido de dados do sistema local. Alguns exemplos de criptografia em sistemas de arquivos: GPG, TrueCrypt, DM-Crypto, eCryptFS.

  • Rede - Protege contra acesso indevido aos dados sendo transmitidos entre origem e destino. Exemplos de criptografia de rede para transmissão de dados segura: SSL, VPN, Tuneis criptografados, etc.

  • Integridade - Mecanismos de criptografia podem também podem ser usados para garantir a integridade de dados ou atuar também em outras frentes, como a criptografia de arquivos como é o caso do GPG. O GPG pode ser usado tanto para assinar um arquivo transmitido por e-mail (garantindo que a fonte é quem diz ser), criptografar um arquivo e transmitir por um canal inseguro (assim somente o destinatário da mensagem poderá acessar o conteúdo), ou criptografar localmente um arquivo ou pasta. Outras formas de integridade de sistemas incluem AIDA e Tripwire.