Criando uma Assinatura DSA a partir da linha de comando do Linux

2

Estou procurando uma ferramenta de linha de comando Linux / Unix para criar uma assinatura DSA a partir de um determinado arquivo / dados e uma chave privada.

Eu conheço a ferramenta xmlsec1 . Mas eu gostaria de algo mais simples. Parece que o OpenSSL fornece essa função como uma biblioteca de desenvolvedor, mas não como uma ferramenta.

    
por mparaz 07.01.2011 / 13:47

4 respostas

3

É feito com "openssl dgst" - não é o lugar mais óbvio para colocar ...

Encontrado em:

link

openssl dsaparam 1024 < /dev/random > dsaparam.pem

openssl gendsa dsaparam.pem -out dsa_priv.pem

openssl dsa -in dsa_priv.pem -pubout -out dsa_pub.pem

echo "foobar" > foo.txt

sha1sum < foo.txt | awk '{print $1}' > foo.sha1

openssl dgst -dss1 -sign dsa_priv.pem foo.sha1 > sigfile.bin

openssl dgst -dss1 -verify dsa_pub.pem -signature sigfile.bin foo.sha1
    
por 10.01.2011 / 06:36
0
por 07.01.2011 / 16:12
0

Você deseja criar uma assinatura para um arquivo de modo que a integridade desse arquivo possa ser verificada? Eu acho que você está procurando pelo Gnu Privacy Guard (GnuPG).

gpg --output filename.sig --detach-sig filename

Isso cria um arquivo de assinatura, filename.sig, com base no nome do arquivo original, que pode ser verificado com

gpg --verify filename.sig filename
    
por 07.01.2011 / 16:30
0

O seguinte conjunto de comandos tentative parece funcionar com o openssl 1.0.2g e 1.1.0g. Em comparação com essa outra outra resposta , ela visa gerar uma assinatura do arquivo (incluindo a etapa de hash padrão obrigatória), em vez que uma assinatura (incluindo uma segunda etapa hash) da representação ASCII hexadecimal minúscula de um primeiro hash do arquivo. Também usa hash e tamanho de módulo mais modernos.

# generate parameters with 2048-bit DSA, SHA-256 (can be common to multiple keys)
openssl genpkey -genparam -algorithm DSA -pkeyopt dsa_paramgen_bits:2048 -pkeyopt dsa_paramgen_q_bits:256 -pkeyopt dsa_paramgen_md:sha256 -out dsaparams.pem

# generate a private key and extract the public key
openssl genpkey -paramfile dsaparams.pem -out dsaprivkey.pem
openssl dsa -in dsaprivkey.pem -pubout > dsapubkey.pem

# create a file "myfile" to be signed
echo 'The Magic Words are Squeamish Ossifrage' > myfile

# create signature "myfile.sig"
openssl dgst -sha256 -sign dsaprivkey.pem myfile > myfile.sig

# verify "myfile" against signature "myfile.sig" and public key
openssl dgst -sha256 -verify dsapubkey.pem -signature myfile.sig myfile

Nota: Uma tentativa anterior tornou o openssl 1.0.2g gerar assinaturas com 160 bits q (talvez usando SHA-1). Por comentário , adicionei -sha256 a openssl dgst , mas não fez diferença. As experiências sugerem que é necessário usar -pkeyopt dsa_paramgen_q_bits:256 , mesmo que a página do manual explique explicitamente -pkeyopt dsa_paramgen_md:sha256 cuida disso:

dsa_paramgen_md:digest
The digest to use during parameter generation. Must be one of sha1, sha224 or sha256. If set, then the number of bits in q will match the output size of the specified digest and the dsa_paramgen_q_bits parameter will be ignored (..)

    
por 04.10.2018 / 18:19