Sécurisez vos discussions avec Jabber et GnuPG


Vous connaissez tous le service propriétaire de messagerie de Microsoft. Mais connaissez-vous Jabber ?

Jabber est entre autres, également un service de messagerie instantanée mais pas seulement. En effet, il est un ensemble de protocoles et permet ainsi de réaliser un bon nombre de choses. Pour plus d'informations vous pouvez consulter la page qui lui est dédiée sur l'encyclopédie libre Wikipedia.

Sans s'attarder sur le sujet, il est tout de même important de préciser qu'il présente de nombreux avantages également énumérés dans le lien ci-dessus, mais dont voici les points importants :

  • Il s'agit de protocoles standards et ouverts.
  • Il est possible de chiffrer les échanges et conversations avec GnuPG par exemple, ainsi seuls le récepteur et l'émetteur peuvent voir le contenu des messages.
  • Les services ne dépendent pas d'un seul point d'accès, le fonctionnement est donc décentralisé.


  • Inscription au serveur Jabber :


    L'inscription à l'un des très nombreux serveurs Jabber ne prend que quelques secondes, car ne requiert que peu d'informations. Vous pouvez vous inscrire directement depuis cette page ou depuis votre client (si celui-ci propose la fonctionnalité d'inscription).


    Choix du client de messagerie :


    Là aussi, il existe une multitude de clients supportant Jabber, que ce soit sous GNU/Linux, Mac OS X, ou encore Microsoft Windows. La liste est réellement impressionnante et trop longue pour être entièrement listée, cependant certains clients libres se démarquent du lot sous GNU/Linux :

  • Psi (client libre réputé pour sa faible consommation de ressources système, basé sur Qt)
  • Kopete (client "officiel" du projet KDE, ce dernier est multi-protocoles et léger)
  • Gajim (client doté d'une interface graphique épurée, basé sur GTK+ et écrit en Python)
  • Pidgin (à l'image de Kopete, celui-ci supporte également plusieurs protocoles, mais étant basé sur GTK+ il est préférable de l'utiliser dans un environnement GNOME)
  • Coccinella (sa particularité est d'être portable et léger du fait qu'il soit écrit en Tcl, ainsi il est disponible pour de nombreuses plate-formes)
  • Cjc -console Jabber client (client en mode texte, ce qui lui permet d'être relativement léger)

  • Pour ce petit guide, nous allons utiliser deux combinaisons différentes, Kopete + Kgpg (pour KDE) dans un premier temps et Gajim + GPA ensuite. (pour GNOME).


    Installation des paquets :


    L'installation de ces paquets est très simple car ceux-ci se trouvent dans les dépôts (toutes branches) :
    # aptitude install kopete kgpg
    Si vous possédez l'environnement GNOME par contre :
    # aptitude install gajim gpa

    Générer une paire de clefs :


    Essayez toutefois de garder en tête quelques règles :

  • Vos mots de passe ne doivent pas contenir de caractères accentués (à, é, è), car cela pose problème avec Kopete (Gajim n'est pas concerné), en revanche ils peuvent (et c'est même préférable) contenir quelques caractères spéciaux (_, &, -).

  • Il est préférable de générer une paire de clefs différente de celle que vous utilisez pour chiffrer vos fichiers, une paire spécialement pour Jabber pour des raisons de sécurité.

  • Veillez à choisir une "passphrase" (mot de passe) dont vous vous souviendrez sans trop de problèmes. En effet, lors de chaque début de conversation chiffrée des deux côtés, la passphrase de votre paire de clef vous sera demandée. Par la suite, vous n'aurez plus besoin de l'indiquer jusqu'au prochain démarrage de Kopete.

  • Pour générer une paire de clef avec Kgpg, vous pouvez vous aider de ce guide.
    La méthode est sensiblement la même avec GPA : Menu Keys -> New Key..., il ne vous reste plus qu'à indiquer les informations demandées.

    N.B : Par défaut, l'algorithme utilisé par GPA est la combinaison DSA + Elgamal (1024 bits), pour modifier cela, il faut activer le mode avancé (Édition -> Préférences puis cochez Yes à la question Utiliser le mode avancé ?).

    Creation_paire_de_clefs_gpa


    Importer/Exporter les clefs publiques :


    Une fois la paire créée et signée, il vous faudra exporter la clef publique dans un endroit sûr. Cette clef permettra à vos contacts de déchiffrer vos messages. En revanche, la clef privée de cette même paire vous servira à les chiffrer, mais nous allons le voir dans la partie concernant la configuration des clients de messagerie.

    Dans GPA, l'exportation/importation de clefs publiques s'effectuent depuis le même menu alors qu'avec Kgpg, vous avez juste à sélectionner la clef à exporter puis presser la combinaison de touches CTRL+C ou choisir de passer par le menu Clefs :

    Export_clef_pub_g Export_clef_pub_k

    Export_clef_pub_k


    Lorsque vous importez une clef publique d'un de vos contacts, il est important de ne pas oublier de régler le niveau de confiance que vous accordez à celui-ci. Si vous oubliez cette étape, normalement le client de messagerie refusera tout simplement le mot de passe que vous lui indiquerez pour déchiffrer les messages de ce contact.

    Pour ce faire, effectuez un clic droit sur la clef en question et dans GPA, choisissez Set Owner Trust... puis dans la liste cochez le niveau de confiance qui convient (souvent complète voir Ultime).
    Dans Kgpg en revanche, sélectionnez la clef importée dans la liste et pressez la touche Entrée, une fenêtre s'affiche, il suffit de modifier le contenu du menu déroulant correspondant à l'information Confiance dans le possesseur :

    confiance_kgpg



    Configurer le client Kopete :


    Une fois que les clefs publiques et privées sont prêtes et qu'un compte Jabber est créé, il ne reste plus qu'à configurer Kopete préalablement installé.

    Lors de la première exécution de celui-ci, vous devez remplir les champs concernant votre compte Jabber (identifiant, mot de passe, ...). Dans le deuxième onglet Connexion, veillez à cocher Utiliser le chiffrement du protocole (SSL). Cela va permettre de chiffrer la connexion avec le serveur. Ensuite, dans l'onglet Confidentialité, cochez Cacher les informations systèmes et client, ainsi vos interlocuteurs n'auront pas accès à certaines informations vous concernant.

    Une fois la personnalisation du compte effectuée, rendez-vous dans le menu Configuration puis sélectionnez Configurer les modules.... S'affiche alors une liste de différents modules (outils additionnels), activez le module Cryptographie (deuxième en partant du haut). Dans la fenêtre correspondante, cochez Chiffrer les messages sortants avec cette clé. Enfin, le plus important, il faut désormais choisir la clef privée de la paire que vous avez générée :

    confiance_kgpg

    Pressez OK et appliquez les changements.
    Maintenant, supposons que votre ami Lefty vous envoie sa clef publique. Une fois celle-ci importée dans Kgpg (voir plus haut). Il ne vous reste plus qu'à attribuer cette clef à Lefty dans la liste de vos contacts. Pour cela, sélectionnez-le dans la liste, puis faites un clic droit et choisissez Sélectionnez une clé publique de cryptographie... :

    contacts_kgpg

    clef_pub_kgpg


    Le principal est fait. Désormais, lorsque Lefty vous enverra un message, un mot de passe vous sera demandé :


    password_kgpg

    Si celui-ci a fait les manipulations comme vous, ce sera identique de son côté, un mot de passe (celui de sa clef privée) lui sera réclamé pour qu'il puisse déchiffrer le message que vous lui enverrez. Ce mot de passe n'est demandé qu'une seule fois tant que le client reste ouvert.


    Configurer le client Gajim :


    Nous allons maintenant configurer le client Gajim. Une fois que vous l'avez lancé, vous devez entrer les informations basiques concernant votre compte Jabber.
    Ensuite, rendez-vous dans le menu Édition puis cliquez sur Comptes puis Modifier. Dans le quatrième onglet informations personnelles, cliquez sur Choisissez une clé... et choisissez donc votre clef privée.

    gajim_private_keys

    Ensuite, comme pour Kopete, il vous faudra attribuer les clefs publiques aux contacts correspondants après les avoir importées dans GPA. Un clic droit sur le contact puis Assigner une clé OpenPGP :

    gajim_pub_keys

    Choisissez donc la clef publique correspondante au contact en question.

    Contrairement à Kopete, avec Gajim, le mot de passe de la clef privée est demandé au démarrage du client et non à chaque début de conversation.

    gajim_password

    N.B : Certains puristes pourraient se demander pourquoi utiliser des logiciels graphiques pour gérer et générer les paires de clefs. Je répondrais que je trouve cela plus pratique lorsque l'on manipule beaucoup de clefs. C'est également moins repoussant pour certains utilisateurs.