FAQ Assinatura Digital
-
O que é assinatura digital?
A assinatura digital é um processo informático que permite verificar a integridade e a autoria do documento eletrônico, ou seja, é o mecanismo que permite identificar quem é o autor do documento eletrônico e se o mesmo não foi modificado.
-
Em quais situações devo realizar a Assinatura Digital?
O Projeto da NF-e é baseado no conceito de Documento Eletrônico. Assim, os seguintes documentos eletrônicos que representam uma manifestação de vontade do emissor devem ser assinados digitalmente:
1. NF-e;
2. Pedido de cancelamento de NF-e;
3. Pedido de inutilização de numeração de NF-e;
4. Carta de Correção eletrônica de NF-e (ainda não regulamentado); -
Como é realizada a assinatura digital?
O processo de assinatura digital consiste em:
1. cálculo do resumo da mensagem (Hash Code) do documento eletrônico;
2. criptografia do resumo da mensagem com a chave privada do certificado digital do autor do documento eletrônico que resulta na assinatura digital.O processo de verificação da assinatura digital consiste em:
1. cálculo do resumo da mensagem (Hash Code) do documento eletrônico;
2. descriptografia da assinatura digital com a chave pública do certificado digital do autor do documento eletrônico;
3. se o resumo da mensagem do documento eletrônico for idêntico ao resultado da descriptografia da assinatura digital com a chave pública do autor do documento eletrônico, a integridade e a autoria do documento eletrônica está garantida. -
Qual o padrão de assinatura digital adotado pelo Projeto NF-e?
O Projeto NF-e utiliza um subconjunto do padrão de assinatura digital XML definido pelo http://www.w3.org/TR/xmldsig-core/, com as seguintes características:
a) Padrão de assinatura: “XML Digital Signature”, utilizando o formato “Enveloped” (http://www.w3.org/TR/xmldsig-core/);
b) Certificado digital: Emitido por AC credenciada no ICP-Brasil (http://www.w3.org/2000/09/xmldsig#X509Data);
c) Cadeia de Certificação: EndCertOnly (Incluir na assinatura apenas o certificado do usuário final);
d) Tipo do certificado: X509v3;
e) Tamanho da Chave Criptográfica: Compatível com os certificados A1 e A3 (1024 bits);
f) Função criptográfica assimétrica: RSA (http://www.w3.org/2000/09/xmldsig#rsa-sha1);
g) Função de “message digest”: SHA-1 (http://www.w3.org/2000/09/xmldsig#sha1);
h) Codificação: Base64 (http://www.w3.org/2000/09/xmldsig#base64);
i) Transformações exigidas:
(1) Enveloped (http://www.w3.org/2000/09/xmldsig#enveloped-signature)
(2) C14N (http://www.w3.org/TR/2001/REC-xml-c14n-20010315) -
Como implemento o processo de assinatura digital XML em meu aplicativo emissor de NF-e?
A assinatura digital é baseada no uso de certificado digital, sendo imprescindível que o ambiente de desenvolvimento da aplicação ofereça o suporte ao uso de certificados digitais X509 e principalmente o suporte à assinatura digital XML.
Os desenvolvedores que utilizam linguagens mais tradicionais como COBOL, Delphi 5, 6 e 7, VB 5.0/6.0, C++, etc., baseadas em Win32, terão maior dificuldade de implementar a assinatura digital XML nestas linguagens pela ausência de suporte nativo. Uma solução é o uso de DLL em .NET para suprir esta dificuldade sem necessidade de aquisição de componentes de terceiros ou migração de linguagem.
O framework .NET 2.0 e o Java oferecem suporte nativo para Assinatura Digital XML, facilitando a vida dos desenvolvedores da plataforma .NET (C#, VC, C++, Delphi, etc.) e da plataforma Java.
-
Ao tentar aplicar a Assinatura Digital ocorre o erro: “The specified cryptographicservice provider (CSP) does not support this key algorithm” ou “O CSP (provedor de serviços de criptografia) especificado não oferece suporte a este algoritmo de chave.
O erro pode ser causado pelo uso de versão incompátivel do gerenciador de dispositivos, a atualização do versão do gerenciador de dispositivos pode solucionar o problema.
Maiores informações pode ser obtido no post Certificado Digital tipo A3 - mal funcionamento (http://nf-eletronica.com/blog/?p=90)