Cryptography, Encryption & Authentication Protocols
Hashing, Symmetric/Asymmetric Encryption, JWT, OAuth 2.0, OIDC e Data Protection no .NET
Criptografia e a base de toda seguranca moderna. Entender quando usar hashing vs encryption, symmetric vs asymmetric, e como funcionam JWT e OAuth 2.0 e essencial para qualquer desenvolvedor .NET.
Fundamentos de Criptografia
Criptografia resolve tres problemas fundamentais: confidencialidade (ninguem le meus dados), integridade (ninguem alterou meus dados) e autenticidade (quem enviou e realmente quem diz ser).
Conceitos-Chave
| Conceito | Descricao | Exemplo |
|---|---|---|
| Hashing | Funcao one-way que transforma dados em digest de tamanho fixo. Irreversivel. | SHA-256, bcrypt, PBKDF2 |
| Symmetric Encryption | Mesma chave para encrypt e decrypt. Rapido, ideal para dados em volume. | AES-256, ChaCha20 |
| Asymmetric Encryption | Par de chaves: publica (encrypt) e privada (decrypt). Mais lento, ideal para troca de chaves. | RSA, ECDSA, Ed25519 |
| Digital Signature | Assina com chave privada, verifica com publica. Garante autenticidade + integridade. | RSA-SHA256, ECDSA |
| Certificate (X.509) | Documento digital que vincula uma chave publica a uma identidade. Emitido por CA. | TLS certs, code signing |
| Key Derivation | Deriva chaves criptograficas a partir de uma senha ou material base. | PBKDF2, HKDF, Argon2 |
Hashing vs Encryption
| Propriedade | Hashing | Encryption |
|---|---|---|
| Reversivel? | Nao β one-way | Sim β two-way (com chave) |
| Precisa de chave? | Nao (exceto HMAC) | Sim β symmetric ou asymmetric |
| Output fixo? | Sim β sempre mesmo tamanho | Nao β proporcional ao input |
| Deterministic? | Sim β mesmo input = mesmo output | Depende β AES-CBC com IV aleatorio gera outputs diferentes |
| Use case | Senhas, checksums, integridade de dados | Dados em transito (TLS), dados em repouso, comunicacao segura |
Hashing NAO e encryption. Hash e one-way β voce nunca recupera o dado original. Encryption e two-way β com a chave correta, voce recupera o dado. Confundir os dois e erro grave em entrevista.
Qual a diferenca entre hashing e encryption?
Hashing e uma funcao one-way: transforma dados em um digest de tamanho fixo (ex: SHA-256 gera 256 bits). Nao e possivel reverter. Usado para verificar integridade (checksums) e armazenar senhas (bcrypt). Encryption e two-way: com a chave correta, voce recupera o dado original. Symmetric (AES) usa uma chave para ambos; asymmetric (RSA) usa par de chaves. Usado para proteger dados em transito (TLS) e em repouso. Nunca use encryption para senhas β use hash com salt. Nunca use hash quando precisa recuperar o dado β use encryption.