Files
cybercore-signer/docs/compliance-testing.md

66 lines
4.1 KiB
Markdown

# Guia de Testes de Conformidade ICP-Brasil e Validação Oficial no ITI
> **Procedimentos de Verificação Criptográfica Automatizada e Manual para Assinaturas PAdES e XAdES-BES**
---
## 1. Visão Geral
O **CyberCore Signer** implementa assinaturas digitais em conformidade com as normas técnicas da **Infraestrutura de Chaves Públicas Brasileira (ICP-Brasil)**, especificamente:
- **PDF (PAdES):** Padrão ISO 32000-1 e ETSI TS 102 778, com envelope CMS desacoplado (`/adbe.pkcs7.detached`) e algoritmo `SHA256withRSA` (alinhado ao perfil AD-RB).
- **XML (XAdES-BES / XMLDSig):** Padrão ETSI TS 101 903 e norma **DOC-ICP-15.03**, contendo propriedades qualificadas assinadas (`<xades:QualifyingProperties>`, `<xades:SigningTime>` e `<xades:SigningCertificate>`).
---
## 2. Suíte de Testes Automatizados (`ComplianceSignatureSuiteTest`)
A conformidade técnica do código é garantida de forma contínua pelo teste automatizado:
`modules/cybercore-core/src/test/java/br/com/cybercore/signer/core/compliance/ComplianceSignatureSuiteTest.java`
### O que o teste automatizado valida:
1. **Cadeia ICP-Brasil Simulada em Memória:**
- Cria uma hierarquia criptográfica completa (AC Raiz de Teste -> AC Intermediária -> Certificado Signatário com extensão OID e-CPF `2.16.76.1.3.1`).
- Garante que nenhum certificado real ou dado pessoal seja exposto em testes.
2. **PAdES (PDF):**
- Criação de documento PDF original.
- Aplicação de selo visual conforme as coordenadas calculadas.
- Verificação da integridade do `/ByteRange` cobrindo o PDF integral exceto os bytes de `/Contents`.
- Validação criptográfica independente via Bouncy Castle `CMSSignedData.verify()`.
- Comparação do digest SHA-256 do documento contra o atributo assinado `messageDigest`.
3. **XAdES-BES (XML):**
- Assinatura de documento XML com geração de identificadores de referência (`Reference URI`).
- Validação independente via motor nativo Java JSR-105 (`javax.xml.crypto.dsig.XMLSignature`).
- Teste de inviolabilidade (Tamper Test): verificação de que qualquer modificação de um caractere nos dados de negócio invalida sumariamente o `coreValidity`.
---
## 3. Validação Manual no Verificador de Conformidade do ITI
O **Instituto Nacional de Tecnologia da Informação (ITI)** disponibiliza a ferramenta governamental oficial para validação de assinaturas digitais brasileiras:
👉 **URL Oficial:** [https://verificador.iti.gov.br](https://verificador.iti.gov.br)
### 3.1 Procedimento Passo a Passo para Teste Manual
1. **Gerar ou Exportar o Documento Assinado:**
- Através da interface gráfica do CyberCore Signer, assine um documento PDF ou XML utilizando seu certificado digital A1 ou A3.
- O arquivo assinado resultante será gravado em disco (ex: `contrato_assinado.pdf` ou `documento_assinado.xml`).
2. **Submissão no Verificador do ITI:**
- Acesse [https://verificador.iti.gov.br](https://verificador.iti.gov.br) em qualquer navegador web moderno.
- Clique em **"Selecionar assinatura"** e faça o upload do arquivo gerado pelo CyberCore Signer.
- Clique no botão **"Verificar conformidade"**.
3. **Interpretação do Relatório de Conformidade:**
#### Cenário A: Assinatura com Certificado de Produção ICP-Brasil (Certisign, Serasa, Serpro, Valid, etc.)
- **Status Geral:** `APROVADO` / `CONFORME`.
- **Validação Criptográfica:** Íntegra (o hash bate e a assinatura RSA é autêntica).
- **Cadeia de Certificação:** Confiável (ancorada até a AC Raiz da ICP-Brasil oficial).
- **Atributos do Signatário:** Nome completo e CPF/CNPJ extraídos e validados na Receita Federal.
#### Cenário B: Assinatura com Certificados de Teste / Desenvolvimento (Gerados na Suíte)
- **Status Criptográfico:** `VÁLIDO` (integridade matemática e estrutura PAdES/XAdES aprovadas).
- **Alerta de Cadeia:** O verificador do ITI reportará: *"Cadeia de Certificação Não Confiável / AC não credenciada na ICP-Brasil"*. Este é o comportamento **correto e esperado**, uma vez que certificados gerados em testes locais não pertencem à lista de certificados confiáveis (LCR oficial) publicada pelo ITI.