voltar para roadmap
CRIPTO

Criptografia aplicada — por onde começar

Da cifra de César ao AES-GCM. Foco prático: entender o suficiente pra QUEBRAR implementações erradas e USAR primitivas certas. Matemática só na dose necessária.

pré-requisitos

  • Python básico (pwntools, pycryptodome)
  • Aritmética modular (mod, gcd, inversa) — nível ensino médio
  • Conversão hex / binário / ASCII de cabeça

labs para praticar

trilha passo a passo

  1. 1

    1. Cifras clássicas

    César (rotação), Vigenère (chave repetida), substituição. Quebre TODAS com análise de frequência e Kasiski. Útil pra criar intuição.

  2. 2

    2. XOR e one-time pad

    Por que XOR de chave fixa quebra (key reuse), por que OTP é teoricamente perfeito mas inviável, e como atacar 'crib drag' quando duas mensagens compartilham chave.

  3. 3

    3. Hashing e quebra

    MD5, SHA-1 (deprecados), SHA-2, SHA-3, BLAKE2/3. Diferença entre hash, HMAC, KDF (PBKDF2, bcrypt, scrypt, Argon2). Quebra com hashcat/john + rockyou.

  4. 4

    4. Cripto simétrica

    AES em ECB (NUNCA usar), CBC (padding oracle / Vaudenay), CTR (nonce reuse), GCM (correto). ChaCha20-Poly1305 como alternativa moderna. Sempre AEAD em produção.

  5. 5

    5. RSA — onde quebra

    Geração (p, q, n, e, d), por que primos pequenos caem (factordb, msieve), Common Modulus Attack (mesmo n, e diferentes), Wiener (d pequeno), Hastad (e=3 sem padding), Bleichenbacher (PKCS#1 v1.5).

  6. 6

    6. Curvas elípticas (ECC)

    Por que ECC substitui RSA: chaves menores, mesma segurança. ECDSA, Ed25519, X25519. Ataques: nonce reuse no ECDSA (lattice → recupera chave privada).

  7. 7

    7. TLS, JWT e protocolos reais

    Handshake TLS 1.2 vs 1.3, perfect forward secrecy. JWT: alg=none, key confusion (HS256 com chave pública RSA), expiração ausente. JWS vs JWE.

  8. 8

    8. Pós-quântico (visão geral)

    Por que Shor quebra RSA/ECC quando QC chegar. Familiarize-se com Kyber (KEM), Dilithium (assinatura). NIST já padronizou. Não precisa virar especialista — só não ficar no escuro.

dicas de quem já passou pela trilha

  • Nunca implemente cripto. Use libsodium / NaCl / cryptography (py). Implementação amadora = vulnerabilidade na hora.
  • Padding oracle não morreu — cheque toda API que retorna erro diferente pra padding inválido vs MAC inválido.
  • Em CTF: se viu hex de 32 chars → MD5; 40 → SHA-1; 64 → SHA-256. Aprenda comprimentos de cabeça.
  • RSA com n pequeno (< 1024 bits): joga em factordb.com antes de qualquer outra coisa.
  • ECDSA com nonce reuse vaza chave privada com 2 assinaturas. Aconteceu com PS3 e Sony perdeu o console.

livros recomendados

  • Serious Cryptography (Aumasson) — leitura obrigatória
  • Cryptography Engineering (Ferguson, Schneier, Kohno)
  • A Graduate Course in Applied Cryptography (Boneh, Shoup) — grátis