Fixação de Certificado (Certificate Pinning)
O que é Fixação de Certificado (Certificate Pinning)?
Fixação de Certificado (Certificate Pinning)Uma técnica em que uma aplicação embute de forma fixa um certificado ou chave pública esperados e recusa conexões TLS que não correspondam, frustrando ACs fraudulentas ou comprometidas.
A fixação de certificado vincula um servidor TLS específico a uma ou mais identidades criptográficas — um certificado folha completo, um intermediário ou um hash de SubjectPublicKeyInfo (SPKI) — nas quais o cliente confia implicitamente. Durante o handshake, o cliente compara a cadeia do servidor com os valores fixados e aborta em caso de divergência, mesmo que a cadeia esteja assinada por uma AC publicamente confiável. Isso frustra um atacante que possua um certificado fraudulento-porém-válido, como um emitido por uma AC comprometida ou coagida (os incidentes da DigiNotar e da Comodo em 2011, que levaram à emissão de certificados fraudulentos do Google, são a motivação clássica).
HPKP do navegador vs. fixação em aplicativos
A web tentou a fixação por meio do HTTP Public Key Pinning (HPKP, RFC 7469, 2015), um cabeçalho de resposta Public-Key-Pins. Ele fracassou na prática: uma chave perdida, uma rotação de rotina sem atualização dos pins ou uma injeção hostil de "RansomPKP" poderiam bloquear os usuários durante todo o max-age. O Chrome tornou o HPKP obsoleto em 2017 e o removeu no Chrome 72 (2018), cedendo o papel aos logs de Certificate Transparency. A fixação sobrevive principalmente em aplicativos móveis que se comunicam com um backend fixo (Android Network Security Config, NSPinnedDomains do iOS, CertificatePinner do OkHttp).
flowchart TD
A[Client opens TLS to api.example.com] --> B[Server presents certificate chain]
B --> C{Chain validates against system CAs?}
C -->|No| E[Abort: standard TLS failure]
C -->|Yes| D{SPKI hash matches a pinned key?}
D -->|Yes| F[Connection allowed]
D -->|No| G[Abort: pin mismatch, block MITM/rogue CA]Fraquezas e defesas
A fixação é tão boa quanto seus pins de backup — sempre fixe uma chave de rollover. Em dispositivos com root/jailbreak, ferramentas como Frida e objection interceptam a rotina de validação para remover os pins, de modo que a fixação eleva a barreira para a interceptação MITM, mas não substitui a atestação de dispositivo. As orientações modernas (OWASP MASVS) favorecem a fixação de SPKI com certificados de curta duração e um plano de rotação testado.
● Exemplos
- 01
Um aplicativo bancário que fixa o hash SHA-256 da chave pública de seu servidor e rejeita qualquer outro certificado.
- 02
Um cliente de API móvel que fixa tanto a chave de produção quanto a chave de rollover como backup.
● Perguntas frequentes
O que é Fixação de Certificado (Certificate Pinning)?
Uma técnica em que uma aplicação embute de forma fixa um certificado ou chave pública esperados e recusa conexões TLS que não correspondam, frustrando ACs fraudulentas ou comprometidas. Pertence à categoria Segurança de rede da cibersegurança.
O que significa Fixação de Certificado (Certificate Pinning)?
Uma técnica em que uma aplicação embute de forma fixa um certificado ou chave pública esperados e recusa conexões TLS que não correspondam, frustrando ACs fraudulentas ou comprometidas.
Como se defender contra Fixação de Certificado (Certificate Pinning)?
As defesas contra Fixação de Certificado (Certificate Pinning) costumam combinar controles técnicos e práticas operacionais, conforme detalhado na definição acima.
Quais são outros nomes para Fixação de Certificado (Certificate Pinning)?
Nomes alternativos comuns: TLS pinning, Public-key pinning.