Assinar
e verificar texto/arquivos:
para chaves públicas através da Linha de Comando OpenSSL
Introdução: Existem muitas maneiras de fazer essa uma delas:
Este
pequeno guia mostra-lhe como utilizar a Linha de Comandos do OpenSSL
para assinar um arquivo e como verificar a assinatura deste arquivo.
A
prática da assinatura digital e fundamental para garantir a
integridade e a autoria do documento, podemos ainda reforçar este
propósito com a criptografia. para provar a propriedade de uma chave
ou para provar que um arquivo não foi modificado desde que você o
assinou.
Isto
funciona tanto com pequenos ficheiros de texto como com grandes
fotografias, documentos ou ficheiros PDF.
Sou
escritor e blogueiro freelancer, não tenho nenhum, tipo de
patrocínio se você gosta de meus post se eles estão sendo úteis
considere fazer uma doação através do botão doação, grato.
Gerar um par de chaves
Vamos gerar um
novo par de chaves para isto. Uma par de chaves Publica e Privada são
necessários para poder assinar criptografar, e fazer o caminho
inverso.
Você também pode
usar um já existente. Altere o coteúdo da mensagem no seguinte
comando e execute-o para gerar um par de chaves auto assinado:
openssl req -nodes
-x509 -sha256 -newkey rsa:4096 -keyout edpesPV.key -out edpesKey.crt
-days 365 -subj "/C=NL/ST=Zuid Brasil/L=SaoPaulo O=Edson
Pessotti OU=IT Dept/CN=”edpes Sign Key"".
root@criativo:/home/edpes/SSLtest#
openssl req -nodes -x509 -sha256 -newkey rsa:4096 -keyout edpesPV.key
-out edpesKey.crt -days 365 -subj "/C=NL/ST=Zuid
Brasil/L=SaoPaulo O=Edson Pessotti OU=IT Dept/CN=”edpes Sign Key"
Generating a 4096
bit RSA private key
........................................................++
......++
writing new
private key to 'edpesPV.key'
-----
root@criativo:/home/edpes/SSLtest#
ls
edpesKey.crt
edpesPV.key teste.txt teste.txt.sha256
Crie também um
pequeno arquivo de texto para testar o processo de assinatura:
echo "Olá,
Mundo!" > teste.txt
Assine
o arquivo
Use o seguinte
comando para assinar o arquivo. Nós realmente pegamos o hash sha256
do arquivo e assinamos isso, tudo em um comando openssl:
openssl dgst
-sha256 -sign edpesPV.key -out teste2.txt.sha256 teste.txt
Isso resultará em
um arquivo sign.txt com o conteúdo, e o arquivo sign.txt.sha256 com
o hash assinado deste arquivo.
Você pode colocar
o arquivo e a chave pública na internet ou onde quiser. Mantenha a
chave privada muito segura e privada.
Verifique
a assinatura
Para verificar a
assinatura, você precisa da chave pública do certificado
específico. Podemos obter isso a partir do certificado usando o
seguinte comando:
root@criativo:/home/edpes/SSLtest#
openssl dgst -sha256 -verify <(openssl x509 -in edpesKey.crt
-pubkey -noout) -signature teste2.txt.sha256 teste.txt
Verified OK
Se a validação
falhou, isso significa que o hash de arquivo não corresponde ao hash
assinado. O arquivo provavelmente foi modificado ou adulterado. O
resultado de uma validação falhada tem a aparência abaixo:
Falha na
verificação
Assinatura
Converter
para o Formato base64
Para obter uma
versão de texto da assinatura (o arquivo contém conteúdo binário)
você pode usar o comando base64. A versão textual é mais fácil de
publicar online com o arquivo:
base64
sign.txt.sha256 > sign.txt.sha256.txt
Para voltar à
saída parsable do openssl, use o comando base64 -d:
base64 -d
sign.txt.sha256.txt > sign.txt.sha256
Até aqui
conseguimos garantir que o arquivo não foi adulterado, e a sua
autoria, no entanto a mensagem em si continuara vísivel, para
garantir a confidencialidade presisaremos criptografar o arquivo,
podemos fazer criando uma nova pasta e copiando o arquivo e seu hash
para a nova pasta , em seguida criptografamos a pasta com a chave
privada, e enviamos a pasta criptografrada para seu destino, onde o
recepetor de posse da chave pública previamente enviada poderá
decriptar e verificar a assinatura do arquivo recebido.
Criptografar
arquivo com algoritmo assimétrico RSA
#openssl rsautl -in teste.txt -out teste.rsa -encrypt -pubin -inkey chaveprivada Descriptografar arquivo com algoritmo assimétrico RSA #openssl rsautl -in teste.rsa -out teste.rec -decrypt -inkey chavepublica
Deste forma os
três pilares básicos da Segurança da Informação estão
realizados de forma satisfatória. Garantindo a Confiabilidade a
Integridade e a Autoria.
Nenhum comentário:
Postar um comentário