feat: initial commit - cybercore signer desktop agent
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
# Assinaturas XML (XMLDSig e ICP-Brasil)
|
||||
|
||||
Este documento descreve a especificação e o funcionamento da assinatura digital de arquivos XML no padrão **W3C XMLDSig (XML Digital Signatures)** e **ICP-Brasil** 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`).
|
||||
|
||||
### 1.1 Casos de Uso Suportados
|
||||
|
||||
- **Documento Inteiro Envelopado (`URI=""`):** Contratos, despachos, declarações e relatórios em formato XML.
|
||||
- **Assinatura de Elementos Específicos por ID:**
|
||||
- **NF-e (Nota Fiscal Eletrônica):** Assinatura da tag `<infNFe Id="NFe...">`
|
||||
- **CT-e (Conhecimento de Transporte Eletrônico):** Assinatura da tag `<infCte Id="CTe...">`
|
||||
- **MDF-e (Manifesto Eletrônico de Documentos Fiscais):** Assinatura da tag `<infMDFe Id="MDFe...">`
|
||||
- **eSocial / EFD-Reinf:** Assinatura de eventos com tags `<evt... Id="...">`
|
||||
|
||||
---
|
||||
|
||||
## 2. Padrões Criptográficos
|
||||
|
||||
- **Canonicalização (C14N):** `http://www.w3.org/TR/2001/REC-xml-c14n-20010315` (C14N inclusiva sem comentários).
|
||||
- **Transformações:**
|
||||
- `http://www.w3.org/2000/09/xmldsig#enveloped-signature` (remove a assinatura do cálculo do digest).
|
||||
- C14N padrão.
|
||||
- **Algoritmo de Digest:** SHA-256 (`http://www.w3.org/2001/04/xmlenc#sha256`).
|
||||
- **Algoritmo de Assinatura:** RSA-SHA256 (`http://www.w3.org/2001/04/xmldsig-more#rsa-sha256`).
|
||||
- **KeyInfo:** Informações do certificado X.509 embutidas em `<X509Data><X509Certificate>`.
|
||||
|
||||
---
|
||||
|
||||
## 3. Segurança e Mitigação contra 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
|
||||
|
||||
O serviço `XmlSigningService.validateXmlSignature(byte[] xmlBytes)` permite auditar a assinatura imediatamente após sua emissão, verificando:
|
||||
|
||||
1. A integridade criptográfica da assinatura (`SignedInfo`).
|
||||
2. A integridade dos digests de todas as referências apontadas (`Reference.validate()`).
|
||||
3. O certificado X.509 público extraído da chave.
|
||||
Reference in New Issue
Block a user