|This article relies on references to primary sources. (April 2014)|
||This article possibly contains original research. (August 2013)|
Off-the-Record Messaging, commonly referred to as OTR, is a cryptographic protocol that provides strong encryption for instant messaging conversations. OTR uses a combination of the AES symmetric-key algorithm, the Diffie–Hellman key exchange, and the SHA-1 hash function. In addition to authentication and encryption, OTR provides perfect forward secrecy and malleable encryption.
The primary motivation behind the protocol was providing deniability for the conversation participants while keeping conversations confidential, like a private conversation in real life, or off the record in journalism sourcing. This is in contrast with other cryptography tools that produce output which can be later used as a verifiable record of the communication event and the identities of the participants. In most cases, people using such cryptography software are not aware of this and might be better served by OTR tools instead. The initial introductory paper was named "Off-the-Record Communication, or, Why Not To Use PGP".
The OTR protocol was designed by cryptographers Ian Goldberg and Nikita Borisov. They provide a client library to facilitate support for instant messaging client developers who want to implement the protocol. A Pidgin and Kopete plugin exists that allows OTR to be used over any IM protocol supported by Pidgin or Kopete, offering an auto-detection feature that starts the OTR session with the buddies that have it enabled, without interfering with regular, unencrypted conversations.
In addition to providing encryption and authentication — features also provided by typical public-key cryptography suites, such as PGP, GnuPG, and X.509 (S/MIME) — OTR also offers some less common features:
- Perfect forward secrecy: Messages are only encrypted with temporary per-message AES keys, negotiated using the Diffie-Hellman key exchange protocol. The compromise of any long-lived cryptographic keys does not compromise any previous conversations, even if an attacker is in possession of ciphertexts.
- Deniable authentication: Messages in a conversation do not have digital signatures, and after a conversation is complete, anyone is able to forge a message to appear to have come from one of the participants in the conversation, assuring that it is impossible to prove that a specific message came from a specific person. Within the conversation the recipient can be sure that a message is coming from the person they have identified.
As of OTR 3.1, the protocol supports mutual authentication of users using a shared secret through the socialist millionaire protocol. This feature makes it possible for users to verify the identity of the remote party and avoid a man-in-the-middle attack without the inconvenience of manually comparing public key fingerprints through an outside channel.
Due to limitations of the protocol, OTR does not support multi-user group chat as of 2009 but may be implemented in the future. As of version 3 of the protocol specification, an extra symmetric key is derived during authenticated key exchanges that can be used for secure communication (e.g., encrypted file transfers) over a different channel. Support for encrypted audio or video is not planned. (SRTP with ZRTP exists for that purpose.)
Since OTR protocol v3 (pidgin-otr 4.0.0 and libotr 4.0.0) the plugin supports multiple OTR conversations with the same buddy who is logged in at multiple locations.
These clients support Off-the-Record Messaging out of the box.
- Adium (OS X)
- BitlBee (cross-platform), since 3.0 (optional at compile-time)
- CenterIM (Unix-like), since 4.22.2
- ChatSecure (Android, iOS)
- climm (Unix-like), since (mICQ) 0.5.4
- Cryptocat (cross-platform), since 2.0
- IronChat, based on Xabber development (Android)
- Jitsi (cross-platform)
- Kopete (Unix-like)
- LeechCraft (cross-platform)
- MCabber (Unix-like), since 0.9.4
- Profanity, since 0.4.1
- Psi+ (cross-platform)
- Xabber (Android)
The following clients require a plug-in to use Off-the-Record Messaging.
- Gajim, with a third-party plugin
- irssi and xchat, with a third-party plugin
- Miranda IM (Microsoft Windows), with a third-party plugin
- Pidgin (cross-platform), with a plugin available from the OTR homepage
- Psi (cross-platform), with a third-party plugin and build
- Tkabber (cross-platform, since version 1.1), with a plugin from the Tkabber developers
- WeeChat, with a third-party plugin
Gmail's Google Chat "Off the Record"
Gmail's Google Talk uses the term "off the record" to mean that a chat log is not retrievable by an end user from the Gmail website. Gmail's "off the record" mode has no connection to Off-the-Record Messaging, and its chats are not encrypted in the way described above and may be logged internally by Google even if not accessible by end-users. Google uses the term to mean that chat logs are not accessible from the Google website (usually all chats are saved and can be displayed again at any time). Google's policy on "off the record" chats does not state that logs are not stored on Google's servers.
- Nikita Borisov, Ian Goldberg, Eric Brewer (2004-10-28). "Off-the-Record Communication, or, Why Not To Use PGP" (PDF). Workshop on Privacy in the Electronic Society. Retrieved 2014-03-06.
- Ian Goldberg (May 27, 2009). "multi-party OTR communications? (and other OTR details)". OTR-users mailing list.
- "Off-the-Record Messaging Protocol version 3".
- Ian Goldberg (September 4, 2012). "pidgin-otr and libotr 4.0.0 released!". OTR-announce mailing list.
- "BitlBee Wiki". Wiki.bitlbee.org. 2014-01-25. Retrieved 2014-05-15.
- "kopete-otr in KDE for 4.1".
- "kopete-otr review request".
- 0xd34df00d. "OTR Plugin". Github.com. Retrieved 2014-05-15.
- "Short description". Leechcraft.org. Retrieved 2014-05-15.
- "source code". Mcabber.com. 2013-10-25. Retrieved 2014-05-15.
- "OTR Plugin". Github.com. Retrieved 2014-05-15.
- "Psi+ snapshots". Github.com. Retrieved 2014-05-15.
- "OTR plugin for Gajim".
- "Gajim Wiki".
- "irssi-otr / xchat-otr plugin".
- "Miranda OTR Plugin".
- "OTR plugin for pidgin".
- "Psi-Patches and OTR-Plugin on". Tfh-berlin.de. Retrieved 2014-05-15.
- "Tkabber OTR Plugin".
- "OTR plugin for WeeChat".
- "Chatting off the record - Talk Help".
- Joseph Bonneau, Andrew Morrison (2006-03-21). Finite-State Security Analysis of OTR Version 2 (PDF). Retrieved 2013-09-05.
- Mario Di Raimondo, Rosario Gennaro, and Hugo Krawczyk (2005). Secure Off-the-Record Messaging (PDF). Proceedings of the 2005 ACM Workshop on Privacy in the Electronic Society. Association for Computing Machinery. Retrieved 2013-08-27.
- OTR project site
- Protocol specification
- Off-the-Record Messaging: Useful Security and Privacy for IM, talk by Ian Goldberg at the University of Waterloo (video)
- 'Off-the-Record' Instant Messaging Tutorial (encryption, authentication, deniability, ..) on YouTube