criptografia Assimétrica com Openssl

Iniciado por pentestbox, 15 de Dezembro de 2017, 13:04

tópico anterior - próximo tópico

pentestbox

Ola pessoal, gostaria de saber como utilizar a ferramenta Openssl para criar mensagens criptografadas Assimétricas, gostaria de saber os comandos direto no terminal para gerar o par de chaves assimétrica e o comando para importar a chave pública,e por último usar a chave pública gerada para criptografar uma mensagem, sei fazer esse procedimento dom Gnupg, mais não sei como fazer com Openssl, gostaria da ajuda de vocês.

Desde já Agradeço.

pentestbox

Bom pessoal, depois de tanto pesquisar, descobrir como criar o par de chaves, segue o passo:

1 - Criando chave privada:

$ openssl genrsa 4096 > chavepriv

O comando acima gera uma chave RSA de 4096 bits e armazena dentro do arquivo chavepriv

2 - Gerando chave pública

$ openssl rsa -in chavepriv -pubout > chavepub

O comando acima a partir da chave privada gera a chave pública.

Agora vem a parte em que não estou conseguindo resolver e gostaria da ajuda de vcs, o problema é que não estou conseguindo criptografar arquivos de texto grandes, estou utilizando o comando abaixo:

$ openssl rsautl -encrypt -pubin -inkey chavepub -in mensagem.txt > saida

O problema é que está me retornando o seguinte erro:

RSA operation error
140407041135936:error:0406D06E:rsa routines:RSA_padding_add_PKCS1_type_2:data too large for key size:../crypto/rsa/rsa_pk1.c:125:



Gostaria de saber como resolver esse problema.
Desde já agradeço.

zekkerj

Chegou a ler o manual do openssl rsautl? Tem lá o aviso...
rsautl because it uses the RSA algorithm directly can only be used to sign or verify small pieces of data.
Ou, na minha tradução livre...
devido a usar o algoritmo RSA diretamente, rsautl só pode ser usado para assinar/verificar pequenos blocos de dados.

Eu bem que estava estranhando sua solicitação... normalmente não se usa o openssl pra criptografar mensagens, e sim pra gerir certificados de criptografia, chaves públicas/privadas, etc....
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

pentestbox

Citação de: zekkerj online 16 de Dezembro de 2017, 22:16
Chegou a ler o manual do openssl rsautl? Tem lá o aviso...
rsautl because it uses the RSA algorithm directly can only be used to sign or verify small pieces of data.
Ou, na minha tradução livre...
devido a usar o algoritmo RSA diretamente, rsautl só pode ser usado para assinar/verificar pequenos blocos de dados.

Eu bem que estava estranhando sua solicitação... normalmente não se usa o openssl pra criptografar mensagens, e sim pra gerir certificados de criptografia, chaves públicas/privadas, etc....

Então neste caso para criptografar uma mensagem so pode ser  com criptografia simétrica, por exemplo usando algoritimos simétricos como o AES256, a mesma chave para criptografar sera a de descriptografar.
Eu pensei que era possível fazer de forma assimétrica, pois consigo criptografar mensagens com Gnupg de forma assimétrica usando par de chaves.

zekkerj

Possível é. Só não vale a pena... a criptografia assimétrica é mais lenta e mais fraca que a simétrica. Basta comparar o tamanho das chaves...
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

pentestbox

Citação de: zekkerj online 20 de Dezembro de 2017, 17:35
Possível é. Só não vale a pena... a criptografia assimétrica é mais lenta e mais fraca que a simétrica. Basta comparar o tamanho das chaves...

Eu não entendi direito, que a criptografia assimétrica é mais lenta blz, pois é mais complexa, mais acredito que não seja mais fraca que a simétrica, uma vez que usa um par de chaves, uma privada e uma pública, uma para criptografar e outra para descriptografar, enquanto a simétrica usa uma única chave tanto para criptografar quanto para descriptografar, e quanto a algorítimos simetrico nos temos o AES256 bits que é o mais forte e no Assimétrico o RSA que vai de 1024 a 4096 bits, não sería então a simétrica inferior a assimétrica ou estou enganado?

zekkerj

Esse é um erro comum de avaliação. Aliás, dois erros.

A criptografia assimétrica é mais lenta por ser baseada em operações de software, não necessariamente por ser mais complexa.

A força de um algoritmo de criptografia é medida pelo tempo necessário para que uma mensagem seja decifrada sem as chaves corretas, por qualquer meio utilizável.

No caso dos algoritmos assimétricos mais populares, como o RSA e o DSA, uma chave de 2048 bits é capaz de gerar uma cifra cuja resistência é estimada, atualmente, em torno de um ano. Assim, assuntos cuja duração da privacidade precisa ser maior que isso exigem chaves maiores.

A grande vantagem da criptografia assimétrica é justamente a existência do par de chaves, permitindo que ela seja usada para assinatura digital.


Enviado do meu smartphone
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D