Pular para o conteúdo

Certificado digital

Assinatura digital do XML fiscal: o que é assinado, como se confere e por que um espaço a mais invalida a nota

Publicado em · Atualizado em · Por Equipe PegaXML

Resumo

Os documentos fiscais eletrônicos são arquivos XML assinados digitalmente com certificado ICP-Brasil, no padrão XML Digital Signature do W3C. A assinatura cobre o grupo principal de informações do documento: qualquer alteração depois da assinatura, mesmo de um caractere, faz a conferência falhar. Depois da autorização, a Sefaz anexa o protocolo, que traz um resumo do mesmo conteúdo assinado. Conferir assinatura e protocolo é o jeito técnico de saber se um XML recebido é autêntico.

Por que o XML fiscal precisa de assinatura

Um arquivo XML é texto. Qualquer pessoa pode abri-lo num editor, trocar um número e salvar. A assinatura digital resolve isso de duas formas ao mesmo tempo:

  • Autoria. Ela mostra quem gerou o documento, porque só o titular do certificado tem a chave privada que produz aquela assinatura.
  • Integridade. Ela mostra que o conteúdo não mudou depois de assinado. Uma alteração mínima faz a conferência falhar.

No Brasil, a assinatura com certificado da ICP-Brasil tem a presunção de veracidade prevista no art. 10 da MP 2.200-2/2001. É por isso que NF-e, NFC-e, CT-e, MDF-e e os seus eventos exigem certificado ICP-Brasil, e não qualquer certificado.

O padrão usado

Os documentos fiscais eletrônicos usam o padrão XML Digital Signature (XMLDSig), do W3C. O Manual de Orientação do Contribuinte da NF-e define como ele é aplicado:

ElementoComo é usado na NF-e
FormatoEnveloped: a assinatura fica dentro do próprio XML
O que é assinadoO grupo principal de informações da nota, referenciado pelo seu identificador, que leva a chave de acesso
CertificadoX.509 da ICP-Brasil, incluído na assinatura para permitir a conferência
CanonicalizaçãoAlgoritmo que padroniza o texto antes do cálculo, para que espaços e quebras de linha irrelevantes não mudem o resultado
Algoritmos de resumo e de assinaturaDefinidos no manual vigente

Algoritmos, transformações e versões estão no Manual de Orientação do Contribuinte publicado no Portal da NF-e. Para programar, use sempre a versão vigente, e não exemplos antigos.

O que a assinatura cobre e o que não cobre

A assinatura cobre o grupo principal de informações do documento: identificação, emitente, destinatário, itens, impostos, totais, transporte, pagamento e informações adicionais. A estrutura completa está em estrutura do XML da NF-e.

Ficam fora da assinatura do emitente:

  • o protocolo de autorização, que a Sefaz devolve depois;
  • na NFC-e, o grupo suplementar com o conteúdo do QR Code e a URL de consulta, que tem autenticação própria por meio do CSC. Veja QR Code da NFC-e.

Do arquivo assinado ao arquivo autorizado

  1. O emissor monta o XML e calcula a chave de acesso.
  2. O certificado assina. O sistema calcula o resumo do conteúdo, cifra esse resumo com a chave privada e grava a assinatura no arquivo, junto com o certificado público.
  3. A Sefaz confere. Recalcula o resumo, decifra a assinatura com a chave pública e compara. Confere também se o certificado é ICP-Brasil, se está dentro da validade, se não foi revogado e se pertence ao emitente.
  4. A Sefaz autoriza e devolve o protocolo, com número, data e hora, situação e um valor de resumo que corresponde ao conteúdo assinado.
  5. O arquivo distribuído reúne a nota assinada e o protocolo. É esse conjunto que o emitente envia ao destinatário e que ambos devem guardar.

Por que um caractere invalida tudo

O resumo criptográfico muda completamente com qualquer alteração. Trocar "10,00" por "10,01", corrigir um acento na descrição ou remover um espaço dentro de um campo faz o resumo recalculado não bater com o assinado. A conferência falha.

A canonicalização existe para que diferenças sem significado, como a ordem de atributos e certos espaços entre tags, não atrapalhem. Mas ela não salva mudanças de conteúdo. Por isso:

  • não abra e salve XML fiscal em editores que reformatam o arquivo;
  • não converta a codificação de caracteres do arquivo;
  • não "corrija" dados no XML: use os instrumentos formais, como a carta de correção ou o cancelamento.

Como o destinatário confere um XML recebido

O Ajuste SINIEF 07/2005 manda o destinatário verificar a validade e a autenticidade da NF-e e a existência da autorização de uso (cláusula 10ª, § 1º). Na prática:

  1. Valide a assinatura com um verificador de XML ou com o próprio sistema que importa a nota.
  2. Confira o certificado: cadeia ICP-Brasil e raiz do CNPJ igual à do emitente.
  3. Confira o protocolo: ele precisa existir e indicar autorização.
  4. Consulte a chave no portal da Sefaz. A consulta mostra a situação atual: uma nota pode ter sido cancelada depois de autorizada.
  5. Guarde o arquivo original, sem regravar. Veja guarda do XML por 5 anos.

Quem recebeu o XML por e-mail e quer ter certeza de que é o arquivo autorizado pode também obtê-lo pelos serviços da Sefaz. Os caminhos estão em como o destinatário obtém o XML.

Eventos também são assinados

Cada evento é um XML próprio, com assinatura de quem o registra:

EventoQuem assina
Cancelamento e carta de correção da NF-eEmitente
Pedido de inutilizaçãoEmitente
Manifestação do destinatárioDestinatário
Encerramento e inclusão de condutor no MDF-eEmitente do MDF-e
Eventos do CT-eConforme o evento

Por isso o certificado vencido trava eventos, e não só emissões. Veja certificado digital vencido.

E a NFS-e nacional

No padrão nacional da NFS-e, o contribuinte envia a DPS (Declaração de Prestação de Serviço), e o ambiente nacional gera a NFS-e. Quando a DPS é enviada por sistema, ela é assinada com certificado. Pelo FAQ oficial da NFS-e, um procurador pode assinar a DPS com o próprio certificado em nome do prestador, desde que tenha procuração eletrônica no Portal da Receita; sem ela, a nota é rejeitada com o código E0718. O fluxo está em DPS.

Exemplo fictício

Uma empresa recebe por e-mail o XML de uma compra de R$ 3.200. O analista fiscal importa o arquivo e o sistema acusa assinatura inválida. Ao abrir o XML, ele percebe que alguém do fornecedor abriu o arquivo num editor e "corrigiu" a descrição de um item. O analista pede o arquivo original e, enquanto isso, baixa o XML pela chave de acesso nos serviços da Sefaz. O arquivo oficial passa na validação, e é ele que vai para o arquivo fiscal da empresa.

Perguntas frequentes

O que exatamente é assinado na NF-e?

O grupo principal de informações da nota, identificado pela chave de acesso. A assinatura fica dentro do próprio XML, logo depois desse grupo, no formato chamado enveloped.

Posso editar um XML autorizado para corrigir um dado?

Não. Qualquer alteração invalida a assinatura e o arquivo deixa de corresponder ao que a Sefaz autorizou. Correções seguem os caminhos formais: carta de correção, cancelamento, nota complementar ou devolução.

Como sei se um XML recebido é autêntico?

Valide a assinatura com um verificador de XML, confira se o certificado é ICP-Brasil e da empresa emitente, e consulte a chave de acesso no portal da Sefaz para confirmar a autorização e a situação atual.

A assinatura perde a validade quando o certificado do emitente vence?

Não para os documentos já autorizados. Eles foram assinados quando o certificado era válido e receberam o protocolo da Sefaz. O vencimento posterior só impede novas assinaturas.

Eventos como cancelamento também são assinados?

Sim. Cancelamento, carta de correção, inutilização, manifestação do destinatário e encerramento do MDF-e são XMLs próprios, assinados pelo autor do evento.

Fontes

Conteúdo educativo, escrito a partir das normas oficiais citadas. Não substitui a orientação do seu contador. Viu algo errado ou desatualizado? Avise a gente.

Ver em Markdown · llms.txt

Leia também