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). 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. 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. 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". 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. 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.
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. Currently, version 4 of the protocol has been designed. It was presented by Sofía Celi and Ola Bini on PETS2018. == Implementation ==