03 - Assinatura Digital
video: https://youtu.be/... no frontmatter da nota.Assinatura Digital
A assinatura digital é um método de autenticação de informação digital que atua como substituto eletrônico para a assinatura física em papel. No contexto da comunicação segura, sua função primordial é fornecer uma "fé pública" eletrônica, provando de forma inegável que uma mensagem ou documento realmente se originou do emissor declarado.
1. Propriedades Fundamentais
Para que uma assinatura digital cumpra seu papel na segurança das comunicações, ela deve garantir três propriedades:
- Autenticidade: O receptor deve ter meios de confirmar que a assinatura foi efetivamente realizada pelo emissor.
- Integridade: Qualquer alteração no conteúdo da mensagem, por menor que seja, invalida a assinatura, provando que o documento original foi modificado.
- Irretratabilidade (Não-repúdio): O emissor não pode negar a autoria ou autenticidade da mensagem enviada.
Tecnicamente, o processo baseia-se na criptografia assimétrica (chaves públicas e privadas) e em funções de hash. O dono da informação utiliza sua chave privada para assinar o documento, enquanto o destinatário utiliza a chave pública correspondente para verificar a validade. Embora garanta autoria e integridade, a assinatura digital não garante, por si só, a confidencialidade da informação, pois não oculta o conteúdo de terceiros.
2. O Paradoxo da Criptografia Assimétrica Invertida
Na criptografia assimétrica tradicional, quem encripta é quem detém a chave pública do destinatário, e quem decripta usa a chave privada. Na assinatura digital, a lógica se inverte:
| Etapa | Chave Usada | Ação |
|---|---|---|
| Assinatura | Privada (do emissor) | Cifra o hash da mensagem |
| Verificação | Pública (do emissor) | Decifra o hash e compara |
Como apenas o emissor possui a chave privada, apenas ele poderia ter gerado aquela assinatura. Como a chave pública correspondente decifra corretamente o hash e este bate com o hash recalculado da mensagem recebida, ficam provados simultaneamente autoria e integridade.
3. Fluxo Técnico Completo
O processo de geração de uma assinatura digital segue estas etapas:
- Geração do Hash: O documento original é processado por uma função de hash criptográfica (SHA-256, SHA-3, BLAKE2), produzindo um digest de tamanho fixo (256 bits para SHA-256).
- Cifragem do Hash: O digest é cifrado com a chave privada do emissor, utilizando um esquema de assinatura (ex: RSA-PSS, ECDSA, EdDSA).
- Apenso da Assinatura: O resultado (assinatura) é anexado ao documento original e enviado ao destinatário.
- Verificação: O destinatário recalcula o hash do documento recebido, decifra a assinatura com a chave pública do emissor e compara os dois digests. Se forem iguais, a assinatura é válida.
[Emissor]
documento ----hash----> H
|
v
assina(H, Kpriv) ----> Assinatura S
|
v
documento + S ---------> [Receptor]
|
v
H' = hash(documento)
H = verifica(S, Kpub)
válido se H == H'
4. Algoritmos de Assinatura
RSA (Rivest-Shamir-Adleman)
O esquema mais antigo ainda em uso. Baseia-se no problema da fatoração de inteiros grandes. Recomenda-se RSA-PSS (Probabilistic Signature Scheme) em vez do legado PKCS#1 v1.5, que é vulnerável a ataques como o de Bleichenbacher. Tamanhos modernos: 2048 ou 3072 bits.
DSA (Digital Signature Algorithm)
Padronizado pelo NIST (FIPS 186) em 1994. Baseia-se no problema do logaritmo discreto em subgrupos de Z_p*. Foi amplamente usado em ambientes governamentais dos EUA, mas está sendo descontinuado em favor do ECDSA.
ECDSA (Elliptic Curve DSA)
Variante do DSA usando curvas elípticas (ECC). Oferece o mesmo nível de segurança com chaves muito menores:
| Segurança (bits) | RSA | ECDSA |
|---|---|---|
| 80 | 1024 | 160 |
| 112 | 2048 | 224 |
| 128 | 3072 | 256 |
| 192 | 7680 | 384 |
| 256 | 15360 | 521 |
Usado em Bitcoin, Apple Secure Enclave, TLS 1.3 e muitos HSMs. Curvas comuns: P-256, P-384, secp256k1.
EdDSA (Edwards-curve DSA)
Família moderna baseada em curvas de Edwards torcidas. A variante Ed25519 é amplamente adotada por sua velocidade, determinismo (imune a falhas de geração de nonce) e resistência a canais laterais. É o padrão de fato em SSH moderno, Git commits assinados, Minisign e age.
5. Não-Repúdio e Validade Jurídica
O não-repúdio é a propriedade que impede o emissor de negar a autoria da mensagem. Isso tem peso jurídico: no Brasil, a MP 2.200-2/2001 e a Lei 14.063/2020 regulam a assinatura digital, distinguindo três tipos:
- Simples: dados pessoais verificáveis, sem presunção de autoria.
- Avançada: usa certificado ICP-Brasil, com identificação inequívoca do signatário.
- Qualificada: usa certificado A1/A3 em HSM ou token, equivalente à assinatura manuscrita para fins legais.
6. Aplicações Práticas
- Transferência de Arquivos: Permite que destinatários determinem se os arquivos recebidos foram adulterados durante o trânsito pela rede. Ferramentas como GnuPG, minisign e signify implementam isso.
- Assinatura de Código: Desenvolvedores usam certificados digitais (Code Signing) para assinar binários. Sistemas operacionais modernos (Windows SmartScreen, macOS Gatekeeper, Android Play Signing) recusam executáveis não assinados.
- Documentos Eletrônicos: PDFs assinados via PAdES, XMLs via XAdES (NF-e, CT-e) e assinaturas em blockchain.
- Email Seguro: Padrões S/MIME (baseado em X.509) e PGP/OpenPGP (rede de confiança descentralizada).
- HSMs e Cofres: Módulos de Segurança de Hardware (HSM) são frequentemente usados para gerar e armazenar com segurança as chaves criptográficas necessárias para realizar assinaturas. Exemplos: AWS KMS, Thales Luna, YubiHSM2.
7. Exemplo Prático com OpenSSL
# Gerar par de chaves RSA 2048 bits
openssl genpkey -algorithm RSA -out chave_privada.pem -pkeyopt rsa_keygen_bits:2048
openssl rsa -pubout -in chave_privada.pem -out chave_publica.pem
# Assinar documento (RSA-PSS + SHA-256)
openssl dgst -sha256 -sign chave_privada.pem -sigopt rsa_padding_mode:pss -out assinatura.bin documento.pdf
# Verificar assinatura
openssl dgst -sha256 -verify chave_publica.pem -signature assinatura.bin -sigopt rsa_padding_mode:pss documento.pdf
# Output esperado: Verified OK
8. Limitações e Considerações
- Confiança na Chave Pública: A assinatura só é confiável se a chave pública do emissor for autêntica. Para isso existem as PKIs (Public Key Infrastructures) e certificados X.509 assinados por Autoridades Certificadoras (CAs).
- Revogação: Se a chave privada for comprometida, é preciso revogar o certificado (CRL ou OCSP) — caso contrário, assinaturas geradas com a chave roubada continuam válidas.
- Quantum Computing: Algoritmos baseados em RSA e ECC são vulneráveis ao algoritmo de Shor em computadores quânticos de grande escala. O NIST já padronizou esquemas pós-quânticos (ML-DSA / Dilithium, SLH-DSA / SPHINCS+).
9. Resumo Técnico
| Atributo | Valor |
|---|---|
| Base matemática | Criptografia assimétrica + hash criptográfico |
| Chave de assinatura | Privada |
| Chave de verificação | Pública |
| Garante confidencialidade | Não (combinar com cifragem, se necessário) |
| Garante integridade | Sim (via hash) |
| Garante não-repúdio | Sim (em ambientes com PKI) |
| Algoritmos modernos | RSA-PSS, ECDSA (P-256), Ed25519 |
| Pós-quântico | ML-DSA (Dilithium), SLH-DSA (SPHINCS+) |
10. Conclusão
A assinatura digital transforma comunicações eletrônicas em registros auditáveis e confiáveis, sendo um pilar essencial para a validade jurídica e técnica de transações em ambientes digitais. Compreender a inversão do par assimétrico, a função do hash e os diferentes algoritmos disponíveis é fundamental para projetar sistemas seguros e conformes com a legislação vigente. A transição para esquemas pós-quânticos já é uma realidade que deve ser considerada em projetos de longo prazo.