num artigo anterior, introduzi o GnuPG verificando um ficheiro assinado e cifrando um ficheiro para um destinatário usando uma chave pública. Eu também compartilhei como criar um par de chaves e exportar uma chave pública para que pudéssemos receber mensagens criptografadas. Neste artigo, vou demonstrar como assinar arquivos antes de compartilhar via e-mail ou publicação em um site.
com o GnuPG, existem vários métodos de assinatura de um arquivo.
$ gpg --help | grep -i signSign, check, encrypt or decrypt -s, --sign make a signature --clear-sign make a clear text signature -b, --detach-sign make a detached signature --verify verify a signature
como cada opção é discutida, eu vou assinar um arquivo de texto simples.
$ cat sample.txt Sample text for gpg signing
Faça uma assinatura
com a opção --sign
, o arquivo é efetivamente criptografado com a chave privada. A chave pública é necessária para ver o conteúdo do arquivo. Isto obriga o destinatário a verificar a origem e remove qualquer conteúdo de texto claro do trânsito. Não é privado, uma vez que qualquer pessoa com a chave pública pode descriptografar o arquivo.
$ gpg -s sample.txt
isto resulta num ficheiro chamado sample.txt.gpg.
$ file sample*sample.txt: ASCII textsample.txt.gpg: data
Para verificar apenas a assinatura, use o --verify
opção. Para visualizar o conteúdo e mostrar a verificação da Assinatura, use a opção --decrypt
.
$ gpg --decrypt sample.txt.gpg Sample text for gpg signinggpg: Signature made Sat 30 May 2020 09:16:24 AM EDTgpg: using DSA key 15AC***********...omitted...
Faça uma assinatura destacada
a opção de assinatura destacada está disponível para proporcionar a todos a opção de ver a mensagem sem ter a chave pública. Isto cria um ficheiro de assinatura separado que é usado para verificar a mensagem original, se desejar. Em sua forma mais simples, este arquivo contém um hash da mensagem original e é criptografado com a chave privada. Qualquer um com a chave pública pode abrir a assinatura e, em seguida, comparar hashes para verificar a integridade do arquivo assinado.
Crie o ficheiro de assinatura usando a opção --detach-sign
.
$ gpg -b sample.txt
o resultado é separado .ficheiro de dados sig.
$ file sample*sample.txt: ASCII textsample.txt.gpg: datasample.txt.sig: data
Se você não deseja compartilhar, publicar, e-mail ou um arquivo de dados, você pode assinar o arquivo com o --armor
opção, e ele irá criar um arquivo de texto ASCII com a assinatura. Ele também vai usar o .extensão asc em vez do .extensão sig:
$ cat sample.txt.asc -----BEGIN PGP SIGNATURE-----iF0EABECAB0WIQQVrPeUo9lk0dnOTCbvwxHCv6EJdAUCXtO/yAAKCRDvwxHCv6EJdC2BAJ49fIcOdBUdE0PELySEMlKNzVnZLgCdG1gsTim3gab2dgL6qagHArSlgq8==IvP/-----END PGP SIGNATURE-----
o ficheiro de texto simples original e o ficheiro de assinatura separado devem ser disponibilizados ao destinatário.
para verificar a assinatura, indique o ficheiro de assinatura e, em seguida, o ficheiro original.
$ gpg --verify sample.txt.sig sample.txt
se tiverem sido usados os nomes por omissão, poderá deixar de fora o nome do ficheiro não cifrado.
$ gpg --verify sample.txt.sig gpg: assuming signed data in 'sample.txt'gpg: Signature made Sat 30 May 2020 09:23:53 AM EDT...omitted...
Make a clear text signature
the --clear-sign
option is a newer option in terms of the long history of GPG and is very common for files published to web sites such as the Fedora download CHECKSUM files. O conteúdo pode ser lido por qualquer um. A informação da Assinatura também está disponível no mesmo arquivo para aqueles que querem verificar a origem e integridade do conteúdo.
a opção --clear-sign
irá criar um novo ficheiro com o.extensão asc.
$ gpg --clear-sign sample.txt
$ file sample*sample.txt: ASCII textsample.txt.asc: ASCII textsample.txt.gpg: datasample.txt.sig: data
para verificar a Assinatura, use a opção --verify
:
$ gpg --verify sample.txt.asc gpg: Signature made Sat 30 May 2020 09:27:56 AM EDT...omitted...gpg: WARNING: not a detached signature; file 'sample.txt' was NOT verified!
Note que uma mensagem é exibida durante o aviso do processo de verificação de que o arquivo original associado não está assinalado. Você pode mudar o nome deste arquivo antes de postá-lo em seu site. A verificação ainda irá verificar o conteúdo do arquivo.
embora este seja muitas vezes o método mais conveniente para os consumidores de seus produtos, há um aviso na página de man GPG que assinaturas destacadas são a melhor opção quando a verificação completa é necessária.
da página do gpg man:
nota: ao verificar uma assinatura de cleartext, o GPG verifica apenas o que compõe os dados assinados de cleartext e não quaisquer dados extra fora da assinatura de cleartext ou das linhas de cabeçalho directamente a seguir à linha de marcação do traço. A opção –output pode ser usada para escrever os dados realmente assinados, mas existem outras armadilhas com este formato também. Sugere-se evitar assinaturas cleartext em favor de assinaturas separadas.
usando um teclado específico
os exemplos acima foram todos assinados com a primeira chave privada disponível no meu Porta-Chaves. Eu posso querer usar uma chave diferente quando estou assinando um arquivo para publicação em um site. Um teclado é criado especificamente para o projeto ou produto. O teclado pode até estar num novo porta-chaves partilhado.
$ gpg --keyring /etc/gpgkeys --no-default-keyring --full-gen-key <other options>
quando um ficheiro é assinado ou encriptado, certifique-se de indicar também a opção --keyring
.
mesmo que apenas uma pessoa esteja usando a chave para assinar arquivos, faça um teclado separado para usar para assinar. Não use a mesma chave para outras tarefas diárias, como criptografia de E-mail pessoal. Você pode listar os nomes das chaves privadas disponíveis com gpg --list-secret
. O ID, nome ou e-mail pode ser usado para identificar a chave.
para assinar o ficheiro com uma chave específica de um porta-chaves, use a opção de identidade --local-user
.
$ gpg --local-user "My Project 2" --clear-sign sample.txt
embrulhe
se o seu ficheiro de texto simples for uma lista de traços de códigos de validação para os seus downloads de produtos, esse ficheiro, quaisquer ficheiros de assinatura e a chave pública utilizada para verificar as assinaturas podem ser todos publicados num sítio web. Os consumidores podem então verificar os downloads antes de instalar qualquer software em seus sistemas.