Homologação Paf-Ecf (Assinatura Digital)  XML
Índice dos Fóruns » Assuntos gerais necessariamente ligados a tecnologia
Autor Mensagem
giulianon
Entusiasta Java
[Avatar]

Membro desde: 14/07/2008 14:15:19
Mensagens: 17
Offline

Boa tarde pessoal,

estou implementando no meu sistema os requisitos necessários para homologação do mesmo junto a fazendo estadual.

Já li em alguns tópicos aqui no GUJ que alguns colegas também estão neste processo e alguns acredito que já até homologaram seus sistemas portanto gostaria de pedir algum esclarecimento ou dica sobre um dos requisitos.

Segundo a legislação o sistema (Paf-Ecf) deve gerar alguns arquivos e cada arquivo desse deve ser assinado digitalmente conforme o seguinte requisito:

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ANEXO VIII

DADOS TÉCNICOS PARA GERAÇÃO DA ASSINATURA DIGITAL DO REGISTRO TIPO EAD


Campo 02 do Registro tipo EAD: A assinatura digital deve ser gerada mediante os seguintes procedimentos:

1 - aplicar a função unidirecional MD5 uma única vez na porção do arquivo que compreende entre o seu primeiro byte e os bytes de quebra de linha imediatamente anteriores ao registro EAD, ficando excluído do cálculo do hash o registro EAD. O resultado será um código de 128 bits ou 16 bytes que devem ser inseridos no bloco de dados de 128 bytes que será assinado de acordo com a tabela abaixo, onde:

1.1 - a letra ?A? indica o tamanho do hash e deve ser preenchido com valor fixo 16 (em hexadecimal 0x10);

1.2 - a letra ?B? indica o local de preenchimento do hash, sendo que à esquerda fica o byte mais significativo e à direita o menos significativo;

1.3 - a letra ?C? indica os bytes restantes não usados, de preenchimento livre.

Bloco de dados de 128 bytes que deve ser assinado:

ABBBBBBBBBBBBBBBBCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC

2 - criar uma chave privada de 1024 bits, equivalente a um número hexadecimal de 256 dígitos, de conhecimento exclusivo da empresa desenvolvedora do PAF-ECF, devendo ser utilizada a mesma chave para todos os PAF-ECF desenvolvidos pela mesma empresa;

3 - criptografar o bloco de dados gerado conforme disposto no item 1, utilizando a chave a que se refere o item 2 pelo algoritmo RSA de chave pública, sem utilizar nenhuma codificação dos dados além da criptografia RSA, de maneira que o bloco de dados seja recuperado no momento da decriptografia exatamente igual ao detalhado na tabela acima;

4 - com o resultado do procedimento descrito no item 3 será obtido um número hexadecimal com até 256 dígitos que deverá ser informado no campo 02 do Registro tipo EAD.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Bom o problema é que segundo eu pesquisei, inclusive em alguns tópicos aqui do GUJ, mesmo o algoritimo de criptografia RSA utilizando chave de 1024 bits e expoente 16 não aceita um bloco de dados maior que tamanho da chave no caso 128 bytes e de fato quando eu tento aplicar o RSA sobre o bloco exigido pelo requisto de 128 bytes recebo uma exceção (javax.crypto.IllegalBlockSizeException: Data must not be longer than 117 bytes) informando que o bloco de dados deve ser de no máximo 117 bytes.

Nos mesmos tópicos que eu pesquisei aqui no GUJ que relatam esse problema, a sugestão para solucioná-lo é aplicar uma cifra simétrica (AES) no bloco de bytes antes e depois sim aplicar o RSA.

Bom mas como está destacado(vermelho) ali o requisito não permite que eu utilize nada além do RSA.

O problema é SÓ esse

Aguardo qualquer dica o sugestão!!

Obrigado!!

Giu

rdma
Smalltalk

Membro desde: 21/08/2009 19:41:24
Mensagens: 1
Offline

caro colega,

fiz usando o algoritmo RSA c/ padding ( PCKS1 ).
ainda nao homologuei, mas creio que vai funcionar.
agora essa especificação da sefaz, na minha opinião, está um lixo!
Incompleta e dúbia.
Basta comparar a seção 1 com a primeira observação para ver.
E o pior de tudo é que não temos como questionar essas coisas!

Sugiro vc usar o openssl para fazer o serviço para você, pois li uns post de um pessoal que ja homologou dessa forma.
[]´s
giulianon
Entusiasta Java
[Avatar]

Membro desde: 14/07/2008 14:15:19
Mensagens: 17
Offline

rdma wrote:caro colega,

fiz usando o algoritmo RSA c/ padding ( PCKS1 ).
ainda nao homologuei, mas creio que vai funcionar.
agora essa especificação da sefaz, na minha opinião, está um lixo!
Incompleta e dúbia.
Basta comparar a seção 1 com a primeira observação para ver.
E o pior de tudo é que não temos como questionar essas coisas!

Sugiro vc usar o openssl para fazer o serviço para você, pois li uns post de um pessoal que ja homologou dessa forma.
[]´s


Hum vou dar uma olhada na implementação com padding mas pelo que eu estive observando o orgão técnico ainda não possui o eECFc que valida a assinatura dessa forma então mantive a implementação da forma antiga que não requer que a gente inclua o hash nesse bloco. Ai tudo funcionou da forma certa.

Como vou fazer uma pré-homologação vou saber certinho como é toda essa salada chamada homolgação do paf.

Quanto a especificação sem dúvida é um lixo. Como vc disse, dúbia e eu diria ao extremo.

Bem incompleta e na prática alguns tópicos ali são inviáveis.

Tem coisas que nem os fabricantes das impressoras tem como fornecer.

O site da confaz então é um lixo. Fui pegar a documentação lá e acredite era mais desatualizada que os sites dos fabricantes das ecfs e do que a documentação dos órgãos técnicos.

É isso!! E viva o Brasil!!

Valeu pela dica!

Assim que eu homolgar vou postar tudo aqui para o pessoal poder consultar!

Abraço!
tivrfoa
Thread.start()

Membro desde: 26/09/2008 23:13:17
Mensagens: 37
Offline

giulianon wrote:Assim que eu homolgar vou postar tudo aqui para o pessoal poder consultar!

Abraço!

Fala giulianon!

Já conseguiu homologar? Estamos esperando sua ajuda.
giulianon
Entusiasta Java
[Avatar]

Membro desde: 14/07/2008 14:15:19
Mensagens: 17
Offline

tivrfoa wrote:
giulianon wrote:Assim que eu homolgar vou postar tudo aqui para o pessoal poder consultar!

Abraço!

Fala giulianon!

Já conseguiu homologar? Estamos esperando sua ajuda.


Sim finalmente homologuei.

Estava esperando o processo todo (Homologação, Publicação no diário oficial, Registro do software na fazenda estadual, Procedimento para alterações, etc) para poder postar aqui mas diga lá qual a sua dúvida.

Abraço!

Giu
joaogueiral
Smalltalk

Membro desde: 15/03/2010 17:41:08
Mensagens: 4
Offline

E ai Giulianon
Vai rolar ou não a cola depois que voce homologou ??/
Obrigado

João Luis
giulianon
Entusiasta Java
[Avatar]

Membro desde: 14/07/2008 14:15:19
Mensagens: 17
Offline

Opa!! Fala João Luiz, tudo blz?

Cara são tantos detalhes e tanta coisa que ainda não tive tempo de preparar algo mais completo então se quiser fazer uma lista de suas dúvidas e postar aqui eu vou te respondendo.

Abraço!!

Giu

joaogueiral
Smalltalk

Membro desde: 15/03/2010 17:41:08
Mensagens: 4
Offline

Giuliano
Assim. Eu trabalho com linux e FlagShip.
Então pelo que eu entendi eu preciso gerar uma autenticação Md5 no arquivo antes de colocar a linha que tem o o registro EAD.
Isso pra mim parece facil, rodo o comando
md5sun arquivodados.txt > chave.txt
Ele vai me dar a linha com o hash do arquivodados.txt dentro do arquivo com o nome chaves.txt
Dai no registro do ead eu preciso colocar este hash mais a minha assinatura digital.

Minha duvida é em relação a assinatura digital.
Eu gero uma assinatura via o arquivo keygen e mantenho ela salva.
Dai o que eu preciso colocar dentro do arquivo xml ???


Obrigado

João Luis
giulianon
Entusiasta Java
[Avatar]

Membro desde: 14/07/2008 14:15:19
Mensagens: 17
Offline

Então João,

Na verdade a assinatura digital nada mais é que o Hash do arquivo cifrado com um algoritimo de chave pública/privada no caso o RSA.

Então os passos seriam os seguintes.

- Gerar um par de chaves pública/privada. OBS: Vai precisar do expoente da chave pública também.
- Gerar o hash do arquivo.
- Gerar a assinatura utilizando a chave privada e incluir a assinatura no arquivo de dados.
- Incluir no arquivo xml a chave pública e o expoente que será utilizada para validar a assinatura do arquivo no programa eecfc.

Espero ter esclarecido as suas dúvidas.

Se precisar das classes em java posso te enviar.

Abraço!!

Flw!

noslenavi
Smalltalk

Membro desde: 19/06/2007 09:01:39
Mensagens: 4
Offline

giulianon wrote:Então João,

Na verdade a assinatura digital nada mais é que o Hash do arquivo cifrado com um algoritimo de chave pública/privada no caso o RSA.

Então os passos seriam os seguintes.

- Gerar um par de chaves pública/privada. OBS: Vai precisar do expoente da chave pública também.
- Gerar o hash do arquivo.
- Gerar a assinatura utilizando a chave privada e incluir a assinatura no arquivo de dados.
- Incluir no arquivo xml a chave pública e o expoente que será utilizada para validar a assinatura do arquivo no programa eecfc.

Espero ter esclarecido as suas dúvidas.

Se precisar das classes em java posso te enviar.

Abraço!!

Flw!



Olá Parceiro!


Se puderes enviar as classes p/ mim te agradeço. kthebr@hotmail.com


Sem mais, Obrigado!
camolesi
What is classpath?
[Avatar]

Membro desde: 06/04/2010 10:33:54
Mensagens: 6
Offline

Se puderes enviar as classes p/ mim te agradeço.
ivan_camolesi14@yahoo.com.br

Estou apanhando ....

Valew, obrigado!!!

Ivan Camolesi
Analista de sistema
Email: ivan.camolesi@gmail.com
andremizuno
What is classpath?

Membro desde: 01/10/2007 07:47:55
Mensagens: 5
Localização: Brasília - DF
Offline

Olá, cara estou apanhando tb!
Se possível gostaria que me enviasse as classes para a assinatura ead... grato!
andremizuno@gmail.com

André Y Mizuno
Analista / Desenvolvedor
Java Programmer
[MSN]
leopoldof
GUJ Master

Membro desde: 07/03/2008 07:40:45
Mensagens: 1204
Offline

Conseguiram fazer as assinaturas do EAD? Estou com problemas aqui pra fazer essa parte....
Andre Rosa
GUJ Master
[Avatar]

Membro desde: 22/01/2010 07:10:22
Mensagens: 1318
Offline

Puxa, não estou nem dormindo a noite com esta história de PAF-ECF. Pegando carona no tópico, alguém sabe onde eu obtenho o nº do laudo?


Obg.

Um programador pobre.
[ICQ]
leopoldof
GUJ Master

Membro desde: 07/03/2008 07:40:45
Mensagens: 1204
Offline

Alguém conseguiu fazer a assinatura do EAD?
 
Índice dos Fóruns » Assuntos gerais necessariamente ligados a tecnologia
Ir para:   
Powered by JForum 2.1.8 © JForum Team