fakada Posted April 9, 2013 at 02:29 PM Report #502351 Posted April 9, 2013 at 02:29 PM Boa tarde, No documento da AT diz que "Para garantir a confidencialidade, a chave simétrica tem de ser cifrada com a chave pública do Sistema de Autenticação de acordo com o algoritmo RSA e codificada em Base 64". Eu preciso implementar isso em oracle pl/sql. A informação dos packages de encriptação tem estes algoritmos: DBMS_CRYPTO Cryptographic Hash Functions HASH_MD4, HASH_MD5, HASH_SH1 DBMS_CRYPTO MAC (Message Authentication Code) Functions HMAC_MD5, HMAC_SH1 DBMS_CRYPTO Encryption Algorithms ENCRYPT_DES, ENCRYPT_3DES_2KEY, ENCRYPT_3DES, ENCRYPT_AES128, ENCRYPT_AES192, ENCRYPT_AES256, ENCRYPT_RC4 DBMS_CRYPTO Block Cipher Suites DES_CBC_PKCS5, DES3_CBC_PKCS5, alternativa: CHAIN_ECB ... Alguem me sabe dizer se me consigo safar com isto ? Cumprimentos Fabio
fakada Posted April 9, 2013 at 03:18 PM Author Report #502354 Posted April 9, 2013 at 03:18 PM RC4 é RSA certo? É esse o método usado ?
Rui Carlos Posted April 9, 2013 at 08:26 PM Report #502391 Posted April 9, 2013 at 08:26 PM O RC4 é uma cifra simétrica, enquanto que o RSA é assimétrica, pelo que são cifras consideravelmente diferentes. Pelo que vi da documentação, o PL/SQL não disponibiliza o RSA. Em todo o caso, não me parece grande ideia fazer este tipo de operações ao nível da BD. Rui Carlos Gonçalves
fakada Posted April 9, 2013 at 09:05 PM Author Report #502397 Posted April 9, 2013 at 09:05 PM (edited) Boa noite Rui, Obrigado pela resposta. Mas já agora, ao nivel de base de dados acredita que tenho um ERP com centenas de utilizadores concurrenciais de várias empresas da mesma BD em multitenant, a gerar hash's do saft sem nunca ter havido problema. Em 80 milhoes de registos na base de dados, zero falhas de dados 🙂 Se há bom sitio para ter isso é mesmo ao nivel da BD... pelo menos garante que se o registo for inserido, é porque correu bem a assinatura do mesmo 😉 E pronto, lá vou ter que ter uma chamada ao OS para fazer a assinatura. Por acaso sabes me dizer como fazer com openssl a assinatura RSA referida no documento ? Cumps Fabio O RC4 é uma cifra simétrica, enquanto que o RSA é assimétrica, pelo que são cifras consideravelmente diferentes. Pelo que vi da documentação, o PL/SQL não disponibiliza o RSA. Em todo o caso, não me parece grande ideia fazer este tipo de operações ao nível da BD. Olá de novo Rui. Sabes me dizer se a criação da hash nos documentos do SAFT usa o mesmo método? Não pois nao? pelo menos com openssl é chamado o método SHA1 certo? Cumprimentos Fabio O RC4 é uma cifra simétrica, enquanto que o RSA é assimétrica, pelo que são cifras consideravelmente diferentes. Pelo que vi da documentação, o PL/SQL não disponibiliza o RSA. Em todo o caso, não me parece grande ideia fazer este tipo de operações ao nível da BD. Edited April 9, 2013 at 09:01 PM by fakada
Rui Carlos Posted April 9, 2013 at 09:41 PM Report #502407 Posted April 9, 2013 at 09:41 PM Obrigado pela resposta. Mas já agora, ao nivel de base de dados acredita que tenho um ERP com centenas de utilizadores concurrenciais de várias empresas da mesma BD em multitenant, a gerar hash's do saft sem nunca ter havido problema. Em 80 milhoes de registos na base de dados, zero falhas de dados 🙂 Se há bom sitio para ter isso é mesmo ao nivel da BD... pelo menos garante que se o registo for inserido, é porque correu bem a assinatura do mesmo 😉 Consegues fazer facilmente também usando uma outra linguagem (com as mesmas garantias). O grande problema é que o PL/SQL não foi feito para este tipo de funções, e dispões das bibliotecas que muitas outras linguagens genéricas dispõem. E pronto, lá vou ter que ter uma chamada ao OS para fazer a assinatura. Por acaso sabes me dizer como fazer com openssl a assinatura RSA referida no documento ? Vê se encontras o que pretendes neste tópico. Sabes me dizer se a criação da hash nos documentos do SAFT usa o mesmo método? Não pois nao? pelo menos com openssl é chamado o método SHA1 certo? Não sei. Mas é mais provável que use uma função de hash (como o SHA1) do que RSA. Rui Carlos Gonçalves
fakada Posted April 9, 2013 at 09:48 PM Author Report #502411 Posted April 9, 2013 at 09:48 PM É tens razão Rui... é SHA1. Já andei nessas 27 páginas e nao consegui ver ninguem a fazer isso com openssl. 😞 Mas de certeza que o openssl dá para assinar isso... só que como para mim esta área de crypt é totalmente agua estranha... eu nem nadar consigo! Consegues fazer facilmente também usando uma outra linguagem (com as mesmas garantias). O grande problema é que o PL/SQL não foi feito para este tipo de funções, e dispões das bibliotecas que muitas outras linguagens genéricas dispõem. Vê se encontras o que pretendes neste tópico. Não sei. Mas é mais provável que use uma função de hash (como o SHA1) do que RSA.
rumbafum Posted April 9, 2013 at 09:54 PM Report #502418 Posted April 9, 2013 at 09:54 PM Então mas os exemplos fornecidos pelas finanças estão com openssl... http://info.portaldasfinancas.gov.pt/NR/rdonlyres/0C2016C6-9349-46D1-BF2C-B8C7052882A8/0/OficioCirculado_500002012.pdf 1 Report
ossadas Posted April 17, 2013 at 10:38 AM Report #503563 Posted April 17, 2013 at 10:38 AM (edited) Boa tarde, No documento da AT diz que "Para garantir a confidencialidade, a chave simétrica tem de ser cifrada com a chave pública do Sistema de Autenticação de acordo com o algoritmo RSA e codificada em Base 64". Eu preciso implementar isso em oracle pl/sql. A informação dos packages de encriptação tem estes algoritmos: DBMS_CRYPTO Cryptographic Hash Functions HASH_MD4, HASH_MD5, HASH_SH1 DBMS_CRYPTO MAC (Message Authentication Code) Functions HMAC_MD5, HMAC_SH1 DBMS_CRYPTO Encryption Algorithms ENCRYPT_DES, ENCRYPT_3DES_2KEY, ENCRYPT_3DES, ENCRYPT_AES128, ENCRYPT_AES192, ENCRYPT_AES256, ENCRYPT_RC4 DBMS_CRYPTO Block Cipher Suites DES_CBC_PKCS5, DES3_CBC_PKCS5, alternativa: CHAIN_ECB ... Alguem me sabe dizer se me consigo safar com isto ? Cumprimentos Fabio Boas, Eu acredito que é possível em puro pl/sql... porque estive perto, mesmo perto de descobrir, mas como não tenho tempo e a solução foi criar em java. As versoes BD XE 10g e inferior nao aceita 'módulos' de java, mas corre lindamente em versões igual ou superior a DB 11g e XE 11g. Cmps Edited April 17, 2013 at 10:39 AM by ossadas
CarlosPac Posted November 20, 2014 at 04:33 PM Report #571712 Posted November 20, 2014 at 04:33 PM Boa tarde, No documento da AT diz que "Para garantir a confidencialidade, a chave simétrica tem de ser cifrada com a chave pública do Sistema de Autenticação de acordo com o algoritmo RSA e codificada em Base 64". Eu preciso implementar isso em oracle pl/sql. A informação dos packages de encriptação tem estes algoritmos: DBMS_CRYPTO Cryptographic Hash Functions HASH_MD4, HASH_MD5, HASH_SH1 DBMS_CRYPTO MAC (Message Authentication Code) Functions HMAC_MD5, HMAC_SH1 DBMS_CRYPTO Encryption Algorithms ENCRYPT_DES, ENCRYPT_3DES_2KEY, ENCRYPT_3DES, ENCRYPT_AES128, ENCRYPT_AES192, ENCRYPT_AES256, ENCRYPT_RC4 DBMS_CRYPTO Block Cipher Suites DES_CBC_PKCS5, DES3_CBC_PKCS5, alternativa: CHAIN_ECB ... Alguem me sabe dizer se me consigo safar com isto ? Cumprimentos Fabio Viva Fábio, Estou exactamente nessa situação! A minha BD é uma 9i O package de crypto ainda é apenas DBMS_CRYPTO_TOOLKIT Necessito de guardar as ditas assinaturas dos documentos (facturas principalmente) e não faço a mínima ideia como faze-lo! Tenho andado às voltas com o utl_encode.base64_encode mas os resultados não parecem iguais aos do exemplo da especificação da AT! Será que alguém me pode apontar um caminho? Obrigado Carlos
CarlosPac Posted November 28, 2014 at 04:45 PM Report #572346 Posted November 28, 2014 at 04:45 PM http://info.portaldasfinancas.gov.pt/NR/rdonlyres/0C2016C6-9349-46D1-BF2C-B8C7052882A8/0/OficioCirculado_500002012.pdf Viva, Alguém acha possível fazer isto em pl/sql no oracle 9i ? Começo a ficar desesperado... Obrigado Carlos
Xendro Posted December 22, 2016 at 11:20 AM Report #601460 Posted December 22, 2016 at 11:20 AM (edited) Viva. Ja pasou muito tempo desde a ultima mensagem neste topico. Na altura que tive este problema tive de implementar chamadas a java para resolver o problema. agora voltei ao assunto pois quero melhoar alguns aspectos do controle de transação. Alguem tem alguma novidade sobre o asunto ? uma alternativa e chamar um web service com utl_http! Obrigado. Edited December 22, 2016 at 11:24 AM by Xendro
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now