Signatures et chiffrements

A ce stade, nous sommes en mesure de signer et chiffrer tous les documents que nous souhaitons.

Alors, suivez le guide ...

Etiquettes: 

Signatures

Pour info La signature d'un message exige la saisie de la phrase de passe de la clé privée à chaque fois.

Rappel des différentes générations de signatures

"message" correspond à un fichier texte contenant le message à signer.

# cat message
Ceci est un message signé.

# gpg --sign message

Un nouveau fichier message.gpg est généré contenant le message et la signature au format binaire.
Pour lire le contenu du message, il faut obligatoirement utiliser gpg avec l'option --decrypt.
En effet, le message n'est pas chiffré, il est seulement signé, mais étant au format binaire, seule l'option --decrypt est capable de vérifier la signature et d'afficher le message en clair.

# gpg --clearsign message

Un nouveau fichier message.asc est généré contenant le message et la signature au format ASCII.

# gpg --detach-sign message

Un nouveau fichier message.sig est généré contenant uniquement la signature au format binaire.

#  gpg --detach-sign --armor message

Un nouveau fichier message.asc est généré contenant uniquement la signature au format ASCII.

Pour modifier le nom du fichier généré, il faut utiliser l'option -o nomDuFichier (ou --output).

# gpg --detach-sign --armor -o signature.asc message

Il est possible de signer un message sans passer par l'intermédiare de fichiers (entrées/sorties)

# echo "Ceci est un message signé." | gpg --clearsign

You need a passphrase to unlock the secret key for
user: "Jean Michel A Peu Près <jm@apeupres.fr>"
2048-bit RSA key, ID 219FE958, created 2015-09-11 (main key ID 0D6FE738)

gpg: gpg-agent is not available in this session
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Ceci est un message signé.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQEcBAEBAgAGBQJV9enkAAoJED/atMwhn+lYiz8H+wc1peA+zFNh0pI0Xl9LaCng
2BPlhod4MYO7yAJTKh76MHx1pXZAjPRZdvQf7WockS9gyHC2/h3MGcFMJZ4LAYdQ
16LfwCC2ip08FsiWuIjnAdC+qEcvLVM6MkH5iiKVgLRnwn7b7oqp9M/mwQGb8JmA
gxRwMTDZxxSBHjjIKPtbOzzN/Wp308WQiI1G0d/uM+GE8JmOQcGAz2pNS/i01KbR
7ft0RUGOtdlnZOyBpuTl90CEkEhFjICvoyB3EEoXAR+DorxhgRUGeGliZzgoKSeU
cWsGlMaigvofC67xSaWacIpk/GOv0hZUPMR9EqmKuCDqSHpcrnWX3W2JWYqwkZM=
=XBKV
-----END PGP SIGNATURE-----

Copier/coller le message signé dans un mail au format texte (tout le contenu de -----BEGIN PGP SIGNED MESSAGE----- jusqu'à -----END PGP SIGNATURE-----).

Pour info Pour envoyer la sortie vers un fichier, utiliser l'option -o monFichier (--output).

Exemple d'un fichier signé puis altéré volontairement afin de simuler un piratage.

On signe le fichier message

# gpg --armor --detach-sign message

On vérifie la signature du fichier message.
L'option --verify prend en premier paramètre le nom du fichier contenant la signature (si la signature est dans un fichier à part) et le nom du fichier signé en second paramètre.

# gpg --verify message.asc message
gpg: Signature made Sun 13 Sep 2015 11:40:49 PM CEST using RSA key ID 219FE958
gpg: Good signature from "Jean Michel A Peu Près <jm@apeupres.fr>"

La signature est correcte.
On altère le fichier message pour simuler un piratage du fichier.

# echo "" >> message

On vérifie à nouveau la signature du fichier.

# gpg --verify message.asc message
gpg: Signature made Wed 16 Sep 2015 07:14:28 PM CEST using RSA key ID 219FE958
gpg: BAD signature from "Jean Michel A Peu Près <jm@apeupres.fr>"

Le résultat nous indique que la signature est incorrecte.
Nous avons la preuve que le fichier d'origine a été altéré.

Franchement, c'est quand même pas si compliqué de signer un fichier et c'est quand même plus sécurisant.

Et si maintenant on le chiffrait, ce fichier ...

Etiquettes: 

Chiffrements

Chiffrer un document n'est pas plus compliqué que de le signer.
Il faut juste avoir la clé publique du ou des destinataires du fichier. (ou avec sa propre clé publique si vous voulez seulement chiffrer des fichiers personnels)

Première question: A qui puis-je envoyer des messages/fichiers chiffrés ?
Pour le savoir, il faut lister toutes les clés publiques de notre trousseau.

# gpg --list-public-keys
/root/.gnupg/pubring.gpg
------------------------
pub   2048R/0D6FE738 2015-09-11
uid                  Jean Michel A Peu Près <jm@apeupres.fr>
sub   2048R/1C51C149 2015-09-11
sub   2048R/219FE958 2015-09-11

pub   2048R/F752764E 2015-01-02
uid                  Barack Obama <barack.obama@whitehouse.gov>
sub   2048R/C4CDB034 2015-01-02

Je vois que je peux chiffrer des documents pour moi-même et pour Barack Obama (oh la vache, j'avais oublié que j'avais importé sa clé publique).

Allez, c'est parti, envoyons un message chiffré à Barack.

# echo "Hello Barack, how are you ?" | gpg --encrypt --armor --recipient barack.obama@whitehouse.gov
gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   1  signed:   1  trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: depth: 1  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 1f, 0u
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1

hQEMAxK9BLnEzbA0AQf8CLkg04MMJMxCrUiwHzcgaqL94gavPLBP/GIQP5bnxJFE
ujBziWFTwb9OxyKv6MWs9cegB1/qNKnYdgIWpDwjMWv+G/8wJfDqif002rEYPE+B
rRsnTXBQM+7QHXwATGpxudP85cY+WGp+cEb6PjkGvDzcBuTdlj2eQ8hm01TOKlpz
CDvbgZ58v4vz2W229fHDOD1sZ8WhYv5Q9+vX1mcTODC2terKtE+ekRrpfOjUE0Kf
U+tdUIqMrop63oWJmQgclejevfzmLGvhSaZPlZy8HlWUNfgPCxspJIu4+r89EJST
364F2n/cMig5f+o1dYWHRO+aY6OapatE/zxEul33G9JXAWqnqZQ8XsA9p3H0bGe3
vAFAAKvG3C0RUgvbwJaG2yzX5GYbunyek/f/B7LdugM+r+D8qo+3Ts61ZvjkunhO
kv34a7xaYuA4ckA3VZZgJ9/DQgoqBHO7
=QP5y
-----END PGP MESSAGE-----

Pour chiffrer un message, il suffit d'utiliser l'option --encrypt et l'option --recipient suivie de l'adresse mail du destinataire. (il est possible d'indiquer plusieurs fois l'option --recipient si il y a plusieurs destinataires)

Pour info Si vous n'avez pas signé la clé publique de chiffrement du destinataire, un message vous demandera si vous souhaitez vraiment utiliser la clé correspondante à l'adresse mail indiquée.
Pour signer une clé, il suffit de l'éditer gpg --edit-key xxxxxx, une fois dans le mode interactif de gpg, sélectionner la clé servant au chiffrement (drapeau E) avec la commande key suivi de l'index de la clé et la signer avec la commande sign. Tout est indiqué ici "Editer une clé".

Il reste à copier tout le contenu du message chiffré (de -----BEGIN PGP MESSAGE----- jusqu'à -----END PGP MESSAGE-----) et le coller dans un mail au format texte.

L'option -o (--output) peut être utilisée pour enregistrer le contenu du message chiffré dans un fichier.
Sans l'option --armor, le contenu sera chiffré au format binaire.

Pour chiffrer un fichier, il suffit d'indiquer son nom

# gpg --encrypt --armor --recipient barack.obama@whitehouse.gov message

Avec l'option --armor, un fichier .asc est généré (ASCII).
Sans l'option --armor, un fichier .gpg est généré (binaire).

Pour info En combinant les options de signatures, il est possible de signer et chiffrer un document.

# echo "Hello Barack, how are you ?" | gpg --sign --encrypt --armor --recipient barack.obama@whitehouse.gov

You need a passphrase to unlock the secret key for
user: "Jean Michel A Peu Près <jm@apeupres.fr>"
2048-bit RSA key, ID 219FE958, created 2015-09-11 (main key ID 0D6FE738)

gpg: gpg-agent is not available in this session
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1

hQEMAxK9BLnEzbA0AQf8CFu2Jkc3wXtpg/H8eJ+jH5mf/pcm2NDUV17q8D7zohTf
sr7lsYW6IqWD5WtTd0hA/LVPHEl6UI4uXdzskNOdam+AJUUYqRDhXIos4mWof9Q/
e4hM1mz01tMSCIqmvIHvmYTRQOqu80wv2az7WJk7D7uxqVRfktA4dumVGwn3aIIc
RQ8chuHWIEUIteUJixsiYUIZj8jlQsvsZ9JMQmA3ugf3agOpNKcEwVyxhFhHw77q
oyogcVwfsI5mbKX6oZH93tsHG4gjUn/iiRXoWOsQuxzoqc7q90ndZHXRbQlsRZKw
qw4t9lsUg/NVsMGDDBxO4GpKgoQzoj27uqigV01q69LAyAFiR2YdUVtbqnNQ/HOJ
EcplnhCSmQNiHth5MY2yYFs9C7v1+HxItbUkufLIqv1qSHev6WmTaK9Ro+RkNVDQ
xwYwmyOZEcLpONRF6qWLkKk+PpctiSjSCd6lg7EvvEnPh9Lkz+n6fDgOIVCilKUX
IXn1l+JZX4e9Flan7KonyC7GEMJAUFedzxxVAKgcL0omFKqQq7iqRcBwXeTEZXd3
s1qYv1aQMN90sWfBamI3i9T8rtMyVABjEb+Mj1Qdp/vf+uNmuo14WZOyJT8zklnH
M+o+eG48dOSeg52FPUSw0L0BucqdXRu9llNWUiXYz2UnBe3KURMnpyMYrl7p2swm
AmAZTJ9zYfEAZkSzkArrdq2DcWYYW4CRtCLGojjxyDkN9AfZ79oDOl2qyy7xOlJ5
VY/HSX/gfMgYRKXR8do+fSW3cbm8u5j7cO2IdDzsahxZGdpPClFN3Mwjy6Zr59M+
tqlxKE+6Cyc1a44CeOUp6j2i01zqgDqG5Ru3CiPWTjk7GPP56/ELGdaz
=UKz1
-----END PGP MESSAGE-----

Ce message étant signé et chiffré, il est ultra sécurisé.
Difficle de faire mieux.


Pour info Vous avez un fichier contenant une multitude de "utilisateurs/mots de passe".
Chiffrer le avec GPG et supprimer le fichier d'origine.
Et quand vous avez besoin d'un mot de passe, déchiffrer le fichier avec l'option --decrypt et votre phrase de passe.

# cat motsdepasse
aaa fghdfkgjhdfgjkhdfgk
bbb mljfklsjgksjghskgjh
ccc sjhgjhkfgjkfhgjkfhg
# gpg --encrypt --recipient jm@apeupres.fr motsdepasse
# rm motsdepasse
# gpg --decrypt motsdepasse.gpg

You need a passphrase to unlock the secret key for
user: "Jean Michel A Peu Près <jm@apeupres.fr>"
2048-bit RSA key, ID 1C51C149, created 2015-09-11 (main key ID 0D6FE738)

gpg: gpg-agent is not available in this session
gpg: encrypted with 2048-bit RSA key, ID 1C51C149, created 2015-09-11
      "Jean Michel A Peu Près <jm@apeupres.fr>"
aaa fghdfkgjhdfgjkhdfgk
bbb mljfklsjgksjghskgjh
ccc sjhgjhkfgjkfhgjkfhg

Vous remarquerez que le fichier est chiffré avec ma propre clé publique, et que pour le déchiffrer j'ai besoin de ma clé privée et de ma phrase de passe.

Etiquettes: