terça-feira, 15 de outubro de 2019

OpenSSL Shell linha de comando Criar Chaves Certificado, Assinar , Validar Cifrar e Decifrar.

Resultado de imagem para shell bash



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.