O que e criptografia
Criptografia e a arte de transformar informação para que apenas partes autorizadas possam ler.
Criptografia e o conjunto de técnicas matematicas para proteger informações transformando-as em um formato ilegível para quem não tem a chave correta. E a base de praticamente toda segurança digital: o HTTPS que protege suas transações bancárias, as mensagens criptografadas no WhatsApp, as senhas armazenadas em bancos de dados e as assinaturas digitais em contratos eletrônicos. Existem tres grandes familias de criptografia: simetrica, onde a mesma chave cifra e decifra; assimetrica, onde um par de chaves e usado; e funções hash, que são unidirecionais e não permitem reverter o processo. Cada familia tem caracteristicas distintas e e usada para casos de uso específicos nos sistemas modernos.
Criptografia simetrica: AES
A mesma chave cifra e decifra, rápida e eficiente para grandes volumes de dados.
Na criptografia simetrica, a mesma chave secreta e usada para cifrar e decifrar os dados. O algoritmo mais usado hoje e o AES, Advanced Encryption Standard, aprovado pelo NIST e adotado mundialmente. AES opera em blocos de 128 bits e suporta chaves de 128, 192 ou 256 bits. AES-256 e considerado seguro contra qualquer ataque conhecido, incluindo computadores quanticos para os próximos anos. A grande vantagem da criptografia simetrica e a velocidade: AES pode cifrar gigabytes de dados por segundo em hardware moderno. O desafio e a distribuição segura da chave: como o emissor e o receptor compartilham a chave sem que ela seja interceptada? Esse problema e resolvido pela criptografia assimetrica para a troca inicial da chave.
Criptografia assimetrica: RSA e ECC
Par de chaves pública e privada: o que uma cifra, apenas a outra decifra.
Na criptografia assimetrica, existem dois tipos de chave matematicamente relacionadas: a chave pública, que pode ser compartilhada com qualquer pessoa, e a chave privada, que deve ser mantida em segredo absoluto. O que e cifrado com a chave pública só pode ser decifrado com a chave privada correspondente, e vice-versa. RSA e o algoritmo clássico, amplamente usado. ECC, Elliptic Curve Cryptography, oferece segurança equivalente com chaves muito menores: uma chave ECC de 256 bits oferece segurança similar a uma RSA de 3072 bits. A criptografia assimetrica e mais lenta que a simetrica, por isso e usada principalmente para a troca segura de chaves simetricas e para assinaturas digitais, não para cifrar grandes volumes de dados diretamente.
Funções Hash e por que são unidirecionais
Hash transforma dados em um digest de tamanho fixo que não pode ser revertido.
Uma função hash criptografica transforma uma entrada de qualquer tamanho em um digest de tamanho fixo, como 256 bits para SHA-256. O processo e unidirecional: dado o digest, e computacionalmente impossível recuperar a entrada original. Qualquer alteração mínima na entrada, mesmo um único bit, gera um digest completamente diferente. Isso e a propriedade de avalanche. SHA-256 e usado para verificar integridade de arquivos, assinar certificados digitais e como componente do Bitcoin. bcrypt e Argon2 são funções hash especialmente projetadas para senhas: são intencionalmente lentas para dificultar ataques de força bruta, e incorporam um salt aleatório para prevenir ataques de rainbow table onde hashes pre-computados são usados para encontrar senhas rapidamente.
TLS e como o HTTPS funciona
TLS combina criptografia assimetrica para troca de chaves e simetrica para os dados.
TLS, Transport Layer Security, e o protocolo que protege a comunicação na internet. Quando você acessa um site HTTPS, um handshake TLS acontece antes de qualquer dado ser trocado. O servidor apresenta seu certificado digital, que contem sua chave pública e e assinado por uma CA confiável. O cliente verifica o certificado, gera uma chave de sessão simetrica, cifra-a com a chave pública do servidor e envia. Apenas o servidor, com sua chave privada, pode decifrar e obter a chave de sessão. A partir desse ponto, toda a comunicação e cifrada com AES usando a chave de sessão compartilhada. Esse processo combina o melhor dos dois mundos: a segurança da criptografia assimetrica para a troca de chaves e a velocidade da criptografia simetrica para os dados.
Assinatura digital
Assinatura digital garante autoria e integridade: prova que o documento não foi alterado.
Uma assinatura digital e criada calculando o hash do documento e cifrando esse hash com a chave privada do signatário. O resultado e a assinatura. Para verificar, qualquer pessoa com a chave pública do signatário pode decifrar a assinatura e obter o hash original. Calcula o hash do documento recebido e compara. Se os hashes forem iguais, o documento não foi alterado e foi assinado por quem tem a chave privada correspondente. Assinaturas digitais são usadas em certificados TLS, em commits de Git assinados, em contratos eletrônicos com validade juridica, em pacotes de software para verificar autenticidade, e em JWT usando o algoritmo RS256 onde o servidor de autenticação assina o token com sua chave privada.
Exemplo em pagamentos
Pagamentos usam TLS, criptografia de dados do cartao e assinatura de transações.
Em um sistema de pagamentos, múltiplas camadas de criptografia trabalham juntas. A comunicação entre o browser do usuário e o gateway de pagamento usa TLS com certificado EV, o mais rigoroso. Os dados do cartao nunca trafegam em texto plano: são cifrados com AES-256 antes de sair do dispositivo do usuário. O gateway repassa os dados criptografados para a bandeira do cartao usando mutual TLS, onde ambos os lados apresentam certificados. As transações são assinadas digitalmente para garantir não-repudio: ninguem pode negar ter autorizado a transação. Os dados do cartao armazenados no banco seguem o padrão PCI-DSS, que exige tokenização ou criptografia forte. Cada camada protege contra uma categoria diferente de ataque, formando uma defesa em profundidade.
Exemplo em autenticação
Senhas são armazenadas como hash com salt, nunca em texto plano ou como hash simples.
A criptografia de senhas e um dos casos de uso mais críticos e mais frequentemente errados. Armazenar senhas em texto plano e um erro gravissimo: qualquer vazamento do banco expoe todas as senhas. Armazenar o hash SHA-256 da senha e melhor, mas ainda vulnerável a ataques de rainbow table onde hashes de senhas comuns ja estão pre-computados. A solução correta e usar bcrypt ou Argon2: funções de hash com salt aleatório e fator de custo configurável. O salt e um valor aleatório único por usuário que e concatenado a senha antes do hash, tornando rainbow tables inviáveis. O fator de custo garante que calcular um hash leva centenas de milissegundos, tornando ataques de força bruta impraticos mesmo com hardware poderoso.
Vantagens e cuidados
Criptografia bem aplicada e invisível para o usuário mas essencial para a segurança.
As vantagens da criptografia bem aplicada: proteção de dados em transito contra interceptação, proteção de dados em repouso contra vazamentos de banco, não-repudio com assinaturas digitais, e integridade verificável com hash. Os cuidados: nunca implementar algoritmos criptograficos próprios, sempre usar bibliotecas estabelecidas como OpenSSL, libsodium e Bouncy Castle; usar algoritmos modernos como AES-256, RSA-2048 ou superior, SHA-256 ou superior, evitar MD5 e SHA-1 para fins criptograficos; gerenciar chaves com cuidado em serviços dedicados como AWS KMS ou HashiCorp Vault; e rotacionar chaves periodicamente. Criptografia correta não e sobre escolher o algoritmo mais complexo, e sobre aplicar os algoritmos corretos nos contextos corretos.
Resumo
Criptografia e a fundação invisível da segurança digital moderna.
Criptografia simetrica com AES e rápida e usada para cifrar grandes volumes de dados. Criptografia assimetrica com RSA e ECC resolve a troca segura de chaves e assinaturas digitais. Funções hash como SHA-256 e bcrypt garantem integridade e armazenamento seguro de senhas. TLS combina ambas para proteger toda a comunicação na internet. Assinaturas digitais garantem autoria e não-repudio. Em pagamentos, autenticação e comunicação entre serviços, a criptografia opera em múltiplas camadas. O desenvolvedor não precisa implementar algoritmos cripto, mas precisa entender quando e como aplicar cada técnica para construir sistemas verdadeiramente seguros e compliance com regulações como PCI-DSS e LGPD.
Tutoriais em Video
SSL, TLS, HTTPS Explained, ByteByteGo
Asymmetric Encryption - Simply explained, Simply Explained
Cryptography: Crash Course Computer Science #33
AES Explained (Advanced Encryption Standard), Computerphile
Encryption and public keys, Khan Academy
Diffie-Hellman Key Exchange
Conceitos-chave
Criptografia simetrica
mesma chave para cifrar e decifrar, AES, rápida, usada para grandes volumes de dados
Criptografia assimetrica
par de chaves pública e privada, RSA, ECC, mais lenta, usada para troca segura de chaves e assinaturas digitais
Hash
função unidirecional que transforma dados em digest de tamanho fixo, SHA-256, bcrypt, não reversível
TLS/SSL
protocolo de segurança da camada de transporte, usa assimetrico para handshake e simetrico para dados
Assinatura digital
hash do documento cifrado com chave privada, prova autoria e integridade
Certificado digital
documento eletrônico que vincula chave pública a uma identidade, emitido por CA confiável
Criptografia no Instagram
@bytebytego
Reels, Criptografia
@bytebytego
No Facebook
Criptografia no X (Twitter)
Links Uteis
O que devs dizem
Depois de um pentest que encontrou senhas armazenadas com MD5 sem salt no nosso sistema legado, migramos tudo para bcrypt com fator 12. O processo de migração foi delicado pois os usuários precisaram redefinir senhas, mas o ganho de segurança foi enorme e a conformidade com auditorias melhorou significativamente.
Entender como o handshake TLS funciona mudou minha perspectiva sobre HTTPS. Antes era uma caixa preta. Depois de estudar o processo de troca de chaves, a validação do certificado e a geração da chave de sessão, toda a arquitetura de segurança fez sentido. Recomendo o video do ByteByteGo sobre SSL e TLS.
Implementamos criptografia em repouso para dados sensíveis dos usuários usando AES-256 com chaves gerenciadas pelo AWS KMS. O desafio foi a rotação de chaves sem downtime. Com envelope encryption, conseguimos rotacionar as chaves mestras sem precisar re-cifrar todos os dados de uma só vez.