Aula 06 - Criptografia e Assinatura Digital 🔐
Objetivo
Objetivo: Entender os conceitos essenciais de criptografia simétrica, assimétrica, hash e assinatura digital — o suficiente para aplicar corretamente em código, sem precisar ser um criptógrafo.
1. Criptografia Simétrica: Uma Chave para Tudo 🔑
Na criptografia simétrica, a mesma chave cifra e decifra. É rápida — o algoritmo padrão hoje é o AES.
graph LR
A[Texto Claro] -- "Cifra com Chave K" --> B[Texto Cifrado]
B -- "Decifra com a MESMA Chave K" --> A O problema
Como transmitir a chave com segurança sem que um invasor a intercepte? É aqui que entra a criptografia assimétrica.
2. Criptografia Assimétrica: Duas Chaves 🗝️
Usa um par de chaves: uma pública (compartilhável) e uma privada (secreta). O algoritmo mais usado é o RSA.
| Chave | Quem tem acesso | Função |
|---|---|---|
| Pública | Todo mundo | Cifra mensagens / verifica assinaturas |
| Privada | Só o dono | Decifra mensagens / cria assinaturas |
Na prática, sistemas reais combinam as duas: assimétrica para trocar uma chave secreta, simétrica (rápida) para cifrar o tráfego de verdade — é assim que o HTTPS funciona.
3. Hash: Impressão Digital dos Dados #️⃣
Uma função de hash transforma qualquer entrada em uma saída de tamanho fixo, de forma unidirecional (não dá para reverter).
- MD5 e SHA-1: ❌ quebrados, não usar mais.
- SHA-256: ✅ padrão atual, seguro.
Usos principais: 1. Verificar integridade de arquivos. 2. Guardar senhas (com sal e algoritmo lento — veremos isso com mais detalhe quando falarmos de autenticação).
4. Assinatura Digital: Provando Autoria 📜
A assinatura digital inverte o fluxo da criptografia assimétrica: cifra-se o hash do documento com a chave privada do autor.
graph LR
A[Documento] --> H[Hash SHA-256]
H -- "Cifra com Chave PRIVADA" --> S[Assinatura]
S -- "Verifica com Chave PÚBLICA" --> V{Bate?}
V -- Sim --> OK[Autêntico e íntegro] Ela garante três coisas ao mesmo tempo:
- Autenticidade: só quem tem a chave privada poderia ter assinado.
- Integridade: se o documento mudar, o hash muda, e a assinatura deixa de bater.
- Não-repúdio: o autor não pode alegar depois que "não foi ele".
5. Regra de Ouro: Nunca Implemente Sua Própria Criptografia ⚠️
Use sempre bibliotecas testadas
Pequenos erros de implementação (um IV reutilizado, um algoritmo obsoleto) podem quebrar completamente a segurança. Use bibliotecas consagradas (cryptography em Python, crypto no Node.js) — nunca "invente" seu próprio algoritmo.
6. Mini-Projeto: Verificador de Integridade 🚀
- Escolha uma linguagem (Python com
hashlibé uma boa opção). - Escreva uma função que calcula o hash SHA-256 de um arquivo.
- Calcule o hash, modifique 1 caractere do arquivo, e calcule de novo.
- Confirme que os hashes são completamente diferentes (efeito avalanche).
7. Exercício de Fixação 🧠
- Por que sistemas reais (como o HTTPS) combinam criptografia simétrica e assimétrica em vez de usar só uma?
- Explique por que hash não é a mesma coisa que criptografia (cifragem).
- Quais as três garantias que uma assinatura digital proporciona?
Próxima Aula: Provando quem você é: Autenticação e Autorização 🔑