Carregando
0x60Lição 7 de 15

Trate os dados e a criptografia com segurança

Use criptografia e TLS, gerencie as chaves e mantenha privados os dados guardados na nuvem.

37 min Questionário com 8 perguntas 1 exercício de código
Ao final desta lição, você saberá
  • Explicar o que a criptografia em trânsito e em repouso protegem
  • Acompanhar como o TLS autentica um servidor e combina as chaves
  • Verificar a autenticidade de uma mensagem com um HMAC
  • Explicar a responsabilidade compartilhada na nuvem e reconhecer permissões de armazenamento inseguras

Os sistemas modernos combinam dois tipos de criptografia:

  • Simétrica (AES, ChaCha20): uma única chave compartilhada criptografa e decifra. Rápida - usada para os dados em si.
  • De chave pública (assimétrica): um par de chaves. Qualquer um pode usar a chave pública; só quem tem a chave privada consegue decifrar ou assinar. Usada para combinar chaves e provar identidade.

A criptografia em trânsito (TLS, o S do HTTPS) protege os dados que trafegam por uma rede. A criptografia em repouso protege os dados guardados caso discos, backups ou bancos de dados caiam em mãos erradas. Nenhuma das duas decide quem pode ler os dados dentro do seu aplicativo - isso continua sendo trabalho da autorização.

Experimente

Até 15 XP

Um handshake do TLS 1.3

Acompanhe passo a passo como o seu navegador se conecta a https://shop.example.com. Preveja as etapas marcadas.

Mensagem 1 de 7Previsões 0/0
Navegador
shop.example.com
Real case · 2014CVE-2014-0160

Heartbleed: um vazamento de memória dentro de um software de TLS

A falta de uma verificação de limites no tratamento de heartbeat do OpenSSL podia deixar um par conectado ler até 64 KB da memória do processo por requisição. A falha estava numa implementação, não no protocolo TLS em si.

  1. 01Um par manda uma requisição de heartbeat com um tamanho declarado.
  2. 02As versões afetadas do OpenSSL não conferem esse tamanho com os dados enviados.
  3. 03A resposta pode incluir memória vizinha do processo.
  4. 04Os operadores atualizam o OpenSSL e avaliam se os segredos expostos precisam ser trocados.
Defender lesson: Mantenha as bibliotecas de segurança atualizadas e planeje a rotação de chaves e credenciais quando uma divulgação de memória puder tê-las exposto. Aviso do OpenSSL ↗

Chaves e assinaturas

A criptografia só é tão forte quanto a gestão de chaves: guarde as chaves num serviço de gestão de chaves ou num módulo de segurança de hardware (HSM), restrinja quem pode usá-las, faça a rotação delas e planeje a recuperação. Criptografar um banco de dados e guardar a chave do lado dele protege muito pouco.

Para provar que uma mensagem veio de alguém que tem um segredo compartilhado e não foi modificada - digamos, o webhook de um provedor de pagamentos -, use um HMAC: um hash com chave. Compare os MACs com uma comparação de tempo constante (hmac.compare_digest), para que o tempo não vaze quantos caracteres bateram.

hmac_demo.py
1import hashlib, hmac
2secret = b"shared-secret"
3tag = hmac.new(secret, b"amount=4200", hashlib.sha256).hexdigest()
4forged = hmac.new(secret, b"amount=1", hashlib.sha256).hexdigest()
5print(hmac.compare_digest(tag, forged))
Saída
False

O armazenamento na nuvem ainda precisa de um dono

Um provedor de nuvem protege os seus data centers físicos e a infraestrutura do serviço, mas a sua equipe ainda decide quem pode ler os seus dados, quais objetos são públicos, como as chaves são gerenciadas e o que é registrado. A divisão exata depende do serviço. Isso é responsabilidade compartilhada, não uma transferência de todo o trabalho de segurança para o provedor. A explicação do Google Cloud mostra o modelo geral.

Para um bucket de documentos privados de clientes: negue o acesso público, dê ao aplicativo só as permissões de que ele precisa, revise as concessões a pessoas e a contas de serviço e registre os acessos. A criptografia em repouso é valiosa, mas não impede uma leitura autorizada ou permitida publicamente. Se um usuário precisar de um download temporário, uma URL assinada de curta duração pode limitar o acesso a um único objeto; trate a própria URL como um segredo até ela expirar. O guia de arquitetura de nuvem da OWASP explica os trade-offs do armazenamento público e das URLs assinadas.

Experimente

Até 15 XP

Revise uma configuração de armazenamento na nuvem

Este é um resumo fictício de um console de administração para um bucket de documentos privados de clientes. Clique nas configurações que poderiam expor os dados.

bucket customer-documents (rodada 1 de 1)Sinais encontrados 0/0

Clique em todos os trechos suspeitos. São 3.

• Criptografia em repouso: ativada. • Acesso público de leitura: ativado para todos os objetos. • Conta de serviço do aplicativo: só leitura neste bucket. • Conta de um ex-prestador de serviços: acesso de administrador ainda ativo. • Registro de acessos: desativado. • Links temporários de download: limitados a um objeto e expiram depois de cinco minutos.

Prática: inspecione um certificado

Experimente

Até 15 XP

Por que um navegador rejeitaria isto?

Você está se conectando a shop.example.com, e hoje é 05/11/2026. Clique na linha que explica o problema.

Rodada 1 de 2: Um certificado antigoPontuação 0/0

O que há de errado com este certificado?

$ openssl x509 -in shop.pem -noout -subject -dates -ext subjectAltName

Principais conclusões

  • A criptografia simétrica criptografa os dados rápido; a de chave pública combina as chaves e prova a identidade.

  • O TLS confere o certificado do servidor e protege a confidencialidade e a integridade em trânsito.

  • Proteja as chaves, use HMACs ou assinaturas para a autenticidade e compare MACs em tempo constante.

  • Os clientes de nuvem precisam configurar e auditar o acesso aos dados; a criptografia não substitui as verificações de permissão.

Quiz da aula

8 perguntas · aprovação com 6 acertos · até 50 XP

Ao passar, você conclui a aula e mantém sua sequência. As perguntas erradas voltarão em sessões de revisão.

Pratique: escreva código em Python

Escreva código Python no editor e execute os testes com exemplos. O Python roda localmente no navegador usando WebAssembly.

Exercício 1

Verifique as assinaturas de webhooks

+25 XP

A primeira linha é o segredo compartilhado. Cada linha seguinte é SIGNATURE PAYLOAD (o payload pode ter espaços). Imprima valid se a assinatura for igual ao HMAC-SHA256 em hexadecimal do payload com o segredo; caso contrário, invalid. Use hmac.compare_digest.

  • Genuíno, adulterado, genuíno
main.py
Carregando editor…

O Python é executado em um ambiente isolado no navegador, com limite de 60 segundos. O runtime é carregado pelo CDN do Pyodide; seu código permanece neste navegador.

Dúvidas sobre esta lição

Travou em algum ponto? Pergunte. Descobriu algo? Compartilhe. Explicar também é uma ótima forma de aprender.

Carregando publicações…