ICP-Brasil — arquitetura

seed

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:

  1. Carregar a chain bundle ICP-Brasil — todas as ACs nível 1 e 2 + raiz. ITI publica em acraiz.icpbrasil.gov.brcredenciadasCertificadosAC.
  2. Construir o path do cert do signatário até a raiz.
  3. 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).
  4. 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.

Referências