ICP-Brasil — arquitetura
Topologia técnica e institucional da ICP-Brasil. ITI opera a AC Raiz; ACs nível 1 e 2 emitem certificados pra titulares; ARs identificam presencialmente (ou por videoconferência aprovada).
Hierarquia institucional
┌────────────────────────────────┐
│ Comitê Gestor da ICP-Brasil │ ← Decreto 3.996/2001
│ (CG-ICP, Casa Civil) │ define normas
└──────────────┬─────────────────┘
│
┌──────────────▼─────────────────┐
│ ITI — AC Raiz │ ← Autarquia federal
│ AC Raiz V5 / V10 (atual) │ opera HSM offline
└──────────────┬─────────────────┘
│
┌─────────────────────┼──────────────────────┐
▼ ▼ ▼
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
│ AC nível 1 │ │ AC nível 1 │ … │ AC nível 1 │ ← cada uma é PJ
│ (ex: Serpro) │ │ (Serasa) │ │ (Soluti) │ credenciada
└───────┬───────┘ └───────┬───────┘ └───────┬───────┘
│ │ │
┌────┴────┐ ┌────┴────┐ ┌────┴────┐
▼ ▼ ▼ ▼ ▼ ▼
┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐
│ AC2 │ │ AC2 │ │ AC2 │ │ AC2 │ │ AC2 │ │ AC2 │ ← sub-CAs especializadas
└──┬──┘ └──┬──┘ └──┬──┘ └──┬──┘ └──┬──┘ └──┬──┘ (e-CPF / e-CNPJ / NF-e)
│ │ │ │ │ │
▼ ▼ ▼ ▼ ▼ ▼
AR (Autoridades de Registro)
│
▼
Titulares (PF + PJ)ACs nível 1 ativas (≈2026)
Lista completa em iti.gov.bricp-brasilestrutura.
Principais por volume:
| AC nível 1 | Operador | Especialidade dominante |
|---|---|---|
| AC Serpro | Serpro (governo) | e-CPF/e-CNPJ pra servidores e órgãos |
| AC Caixa | Caixa Econômica Federal | Bancário, FGTS |
| AC Certisign | Certisign Certificadora | Mercado em geral, e-CNPJ corporate |
| AC SERASA-Experian | Serasa Experian | Massa, varejo |
| AC Soluti | Soluti Net (Valid hoje) | Varejo digital, A1 remoto |
| AC Bry | Bry Tecnologia | A1 remoto, integração SaaS |
| AC Imprensa Oficial SP | Imprensa Oficial-SP | Estadual SP |
| AC Notarial | Anoreg-BR | Cartórios |
| AC Boa Vista | Boa Vista Serviços | Mercado |
| AC PRODEMGE | Prodemge (estadual MG) | Servidores e cidadãos MG |
| AC SOLUTI Múltipla | Valid/Soluti | Operação A1 remoto em escala |
AC Raiz ICP-Brasil — chaves
Periodicamente o ITI faz cerimônia pública de geração de raiz nova. Histórico:
- V1, V2, V3, V4 — descontinuadas
- V5 — RSA-4096; certificados emitidos até ~2023
- V10 — RSA-4096 — atual; cerimônia 2023, válida até 2034 com transição 2031–2034
Distribuição: Mozilla NSS, Microsoft Windows Update, Apple, Java cacerts incluem AC Raiz ICP-Brasil. Linux distros incluem via ca-certificates.
Cross-sign com root program comercial não existe — ICP-Brasil é cadeia paralela ao trust store TLS público. Cert ICP-Brasil não é aceito automaticamente como cert TLS de site web (e vice-versa). São propósitos disjuntos: ICP é "assinatura digital com valor jurídico"; TLS público é "autenticação de servidor web".
Validação de cadeia ICP-Brasil
Aplicação que valida assinatura ICP precisa:
- Carregar a chain bundle ICP-Brasil — todas as ACs nível 1 e 2 + raiz. ITI publica em acraiz.icpbrasil.gov.brcredenciadasCertificadosAC.
- Construir o path do cert do signatário até a raiz.
- Verificar revogação via LCR (Lista de Certificados Revogados, equivalente CRL) — cada AC publica em
acraiz.icpbrasil.gov.br/LCR/…. OCSP é opcional na ICP-Brasil (presente mas menos confiável que LCR pra LTV). - Verificar OIDs de política — cada tipo (A1, A3, A4, e-CPF, e-CNPJ) tem OID específico no namespace
2.16.76.1.….
Pitfalls comuns em aplicação cliente
- Bundle desatualizado: ACs entramsaem; chain bundle precisa ser atualizado mensalmente. Bibliotecas como [BryToolbox](https:www.bry.com.br) automatizam.
- LCR pesada: algumas LCRs ICP têm > 100 MB. Cache local obrigatório; redownload incremental via
nextUpdate. - OCSP raro: existe mas nem toda AC opera. Não dá pra confiar como single source.
- DN não-LDAP-clean: nomes de titular usam parsing UTF-8 + perfis brasileiros específicos.
OU=CPF=...:...etc. Spec em DOC-ICP-04. - Timestamp via ACT: pra LTVarquivamento, embarcar timestamp de uma ACT credenciada (Authority of Certification of Time) — ver `08-timestamping` (planejado).
Implicações pra Koder
Se um produto Koder for ler/validar assinatura ICP-Brasil (caso típico: receber um PDF assinado pra anexar a um processo):
- Embarcar bundle ICP atualizado no produto (auto-update mensal).
- Usar lib pronta — DSS (Java) ou Lacuna RestPKI (proprietária, REST). Em Go/Dart o ecossistema é mais fraco; provavelmente FFI bridge ou serviço Go que envelopa DSS.
- Nunca implementar parsing de DN ICP-Brasil do zero — usar lib que já trata os perfis
OID 2.16.76.1.3.x.
Se for emitir ICP-Brasil: ver 03-legislation/01-brazil-mp-2200-2.kmd §"Implicações pra produto Koder" — virar AC é caro, comum é parceria com AC existente via API.