Gnupg

De Linuxmemo.

(Différences entre les versions)
(Serveur de clés)
(Astuces)
 
(41 versions intermédiaires masquées)
Ligne 9 : Ligne 9 :
  http://keys.gnupg.net/
  http://keys.gnupg.net/
  https://pgp.key-server.io/
  https://pgp.key-server.io/
 +
 +
hkp://p80.pool.sks-keyservers.net:80
 +
 +
* default keys server
 +
The upstream default currently uses the SKS keyservers. The IP you saw is one of those listed for hkps.pool.sks-keyservers.net:
 +
$ dig +short hkps.pool.sks-keyservers.net
 +
209.244.105.201
 +
37.191.231.105
 +
192.146.137.98
 +
 +
This is set during compile time via configure.ac:
 +
 +
AC_DEFINE_UNQUOTED(DIRMNGR_DEFAULT_KEYSERVER,
 +
                  "hkps://hkps.pool.sks-keyservers.net",
 +
      [The default keyserver for dirmngr to use, if none is explicitly given])
==réception de clef via proxy==
==réception de clef via proxy==
-
gpg --keyserver hkp://pgp.mit.edu:80 --keyserver-options http-proxy=http://172.21.xxx.xxx:8080,debug --recv-keys 0x059Exxxx
+
gpg --keyserver hkp://pgp.key-server.io:80 --keyserver-options http-proxy=http://172.21.xxx.xxx:8080,debug '''--search-keys [KEY]'''
 +
gpg --keyserver hkp://pgp.mit.edu:80 --keyserver-options http-proxy=http://172.21.xxx.xxx:8080,debug --search-keys [KEY]
 +
gpg --keyserver hkp://pgp.mit.edu:80 --keyserver-options http-proxy=http://172.21.xxx.xxx:8080,debug '''--recv-keys 0x059Exxxx'''
==Commandes GnuPG essentielles==
==Commandes GnuPG essentielles==
-
*Gestion du trousseau : uid personnels et clefs publiques de tiers
+
===Gestion du trousseau : uid personnels et clefs publiques de tiers===
Aide, liste des commandes et options
Aide, liste des commandes et options
  gpg  --help
  gpg  --help
Ligne 23 : Ligne 40 :
Lister les clefs. A défaut, un fichier "pubring.gpg" vide est créé.
Lister les clefs. A défaut, un fichier "pubring.gpg" vide est créé.
  gpg  --list-key
  gpg  --list-key
 +
'''gpg -k'''
 +
Lister les clefs privés. A défaut, un fichier "secring.gpg" vide est créé.
 +
gpg --list-secret-keys
 +
'''gpg -K'''
Gestion des clefs
Gestion des clefs
-
  gpg  --edit-key [id] (adduid | trust | save | quit)
+
  '''gpg  --edit-key [id]''' (adduid | trust | save | quit)
Rechercher un clefs sur le serveur
Rechercher un clefs sur le serveur
  gpg --keyserver hkp://pgp.key-server.io:80 --keyserver-options http-proxy=http://172.21.xxx.xxx:8080,debug --search-keys [KEY]
  gpg --keyserver hkp://pgp.key-server.io:80 --keyserver-options http-proxy=http://172.21.xxx.xxx:8080,debug --search-keys [KEY]
 +
gpg --keyserver hkp://pgp.mit.edu:80 --keyserver-options http-proxy=http://172.21.xxx.xxx:8080,debug --search-keys [KEY]
Envoi de clef publique à un serveur de clefs
Envoi de clef publique à un serveur de clefs
  gpg  --keyserver  [pgp.mit.edu]  --send-key  [uid]
  gpg  --keyserver  [pgp.mit.edu]  --send-key  [uid]
Récupérer une clef publique sur un serveur de clefs
Récupérer une clef publique sur un serveur de clefs
  gpg  --keyserver [pgp.mit.edu]  --recv-keys [uid]
  gpg  --keyserver [pgp.mit.edu]  --recv-keys [uid]
-
*Manipulation des clefs
+
 
 +
===Manipulation des clefs===
Exporter la clef publique dans un fichier
Exporter la clef publique dans un fichier
  gpg  --export  --armor  [uid]  >  [fichier sorti]
  gpg  --export  --armor  [uid]  >  [fichier sorti]
Importer une clef publique depuis un fichier
Importer une clef publique depuis un fichier
-
  gpg  --import  [fichier lu]
+
  '''gpg  --import  [fichier lu]'''
 +
Importer une clef privé depuis un fichier
 +
'''gpg --allow-secret-key-import --import [fichier lu]'''
Exporter une clef privée
Exporter une clef privée
  gpg  --export-secret-key  -a  >  [fichier sorti]
  gpg  --export-secret-key  -a  >  [fichier sorti]
Importer une clef privée depuis un fichier
Importer une clef privée depuis un fichier
-
  gpg --import --allow-secret-key-import [fichier lu]
+
  gpg --import --allow-secret-key-import [fichier lu]
Sortir l'empreinte de la clef publique
Sortir l'empreinte de la clef publique
  gpg  --fingerprint  [uid]  >  [fichier sorti]
  gpg  --fingerprint  [uid]  >  [fichier sorti]
-
*Réseau de confiance
+
 
 +
===Réseau de confiance===
Signer la clef publique d'un tiers
Signer la clef publique d'un tiers
  gpg  --sign-key  [uid]
  gpg  --sign-key  [uid]
Lister les signatures
Lister les signatures
-
  gpg  --list-sigs
+
  '''gpg  --list-sigs [uid]'''
Vérifier les signatures (?=on n'a pas la cle publique/!=on l'a)
Vérifier les signatures (?=on n'a pas la cle publique/!=on l'a)
  gpg  --check-sigs  [uid]
  gpg  --check-sigs  [uid]
-
*Principales options
+
Garder son tousseau a jour
 +
'''gpg --refresh-keys'''
 +
# crontab -e
 +
0 12 * * * /usr/bin/gpg --refresh-keys > /dev/null 2>&1
 +
 
 +
===Principales options===
Sortie ASCII (au lieu de binaire)
Sortie ASCII (au lieu de binaire)
  --armor ou -a
  --armor ou -a
Spécifier le fichier sorti
Spécifier le fichier sorti
  --output ou -o [nom_du_fichier]
  --output ou -o [nom_du_fichier]
 +
-o- sortie standard
Spécifier l’utilisateur
Spécifier l’utilisateur
-
  --recipient ou -r [nom]
+
  '''--recipient ou -r [nom]'''
Mode verbeux
Mode verbeux
  --verbose ou -b
  --verbose ou -b
Ligne 62 : Ligne 94 :
Confirmation avant écrasement
Confirmation avant écrasement
  --interactive ou -i
  --interactive ou -i
-
*Signature, chiffrage, déchiffrage
+
===Signer un fichier===
-
Signer un fichier
+
le fichier d'origine est conserver, un nouveau fichier est généré .gpg ou .asc. C'est uniquement ce dernier fichier qu'il faut communiquer.
-
    --sign ou -s
+
*Signature (compressée)
 +
gpg  --sign [-a] [fichier signé]
 +
(--sign ou -s)
 +
Sortie : [fichier].gpg en binaire ou [fichier].asc en ASCII avec -a
-
gpg  --sign [fichier signé]
+
*Signature (non compressée)
 +
gpg  --clearsign  -a [fichier signé]
-
    Sortie : [fichier].gpg
+
*Signature détachée (pour les fichiers binaire)
 +
  gpg  -b  -a  [uid]  -o  [fichier sorti signature]  [fichier à signer]
 +
(--detach-sign ou -b)
 +
Sortie : [fichier sorti signature].sig
-
Signature intégrée
+
===Vérification de signature sur un fichier (avant déchiffrement)===
 +
gpg --verify [fichier signé].gpg
 +
ou
 +
gpg --verify [fichier signé].asc
 +
Vérifier la signature détaché (fichier binaire)
 +
gpg  --verify  [fichier signature]  [fichier signé]
-
    --clearsign
+
===Chiffrer un fichier (--encrypt ou -e)===
-
    Sortie ASCII : -a ou --armor
+
gpg -r [uid] -e -a -o [fichier sorti] [fichier lu]
 +
Sortie sans l’option -o : [fichier].gpg
-
gpg  --clearsign -a  [fichier signé]
+
Chiffrer et signer
 +
gpg  -s -a  -e [fichier lu]
-
    Sortie : [fichier].asc
+
===Déchiffrer un fichier (--decrypt ou -d non nécessaire option par défaut )===
 +
gpg -r [uid] -d -o [fichier sorti] [fichier lu]
-
Signature détachée
+
Cryptage symétrique (pas à l’intention d’un tiers)
 +
--symmetric ou -c
 +
gpg  -c  -a  -o  [fichier sorti]  [fichier lu]
 +
Décryptage symétrique (pas à l’intention d’un tiers)
 +
  --decrypt ou -d
 +
gpg  -d -o  [fichier sorti]  [fichier lu]
-
    --detach-sign ou -b
 
-
gpg -b -a [uid] -o  [fichier sorti]  [fichier à signer]
+
===maj auto des cles===
 +
*crontab de l'utilisateur
 +
  crontab -e
 +
  # m h dom mon dow  command
 +
  0 12 * * * /usr/bin/gpg --keyserver hkp://pgp.mit.edu:80 --keyserver-options http-proxy=http://172.21.xxx.xxx:8080,debug --refresh-keys > /dev/null 2>&1
-
    Sortie : [fichier].sig
+
==Interface graphique==
 +
*kgpg
 +
kgpg
 +
QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave.
 +
QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave.
 +
kgpg -k
-
Chiffrer un fichier
+
==best-practices==
 +
https://riseup.net/fr/security/message-security/openpgp/gpg-best-practices
-
    --encrypt ou -e
+
==Problème / incohérence==
 +
Supprimer le rep ~/.gnupg , recréation vierge , puis réimporter les clefs.
-
gpg -r [uid]  -e  -a  -o  [fichier sorti]  [fichier lu]
+
==Astuces==
 +
echo "Your secret message" | gpg -ea -r "Recipient name" | mail -s "Subject" recipient@example.com
-
     Sortie sans l’option -o : [fichier].gpg
+
-e     Encrypt data to one or more public keys
 +
-a    Create ASCII armored output
 +
-r    Encrypt for user id name
 +
-s    Sign a message
-
Chiffrer et signer gpg  -s  -a  -e [fichier lu]
 
-
Vérifier la signature séparée gpg  --verify  [fichier signature]  [fichier signé]
 
-
Vérifier la signature incluse gpg  --verify  [fichier lu]
 
-
Déchiffrer un fichier
 
-
    --decrypt ou -d
 
-
gpg  -r  [uid]  --o  [fichier sorti]  [fichier lu]
+
https://riseup.net/fr/security/message-security/openpgp/gpg-best-practices
-
Cryptage symétrique (pas à l’intention d’un tiers)
+
-
    --symmetric ou -c
+
* display long key by default:
-
 
+
vim ~/.gnupg/gpg.conf
-
gpg -c -a -o  [fichier sorti]  [fichier lu]
+
  and add at the end of file:
-
Décryptage symétrique (pas à l’intention d’un tiers)
+
  keyid-format 0xlong
 +
  with-fingerprint
-
    --decrypt ou -d
+
*ref
-
gpg  -d -o  [fichier sorti]  [fichier lu]
+
https://wiki.csnu.org/index.php/GnuPG_:_Cr%C3%A9er_la_paire_de_cl%C3%A9_gpg_parfaite_:_cl%C3%A9_maitre,_subkeys_et_support_smartcard_(yubikey)

Version actuelle en date du 9 mars 2020 à 14:50

répertoire « ~/.gnupg » créé
nouveau fichier de configuration « ~/.gnupg/gpg.conf » créé
le porte-clefs « ~/.gnupg/pubring.gpg » a été créé
~/.gnupg/trustdb.gpg : base de confiance créée

Sommaire

[modifier] Serveur de clés

https://pgp.mit.edu/
http://keys.gnupg.net/
https://pgp.key-server.io/
hkp://p80.pool.sks-keyservers.net:80
  • default keys server

The upstream default currently uses the SKS keyservers. The IP you saw is one of those listed for hkps.pool.sks-keyservers.net:

$ dig +short hkps.pool.sks-keyservers.net
209.244.105.201
37.191.231.105
192.146.137.98

This is set during compile time via configure.ac:

AC_DEFINE_UNQUOTED(DIRMNGR_DEFAULT_KEYSERVER,
                  "hkps://hkps.pool.sks-keyservers.net",
     [The default keyserver for dirmngr to use, if none is explicitly given])

[modifier] réception de clef via proxy

gpg --keyserver hkp://pgp.key-server.io:80 --keyserver-options http-proxy=http://172.21.xxx.xxx:8080,debug --search-keys [KEY]
gpg --keyserver hkp://pgp.mit.edu:80 --keyserver-options http-proxy=http://172.21.xxx.xxx:8080,debug --search-keys [KEY]
gpg --keyserver hkp://pgp.mit.edu:80 --keyserver-options http-proxy=http://172.21.xxx.xxx:8080,debug --recv-keys 0x059Exxxx

[modifier] Commandes GnuPG essentielles

[modifier] Gestion du trousseau : uid personnels et clefs publiques de tiers

Aide, liste des commandes et options

gpg  --help

Génération du trousseau

gpg  --gen-key

Génère un certificat de révocation

gpg  --gen-revoke

Lister les clefs. A défaut, un fichier "pubring.gpg" vide est créé.

gpg  --list-key
gpg -k

Lister les clefs privés. A défaut, un fichier "secring.gpg" vide est créé.

gpg --list-secret-keys
gpg -K

Gestion des clefs

gpg  --edit-key [id] (adduid | trust | save | quit)

Rechercher un clefs sur le serveur

gpg --keyserver hkp://pgp.key-server.io:80 --keyserver-options http-proxy=http://172.21.xxx.xxx:8080,debug --search-keys [KEY]
gpg --keyserver hkp://pgp.mit.edu:80 --keyserver-options http-proxy=http://172.21.xxx.xxx:8080,debug --search-keys [KEY]

Envoi de clef publique à un serveur de clefs

gpg  --keyserver  [pgp.mit.edu]  --send-key  [uid]

Récupérer une clef publique sur un serveur de clefs

gpg  --keyserver [pgp.mit.edu]  --recv-keys [uid]

[modifier] Manipulation des clefs

Exporter la clef publique dans un fichier

gpg  --export  --armor  [uid]  >  [fichier sorti]

Importer une clef publique depuis un fichier

gpg  --import  [fichier lu]

Importer une clef privé depuis un fichier

gpg --allow-secret-key-import --import [fichier lu]

Exporter une clef privée

gpg  --export-secret-key  -a  >  [fichier sorti]

Importer une clef privée depuis un fichier

gpg --import --allow-secret-key-import [fichier lu]

Sortir l'empreinte de la clef publique

gpg  --fingerprint  [uid]  >  [fichier sorti]

[modifier] Réseau de confiance

Signer la clef publique d'un tiers

gpg  --sign-key  [uid]

Lister les signatures

gpg  --list-sigs [uid]

Vérifier les signatures (?=on n'a pas la cle publique/!=on l'a)

gpg  --check-sigs  [uid]

Garder son tousseau a jour

gpg --refresh-keys
# crontab -e
0 12 * * * /usr/bin/gpg --refresh-keys > /dev/null 2>&1

[modifier] Principales options

Sortie ASCII (au lieu de binaire)

--armor ou -a

Spécifier le fichier sorti

--output ou -o [nom_du_fichier]
-o- sortie standard

Spécifier l’utilisateur

--recipient ou -r [nom]

Mode verbeux

--verbose ou -b

Mode silencieux

--quiet ou -q

Confirmation avant écrasement

--interactive ou -i

[modifier] Signer un fichier

le fichier d'origine est conserver, un nouveau fichier est généré .gpg ou .asc. C'est uniquement ce dernier fichier qu'il faut communiquer.

  • Signature (compressée)
gpg  --sign [-a] [fichier signé]
(--sign ou -s)
Sortie : [fichier].gpg en binaire ou [fichier].asc en ASCII avec -a
  • Signature (non compressée)
gpg  --clearsign  -a  [fichier signé]
  • Signature détachée (pour les fichiers binaire)
 gpg  -b  -a  [uid]  -o  [fichier sorti signature]  [fichier à signer]
(--detach-sign ou -b)
Sortie : [fichier sorti signature].sig

[modifier] Vérification de signature sur un fichier (avant déchiffrement)

gpg --verify [fichier signé].gpg
ou
gpg --verify [fichier signé].asc

Vérifier la signature détaché (fichier binaire)

gpg  --verify  [fichier signature]  [fichier signé]

[modifier] Chiffrer un fichier (--encrypt ou -e)

gpg -r [uid] -e -a -o [fichier sorti] [fichier lu]
Sortie sans l’option -o : [fichier].gpg

Chiffrer et signer

gpg  -s  -a  -e [fichier lu]

[modifier] Déchiffrer un fichier (--decrypt ou -d non nécessaire option par défaut )

gpg -r [uid] -d -o [fichier sorti] [fichier lu]

Cryptage symétrique (pas à l’intention d’un tiers)

--symmetric ou -c
gpg  -c  -a  -o  [fichier sorti]  [fichier lu]

Décryptage symétrique (pas à l’intention d’un tiers)

 --decrypt ou -d
gpg  -d -o  [fichier sorti]  [fichier lu]


[modifier] maj auto des cles

  • crontab de l'utilisateur
crontab -e
# m h  dom mon dow   command
0 12 * * * /usr/bin/gpg --keyserver hkp://pgp.mit.edu:80 --keyserver-options http-proxy=http://172.21.xxx.xxx:8080,debug --refresh-keys > /dev/null 2>&1

[modifier] Interface graphique

  • kgpg
kgpg 
QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave.
QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave.
kgpg -k

[modifier] best-practices

https://riseup.net/fr/security/message-security/openpgp/gpg-best-practices

[modifier] Problème / incohérence

Supprimer le rep ~/.gnupg , recréation vierge , puis réimporter les clefs.

[modifier] Astuces

echo "Your secret message" | gpg -ea -r "Recipient name" | mail -s "Subject" recipient@example.com
-e     Encrypt data to one or more public keys
-a     Create ASCII armored output
-r     Encrypt for user id name
-s     Sign a message


https://riseup.net/fr/security/message-security/openpgp/gpg-best-practices

  • display long key by default:
vim ~/.gnupg/gpg.conf
and add at the end of file:
keyid-format 0xlong
with-fingerprint
  • ref

https://wiki.csnu.org/index.php/GnuPG_:_Cr%C3%A9er_la_paire_de_cl%C3%A9_gpg_parfaite_:_cl%C3%A9_maitre,_subkeys_et_support_smartcard_(yubikey)

Outils personnels