OTR was presented in 2004 by Nikita Borisov, Ian Avrum Goldberg, and Eric A. Brewer as an improvement over the OpenPGP and the S/MIME system at the "Workshop on Privacy in the Electronic Society" (WPES).5 The first version 0.8.0 of the reference implementation was published on 21 November 2004. In 2005 an analysis was presented by Mario Di Raimondo, Rosario Gennaro, and Hugo Krawczyk that called attention to several vulnerabilities and proposed appropriate fixes, most notably including a flaw in the key exchange.6 As a result, version 2 of the OTR protocol was published in 2005 which implements a variation of the proposed modification that additionally hides the public keys. Moreover, the possibility to fragment OTR messages was introduced in order to deal with chat systems that have a limited message size, and a simpler method of verification against man-in-the-middle attacks was implemented.7
In 2007 Olivier Goffart published mod_otr8 for ejabberd, making it possible to perform man-in-the-middle attacks on OTR users who don't check key fingerprints. OTR developers countered this attack by introducing a socialist millionaire protocol implementation in libotr. Instead of comparing key checksums, knowledge of an arbitrary shared secret can be utilised for which relatively low entropy can be tolerated.9
Version 3 of the protocol was published in 2012. As a measure against the repeated reestablishment of a session in case of several competing chat clients being signed on to the same user address at the same time, more precise identification labels for sending and receiving client instances were introduced in version 3. Moreover, an additional key is negotiated which can be used for another data channel.10
Several solutions have been proposed for supporting conversations with multiple participants. A method proposed in 2007 by Jiang Bian, Remzi Seker, and Umit Topaloglu uses the system of one participant as a "virtual server".11 The method called "Multi-party Off-the-Record Messaging" (mpOTR) which was published in 2009 works without a central management host and was introduced in Cryptocat by Ian Goldberg et al.12
In 2013, the Signal Protocol was introduced, which is based on OTR Messaging and the Silent Circle Instant Messaging Protocol (SCIMP). It brought about support for asynchronous communication ("offline messages") as its major new feature, as well as better resilience with distorted order of messages and simpler support for conversations with multiple participants.13 OMEMO, introduced in an Android XMPP client called Conversations in 2015, integrates the Double Ratchet Algorithm used in Signal into the instant messaging protocol XMPP ("Jabber") and also enables encryption of file transfers. In the autumn of 2015 it was submitted to the XMPP Standards Foundation for standardisation.1415
Currently, version 4 of the protocol has been designed. It was presented by Sofía Celi and Ola Bini on PETS2018.16
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:
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[update]17 but it may be implemented in the future. As of version 318 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.) A project to produce a protocol for multi-party off-the-record messaging (mpOTR) has been organized by Cryptocat, eQualitie, and other contributors including Ian Goldberg.1920
Since OTR protocol v3 (libotr 4.0.0) the plugin supports multiple OTR conversations with the same buddy who is logged in at multiple locations.21
These clients support Off-the-Record Messaging out of the box (incomplete list).
The following clients require a plug-in to use Off-the-Record Messaging.
Although Gmail's Google Talk uses the term "off the record", the feature has no connection to the Off-the-Record Messaging protocol described in this article, its chats are not encrypted in the way described above—and could be logged internally by Google even if not accessible by end-users.3435
Nikita Borisov, Ian Goldberg, Eric Brewer (28 October 2004). "Off-the-Record Communication, or, Why Not To Use PGP" (PDF). Workshop on Privacy in the Electronic Society. Retrieved 6 March 2014.{{cite conference}}: CS1 maint: multiple names: authors list (link) /wiki/Nikita_Borisov ↩
Ian Goldberg (26 October 2014). [OTR-users] Happy 10th anniversary!. Retrieved 27 April 2015. /wiki/Ian_Goldberg ↩
Sofía Celi, Ola Bini (15 February 2019). "Off-the-Record Messaging Protocol version 4". GitHub. https://github.com/otrv4/otrv4 ↩
"Add disclaimer · otrv4/otrv4@0c0847e". GitHub. Retrieved 20 September 2023. https://github.com/otrv4/otrv4/commit/0c0847e2d6ee75a1acdce591e606e3f60a28ce3d ↩
Mario Di Raimondo; Rosario Gennaro; 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: 81–89. https://www.dmi.unict.it/diraimondo/web/wp-content/uploads/papers/otr.pdf ↩
"Off-the-Record Messaging Protocol version 2". https://otr.cypherpunks.ca/Protocol-v2-3.1.0.html ↩
"mod_otr". http://www.ejabberd.im/mod_otr ↩
Chris Alexander; Ian Avrum Goldberg (February 2007). "Improved user authentication in off-the-record messaging". Proceedings of the 2007 ACM workshop on Privacy in electronic society (PDF). New York: Association for Computing Machinery. pp. 41–47. doi:10.1145/1314333.1314340. ISBN 9781595938831. S2CID 17052562. 9781595938831 ↩
"Off-the-Record Messaging Protocol version 3". https://otr.cypherpunks.ca/Protocol-v3-4.0.0.html ↩
Jiang Bian; Remzi Seker; Umit Topaloglu (2007). Off-the-Record Instant Messaging for Group Conversation. IEEE International Conference on Information Reuse and Integration. IEEE. doi:10.1109/IRI.2007.4296601. https://www.researchgate.net/publication/4272374 ↩
Ian Avrum Goldberg; Berkant Ustaoğlu; Matthew D. Van Gundy; Hao Chen (2009). "Multi-party off-the-record messaging". Proceedings of the 16th ACM conference on Computer and communications security (PDF). Association for Computing Machinery. pp. 358–368. doi:10.1145/1653662.1653705. hdl:11147/4772. ISBN 9781605588940. S2CID 6143588. 9781605588940 ↩
Nik Unger; Sergej Dechand; Joseph Bonneau; Sascha Fahl; Henning Perl; Ian Avrum Goldberg; Matthew Smith (2015). "SoK: Secure Messaging" (PDF). Proceedings of the 2015 IEEE Symposium on Security and Privacy. IEEE Computer Society's Technical Committee on Security and Privacy: 232–249. http://ieee-security.org/TC/SP2015/papers-archived/6949a232.pdf ↩
Straub, Andreas (25 October 2015). "OMEMO Encryption". XMPP Standards Foundation website. Archived from the original on 29 January 2016. Retrieved 16 January 2016. https://web.archive.org/web/20160129003540/https://xmpp.org/extensions/inbox/omemo.html ↩
Gultsch, Daniel (2 September 2015). "OMEMO Encrypted Jingle File Transfer". XMPP Standards Foundation website. Retrieved 16 January 2016. https://xmpp.org/extensions/inbox/omemo-filetransfer.html ↩
Sofía Celi, Ola Bini (21 July 2018). No evidence of communication: Off-the-Record Protocol version 4 (PDF). Retrieved 29 November 2018. https://petsymposium.org/2018/files/hotpets/7-bini.pdf ↩
Ian Goldberg (27 May 2009). "multi-party OTR communications? (and other OTR details)". OTR-users mailing list. http://lists.cypherpunks.ca/pipermail/otr-users/2009-May/001647.html ↩
Nadim Kobeissi (1 February 2014). "mpOTR Project Plan". Cryptocat wiki on GitHub. https://github.com/cryptocat/cryptocat/wiki/mpOTR-Project-Plan ↩
Ian Goldberg (4 September 2012). "pidgin-otr and libotr 4.0.0 released!". OTR-announce mailing list. https://lists.cypherpunks.ca/pipermail/otr-announce/2012-September/000058.html ↩
"BitlBee Wiki". Wiki.bitlbee.org. 25 January 2014. Retrieved 15 May 2014. http://wiki.bitlbee.org/bitlbee-otr ↩
"kopete-otr in KDE for 4.1". Archived from the original on 28 March 2008. https://web.archive.org/web/20080328080733/http://kopete-otr.follefuder.org/news.html ↩
"kopete-otr review request". http://lists.kde.org/?t=120397998900007&r=1&w=2 ↩
"OTR Plugin". Github.com. Retrieved 6 September 2017. https://github.com/psi-im/plugins/tree/master/generic/otrplugin ↩
"Tkabber OTR Plugin". Archived from the original on 11 March 2014. https://web.archive.org/web/20140311093019/https://svn.xmpp.ru/repos/tkabber/trunk/tkabber-plugins/otr/ ↩
"Irssi Changelog - 1.2.0". https://irssi.org/NEWS/#news-v1-2-0 ↩
"Off the record plugin for HexChat". GitHub. 2 December 2021. https://github.com/TingPing/hexchat-otr ↩
"Miranda OTR Plugin". https://code.google.com/p/mirotr/ ↩
"OTR plugin for Pidgin". https://otr.cypherpunks.ca/#downloads ↩
"OTR plugin for WeeChat". GitHub. January 2019. https://github.com/mmb/weechat-otr ↩
"TingPing/hexchat-otr". GitHub. Retrieved 14 March 2017. https://github.com/TingPing/hexchat-otr ↩
"Chatting off the record - Talk Help". https://support.google.com/talk/answer/29291?hl=en ↩
"Google Talk - Privacy Policy". https://www.google.com/intl/en/policies/privacy/ ↩