Openssl passando uma frase pass binária como um argumento

3

Este comando openssl está funcionando bem para mim.

openssl aes-128-ecb -d -in encrypted_base64.txt -K 4D1D75237C31E7732030C69F209F23154418373335E049C4F567C7B6D422ABD0 -base64

Como eu faria o equivalente com um arquivo de frase secreta? Estou tentando isso:

openssl aes-128-ecb -d -in encrypted_base64.txt -pass file:data_key_plaintext.bin -base64

E recebo um bad magic number . data_key_plaintext.bin contém os bytes do -K do comando de trabalho. por exemplo,

> hexdump data_key_plaintext.bin
0000000 4d 1d 75 23 7c 31 e7 73 20 30 c6 9f 20 9f 23 15
0000010 44 18 37 33 35 e0 49 c4 f5 67 c7 b6 d4 22 ab d0
0000020

A documentação do openssl diz

file:pathname - the first line of pathname is the password

Como isso se aplica a uma frase secreta binária?

    
por russau 24.08.2015 / 22:10

1 resposta

5

Uma senha especificada por -pass é diferente da chave real para criptografia especificada por -K . O openssl processa uma senha com funções hash para derivar uma chave real com um comprimento de bit específico. Portanto, as senhas geralmente são sequências curtas e memoráveis usando apenas caracteres imprimíveis.

Você pode ver chaves, IVs e sais reais por -P . Observe que sua chave é truncada para comprimento de chave de 128 bits com aes-128-ecb . Observe também que o -ecb mode é fraco e não é adequado para uso comum.

$ openssl aes-128-ecb -P -K 4D1D75237C31E7732030C69F209F23154418373335E049C4F567C7B6D422ABD0
salt=EA7B538100000000
key=4D1D75237C31E7732030C69F209F2315
$ openssl aes-256-cbc -P -pass pass:secret
salt=332A7608A01A609A
key=1B27C46F481CFA793C665EEFC3C5B6867735CD326840C598AA6EBCCA5829D066
iv =CE223BAEDAA625C02A397D3E1FCE8E75

De acordo com o manual -K não suporta entrada de arquivo. Você pode querer fazer algo assim:

openssl aes-128-ecb -d -in encrypted_base64.txt -K $(hexdump -v -e '"%02X"' data_key_plaintext.bin) -base64
    
por 24.08.2015 / 23:00