Ma clé expirant dans 5 jours, j'en ai profité afin de mettre à jour l'article : Ma nouvelle clé PGP.
En complément, je souhaitais une clé avec un short key-id simple à retenir, Stéphane Bortzmeyer m'avait tapé dans l'œil avec son joli CCC66677 qu'il avait obtenu par coup de chance.
Attention tout de même avec l'utilisation des short key-id, s'il est possible de générer une fin d'empreinte courte (8 derniers caractères) personnalisée, il est aussi possible de faire de l'usurpation simple comme abordé ici, préférez pour une utilisation courante des 0xlong key-id (0x + 16 derniers caractères).
Je souhaitais obtenir quelque chose avec au moins 4 caractères identiques d'affilée, ou alors une forme simple à retenir, par exemple :
- AAABBBCC
- 12AAAA21
- A1BBBBA1
- BACFBBBB
Si vous utilisez gpg-agent, killez-le :
[user@local ~]$ gpgconf --kill gpg-agent
Afin de ne pas pourrir votre ~/.gnupg, renommez-le :
[user@local ~]$ mv ~/.gnupg/ ~/.gnupg.old/
Lancez la commande gpg
afin de recréer le répertoire et le trousseau local, puis faites CTRL+D :
[user@local ~] gpg
gpg: répertoire « /home/user/.gnupg » créé
gpg: le trousseau local « /home/user/.gnupg/pubring.kbx » a été créé
gpg: WARNING: no command supplied. Trying to guess what you mean ...
gpg: Vous pouvez taper votre message…
gpg: processing message failed: Erreur système inconnue
Pour la génération, veillez à avoir un fichier de configuration ~/.gnupg/gpg.conf fort, vous devez le créer, par exemple :
cert-digest-algo SHA512
cipher-algo AES256
compress-algo ZLIB
default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES ZLIB BZIP2 ZIP Uncompressed
digest-algo SHA512
disable-cipher-algo 3DES
personal-cipher-preferences AES256 AES192 AES
personal-digest-preferences SHA512 SHA384 SHA256 SHA224
keyid-format 0xlong
with-fingerprint
list-options show-uid-validity
verify-options show-uid-validity
no-comments
no-emit-version
export-options export-minimal
s2k-cipher-algo AES256
s2k-count 65011712
s2k-digest-algo SHA512
s2k-mode 3
weak-digest SHA1
Afin de générer de l'entropie et accélérer la génération des clés, vous pouvez utiliser haveged :
[user@local ~]$ su -
[root@local ~]# haveged -w 1024
[root@local ~]# exit
Il ne reste plus qu'à générer tout un tas de clés sans aucune interaction avec l'utilisateur, vous devez adapter les arguments puis faire un copier/coller dans un terminal :
while true; do
gpg --batch --full-gen-key <<EOF
Key-Type: RSA
Key-Length: 4096
Key-Usage: Cert
Name-Real: changeme
Name-Email: email@domail.tld
Expire-Date: 2y
Passphrase: changeme
%commit
EOF
done
Cela prend généralement quelques minutes à quelques heures afin d'avoir de jolis résultats.
Dans un autre terminal, utilisez la commande suivante afin de n'afficher que les clés avec 4 caractères identiques d'affilée :
[user@local ~]$ gpg --list-secret-key | grep -E '^sec' | cut -c 25-32 | grep -E '(.)\1{3}'
Lorsque vous avez trouvé votre bonheur, vous pouvez killer la génération avec CTRL+C puis killer haveged :
[root@local ~]# pkill haveged
[root@local ~]# exit
Exporter la paire de clé souhaitée, par exemple pour BACFBBBB :
[user@local ~]$ gpg --export --armor BACFBBBB > BACFBBBB.pub.asc
[user@local ~]$ gpg --export-secret-keys --armor BACFBBBB > BACFBBBB.priv.asc
Supprimer le répertoire ~/.gnupg et renommer l'ancien :
[user@local ~]$ rm ~/.gnupg/ -rf
[user@local ~]$ mv ~/.gnupg.old/ ~/.gnupg/
Si vous utilisez gpg-agent, relancez-le :
[user@local ~]$ gpg-connect-agent reloadagent /bye
Importer la paire de clé :
[user@local ~]$ gpg --import BACFBBBB.pub.asc
[user@local ~]$ gpg --import BACFBBBB.priv.asc
Redéfinir la confiance à 5 :
[user@local ~]$ gpg --expert --edit-key BACFBBBB
gpg> trust
Quelle est votre décision ? 5
gpg> save
Supprimer les exports :
[user@local ~]$ rm BACFBBBB.*
Vous pouvez maintenant jouer avec votre clé, ajouter des sous-clés, etc.