Ir para o conteúdo
fakada

AT encriptação RSA / Oracle PL/SQL

Mensagens Recomendadas

fakada

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Rui Carlos

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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
fakada

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.

Editado por fakada

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Rui Carlos

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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
fakada

É 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ossadas

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

Editado por ossadas

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
CarlosPac

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Xendro

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.

Editado por Xendro

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.