Comment elle commence ton histoire ?
Pidgin est cassé. C'est pas nouveau, c'est régulièrement répété. L'avant dernière fois que je l'ai lu, c'était dans le très bon article everything is broken (en|fr) de Quinn Norton.
Sur OpenBSD, régulièrement, quand OTR intervient pour générer une clé ou authentifier un contact, pouf, il segfault. Rassurant, non ?
La dernière fois, c'était dans un tweet de Christopher Soghoian et dans lequel, il dit du bien (dire qu'il peut être utilisé par des journaleux, c'est dire du bien :)) de xmpp-client d'Adam Langley (dev qui bosse chez google, qui bosse sur la sécurité de chrome pour la stack SSL/TLS, qui a forké openssl en boringssl etc).
J'ai eu envie de tester, d'où cet article.
Mais pourquoi ce client, y a plein de client xmpp
Mon besoin est simple "OTR". Lecteur, tu rigoles peut-être, mais juste ces trois lettres en enlèvent une grosse partie.
C'est pour ça par exemple, que je n'utilise pas bitlbee.
Et ne pas utiliser OTR ?
Nope, nope nope.
Je ne fais pas confiance à tls/ssl pour xmpp. Pas dans un cas général, mais dans mon cas. Parce que la version de prosody que j'utilise est vieille, que ceci que cela, que le s2s est sujet à du mitm etc.
Mais bon, c'est pas une nouveauté que le chiffrement bout à bout, est une nécessité.
“Encryption works. Properly implemented strong crypto systems are
one of the few things that you can rely on. Unfortunately,
endpoint security is so terrifically weak that NSA can frequently
find ways around it.”
D'ailleurs, on en revient à ce que je disais avant "endpoint security is so terrifically weak" COUCOU PIDGIN §§§.
Donc ceinture, bretelle, toussa toussa. Je veux OTR.
ok ok, mais y a plus d'un client xmpp qui gère OTR
On va lister ceux qui gèrent OTR d'après https://otr.cypherpunks.ca/software.php
- adium == libpurple, donc même chose que pidgin
- climm, mcabber, centerim et profanity j'avoue j'ai pas testé, mais de ce que je vois sur leurs sites, ça ne me fait pas rêver
- kopete ouais ça marchouille, avec le plaisir que comme tous softs kde/gnome tu bouffes trois brouettes de dépendances, merci bisous
- jitsi == java ... désolé, firefox a déjà pris toute la ram
via plugins :
- pidgin, ouais, on sait ce que ça vaut
- irssi euh ouais, j'ai tenté d'utiliser, mmmh j'ai pas particulièrement aimé, je ne sais plus trop pourquoi
- psi j'ai testé y a longtemps, la gui n'était pas intuitive, j'arrivais à rien
- gajim euh, hum
Je suis sans doute difficile.
Donc xmpp-client
C'est un client cli-only, donc pas d'interface graphique.
On commence par installer les paquets nécessaires :
pkg_add go mercurial
On set un GOPATH, dans mon cas :
export GOPATH=/home/myuser/gocode
Ensuite on applique la commande magique :
go get github.com/agl/xmpp-client
on se retrouve avec dans le gopath :
$ ls gocode/
bin/ pkg/ src/
dans bin il y a l'éxécutable qu'on va lancer.
Une fois l'exécutable lancé, il nous pose des questions et génère le
fichier de config dans ~/.xmpp-client
On va modifier deux choses.
La première
La première est l'ajout du mot de passe. agl ne le fait pas pour être sûr que la personne qui le fait sait qu'il met son mot de passe en clair dans un fichier sur son disque. Mais si quelqu'un a accès à ce fichier, j'aurais bien d'autres problèmes avant. Et de toute façon j'ai du FDE.
On ajoute donc la ligne
"Password": "f6fab8747331ca8fc8b7fdabf81f822f256d647e",
Hahaha tu as vu, il est trop con, il a mis son vrai mot de passe !!1!
openssl rand -hex 20
est ton ami.
La deuxième
La deuxième chose, j'utilise ma propre maf^WAC, et donc avec xmpp-client, s'il ne trouve pas l'AC dans /etc/ssl/jesaispasquelfichieràlacon, il ne veut pas se connecter. Soit, on jette un rapide coup d'oeil dans les sources
ServerCertificateSHA256 string `json:",omitempty"`
ça tombe bien, je les donne.
On rajoute donc (dans mon cas, tu es invité·e à changer les valeurs chez toi) :
"ServerCertificateSHA256": "5c5f28ea20b09c71fca7442569b8d56f11907a1ab0ce2ada998755b1d755b207"
Et voilà ça se connecte. On parle qqn en mettant sont adresse par exemple randomuser@chown.me et le prompt va passer de ">" à "randomuser@chown.me"
Le client permet de faire pas mal de chose :
> /help
* (9:51PM) /add <user> Request a subscription to another user's presence
* (9:51PM) /away Set your status to Away
* (9:51PM) /chat Set your status to Available for Chat
* (9:51PM) /confirm <user> Confirm an inbound subscription request
* (9:51PM) /deny <user> Deny an inbound subscription request
* (9:51PM) /dnd Set your status to Busy / Do Not Disturb
* (9:51PM) /help List known commands
* (9:51PM) /nopaste Stop interpreting text verbatim
* (9:51PM) /online Set your status to Available / Online
* (9:51PM) /otr-auth <user> <secret> Authenticate a secure peer with a mutual, shared secret
* (9:51PM) /otr-authoob <user> <fingerprint> Authenticate a secure peer with out-of-band fingerprint verification
* (9:51PM) /otr-authqa <user> <question> <secret> Authenticate a secure peer with a question and answer
* (9:51PM) /otr-end <user> End an OTR session
* (9:51PM) /otr-info Print OTR information such as OTR fingerprint
* (9:51PM) /otr-start <user> Start an OTR session with the given user
* (9:51PM) /paste Start interpreting text verbatim
* (9:51PM) /quit Quit the program
* (9:51PM) /rostereditdone Load the edited roster from disk
* (9:51PM) /rosteredit Write the roster to disk
* (9:51PM) /roster [--online] Display the current roster
* (9:51PM) /statusupdates Toggle if status updates are displayed
* (9:51PM) /version <user> Ask a Jabber client for its version
* (9:51PM) /xa Set your status to Extended Away
La troisième
Et la troisième chose, c'est juste une erreur off-by-one.
Et l'utilisation ?
Déjà ça change de mon client graphique. Avec pidgin, l'icone se met en haut à droite dans ma barre des tâches de xfce et l'avantage c'est que quand je reçois un message, l'icone change. Le problème c'est quand j'utilise une application en plein-écran (à peu près toute, en fait), je ne la vois pas.
Avec xmpp-client, le problème sera le même, parce que je le lance dans un onglet du terminal et même si avec xfce la couleur des titres des term changent selon l'activité de ce dernier, si je ne suis pas dans mon espace de travail consacré au terminal je ne le verrais pas. Cela dit, je ne crois pas que mes contacts doivent me contacter en toute urgence.
Par rapport à pidgin où une fenêtre est dédiée à l'affichage des contacts et une fenêtre pour les conversations (chaque conversation a lieu dans un onglet), sur xmpp-client, tout se passe au même endroit, ce qui est un peu surprenant : on peut avoir à la suite des messages de différentes personnes, les réponses qu'on envoie et les changements de statuts des gens (connectés, déconnectés et away).