# Assinaturas XML no Padrão XAdES e ICP-Brasil Este documento descreve a especificação, conformidade e o funcionamento da assinatura digital de arquivos XML no padrão avançado **XAdES (XML Advanced Electronic Signatures - ETSI TS 101 903 e ICP-Brasil DOC-ICP-15.03)** e **W3C XMLDSig** no CyberCore Signer. --- ## 1. Visão Geral O CyberCore Signer fornece suporte nativo a assinaturas digitais XML utilizando a engine padronizada e segura da plataforma Java (`javax.xml.crypto.dsig`), garantindo conformidade com o padrão **XAdES-BES** adotado pelo ITI (Instituto Nacional de Tecnologia da Informação) na infraestrutura ICP-Brasil (perfil AD-RB). ### 1.1 Perfis Suportados * **`XAdES-BES` (Padrão Recomendado / ICP-Brasil):** - Conforme especificação técnica **ETSI TS 101 903** e norma **DOC-ICP-15.03**. - Encapsula o elemento `` contendo `` e ``. - Inclui propriedade qualificada de data/hora da assinatura (``) em formato UTC ISO-8601. - Inclui vínculo criptográfico irrefutável do certificado do signatário (``) contendo o digest SHA-256 do certificado DER e referências do emissor/serial (``). - Protege as propriedades qualificadas através de uma `` em `` com `Type="http://uri.etsi.org/01903#SignedProperties"`. * **`XMLDSig` Clássico (W3C Enveloped):** - Mantido para compatibilidade com layouts estritos de notas fiscais eletrônicas legadas (ex: NF-e, CT-e, MDF-e SEFAZ). ### 1.2 Casos de Uso Suportados - **Documento Inteiro Envelopado (`URI=""`):** Contratos, despachos, declarações, laudos e relatórios em XML. - **Assinatura de Elementos Específicos por ID:** - **NF-e (Nota Fiscal Eletrônica):** Assinatura da tag `` - **CT-e (Conhecimento de Transporte Eletrônico):** Assinatura da tag `` - **MDF-e (Manifesto Eletrônico de Documentos Fiscais):** Assinatura da tag `` - **eSocial / EFD-Reinf:** Assinatura de eventos com tags `` --- ## 2. Estrutura Criptográfica do XAdES-BES ```xml [Digest do nó em Base64] [Digest das SignedProperties em Base64] [Assinatura RSA-SHA256 em Base64] [Certificado DER do signatário em Base64] 2026-10-11T14:05:00Z [SHA-256 do Certificado] [Emissor X.500] [Número Serial] ``` --- ## 3. Segurança e Mitigação contra Ataques XXE O parser XML é configurado com blindagem estrita contra ataques **XML External Entity (XXE)** e expansões recursivas de entidades: ```java DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setNamespaceAware(true); dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); dbf.setFeature("http://xml.org/sax/features/external-general-entities", false); dbf.setFeature("http://xml.org/sax/features/external-parameter-entities", false); dbf.setXIncludeAware(false); dbf.setExpandEntityReferences(false); ``` --- ## 4. Validação Pós-Assinatura e Auditoria O serviço `XmlSigningService.validateXmlSignature(byte[] xmlBytes)` e o `SignatureValidationService` realizam: 1. **Validação criptográfica de SignedInfo:** Confere se o `SignatureValue` foi emitido pela chave pública correspondente. 2. **Validação de integridade dos dados de negócio:** Confere o digest do conteúdo ou elemento assinado. 3. **Validação de integridade do XAdES:** Confere o digest das propriedades qualificadas (`SignedProperties`), rejeitando qualquer adulteração no horário de assinatura (`SigningTime`) ou no certificado declarado. 4. **Inspeção de signatário e datação:** Extração de nome, documento (CPF/CNPJ), autoridade certificadora emissora e datação auditável.