O envio de arquivos com segurança é muito comum entre pessoas que querem manter a integridade dos dados, para isso melhor ainda usar uma estrutura de chaves assimétricas para o envio deste documento ou arquivo. Para isso vamos começar criando o par de chaves, usarei o OpenSSL 1.0.1e-fips 11 Feb 2013
Num algoritmo de criptografia assimétrica, uma mensagem cifrada com a chave pública pode somente ser decifrada pela sua chave privada correspondente.
Os algoritmos de chave pública podem ser utilizados para autenticidade e confidencialidade:
Confidencialidade: A chave pública é usada para cifrar mensagens, com isso apenas o dono da chave privada pode decifrá-la, evitando assim que terceiros possam ler a mensagem.
Autenticidade: A chave privada é usada para cifrar a mensagem, com isso garante-se que apenas o dono da chave poderia tê-la editado.
Criar chave privada:
root@redhat::~# openssl genrsa -out private.pem 2048
Criar chave publica como base a chave privada:
root@redhat::~# openssl rsa -in private.pem -out public.pem -outform PEM -pubout
O arquivo deve ser cifrado com a chave publica e enviado ao destinatário pelo canal de comunicação adequado. O dono do arquivo de posse da sua chave privada pode decriptar o arquivo ou documento que lhe foi enviado. Vale lembrar que a chave publica pode ser enviado normalmente para todas as pessoas que vão lhe enviar algo com segurança.
Cifrar o arquivo com a chave publica para o envio:
root@redhat::~# openssl rsautl -encrypt -inkey public.pem -pubin -in file.txt -out file.encrypt.txt
Após o recebimento do arquivo pelo dono, o processo inverso é muito simples, mas o dono deve ter a posse da chave privada.
Decriptar o arquivo enviado (file.encrypt.txt):
root@redhat::~# openssl rsautl -decrypt -inkey private.pem -in file.encrypt.txt -out file.decrypt.txt