Pular para o conteúdo
Novo

DeepSeek V4.1 Flash grátis por 7 dias: 10M tokens por dia após qualquer recarga. Até 30/11.

Como funciona

O que é criptografia? Cifragem, chaves, hashes e exemplos do dia a dia

Criptografia do zero: cifragem, chaves, hashes, assinaturas e por que a cifra de César ensina ideias, mas não protege nada.

Iniciante5 min de leituraPor NotHoly

Criptografia é o conjunto de métodos matemáticos usados para proteger informação. Esses métodos mantêm os dados privados, mostram quando algo foi alterado, confirmam quem enviou uma mensagem e permitem que duas partes confiem uma na outra por uma rede que nenhuma delas controla. Você usa criptografia toda vez que o navegador abre um site HTTPS, quando uma atualização de software é assinada ou quando um site confere sua senha sem guardá-la em texto claro.

A cifragem é uma ferramenta dentro da criptografia, e o campo é maior que isso.

Cifragem transforma dado legível em dado ilegível

Na cifragem, o texto claro e uma chave passam por um algoritmo e produzem o texto cifrado. Quem tem a chave certa consegue desfazer o processo. Quem não tem não deveria tirar nada útil do texto cifrado.

Uma fechadura ajuda a entender a ideia. O mecanismo é o algoritmo, e a chave é o único objeto que abre a fechadura. A comparação falha em um ponto: uma chave de software é um número, não um pedaço de metal. Ainda assim, ela separa duas coisas que as pessoas costumam confundir: o método, que pode ser público, e o valor secreto, que precisa ficar privado.

O princípio de Kerckhoffs, formulado no século XIX, diz que um sistema deve continuar seguro mesmo quando tudo, exceto a chave, é conhecido. Projetos criptográficos modernos seguem essa regra. Se um projeto só funciona enquanto o algoritmo permanece escondido, desconfie dele.

Cifragem simétrica e assimétrica

Na cifragem simétrica, uma única chave secreta cifra e decifra. O AES é a cifra de bloco simétrica padrão, especificada pelo NIST no FIPS 197. Ela é rápida, por isso cuida da maior parte dos dados de um sistema. A parte difícil é fazer os dois lados terem a mesma chave sem que um atacante a veja.

Escolher AES é só a primeira decisão. O modo de operação, o tratamento dos nonces e a autenticação do texto cifrado decidem se o projeto é seguro. "Usamos AES" é um ponto de partida, não uma explicação.

Na criptografia assimétrica, cada parte tem um par de chaves: uma chave pública, que qualquer um pode ver, e uma chave privada, que fica com o dono. Esquemas assimétricos permitem que duas partes combinem um segredo compartilhado por um canal aberto e que quem assina prove que tem a chave privada. O TLS 1.3 usa operações assimétricas no handshake para combinar as chaves e verificar a identidade do servidor, e depois passa para cifragem simétrica nos dados. A RFC 8446 descreve esse modelo.

Hash não é cifragem

Uma função hash criptográfica recebe uma entrada de qualquer tamanho e devolve um resumo de tamanho fixo. O SHA-256, especificado no FIPS 180-4, sempre devolve 256 bits. Um bom hash torna inviável achar duas entradas com o mesmo resumo e inviável recuperar a entrada a partir do resumo. Não existe chave nem etapa de decifragem.

Hashes servem para verificar integridade. Se o resumo de um arquivo baixado bate com o valor publicado pelo fabricante, o arquivo é muito provavelmente o que foi publicado. Hashes também aparecem dentro de assinaturas e de vários outros protocolos.

Senhas exigem mais que um hash simples. Uma função rápida como o SHA-256 permite que um atacante teste uma quantidade enorme de palpites por segundo em hardware adequado. O OWASP Password Storage Cheat Sheet recomenda uma função deliberadamente lenta e intensiva em memória, como o Argon2id, com um salt único para cada senha e parâmetros ajustados ao seu hardware. A RFC 9106 define o Argon2.

Codificação não é cifragem

O Base64 transforma dados binários em caracteres de texto para que eles passem por sistemas que esperam texto. A transformação não usa segredo, então qualquer pessoa pode desfazê-la. A codificação existe para tornar o dado portável, não para escondê-lo. As três ideias resolvem problemas diferentes:

  • Codificação muda o formato, e qualquer pessoa pode desfazer a mudança.
  • Cifragem esconde o conteúdo, e só quem tem a chave consegue desfazê-la.
  • Hash produz uma impressão digital do conteúdo, e ela não foi feita para ser desfeita.

A cifra de César: boa lição, fechadura ruim

A cifra de César desloca cada letra pelo mesmo número de posições. Com deslocamento de três, A vira D, H vira K, e assim por diante. É uma cifra de substituição, e ela já contém o vocabulário central: texto claro, chave, texto cifrado e algoritmo.

Ela falha com dados reais por um motivo simples. O alfabeto tem 26 letras, então só 25 deslocamentos alteram o texto. Um computador testa todos instantaneamente, e uma pessoa consegue testá-los no papel. A frequência das letras em uma mensagem longa revela o deslocamento ainda mais rápido. Por isso ela serve para aula e não para proteção.

Os comandos abaixo rodaram no Git Bash, no Windows 11, usando tr, sha256sum e base64. Rode você mesmo na sua máquina. Não cole senhas reais nem textos confidenciais em nenhum site para testar.

Deslocar uma mensagem para frente e para trás

bash
printf 'HELLO' | tr 'A-Z' 'D-ZA-C'

Saída:

text
KHOOR

Desfazer o deslocamento:

bash
printf 'KHOOR' | tr 'D-ZA-C' 'A-Z'

Saída:

text
HELLO

Ver como um hash reage a uma letra trocada

bash
printf 'HELLO' | sha256sum | cut -d' ' -f1
printf 'HELLP' | sha256sum | cut -d' ' -f1

Saída:

text
3733cd977ff8eb18b987357e22ced99f46097f31ecb239e878ae63760e83e4d5
d37f1f826f924dcd23aacbdc875edd4808b9e118d35adb9dce1c80cb23c4a9c1

Trocar uma letra muda o resumo inteiro. Nada na saída permite recuperar HELLO. Para testar um palpite, você calcula o hash do palpite e compara.

Codificar sem cifrar

bash
printf 'HELLO' | base64

Saída:

text
SEVMTE8=

Quem vê SEVMTE8= consegue decodificar. Trate isso como formato, não como segredo.

Erros comuns

  • Chamar dado codificado de "criptografado". O Base64 não oferece confidencialidade.
  • Tratar um hash como um recipiente reversível. Um hash não devolve a senha original. Você só consegue testar candidatos contra ele.
  • Guardar senhas com hash rápido, ou sem salt.
  • Criar cifra ou protocolo próprio. Use bibliotecas revisadas e protocolos padronizados, e siga as orientações deles sobre modos e parâmetros.
  • Achar que cifrar basta para deixar os dados seguros. Armazenamento de chaves, controle de acesso e o software ao redor da cifra costumam decidir o resultado.

O que estudar a seguir

Comece pelos objetivos básicos de segurança: confidencialidade, integridade e disponibilidade, vistos no artigo sobre fundamentos de cibersegurança. Depois leia o artigo sobre a cifra de César, que aprofunda substituição e análise de frequência. Em seguida estude hash, chaves simétricas e TLS, usando as fontes primárias listadas com este artigo em vez de resumos.

Pratique na sua própria máquina, com dados sintéticos ou em um laboratório que seja seu ou para o qual você tenha permissão por escrito.

Fontes

  1. NIST Cryptography glossary
  2. NIST Encryption glossary
  3. FIPS 197, Advanced Encryption Standard (AES)
  4. FIPS 180-4, Secure Hash Standard (SHS)
  5. RFC 8446, The Transport Layer Security (TLS) Protocol Version 1.3
  6. RFC 9106, Argon2 Memory-Hard Function for Password Hashing and Other Applications
  7. OWASP Password Storage Cheat Sheet
  8. MDN Web Docs: Base64 (glossary)

Mais em Criptografia

Criptografia

Senhas e hash com Argon2id

Por que hashes rápidos falham em senhas, o que fazem o salt e o fator de trabalho, e como gerar e verificar hashes com Argon2id em Python.

Intermediário11 min de leitura