Pular para conteúdo

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:

  1. Autenticidade: só quem tem a chave privada poderia ter assinado.
  2. Integridade: se o documento mudar, o hash muda, e a assinatura deixa de bater.
  3. 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 🚀

  1. Escolha uma linguagem (Python com hashlib é uma boa opção).
  2. Escreva uma função que calcula o hash SHA-256 de um arquivo.
  3. Calcule o hash, modifique 1 caractere do arquivo, e calcule de novo.
  4. Confirme que os hashes são completamente diferentes (efeito avalanche).

7. Exercício de Fixação 🧠

  1. Por que sistemas reais (como o HTTPS) combinam criptografia simétrica e assimétrica em vez de usar só uma?
  2. Explique por que hash não é a mesma coisa que criptografia (cifragem).
  3. Quais as três garantias que uma assinatura digital proporciona?

Próxima Aula: Provando quem você é: Autenticação e Autorização 🔑