encryption using openssl com chaves rsa personalizadas

0

Eu fiz o seguinte arquivo

asn1=SEQUENCE:rsa_key

[rsa_key]
version=INTEGER:0
modulus=INTEGER:305512047893009
pubExp=INTEGER:78221649299689
privExp=INTEGER:181909
p=INTEGER:17477423
q=INTEGER:17480383
e1=INTEGER:181909
e2=INTEGER:181909
coeff=INTEGER:1611938 

este arquivo asn_format_mykey.txt

Então, eu corro os comandos

$openssl asn1parse -genconf asn_format_mykey.txt -out key.der
$openssl rsa -inform der -in key.der -outform pem > key.pem
$openssl rsa -inform der -in key.der -outform pem -pubout>pkey.pem

Então nós temos o key.pem (chave privada) e o pkey.pem (chave pública)

Então, eu tento criptografar uma pequena mensagem usando a opção -raw com o openssl rsautl

$ echo 'aaaa'| openssl rsautl -encrypt -pubin -inkey pkey.pem -raw -out message.encrypted

e eu tenho

RSA operation error 140063665198744:error:0406B07A:rsa routines:RSA_padding_add_none:data too small for key size:rsa_none.c:74:

Alguma ideia de como corrigir isso?

    
por 111 26.05.2018 / 21:30

1 resposta

2

Seu módulo é excepcionalmente pequeno e inseguro para RSA. Mas eu acho que você sabe disso!

O módulo em decimal é 305512047893009. Em hexadecimal que é 0115DC91160DA11.

Esse é um número com exatamente 7 bytes de comprimento. Você passou o sinalizador "-raw", o que significa que você não está usando nenhum esquema de preenchimento padrão. Isso significa que você é responsável por garantir que a mensagem de entrada esteja formatada corretamente para a criptografia RSA. Na prática, isso significa que sua mensagem de entrada também deve ter exatamente 7 bytes de comprimento e menor em valor que o módulo. Você precisará criar um arquivo binário e usá-lo como entrada.

Usando um editor hexadecimal eu criei um com os bytes: 01146161616161 e salvei isso em um arquivo "message.plain", e então usei o mesmo comando que você, mas com "-in message.plain" adicionado:

$ openssl rsautl -encrypt -pubin -inkey pkey.pem -raw -in message.plain -out message.encrypted

Isso criptografou a mensagem com sucesso.

Nota: Está tudo bem como exercício. Para qualquer trabalho real, você não deve inventar seu próprio esquema de preenchimento. Use um dos existentes.

    
por 27.05.2018 / 00:54

Tags