Tutorial, how to use Off-The-Record (conversation encryption) with Pidgin

So you want to use Off-The-Record to safeguard your private communication from eavesdropping by private companies, but do not know how to do this?
Let me show you how easy it can be!

To start, please note that I personally use the Pidgin instant messaging client, and as such this tutorial will be focussed on that, but the basic information will probably be reusable for other clients as well.

What is Off-The-Record messaging, and what does it do (and not)?

Off-The-Record messaging (from now on called "OTR" in this blog post) is the name of both a protocol and an implementation of this protocol used for securing personal communication between two parties (most probably people).

OTR is a so-called end-to-end encryption method, which means that every message sent is encrypted on the sending parties computer, and decrypted at the receiving parties computer.
This means that as long as key verification is done thoroughly and each user keeps their private key secret, nobody else than the intended recipient should be able to read the messages exchanged.

OTR provides two of the three core features deemed to be part of security:

  • Confidentiality - The content of the messages is protected from eavesdropping.
  • Integrity - The authenticity of the messages is guaranteed: during the conversation, you can be certain that the person sending the messages holds the private key.

It also provides some additional features, amongst which:

  • Perfect forward secrecy - Whenever the private key of one of the participants leaks, secrecy of previous conversations is not compromised.
  • Deniability - After the conversation ended, there is no way anymore to be sure who sent the messages: any logged messages may be spoofed, and as such the sender can deny ever having sent that message, without the recipient being able to prove otherwise.

What it does NOT do:

  • It does not provide the third core feature of security, Availability: it is quite easy to disrupt an OTR conversation by just blocking the initial key exchange messages.
  • It does not protect the meta-information of the conversation: any eavesdropper is still able to see who communicates with whom, and how many messages they exchange (though they will be unable to read the actual message contents).

How do I use this?

To use OTR, you need either an instant messaging client with built-in support for OTR, or a client with a plugin for OTR.
I decided to go with the latter, as I personally really like the Pidgin IM client.

So, to get started with the Pidgin + OTR method, you will first need to download and install Pidgin and the OTR plugin.

If you are using Fedora, you can install pidgin and the OTR plugin at the same time by starting a terminal, and executing the following command: "yum istall pidgin pidgin-otr".

Most other Linux distributions will probably have Pidgin and the OTR plugin in the repositories somewhere as well.

For Microsoft Windows, download Pidgin from here and the OTR plugin from here (Click the "Win32 installer for pidgin-otr").

After installing, start Pidgin.
The first time you start it, it will ask you to add accounts.
Feel free to add any accounts that you have.

Now, we need to enable the OTR plugin.
For this, select Tools -> Plugins.
In the list that pops up now, enable the checkbox in front of the "Off-The-Record Messaging" plugin.
Now select it, and press Configure Plugin.
Make sure the checkboxes for "Enable private messaging" and "Automatically initiate private messaging" are checked.
Now you can click Close two times, and you should be all set!

The next time you chat with someone on Pidgin with someone who also has the OTR plugin installed and enabled, your client will automatically initiate an encrypted session.
Please note that this will give a warning though about this conversation being "Unverified".

What is this "Unverified", and how can I get rid of it?

The status "Unverified" means that the communication is encrypted, but you have not yet validated that the key that your contact seems to be using is actually held by the person you are trying to contact.
The key may be in posession of a man in the middle, re-encrypting all messages for the other participant but logging them all.

To get rid of the "Unverified" status and be certain that you are indeed talking with the person you intended to, there are three options in the OTR plugin to verify the other person his/her key:

  1. A shared secret
  2. A secret question/answer
  3. Manual fingerprint validation

You can choose which method to use by clicking on the button saying "Unverified" just above the box where you enter your new messages, and clicking on "Authenticate".

Now a new dialog will open where you will have the three options I mentioned above.
Choose one, and then follow the procedures indicated.

For the Shared secret method, it will ask you to enter a word or phrase.
After you click the Authenticate button, it will ask your contact to enter the exact same word or phrase.
Please make sure that you agreed on this secret by ANOTHER communication mechanism, so NOT inside the current chat session (this is called out-of-band verification).

For the question/answer method, about the same procedure is followed, except that you can enter a question which may indicate to your contact what sort of answer you expect from them.
Please note again that the answer to this question should NOT be something that can be found in your online chat sessions, as a possible man in the middle will also have read this.

The last method is the manual fingerprint validation method.
With this method, Pidgin will show the fingerprint of the private key used by your contact.
Also, this should be verified out-of-band (outside of the current conversation), for example by calling that person and exchanging the fingerprint.
Another reason to use this is when the person publishes or sends a (signed) statement with his OTR keys (for example, mine is Here).
In this case, please make sure to check the signature on such a statement.

After you have validated the private key belongs to the person you thought you were talking to, you can be certain that there is no man in the middle, and as such the conversation status OTR shows will change from "Unverified" to "Secure".
Please note though that this validation is only one-way, so your contact will need to do the same to get their connection with you verified as well.

Congratulations, from now on any person trying to eavesdrop on your communication with this contact will either see nothing at all, or trigger a warning in your IM client!

I hope this tutorial was useful.
If you still have any questions, do not hestitate to email me at puiterwijk@gmail.com.
(Feel free to GPG encrypt/sign this email! Check the link saying "GPG" on the bottom of this page for my public key.)
Also, feel free to add me on XMPP (patrick@puiterwijk.org) and ask question, but please note that you will need to use OTR for this.

Fixing OpenID Covert Redirect in the Fedora Infrastructure

Fedora Infrastructure is now a Persona Identity Provider