Aula 07 – Assinaturas Digitais e Certificados (PKI) 📜
Como provar, digitalmente, que um documento foi realmente criado por você — e não por um impostor? Nesta aula você vai conhecer o mecanismo que dá validade jurídica a documentos eletrônicos e sustenta a confiança em toda a Internet.
✍️ Assinatura Digital: o Inverso da Cifragem Assimétrica
Lembra que na Aula 05 cifrávamos com a chave pública do destinatário e decifrávamos com a chave privada? A assinatura digital inverte esse fluxo:
graph LR
A["Documento"] --> H["Hash do Documento (SHA-256)"]
H -- "Cifra o HASH com a Chave PRIVADA do autor" --> S["Assinatura Digital"]
S -- "Verifica com a Chave PÚBLICA do autor" --> V{"Hash bate?"}
V -- Sim --> OK["Documento autêntico e íntegro"]
V -- Não --> FAIL["Documento adulterado ou assinatura falsa"] Uma assinatura digital garante três propriedades ao mesmo tempo:
- Autenticidade: só quem tem a chave privada poderia ter gerado aquela assinatura.
- Integridade: se o documento mudar 1 bit, o hash muda, e a assinatura deixa de bater.
- Não-repúdio: o autor não pode alegar depois que "não foi ele" — só ele tinha a chave privada.
🎫 O Problema da Confiança: quem garante que a chave pública é sua mesmo?
Se eu te mando minha "chave pública", como você sabe que ela realmente é minha, e não de um atacante fingindo ser eu? É aqui que entram os certificados digitais.
Um certificado digital é um documento que amarra uma chave pública a uma identidade (pessoa, empresa, servidor), assinado por uma terceira parte confiável.
🏛️ PKI: Infraestrutura de Chave Pública
PKI (Public Key Infrastructure) é o sistema completo que sustenta certificados digitais em escala global.
| Componente | Função |
|---|---|
| Autoridade Certificadora (CA) | Emite e assina certificados, atestando identidades |
| Certificado Digital | Documento (padrão X.509) com chave pública + identidade + assinatura da CA |
| Cadeia de Confiança | CA raiz → CA intermediária → certificado do site |
graph TD
Root["CA Raiz (confiada pelo SO/navegador)"] --> Inter["CA Intermediária"]
Inter --> Cert["Certificado de example.com"]
Cert --> Site["Site https://example.com"] Por que o cadeado verde no navegador aparece?
O navegador verifica se o certificado do site foi assinado por uma CA que ele já confia nativamente (essa lista de CAs raiz confiáveis vem pré-instalada no sistema operacional ou no navegador).
💻 Inspecionando um Certificado Real
📝 Exercícios de Fixação
- Básico: Quais três propriedades uma assinatura digital garante?
- Básico: Por que a assinatura digital cifra o hash do documento, e não o documento inteiro?
- Intermediário: Explique com suas palavras o papel de uma Autoridade Certificadora (CA).
- Intermediário: O que aconteceria se um site apresentasse um certificado autoassinado (não emitido por uma CA confiável)?
- Desafio: Pesquise o que é "certificate pinning" e por que aplicativos móveis às vezes o utilizam como camada extra de segurança.
🚀 Mini-Projeto: Assinando e Verificando um Documento
Objetivo: Usar OpenSSL para assinar digitalmente um arquivo e depois verificar a assinatura.
- Reaproveite o par de chaves RSA gerado na Aula 05 (
privada.pem/publica.pem). - Assine um arquivo:
openssl dgst -sha256 -sign privada.pem -out arquivo.sig arquivo.txt. - Verifique a assinatura:
openssl dgst -sha256 -verify publica.pem -signature arquivo.sig arquivo.txt. - Modifique 1 caractere do
arquivo.txte tente verificar de novo — confirme que a verificação falha.