Bem, isso é um pouco embaraçoso. Passei horas ao longo de uma semana tentando resolver esse problema, e a resposta parece estar nas subchaves - um tópico que o manual do GnuPG e o FAQ encobrem.
Ao pesquisar quais subchaves são e por que eles podem ser usados em vez de --gen-key, me deparei com essa gem: link .
O wiki Debian explica como implementar a opção # 2 (veja OP) usando uma chave mestra com subchaves e explica como remover a chave mestra de qualquer sistema depois de armazená-la em uma mídia de backup ( por exemplo, uma unidade flash). As subchaves podem então ser distribuídas entre meus chaveiros em cada dispositivo.
Prós:
-
Não depende principalmente da senha para proteger a chave mestra,
-
Se algum sistema for comprometido, a chave mestra não estará disponível imediatamente (a menos que eu insensamente deixe meu pen drive conectado ou conecte a unidade a um sistema comprometido),
-
Esta é uma prática implementada pela equipe de desenvolvimento do Debian.
-
Usa o recurso de subchave do GnuPG. O que parece um pouco mais organizado do que ter um monte de chaves soltas no seu chaveiro, sim?
Porção relevante do Debian Subkey Wiki
-
Faça backups dos seus arquivos GnuPG existentes ($ HOME / .gnupg). Mantenha eles salvos. Se algo der errado durante as etapas a seguir, você pode precisar disso para retornar a um bom local conhecido. (nota: umask 077 resultará em permissões restritivas para o backup).
-
umask 077; tar -cf $HOME/gnupg-backup.tar -C $HOME .gnupg
-
-
Crie uma nova subchave para assinatura.
- Encontre seu ID de chave:
gpg --list-keys yourname
-
gpg --edit-key YOURMASTERKEYID
- No prompt
gpg>
:addkey
- Isso pede sua frase secreta, digite-a.
- Escolha o tipo de chave "RSA (somente sinal)".
- Seria sensato escolher 4096 (ou 2048) tamanho de chave de bit.
- Escolha uma data de expiração (você pode girar suas subchaves com mais frequência que as chaves mestras ou mantê-las por toda a vida da chave mestra, sem vencimento).
- O GnuPG irá (eventualmente) criar uma chave, mas você pode ter que esperar que ela obtenha entropia suficiente para fazê-lo.
- Salve a chave:
save
- Encontre seu ID de chave:
-
Você pode repetir isso e criar uma subchave "RSA (somente criptografia)", se desejar.
-
Agora copie
$HOME/.gnupg
para suas unidades USB. -
Aqui vem a parte complicada. Você precisa remover a chave mestra privada e, infelizmente, o GnuPG não oferece uma maneira conveniente de fazer isso. Precisamos exportar a subchave, remover a chave privada e importar a subchave de volta.
- Exportar as subchaves:
gpg --export-secret-subkeys YOURMASTERKEYID >secret-subkeys
(para escolher quais subchaves exportar, especifique as IDs da subchave seguidas por um ponto de exclamação:gpg --export-secret-subkeys SUBKEYID! [SUBKEYID! ..]
) - Remova sua chave secreta principal:
gpg --delete-secret-key YOURMASTERKEYID
- Importar as subchaves de volta:
gpg --import secret-subkeys
- Verifique se
gpg -K
mostra umsec#
em vez de apenassec
para sua chave privada. Isso significa que a chave secreta não está realmente lá. (Veja também a presença de um pacote OpenPGP fictício na saída degpg --export-secret-key YOURMASTERKEYID | gpg --list-packets
). - Opcionalmente, altere a frase secreta que protege as subchaves:
gpg --edit-key YOURMASTERKEYID passwd
. (Observe que o material da chave privada no backup, incluindo a chave mestra privada, permanecerá protegido pela frase secreta antiga.)
- Exportar as subchaves:
Seu computador agora está pronto para uso normal.
Quando você precisar usar as chaves mestras, monte a unidade USB criptografada e defina a variável de ambiente GNUPGHOME:
export GNUPGHOME=/media/something
gpg -K
ou use o argumento de linha de comando --home:
gpg --home=/media/something -K
O último comando deve agora listar sua chave privada com sec
e não sec#
.
Várias sub-chaves por máquina versus uma única sub-chave para todas as máquinas
Trecho do wiki de sub-chave do Debian. Originalmente anotado nos comentários. [Paráfrase] e ênfase meu.
Pode-se ficar tentado a ter uma subchave por máquina para que você só precise trocar a subchave potencialmente comprometida dessa máquina. No caso de uma única subchave usada em todas as máquinas, ela precisa ser trocada em todas as máquinas [quando essa subchave é suspeita de estar comprometida].
Mas isso só funciona para assinar subchaves . Se você tiver várias subchaves de criptografia, o gpg será criptografado apenas para a subchave de criptografia mais recente e não para todas as subchaves de criptografia conhecidas e não revogadas.