Grande parte dessa resposta é extraída do Wiki do Arch e a documentação do GnuPG . Quaisquer recomendações nesta resposta são puramente minha opinião, e devem ser tomadas com uma tonelada de sal.
Criando uma chave PGP
GUI
-
Abra o aplicativo Senhas e Chaves (também conhecido como
seahorse
) e clique em+
(ou vá para Arquivo - & gt; Novo , ou pressione Ctrl N ) para ver: -
Selecione chave PGP e insira seus detalhes. Estou representando o Byte Commander:
RSA e 2048 bits são bons para a maioria das finalidades. Se você quiser usá-lo apenas para assinatura, escolha a opção RSA (somente sinal) no menu suspenso, mas não é necessário - isso pode ser feito usando subkeys . Você pode deixar um comentário. Manter uma data de expiração na sua chave também é útil. Clique em Criar .
-
Digite uma senha adequadamente longa (e eu quero dizer long , meu exemplo é curto, IMO), e clique em Ok :
O Seahorse não parece ter nenhum feedback, ao contrário do CLI. Espere por um tempo, fazendo o que você quiser, enquanto reúne entropia e cria uma chave. Pode demorar um pouco. Depois disso, você verá que eles digitam na seção Chaves PGP :
CLI
Para gerar uma chave a partir da linha de comando, basta executar gpg --gen-key
. Ele pedirá os mesmos detalhes que a GUI fez:
$ gpg --gen-key
gpg (GnuPG) 1.4.16; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Please select what kind of key you want:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (sign only)
(4) RSA (sign only)
Your selection?
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)
Requested keysize is 2048 bits
Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0) 1y
Key expires at Tuesday 27 September 2016 03:45:19 PM IST
Is this correct? (y/N) y
You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and E-mail Address in this form:
"Heinrich Heine (Der Dichter) <[email protected]>"
Real name: Byte Commander
E-mail address: [email protected]
Comment:
You selected this USER-ID:
"Byte Commander <[email protected]>"
Change (N)ame, (C)omment, (E)-mail or (O)kay/(Q)uit? o
You need a Passphrase to protect your secret key.
passphrase not correctly repeated; try again.
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, use the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
Not enough random bytes available. Please do some other work to give
the OS a chance to collect more entropy! (Need 186 more bytes)
.....+++++
+++++
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, use the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
Not enough random bytes available. Please do some other work to give
the OS a chance to collect more entropy! (Need 80 more bytes)
....+++++
Not enough random bytes available. Please do some other work to give
the OS a chance to collect more entropy! (Need 83 more bytes)
...+++++
gpg: key 8AE670A6 marked as ultimately trusted
public and secret key created and signed.
gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0 valid: 2 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 2u
gpg: next trustdb check due at 2016-09-26
pub 2048R/8AE670A6 2015-09-28 [expires: 2016-09-27]
Key fingerprint = 82D9 0644 B265 8E75 1E01 538B B479 3CF4 8AE6 70A6
uid Byte Commander <[email protected]>
sub 2048R/0E2F4FD8 2015-09-28 [expires: 2016-09-27]
Observe como o GnuPG nos diz que precisa de mais entropia. Desejo seahorse fez também. Mas, novamente, parece que o GnuPG está agindo como Oliver Twist. : P
Publicando sua chave
Agora, precisamos divulgar nossa chave pública, para que as pessoas possam verificar as coisas usando-a.
GUI
Volte para a lista de chaves PGP no aplicativo seahorse
(veja a última captura de tela). Selecione a (s) chave (s) que deseja exportar e, no menu Remoto , escolha Sincronizar e Publicar Chaves :
O botão Sincronizar será desativado se você não tiver selecionado um servidor para publicar. Faça isso clicando no botão Key Servers :
Eu escolhi o servidor do Ubuntu.
Agora, você pode clicar no botão Sincronizar e publicá-lo para O servidor de chaves do Ubuntu (desculpe pelo spam, Ubuntu!).
CLI
Com a CLI, você precisa do ID da chave que deseja publicar. É a última linha da saída ao criar a chave ( 8AE670A6
). Se você não se lembra o que é, basta executar gpg --list-keys
. Para publicar:
$ gpg --keyserver pgp.mit.edu --send-keys 8AE670A6
gpg: sending key 8AE670A6 to hkp server pgp.mit.edu
Desculpe, MIT .
Assinatura
Ainda não sei de um método conveniente de interface gráfica para assinar um documento.
Depois de criar o arquivo que você deseja assinar, vá para o terminal. Experimente gpg --list-keys
:
$ gpg --list-keys
/home/muru/.gnupg/pubring.gpg
---------------------------
pub 2048R/F7878B0C 2015-09-28 [expires: 2016-09-26]
uid Byte Commander <[email protected]>
sub 2048R/345B9A4F 2015-09-28 [expires: 2016-09-26]
Você pode assinar o arquivo usando dois métodos:
Assinatura com criptografia
$ gpg --sign --output examples.sig examples.desktop
You need a passphrase to unlock the secret key for
user: "Byte Commander <[email protected]>"
2048-bit RSA key, ID F7878B0C, created 2015-09-28
gpg: Invalid passphrase; please try again ...
You need a passphrase to unlock the secret key for
user: "Byte Commander <[email protected]>"
2048-bit RSA key, ID F7878B0C, created 2015-09-28
Se você estiver em uma sessão de desktop, provavelmente será recebido com um prompt de senha gráfico. Por exemplo, no GNOME:
Se o destinatário tiver sua chave pública, ele poderá verificá-la ou obter o conteúdo descriptografado:
$ gpg --verify examples.sig
gpg: Signature made Monday 28 September 2015 03:25:00 PM IST using RSA key ID F7878B0C
gpg: Good signature from "Byte Commander <[email protected]>"
$ gpg --decrypt examples.sig
[Desktop Entry]
Version=1.0
Type=Link
Name=Examples
Name[aa]=Ceelallo
...
URL=file:///usr/share/example-content/
Icon=folder
X-Ubuntu-Gettext-Domain=example-content
gpg: Signature made Monday 28 September 2015 03:25:00 PM IST using RSA key ID F7878B0C
gpg: Good signature from "Byte Commander <[email protected]>"
Assinando com texto claro
Você pode não querer criptografar o conteúdo, por exemplo, ao enviar um e-mail. Nesse caso, use a opção --clearsign
:
$ gpg --clearsign examples.desktop
You need a passphrase to unlock the secret key for
user: "Byte Commander <[email protected]>"
2048-bit RSA key, ID F7878B0C, created 2015-09-28
$ cat examples.desktop.asc
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
[Desktop Entry]
Version=1.0
Type=Link
Name=Examples
Name[aa]=Ceelallo
...
URL=file:///usr/share/example-content/
Icon=folder
X-Ubuntu-Gettext-Domain=example-content
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQEcBAEBAgAGBQJWCRAaAAoJEGUZkqX3h4sMBWsH/1yw+G0v5Ck+T3PBS90SkvC8
5C0FJeGVr0AgYQohhsE3zEGQ7nn53N7JsvNlF6VccvN99DZIp18JbrJ+qs5hWjtg
KU/ACleR5dvVrJgfjppkuC8Q3cAudvqciKlLjA7Xycr3P49oCNCy8k/ue2TrgCvS
mMb5IS/kqpO7wrOMBAR0c/2CjQsA91S1/YK7DbuUqeNgEzW1grsI7XZPhiDGpAib
D20HWrbdLhklAEJuo1EvuOIggW6MF6ksxDoVapsUzQalD0TWEq6OnvzIS5qhITrc
XaDPQJpiHyCyINnL5aZCUwr2uon7osJ+2a8Ahp1REpzIZTdND9jA5NWSel5+yAs=
=ZrtB
-----END PGP SIGNATURE-----
Assinatura, com um arquivo separado para assinatura (assinatura separada)
Por fim, para alguns arquivos, você não pode ter a assinatura no documento. Por exemplo, arquivos de empacotamento ou os metadados de um repositório, ambos têm conteúdo de natureza específica que não permite assinaturas incorporadas facilmente. Nesse caso, você usa a opção --detached-sig
:
$ gpg --output examples.desktop.sig --detach-sign examples.desktop
You need a passphrase to unlock the secret key for
user: "Byte Commander <[email protected]>"
2048-bit RSA key, ID F7878B0C, created 2015-09-28
$ gpg --verify examples.desktop.sig examples.desktop
gpg: Signature made Monday 28 September 2015 03:35:55 PM IST using RSA key ID F7878B0C
gpg: Good signature from "Byte Commander <[email protected]>"
Nota
Em criptografia + assinatura e em assinaturas desanexadas, a saída de gpg
é binária. Você pode ter dados codificados em base64 de saída do GnuPG usando a opção --armor
(ASCII-blindado).
Automação
Para assinar o script, você pode:
- use uma senha vazia para a chave
- dependendo da sua versão do GnuPG, envie a senha via
stdin
. Veja este Unix & amp; Publicação no Linux para algumas opções.