Lição 1 de 4 · 9 min
Encriptação simétrica, encriptação assimétrica e hashing
Três ferramentas criptográficas diferentes garantem três coisas diferentes. Confundi-las é a fonte mais comum de falsa confiança.
As pessoas dizem muitas vezes "está encriptado" como se isso resolvesse uma questão de segurança. Não resolve, porque a encriptação não é uma coisa só. Esta lição aborda os três blocos de construção por trás de quase todas as afirmações de proteção digital: encriptação simétrica, encriptação assimétrica e hashing. Cada uma garante algo diferente, e saber qual está em jogo diz-lhe o que está realmente a ser protegido.
Encriptação simétrica: uma chave partilhada
O Centro de Aprendizagem da Cloudflare descreve a encriptação simétrica de forma simples: "há apenas uma chave, e todas as partes que comunicam usam a mesma chave (secreta) tanto para encriptar como para desencriptar." O Advanced Encryption Standard (AES) é hoje o exemplo padrão, tendo substituído o mais antigo Data Encryption Standard (DES) depois de o comprimento curto da chave do DES o ter tornado quebrável por força bruta. A encriptação simétrica é rápida e é o que de facto embaralha a maior parte dos seus dados, seja um ficheiro em disco ou o corpo de uma página web carregada por HTTPS. O seu problema central é a distribuição: ambos os lados precisam da mesma chave secreta, e fazer chegar essa chave à outra parte sem que mais ninguém a veja é exatamente o problema que a encriptação assimétrica resolve.
Encriptação assimétrica: duas chaves que funcionam como um par
Na encriptação assimétrica, ou de chave pública, há duas chaves ligadas matematicamente: "uma chave é usada para encriptar, e uma chave diferente é usada para desencriptar", segundo a Cloudflare. A chave de encriptação pode ser publicada para qualquer pessoa — daí "chave pública" — enquanto a chave de desencriptação correspondente permanece privada. Os dados fechados com a chave pública só podem ser abertos com a chave privada. É isto que permite que duas pessoas que nunca se conheceram cheguem a acordo sobre um segredo partilhado através de uma rede aberta, o que é exatamente o que acontece no início de cada ligação HTTPS (a próxima lição aborda este cumprimento em detalhe). O RSA e a criptografia de curva elítica são hoje os algoritmos comuns por trás disto.
Hashing: uma impressão digital, não uma fechadura
Uma função de hash não é nenhuma das anteriores: não fecha nada, e não há chave para a abrir. O NIST define-a como uma função que "transforma uma cadeia de bits de comprimento arbitrário numa cadeia de bits de comprimento fixo" — em termos simples, transforma qualquer ficheiro ou mensagem numa impressão digital curta e de tamanho fixo. O NIST especifica as propriedades que uma função de hash aprovada tem de ter: tem de ser computacionalmente inviável encontrar uma entrada que produza uma determinada saída (unidirecional), e inviável encontrar duas entradas diferentes que produzam a mesma saída (resistência a colisões). É por isso que o hashing verifica a integridade — este ficheiro mudou? — e protege as palavras-passe guardadas: um serviço pode verificar uma palavra-passe contra o seu hash guardado sem alguma vez manter a palavra-passe real. Funções de hash mais antigas, como o MD5 e o SHA-1, já não são consideradas seguras contra um atacante determinado, e é por isso que os sistemas modernos usam antes as famílias SHA-2 ou SHA-3.
O que cada uma realmente garante
| Ferramenta | O que garante | O que não garante |
|---|---|---|
| Encriptação simétrica | Confidencialidade, se a chave partilhada se mantiver secreta | Uma forma segura de trocar essa chave, à partida |
| Encriptação assimétrica | Uma forma de trocar um segredo, e de verificar a identidade (ver a próxima lição sobre assinaturas) | Velocidade; é muito mais lenta do que a encriptação simétrica para grandes quantidades de dados |
| Hashing | Integridade: prova de que os dados não foram alterados, e uma forma de verificar segredos sem os guardar | Confidencialidade; um hash não foi concebido para ser revertido, mas também não foi concebido para esconder o tamanho ou a presença de dados |
Como se combinam na prática
Quase nada usa apenas uma destas. Uma ligação segura típica usa a encriptação assimétrica brevemente, para chegar a acordo sobre um segredo partilhado, e depois muda para a encriptação simétrica rápida para os dados propriamente ditos, enquanto o hashing corre ao longo de todo o processo para garantir que nada do que foi enviado foi alterado pelo caminho. Reconhecer estes três papéis é o que faz o resto deste curso — assinaturas, certificados, TLS e encriptação de ponta a ponta — fazer sentido como combinações do mesmo pequeno conjunto de ferramentas, em vez de magia separada.
A reter
- A encriptação simétrica usa uma chave partilhada tanto para encriptar como para desencriptar; é rápida mas exige uma forma de partilhar a chave em segurança.
- A encriptação assimétrica usa uma chave pública e uma chave privada como par, resolvendo o problema de distribuição de chaves que a encriptação simétrica tem.
- O hashing produz uma impressão digital de tamanho fixo dos dados; protege a integridade e os segredos guardados, não a confidencialidade — não há chave para abrir um hash.
- Os sistemas reais combinam as três: encriptação assimétrica para acordar um segredo, encriptação simétrica pela velocidade, hashing para detetar alterações.
- Algoritmos mais antigos (DES, MD5, SHA-1) têm fraquezas conhecidas; o AES e as famílias SHA-2/SHA-3 são as normas atuais.
Teste-se
1. Qual é a característica que define a encriptação simétrica?
- Usa uma chave pública e uma chave privada
- Usa uma única chave secreta partilhada tanto para encriptar como para desencriptar — Certo.
- Não pode ser usada para grandes quantidades de dados
- Nunca exige nenhuma chave
A encriptação simétrica baseia-se numa única chave partilhada que ambas as partes já têm; o desafio é distribuir essa chave em segurança.
2. Que problema resolve a encriptação assimétrica que a encriptação simétrica não consegue resolver sozinha?
- Tornar a encriptação mais rápida
- Permitir que duas partes cheguem a acordo sobre um segredo partilhado sem se terem conhecido antes — Certo.
- Tornar as palavras-passe mais fáceis de memorizar
- Impedir que os dados sejam alguma vez eliminados
A criptografia de chave pública permite que uma chave pública seja partilhada abertamente enquanto só a chave privada correspondente consegue desencriptar, possibilitando uma troca de chaves segura numa rede aberta.
3. Porque é que uma função de hash não pode ser usada para manter uma mensagem em segredo?
- Os hashes são sempre demasiado curtos para conter uma mensagem
- Um hash é unidirecional por conceção; não há chave para o reverter aos dados originais — Certo.
- As funções de hash são ilegais para uso em encriptação
- Os hashes só funcionam em imagens, não em texto
As funções de hash são construídas de forma a que recuperar a entrada original a partir da saída seja computacionalmente inviável — essa propriedade (unidirecionalidade) torna-as úteis para verificações de integridade e armazenamento de palavras-passe, não para confidencialidade.
4. Que par de algoritmos é considerado desatualizado devido a fraquezas conhecidas?
- AES e RSA
- DES e MD5 — Certo.
- SHA-2 e criptografia de curva elítica
- TLS e HTTPS
O comprimento curto da chave do DES e as fraquezas de colisão do MD5 significam que os sistemas modernos usam antes o AES e as famílias SHA-2/SHA-3.
Praticar com o FireAI
Ponha esta lição em prática no seu próprio Mac.
- Inspeção profunda, sem decifrar nada — Obtenha detalhe real sobre uma ligação segura sem que o FireAI leia alguma vez o que está lá dentro.
- O que fica no seu Mac, e as únicas vezes em que o FireAI se liga sozinho — Leia a lista completa do que o FireAI envia, em vez de acreditar na palavra de uma firewall.
Fontes
- Cloudflare Learning Center: What is encryption?
- NIST Computer Security Resource Center Glossary: hash function
Ponha em prática no seu Mac
Experimente todas as funcionalidades grátis durante 17 dias, sem cartão.